<?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>33153</bug_id>
          
          <creation_ts>2010-01-04 07:31:33 -0800</creation_ts>
          <short_desc>multi-patch: Running multiple instances of run-webkit-tests is not possible on the same machine</short_desc>
          <delta_ts>2014-11-20 10:18:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>34336</dependson>
    
    <dependson>36899</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andras Becsi">abecsi</reporter>
          <assigned_to name="Andras Becsi">abecsi</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>galpeter</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>levin</cc>
    
    <cc>loki</cc>
    
    <cc>mrowe</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>176685</commentid>
    <comment_count>0</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-04 07:31:33 -0800</bug_when>
    <thetext>Running more than one instances of run-webkit-tests on the same machine is not possible due to more reasons.
The main issues are related to httpd port number, but there are also tests which use a hardcoded symlink of the LayoutTests directory in /tmp to load local pages, which is absolutely not a multi-platform friendly thing to do.

So the main issues are: 
- Hardcoded port numbers (run-webkit-tests --port does not work correctly)
Testcases (html, javascript and expected files) involved:
Hardcoded 8000 (http):
   total files involved: ~600
Hardcoded 8443 (https):
   total files involved: ~34
Hardcoded 8880 (websocket):
   total files involved: ~30

(The above sets may not be disjunct.)

- Symlinked and hardcoded LayoutTests dir to /tmp/LayoutTests may cause problems on this tests if testing multiple revisions:
LayoutTests/fast/dom/frame-loading-via-document-write.html
LayoutTests/fast/loader/local-CSS-from-local.html
LayoutTests/fast/loader/local-JavaScript-from-local.html
LayoutTests/fast/loader/local-iFrame-source-from-local.html
LayoutTests/fast/loader/local-image-from-local.html
LayoutTests/fast/loader/user-style-sheet-resource-load-callbacks.html
LayoutTests/http/tests/misc/image-blocked-src-change.html
LayoutTests/http/tests/misc/image-blocked-src-no-change.html
LayoutTests/http/tests/security/frame-loading-via-document-write.html
LayoutTests/http/tests/security/local-CSS-from-remote.html
LayoutTests/http/tests/security/local-JavaScript-from-remote.html
LayoutTests/http/tests/security/local-iFrame-from-remote.html
LayoutTests/http/tests/security/local-image-from-remote.html
LayoutTests/http/tests/security/local-user-CSS-from-remote.html
LayoutTests/http/tests/security/local-video-poster-from-remote.html
LayoutTests/http/tests/security/local-video-source-from-remote.html
LayoutTests/http/tests/security/local-video-src-from-remote.html

- Hardcoded pidfile path of the httpd daemon (not platform independent)

There are more possible ways of fixing these issues, so it would be nice to get some input and ideas on how to fix these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176697</commentid>
    <comment_count>1</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-04 07:58:24 -0800</bug_when>
    <thetext>(In reply to comment #0)
First of all we need to change the pidfile path to use File::spec-&gt;tmpdir(). 
One way would be to implement setter and getter functions to layoutTestController to be able to get the preconfigured port number and LayoutTests dir path in javascript (via environmental variable for example) and update the related files, so no need for /tmp/LayoutTests. In this case we need to update all the related tests to use these functions.

Another way would be to use a locking mechanism on httpd, run the http tests at the end of the testing, and let other instances wait until the running finishes. This is not a very robust way to do (and not parallel), a crashed testing session could introduce a deadlock, but only the ~17 symlink related tests would need an update and layoutTestController one function to get the LayoutTests dirpath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176709</commentid>
    <comment_count>2</comment_count>
      <attachid>45802</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-04 08:49:51 -0800</bug_when>
    <thetext>Created attachment 45802
1st step: change hardcoded /tmp to File::Spec-&gt;tmpdir()

Change hardcoded /tmp in httpd pid file path to File::Spec-&gt;tmpdir() and remove the pidfile if closing the httpd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176710</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-04 08:50:28 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45802 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176719</commentid>
    <comment_count>4</comment_count>
      <attachid>45802</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-04 09:16:31 -0800</bug_when>
    <thetext>Comment on attachment 45802
1st step: change hardcoded /tmp to File::Spec-&gt;tmpdir()

&gt; +my $httpdPidDir = File::Spec-&gt;tmpdir().&quot;/WebKit&quot;;

We normally put spaces around operators like the &quot;.&quot; here.

&gt; -    mkdir &quot;/tmp/WebKit&quot;;
&gt; +    mkdir &quot;$httpdPidDir&quot;;

It doesn&apos;t make sense to keep the quote marks here.

&gt; +    if (-f &quot;$httpdPidFile&quot;) {

Or here.

&gt; -    kill 15, `cat /tmp/WebKit/httpd.pid` if -f &quot;/tmp/WebKit/httpd.pid&quot;;
&gt; +    kill 15, `cat &quot;$httpdPidFile&quot;` if -f &quot;$httpdPidFile&quot;;

Or here on the argument to -f.

&gt; +    rmtree &quot;$httpdPidDir&quot;;

Or here.

I am surprised the old code did not remove the pid directory.

I think it would be more elegant to call unlink on the file and then rmdir on the directory instead of using rmtree here.

I&apos;m going to say review- even though my comments are only minor style things. It would be nice to make it a little cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176764</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-04 11:18:25 -0800</bug_when>
    <thetext>Why would one want to run multiple instances of run-webkit-tests on the same machine? Bug 10906 talks about parallelizing the script, but it&apos;s not clear what the goal is here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176770</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-04 11:27:06 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Why would one want to run multiple instances of run-webkit-tests on the same
&gt; machine? Bug 10906 talks about parallelizing the script, but it&apos;s not clear
&gt; what the goal is here.

Because one machine can be a powerful multiprocessor and multicore server which can solve out several developer and run several buildbots, try bots, etc. This feature could help a lot for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176782</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-04 11:50:00 -0800</bug_when>
    <thetext>Supporting parallelism inside run-webkit-tests, and also being able to run several instances of the script sounds like overkill. Did you consider running multiple buildbots in virtual machines?

In any case, making http and websocket tests port-agnostic is not practical. Most of them are not, and those that are got significantly more complicated because of that. Putting the burden of writing port-agnostic tests on developers is a cost we&apos;d have to keep paying in the future, and thus undesirable.

I was actually planning to remove the half-baked ability to configure port numbers in run-webkit-tests.

There are more difficulties with running multiple instances of the script than mentioned in this bug - please see bug 10906 for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176824</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-04 13:08:58 -0800</bug_when>
    <thetext>I see a real need for this bug.  We&apos;ve hit this several times at google with people trying to share Macs for running the LayoutTests.  I could have sworn I filed a bug about this already actually.  The first time I hit this is when Julie Parent was SSHing into my machine to do development, and we found that only one of us could run the layout tests.

I see this as unrelated to the multi-threaded run-layout-tests.  We&apos;ll get multi-threaded run-layout-tests when run_webkit_tests.py lands later this week.  That&apos;s just about being able to run the layout tests faster.  This bug is about making it possible for more than one user account on a machine to do WebKIt development, or for more than one bot to run on a machine w/o using a VM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176825</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-04 13:11:26 -0800</bug_when>
    <thetext>I do however agree with Alexey that there are more issues with running multiple copies of run-webkit-tests than mentioned in this bug.  I also agree with him that making those tests port-agnostic is probably not practical.  However there might be solutions inside DRT which can be used to redirect the port numbers instead of fixing the tests themselves.

I see this bug as being a useful feature, but not one critical to my day-to-day work.  I will however rejoice if it&apos;s ever finished! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176858</commentid>
    <comment_count>10</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-04 13:42:43 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Supporting parallelism inside run-webkit-tests, and also being able to run
&gt; several instances of the script sounds like overkill. Did you consider running
&gt; multiple buildbots in virtual machines?
We use virtual machines now, but using them means significant loss of horsepower and is a huge wastage of energy, time and the capabilities of our server, so, on the contrary: using virtual machines only for running the tests is overkill, as I see it.

&gt; In any case, making http and websocket tests port-agnostic is not practical.
&gt; Most of them are not, and those that are got significantly more complicated
&gt; because of that. Putting the burden of writing port-agnostic tests on
&gt; developers is a cost we&apos;d have to keep paying in the future, and thus
&gt; undesirable.
I do not think that changing related tests to use and expect a preconfigured port number (which would be fixed per-buildbot in our usecase) would make writing tests significantly complicated.

&gt; There are more difficulties with running multiple instances of the script than
&gt; mentioned in this bug - please see bug 10906 for discussion.
On our development servers we are running multiple instances of run-webkit-tests --no-http parallel without any problems except of very rare issues related to the /tmp/LayoutTests symlink.

Bug 10906 seems quiet dead and is dealing with a much more complicated issue, which wouldn&apos;t help us to maximalize the efficiency of our hardware, and help other developers who want to test on their shared developer hardware resource more effectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176864</commentid>
    <comment_count>11</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-04 13:52:17 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I do however agree with Alexey that there are more issues with running multiple
&gt; copies of run-webkit-tests than mentioned in this bug.  I also agree with him
&gt; that making those tests port-agnostic is probably not practical.  However there
&gt; might be solutions inside DRT which can be used to redirect the port numbers
&gt; instead of fixing the tests themselves.

We&apos;ll try to find a solution which does need the least changes to the layout tests. 

Thanks for the input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177064</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-05 00:19:47 -0800</bug_when>
    <thetext>This genre of bug gets in the way of running things like the Mac Early Warning Systems (mac-ews), because right now we need one machine per bot instance since only one run-layout-test instance can run on any machine at once.  Since it&apos;s against the Mac OS X license to run Mac OS X inside a VM (at least that&apos;s my understanding) there is no VM workaround for Mac. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177120</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-05 05:54:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=45802) [details]
&gt; 1st step: change hardcoded /tmp to File::Spec-&gt;tmpdir()
&gt; 
&gt; Change hardcoded /tmp in httpd pid file path to File::Spec-&gt;tmpdir() and remove
&gt; the pidfile if closing the httpd.

In sub openHTTPDIfNeeded() you should override apache PID and scoreboard files defined in apache config files with -c option. eg.

my @args = {
...
    &quot;-c&quot;, &quot;PidFile $httpdPidFile&quot;,
    &quot;-c&quot;, &quot;ScoreBoardFile $httpdPidDir/httpd.scoreboard&quot;,
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177122</commentid>
    <comment_count>14</comment_count>
      <attachid>45883</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-05 06:18:11 -0800</bug_when>
    <thetext>Created attachment 45883
1st step 2nd try

Change hardcoded /tmp in run-webkit-tests to File::Spec-&gt;tmpdir() and remove the httpd&apos;s pidfile directory if httpd terminated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177123</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 06:20:56 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45883 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177150</commentid>
    <comment_count>16</comment_count>
      <attachid>45883</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-05 07:48:57 -0800</bug_when>
    <thetext>Comment on attachment 45883
1st step 2nd try

&gt; +        my $oldPid = `cat $httpdPidFile`;

Doing it this way assumes there are no spaces in tmpdir. I&apos;m not sure that will always be true. To make this work in all cases quoting since you are passing this path to the shell.

&gt; +    die &quot;Timed out waiting for httpd to terminate&quot; unless $retryCount;

Why is this a good idea?

&gt; +    rmdir $httpdPidDir;

How can this rmdir work on a non-empty directory? What deletes the file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177155</commentid>
    <comment_count>17</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-05 07:58:56 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 45883 [details])
&gt; &gt; +        my $oldPid = `cat $httpdPidFile`;
&gt; 
&gt; Doing it this way assumes there are no spaces in tmpdir. I&apos;m not sure that will
&gt; always be true. To make this work in all cases quoting since you are passing
&gt; this path to the shell.
Right, the quotes would make it more robust. I&apos;ll fix that.
&gt; 
&gt; &gt; +    die &quot;Timed out waiting for httpd to terminate&quot; unless $retryCount;
&gt; 
&gt; Why is this a good idea?
&gt; 
&gt; &gt; +    rmdir $httpdPidDir;
&gt; 
&gt; How can this rmdir work on a non-empty directory? What deletes the file?
If httpd terminates it deletes the httpd.pid and httpd.scoreboard files form $httpdPidDir, that is why we need a while loop after sending kill 15 to the process. After successfull termination the directory is empty. I&apos;ve put the die there to indicate that someting went wrong, because after sending kill 15 and sleeping 20 secs the process still didn&apos;t terminate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177157</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-05 08:17:27 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I&apos;ve put the die
&gt; there to indicate that someting went wrong, because after sending kill 15 and
&gt; sleeping 20 secs the process still didn&apos;t terminate.

But is aborting the rest of the test run helpful?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177166</commentid>
    <comment_count>19</comment_count>
      <attachid>45893</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-05 08:36:24 -0800</bug_when>
    <thetext>Created attachment 45893
1st step: another try

Thanks Darin, you are right, aborting there would cause that the websocket server wouldn&apos;t be stopped either, so it is better to just print a message to stderr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177168</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 08:38:19 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45893 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177231</commentid>
    <comment_count>21</comment_count>
      <attachid>45893</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-05 10:41:47 -0800</bug_when>
    <thetext>Comment on attachment 45893
1st step: another try

&gt; +        my $oldPid = `cat &quot;$httpdPidFile&quot;`;

Just for the record, this works for spaces and single quotes and other metacharacters, but not for dollar signs or double quote marks. It&apos;s easy to read a number out of a file without using backticks or invoking the shell; that would be more robust. Not important for this patch.

&gt; +    while ((0 != kill 0, $httpdPid) &amp;&amp; $retryCount) {

I find this while expression really confusing. Especially the &quot;, $httpPid&quot; part of it. And I also can&apos;t tell what value the &quot;0 !=&quot; adds in the expression &quot;0 != kill 0&quot;.

The code will now return, leaving $isHttpdOpen set to 1, if the pid file doesn&apos;t exist. I&apos;m not sure that&apos;s a good change in behavior.

r=me as is, but you could consider my comments above too even though I don&apos;t think any are showstoppers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177557</commentid>
    <comment_count>22</comment_count>
      <attachid>45893</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-01-06 02:03:06 -0800</bug_when>
    <thetext>Comment on attachment 45893
1st step: another try

Clearing flags on attachment: 45893

Committed r52853: &lt;http://trac.webkit.org/changeset/52853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177558</commentid>
    <comment_count>23</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-01-06 02:03:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177559</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-06 02:17:22 -0800</bug_when>
    <thetext>To hit the target we need more patches, we shouldn&apos;t close the bug prematurely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177562</commentid>
    <comment_count>25</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-06 03:52:08 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 45893 [details])
&gt; &gt; +        my $oldPid = `cat &quot;$httpdPidFile&quot;`;
&gt; 
&gt; Just for the record, this works for spaces and single quotes and other
&gt; metacharacters, but not for dollar signs or double quote marks. It&apos;s easy to
&gt; read a number out of a file without using backticks or invoking the shell; that
&gt; would be more robust. Not important for this patch.
&gt; 
&gt; &gt; +    while ((0 != kill 0, $httpdPid) &amp;&amp; $retryCount) {
&gt; 
&gt; I find this while expression really confusing. Especially the &quot;, $httpPid&quot; part
&gt; of it. And I also can&apos;t tell what value the &quot;0 !=&quot; adds in the expression &quot;0 !=
&gt; kill 0&quot;.
&gt; 
&gt; The code will now return, leaving $isHttpdOpen set to 1, if the pid file
&gt; doesn&apos;t exist. I&apos;m not sure that&apos;s a good change in behavior.
&gt; 
&gt; r=me as is, but you could consider my comments above too even though I don&apos;t
&gt; think any are showstoppers
Thanks Darin. The mentioned issues have to be addressed in a follow up, because the backticks and the while loop are used this way multiple times in the script and I wanted to retain the consistency as far as possible.
I&apos;m planning to address the isHttpdOpen problem too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177818</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-06 15:47:58 -0800</bug_when>
    <thetext>It is believed this caused bug 33256.  I&apos;m attempting a rollout now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178128</commentid>
    <comment_count>27</comment_count>
      <attachid>46043</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-07 03:54:15 -0800</bug_when>
    <thetext>Created attachment 46043
Reworked r52853 after r52876 rolled it out.

Chomp the pid variable before passing it to kill and read the contents of the pidfile in a platform independent manner.
The missing chomp seemed to cause problems on Leopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178130</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 03:55:06 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46043 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178141</commentid>
    <comment_count>29</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-07 04:31:58 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=46043) [details]

Sending        WebKitTools/ChangeLog
Sending        WebKitTools/Scripts/run-webkit-tests
Transmitting file data ..
Committed revision 52917.

Landed, and bots are still green. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178143</commentid>
    <comment_count>30</comment_count>
      <attachid>46043</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-07 04:33:21 -0800</bug_when>
    <thetext>Comment on attachment 46043
Reworked r52853 after r52876 rolled it out.

landed, flags cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178176</commentid>
    <comment_count>31</comment_count>
      <attachid>46052</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-07 07:35:17 -0800</bug_when>
    <thetext>Created attachment 46052
2nd step: run-webkit-tests --http-as-last option

Implement run-webkit-tests --http-as-last option to be able to run the http tests after all other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178177</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 07:37:08 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46052 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178179</commentid>
    <comment_count>33</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-07 07:44:54 -0800</bug_when>
    <thetext>Further explanation:

Redirecting of ports in DRT is not possible, so we need a locking mechanism for httpd. We need to minimalize the time where httpd is locked by a run-webkit-tests instance and because closeHTTPD() is only called at the end of the testing, we need to run http tests after all other tests, so the httpd gets only locked if it is really used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178192</commentid>
    <comment_count>34</comment_count>
      <attachid>46052</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-07 08:37:36 -0800</bug_when>
    <thetext>Comment on attachment 46052
2nd step: run-webkit-tests --http-as-last option

This can be common behavior, no need to introduce an option.

What about WebSocket tests? Do you plan to do the same change for those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178200</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-07 09:07:18 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; This can be common behavior, no need to introduce an option.

I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178253</commentid>
    <comment_count>36</comment_count>
      <attachid>46063</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-07 10:36:49 -0800</bug_when>
    <thetext>Created attachment 46063
2nd: step again

I made it default behaviour to run http and websocket tests after all other tests. Thx Alexey for the advice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178254</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 10:38:44 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46063 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178269</commentid>
    <comment_count>38</comment_count>
      <attachid>46063</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-07 11:07:54 -0800</bug_when>
    <thetext>Comment on attachment 46063
2nd: step again

Another way to do this would be to make a new comparison function that takes this into account after calling pathcmp. But this seems OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178331</commentid>
    <comment_count>39</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-07 12:57:05 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #27)
&gt; &gt; Created an attachment (id=46043) [details] [details]
&gt; 
&gt; Sending        WebKitTools/ChangeLog
&gt; Sending        WebKitTools/Scripts/run-webkit-tests
&gt; Transmitting file data ..
&gt; Committed revision 52917.

Unfortunately we had to rollout it again by http://trac.webkit.org/changeset/52939 (Because it broke Leopards) Later I will submit here detailed errors and logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178340</commentid>
    <comment_count>40</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-07 13:02:36 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 46063 [details])
&gt; Another way to do this would be to make a new comparison function that takes
&gt; this into account after calling pathcmp. But this seems OK.

I&apos;ll try to land it later (at night) to avoid the angry of WebKit folks if something might goes wrong. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178579</commentid>
    <comment_count>41</comment_count>
      <attachid>46063</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-08 02:20:04 -0800</bug_when>
    <thetext>Comment on attachment 46063
2nd: step again

Sending        WebKitTools/ChangeLog
Sending        WebKitTools/Scripts/run-webkit-tests
Transmitting file data ..
Committed revision 52976. 

http://trac.webkit.org/changeset/52976</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178619</commentid>
    <comment_count>42</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-08 03:43:05 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 46063 [details])
&gt; Sending        WebKitTools/ChangeLog
&gt; Sending        WebKitTools/Scripts/run-webkit-tests
&gt; Transmitting file data ..
&gt; Committed revision 52976. 
&gt; 
&gt; http://trac.webkit.org/changeset/52976

Looks like due to bad layout tests, this change broke all mac bots, and indirectly the Snow Leopard bot and Windows Bots.

The Mac bots were diagnosed and fixed as bug 32294.
The Snow Leopard failure is bug 33372
The Windows failure is bug 33374

I think we may have to roll this out, even though it&apos;s not really the fault of this change.  The currently awake developers do not have enough platforms at our disposal to diagnose the failing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178625</commentid>
    <comment_count>43</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-08 03:50:46 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; &gt; (From update of attachment 46063 [details] [details])
&gt; &gt; Sending        WebKitTools/ChangeLog
&gt; &gt; Sending        WebKitTools/Scripts/run-webkit-tests
&gt; &gt; Transmitting file data ..
&gt; &gt; Committed revision 52976. 
&gt; &gt; 
&gt; &gt; http://trac.webkit.org/changeset/52976
&gt; 
&gt; Looks like due to bad layout tests, this change broke all mac bots, and
&gt; indirectly the Snow Leopard bot and Windows Bots.
&gt; 
&gt; The Mac bots were diagnosed and fixed as bug 32294.
&gt; The Snow Leopard failure is bug 33372
&gt; The Windows failure is bug 33374
&gt; 
&gt; I think we may have to roll this out, even though it&apos;s not really the fault of
&gt; this change.  The currently awake developers do not have enough platforms at
&gt; our disposal to diagnose the failing tests.

If it is necessary roll it out, then we have to depend on those bugs. Or I can change the behaviour (running http and websocket tests as last) to be an option as I originally planed, and later make it common.
I really think it would be a better idea to skip the failing tests on the failing bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178627</commentid>
    <comment_count>44</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-08 03:53:46 -0800</bug_when>
    <thetext>Actually the best solution is probably to just check in new results for these tests for windows and snow-leopard.  Skipping is also OK, but the webkit community seems to be pretty against using the Skipped list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178771</commentid>
    <comment_count>45</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-08 13:34:14 -0800</bug_when>
    <thetext>The run-http-tests at the end patch has made us lose the ability to control test order.  http tests are always at the end now.

run-webkit-tests http/sometest fast/another_test

used to work to control order.  But now it doesn&apos;t.

The ability to have run-webkit-tests run tests in the same order that you pass them on the command line was useful to me at times.  I don&apos;t think w should lose that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178777</commentid>
    <comment_count>46</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-08 13:44:45 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; The run-http-tests at the end patch has made us lose the ability to control
&gt; test order.  http tests are always at the end now.
&gt; 
&gt; run-webkit-tests http/sometest fast/another_test
&gt; 
&gt; used to work to control order.  But now it doesn&apos;t.
&gt; 
&gt; The ability to have run-webkit-tests run tests in the same order that you pass
&gt; them on the command line was useful to me at times.  I don&apos;t think w should
&gt; lose that.
Actually that was one cause why I originally wanted to make it to an option, and seeing the tumble I caused I am more and more of the opinion that changing it to a run-webkit-tests switch is the only way to pour oil on troubled waters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178787</commentid>
    <comment_count>47</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-08 13:52:30 -0800</bug_when>
    <thetext>OK.  Please post a patch to turn it into an option.

We also need to revert the following changes:
http://trac.webkit.org/changeset/52980
http://trac.webkit.org/changeset/52990
http://trac.webkit.org/changeset/52992

If one of you posted a patch to do all of that, that would be great.  Otherwise I can just roll out all 4 changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178788</commentid>
    <comment_count>48</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-08 13:55:48 -0800</bug_when>
    <thetext>There is still no need to make an option. The right way to handle this is to only change test order if it wasn&apos;t explicitly specified (i.e. if run-webkit-tests wasn&apos;t passed any directories as arguments).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178790</commentid>
    <comment_count>49</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-08 13:56:41 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; The run-http-tests at the end patch has made us lose the ability to control
&gt; test order.  http tests are always at the end now.
&gt; 
&gt; run-webkit-tests http/sometest fast/another_test
&gt; 
&gt; used to work to control order.  But now it doesn&apos;t.
&gt; 
&gt; The ability to have run-webkit-tests run tests in the same order that you pass
&gt; them on the command line was useful to me at times.  I don&apos;t think w should
&gt; lose that.

Yes, we shouldn&apos;t lose this option. I&apos;m convinced that we use the original
version of this patch with command line option. It can make everybody happy. We need possibility to run https tests after others, AP need enabled tests, everybody need possibility to chose run order, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179858</commentid>
    <comment_count>50</comment_count>
      <attachid>46379</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-12 09:45:46 -0800</bug_when>
    <thetext>Created attachment 46379
1st step again

Store Apache PID in a variable and override Apache settings to put the
PID file into the directory where run-webkit-tests expects it to be.
If shut down properly run-webkit-tests should delete the PID directory.
This is needed in preparation to be able to set a per-instance tmp dir to running run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179862</commentid>
    <comment_count>51</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-12 09:51:08 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; Created an attachment (id=46379) [details]
&gt; 1st step again
&gt; 
&gt; Store Apache PID in a variable and override Apache settings to put the
&gt; PID file into the directory where run-webkit-tests expects it to be.
&gt; If shut down properly run-webkit-tests should delete the PID directory.
&gt; This is needed in preparation to be able to set a per-instance tmp dir to
&gt; running run-webkit-tests.

I forgot to add that this time I tested it on a Leopard machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179869</commentid>
    <comment_count>52</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-12 09:58:27 -0800</bug_when>
    <thetext>You are only patching run-webkit-tests. I&apos;m concerned that this may interact poorly with run-webkit-httd, did you test this combination?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179904</commentid>
    <comment_count>53</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-12 11:30:01 -0800</bug_when>
    <thetext>IMO, run-webkit-tests should be re-written to use run-webkit-httpd.  It&apos;s silly to have copy-paste code between the two. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179906</commentid>
    <comment_count>54</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-12 11:32:49 -0800</bug_when>
    <thetext>Also (and this should not block this work in any way), you should be aware that Dirk is working on giving webkit.org a python version of run_webkit_tests which Chromium has been using for some time.  It has some wizbang features like being able to run all the tests in &lt; 2m on my machine due to its use of multiple DRT instances. :)  Ojan has likewise re-written run-webkit-httpd in python in the Chromium repository.  My eventually goal is for us to finish up-streaming the chromium architecture, and then for webkit to make intelligent decisions about which parts to adopt and which parts to chuck.  This should not block your work, but you should be aware of it.  It may already be possible for instance to run more than one copy of run_webkit_tests.py concurrently on the same machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179910</commentid>
    <comment_count>55</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-12 11:35:42 -0800</bug_when>
    <thetext>The Python version should probably take over the name run-webkit-tests rather than having a similar but subtly different name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180130</commentid>
    <comment_count>56</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-13 02:10:36 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; IMO, run-webkit-tests should be re-written to use run-webkit-httpd.  It&apos;s silly
&gt; to have copy-paste code between the two. :(

I&apos;ll refactor run-iexploder-tests, run-webkit-httpd and run-webkit-tests to use a common function to open Apache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180133</commentid>
    <comment_count>57</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-13 02:18:02 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; Also (and this should not block this work in any way), you should be aware that
&gt; Dirk is working on giving webkit.org a python version of run_webkit_tests which
&gt; Chromium has been using for some time.  It has some wizbang features like being
&gt; able to run all the tests in &lt; 2m on my machine due to its use of multiple DRT
&gt; instances. :)  Ojan has likewise re-written run-webkit-httpd in python in the
&gt; Chromium repository.  My eventually goal is for us to finish up-streaming the
&gt; chromium architecture, and then for webkit to make intelligent decisions about
&gt; which parts to adopt and which parts to chuck.  This should not block your
&gt; work, but you should be aware of it.  It may already be possible for instance
&gt; to run more than one copy of run_webkit_tests.py concurrently on the same
&gt; machine.

Thanks Eric, I was aware of the python version of run-webkit-tests from chromium. 
I suppose we can switch to the python version as soon as possible if it gets into mainline, but until then we need this feature to be implemented in the perl script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180743</commentid>
    <comment_count>58</comment_count>
      <attachid>46575</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-14 09:30:14 -0800</bug_when>
    <thetext>Created attachment 46575
Extract Apache handling to httpd.pm module

Extract Apache handling to httpd.pm module and use the provided functionality in scripts where Apache is needed.
The module httpd.pm stores the PID of the current Apache daemon in a variable and cleans up the PID directory after Apache properly shut down.
Catching INT and TERM signals allows the scrips to shut down Apache properly even if the testing was interrupted.

The next step will be enabling per-instance temp dirs for run-webkit-tests, so there will be no conflict with leftower files in /tmp and the undeleted symlink /tmp/LayoutTests, which is needed for some tests. This however requires changes in some 20 tests which hardcode /tmp in their javascript code to get the tmp dir path from LayoutTestController.
After enabling the setting of a custom path for local storage and icon database (located now in .local), the last step will be the --wait-for-httpd switch for run-webkit-tests which uses a locking mechanism to ensure that only one tester at a time runs the http tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180744</commentid>
    <comment_count>59</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-14 09:35:47 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; Created an attachment (id=46575) [details]
&gt; Extract Apache handling to httpd.pm module

One suggestion: can you put new Perl &quot;library&quot; files under WebKitTools/Scripts/webkitperl?  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180754</commentid>
    <comment_count>60</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-14 09:50:22 -0800</bug_when>
    <thetext>(In reply to comment #59)
&gt; (In reply to comment #58)
&gt; &gt; Created an attachment (id=46575) [details] [details]
&gt; &gt; Extract Apache handling to httpd.pm module
&gt; 
&gt; One suggestion: can you put new Perl &quot;library&quot; files under
&gt; WebKitTools/Scripts/webkitperl?  Thanks.

In this case I suggest moving WebKitTools/Scripts/SpacingHeuristics.pm, WebKitTools/Scripts/VCSUtils.pm, WebKitTools/Scripts/webkitdirs.pm also to WebKitTools/Scripts/webkitperl in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180761</commentid>
    <comment_count>61</comment_count>
      <attachid>46580</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-14 09:59:48 -0800</bug_when>
    <thetext>Created attachment 46580
Moved httpd.pm to webkitperl directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180765</commentid>
    <comment_count>62</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-14 10:03:03 -0800</bug_when>
    <thetext>(In reply to comment #60)
&gt; (In reply to comment #59)
&gt; &gt; (In reply to comment #58)
&gt; &gt; &gt; Created an attachment (id=46575) [details] [details] [details]
&gt; &gt; &gt; Extract Apache handling to httpd.pm module
&gt; &gt; 
&gt; &gt; One suggestion: can you put new Perl &quot;library&quot; files under
&gt; &gt; WebKitTools/Scripts/webkitperl?  Thanks.
&gt; 
&gt; In this case I suggest moving WebKitTools/Scripts/SpacingHeuristics.pm,
&gt; WebKitTools/Scripts/VCSUtils.pm, WebKitTools/Scripts/webkitdirs.pm also to
&gt; WebKitTools/Scripts/webkitperl in a follow-up.

Agreed -- thanks.  I don&apos;t know if this is applicable to your current work with httpd.pm, but another thing to notice is that we can do Perl unit tests now.  You could follow the pattern for VCSUtils and establish an httpd_unittest folder.  test-webkitperl (and test-webkit-scripts) automatically includes any tests in folders with names of the form *_unittest in that directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181210</commentid>
    <comment_count>63</comment_count>
      <attachid>46673</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-15 05:30:18 -0800</bug_when>
    <thetext>Created attachment 46673
Updated changelog to correctly show added module path

Yesterday I forgot to update the changelog after moving the httpd.pm to webkitperl directory.
I tested all the scripts on a Leopard machine to see if they also work correctly on Mac, but I also set the cq? flag now to be sure that Eric&apos;s cq-bot also checks my changes if somebody reviews.

Chris, unfortunately I have no time for writing unit tests for this module and see absolutelly no need for that, because this is not a frequently changing code as the VCS stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182310</commentid>
    <comment_count>64</comment_count>
      <attachid>46673</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-19 10:44:11 -0800</bug_when>
    <thetext>Comment on attachment 46673
Updated changelog to correctly show added module path

+        * Scripts/webkitperl/httpd.pm: Added.

I&apos;m not sure what the rules for placing Perl modules are. Some are in WebKitTools/Scripts, others in WebKitTools/Scripts/webkitperl.

+my $iExploderLogDir = &quot;/tmp/iExploderLogs&quot;;

We don&apos;t normally use abbreviations if we can avoid them - iExploderLogDirectory would be better.

+configAndOpenHTTPDIfNeeded();

Ditto.

+    system &quot;WebKitTools/Scripts/run-safari&quot;, &quot;-NSOpen&quot;, &quot;$iExploderLogDir/redirect.html&quot;;

If it&apos;s named &quot;log directory&quot;, then it&apos;s not OK to keep other things there.

-my $testDirectory = getcwd() . &quot;/LayoutTests&quot;;
+my $testDirectory = catfile(getcwd(), &quot;LayoutTests&quot;);

Perl documentation says that File::Spec subroutines should not be called directly, but rather as class methods: File::Spec-&gt;catfile(&apos;a&apos;,&apos;b&apos;);. I&apos;m not sure what to make out of this.

+my $testResultsDirectory = catfile($tmpDir, &quot;layout-test-results&quot;);

Ditto. This is repeated several more times in this patch.

+    my @httpdArgs = (
+    &quot;-f&quot;, &quot;$httpdConfig&quot;,
+    &quot;-C&quot;, &quot;DocumentRoot \&quot;$documentRoot\&quot;&quot;,

Seems like these should be indented.

+sub setHTTPDStandalone

It&apos;s not really clear what this function does, it needs a better name. Maybe something related to &quot;waitUntilQuit&quot;?

+$isHttpdOpen = closeHTTPD();

closeHTTPD() doesn&apos;t explicitly return any value. Does this code do what it&apos;s supposed to do in Perl?

+    # Setup a link to where the js test templates are stored, use -c so that mod_alias will already be laoded.

This is just moved code, but: &quot;loaded&quot;.

+my @defaultArgs = getDefaultConfigForTestDir($testDirectory);
+@args = (@defaultArgs, @args);

This code looks fragile. Can there be some check for conflicting arguments?

This generally looks same, and is a great step in the right direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182311</commentid>
    <comment_count>65</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-19 10:44:33 -0800</bug_when>
    <thetext>&gt; This generally looks same

Sane!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182574</commentid>
    <comment_count>66</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-19 18:59:39 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; (From update of attachment 46673 [details])
&gt; +        * Scripts/webkitperl/httpd.pm: Added.
&gt; 
&gt; I&apos;m not sure what the rules for placing Perl modules are. Some are in
&gt; WebKitTools/Scripts, others in WebKitTools/Scripts/webkitperl.

There is no official rule, but the idea going forward was to keep the user-callable scripts in WebKitTools/Scripts, and to put new supporting Perl files in WebKitTools/Scripts/webkitperl.  The Python files are organized similarly (with webkitpy in place of webkitperl).

The supporting Perl files already in WebKitTools/Scripts (like VCSUtils.pm) can be moved into webkitperl at a later date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182756</commentid>
    <comment_count>67</comment_count>
      <attachid>47012</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-20 05:53:59 -0800</bug_when>
    <thetext>Created attachment 47012
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182769</commentid>
    <comment_count>68</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-20 06:25:27 -0800</bug_when>
    <thetext>(In reply to comment #64)
Thanks Alexey for the suggestions.

&gt; I&apos;m not sure what the rules for placing Perl modules are. Some are in
&gt; WebKitTools/Scripts, others in WebKitTools/Scripts/webkitperl.
As Chris explained, we plan to move all the perl modules to WebKitTools/Scripts/webkitperl in a follow-up, which is not a subject of this bug.

&gt; We don&apos;t normally use abbreviations if we can avoid them -
&gt; iExploderLogDirectory would be better.
&gt; If it&apos;s named &quot;log directory&quot;, then it&apos;s not OK to keep other things there.
Renamed

&gt; Perl documentation says that File::Spec subroutines should not be called
&gt; directly, but rather as class methods: File::Spec-&gt;catfile(&apos;a&apos;,&apos;b&apos;);. I&apos;m
&gt; not sure what to make out of this.
I changed it to File::Spec-&gt;catfile, but there are many more places where catfile is used without File::Spec in run-webkit-tests.

&gt; Seems like these should be indented.
Done

&gt; It&apos;s not really clear what this function does, it needs a better name. Maybe
&gt; something related to &quot;waitUntilQuit&quot;?
Renamed to waitForUserInterrupt()

&gt; +$isHttpdOpen = closeHTTPD();
&gt; 
&gt; closeHTTPD() doesn&apos;t explicitly return any value. Does this code do what
&gt; it&apos;s supposed to do in Perl?
closeHTTPD() returns 0 if the closing of Apache succeeded it returns 1 if for some reason the termination timed out. We need to maintain the state on Apache, because to die in closeHTTPD() might cause some trouble in run-webkit-tests.

&gt; +my @defaultArgs = getDefaultConfigForTestDir($testDirectory);
&gt; +@args = (@defaultArgs, @args);
&gt; 
&gt; This code looks fragile. Can there be some check for conflicting arguments?
I do not really think there are conflicting arguments, and the argument list is a list of strings (not an associative array), which can&apos;t be checked effectively. Afaik, Apache uses the last specified options if there is duplication (for example -f) and different other configuration options can be set with -c and -C. I think checking whether the given options are correct is not the scope of this module, it should be checked by the programmer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182823</commentid>
    <comment_count>69</comment_count>
      <attachid>47012</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-20 08:50:13 -0800</bug_when>
    <thetext>Comment on attachment 47012
Updated patch

&gt; closeHTTPD() returns 0 if the closing of Apache succeeded it returns 1 if for
&gt; some reason the termination timed out.

Indeed - I was looking at an old version of this function when I made this comment.

It&apos;s unfortunate to have a function that returns 0 on success, and 1 on failure. Please consider changing this - even having to negate the result each time seems like a low price for consistent return values.

+sub waitForUserInterrupt
+{
+    $standalone = 1;
+}

This function doesn&apos;t wait, it only sets a bit - so it should be called e.g. &quot;setShouldWaitForUserInterrupt&quot;. Also, $standalone should be renamed, too.

r=me, but at least the latter naming issue should be fixed before landing. You may want to submit an updated patch for commit-queue, or someone can make the changes locally, and land this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182877</commentid>
    <comment_count>70</comment_count>
      <attachid>47051</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-20 11:45:30 -0800</bug_when>
    <thetext>Created attachment 47051
update2

Thanks Alexey. I&apos;ve made both changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182880</commentid>
    <comment_count>71</comment_count>
      <attachid>47051</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-20 12:01:01 -0800</bug_when>
    <thetext>Comment on attachment 47051
update2

CQ won&apos;t work without r+ on this patch, I will land it manually. Alexey r+-ed your previous patch, but ask you to fix these thing before landing. You did it, so it is ready for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182881</commentid>
    <comment_count>72</comment_count>
      <attachid>47051</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-20 12:07:10 -0800</bug_when>
    <thetext>Comment on attachment 47051
update2

Landed in http://trac.webkit.org/changeset/53559</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183636</commentid>
    <comment_count>73</comment_count>
      <attachid>47202</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-22 07:09:17 -0800</bug_when>
    <thetext>Created attachment 47202
Implement a locking and scheduling mechanism for http testing sessions

With this we are able to run multiple instances of run-webkit-tests parallel.                        
Setting WEBKIT_WAIT_FOR_HTTPD=1 environment variable before run-webkit-tests enables the feature.
There are issues with precisely simultaneous LocalStorage tests but a patch is in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183826</commentid>
    <comment_count>74</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-01-22 15:13:38 -0800</bug_when>
    <thetext>Removed [] in summary per webkit-dev email.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184584</commentid>
    <comment_count>75</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-26 07:07:54 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=47202) [details]
&gt; Implement a locking and scheduling mechanism for http testing sessions
&gt; 
&gt; With this we are able to run multiple instances of run-webkit-tests parallel.   
&gt; Setting WEBKIT_WAIT_FOR_HTTPD=1 environment variable before run-webkit-tests
&gt; enables the feature.
&gt; There are issues with precisely simultaneous LocalStorage tests but a patch is
&gt; in progress.

Darin, could you please take a look at my latest patch? We need this in to be to start our new buildbots.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184610</commentid>
    <comment_count>76</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-26 09:06:49 -0800</bug_when>
    <thetext>(In reply to comment #75)
&gt; Darin, could you please take a look at my latest patch? We need this in to be
&gt; to start our new buildbots.

I might get a chance soon, but please note that I am only one of the 55 WebKit reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184710</commentid>
    <comment_count>77</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-26 13:59:36 -0800</bug_when>
    <thetext>(In reply to comment #71)
&gt; (From update of attachment 47051 [details])
&gt; CQ won&apos;t work without r+ on this patch, I will land it manually. Alexey r+-ed
&gt; your previous patch, but ask you to fix these thing before landing. You did it,
&gt; so it is ready for landing.

cq+ should work w/o an r+.  it just won&apos;t update the reviewer for you.  We recently added this feature to support &quot;land-safely&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185236</commentid>
    <comment_count>78</comment_count>
      <attachid>47565</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-27 15:08:48 -0800</bug_when>
    <thetext>Created attachment 47565
Rebase and update the changelog and fix a comment typo

I humbly ask somebody for a review, or at least constructive suggestions on how to improve my solution.

Thank you very much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185474</commentid>
    <comment_count>79</comment_count>
      <attachid>47618</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-28 07:17:07 -0800</bug_when>
    <thetext>Created attachment 47618
Style fixes and simlifications as discussed on IRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185947</commentid>
    <comment_count>80</comment_count>
      <attachid>47618</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-29 13:39:56 -0800</bug_when>
    <thetext>Comment on attachment 47618
Style fixes and simlifications as discussed on IRC

&gt; +my $shouldWaitForHTTPD = ($ENV{&quot;WEBKIT_WAIT_FOR_HTTPD&quot;})?1:0;

Extra parentheses here. And usually we would use spaces around operators, like the &quot;?&quot; and the &quot;:&quot;.

And there&apos;s no real reason to include the &quot;? 1 : 0&quot; because the sites using the variable will evaluate it in a boolean context just as this expression would.

&gt; +if (getWaitTime() &gt; 0.5) {

Seems strange to call getWaitTime() three times instead of just once. How did you choose &quot;0.5&quot; as the cut-off?

&gt; +my $exclusiveLock = File::Spec-&gt;catfile($tmpDir, &quot;WebKit.lock&quot;);

The other variables with filenames in them have &quot;file&quot; or &quot;path&quot; at the end of their names.

&gt; -            die &quot;Timed out waiting for httpd to quit&quot; unless $retryCount;
&gt; +            if (!$retryCount) {
&gt; +                cleanup();
&gt; +                die &quot;Timed out waiting for httpd to quit&quot; unless $retryCount;
&gt; +            }

Should remove the &quot;unless $retryCount&quot;.

&gt; +sub cleanup

The verb &quot;clean up&quot; is two words, so this should be &quot;cleanUp&quot; rather than &quot;cleanup&quot;. YOu did not add it, though.

&gt; +    my ($lockFile) = @_;
&gt; +    my $number = -1;
&gt; +    $number = substr($lockFile, length($httpdLockPrefix)) if $lockFile;
&gt; +    return $number;

I would write this differently.

    return -1 if $lockFile;
    return substr($lockFile, length($httpdLockPrefix));

&gt; +    opendir (TMPDIR, $tmpDir);

We normally don’t use spaces before parentheses like this. Also we normally put &quot;or die&quot; after this kind of function call.

I have to go do something else now, and can&apos;t finish reviewing, but I wanted to post my comments on the first part of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185953</commentid>
    <comment_count>81</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-29 13:56:06 -0800</bug_when>
    <thetext>&gt; I have to go do something else now, and can&apos;t finish reviewing, but I wanted to
&gt; post my comments on the first part of the patch.
Thank you Darin. I&apos;ll address these. The</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185997</commentid>
    <comment_count>82</comment_count>
      <attachid>47742</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-29 16:22:34 -0800</bug_when>
    <thetext>Created attachment 47742
updated patch

Suggested issues corrected and furder simplified the helper methods.

The bug is getting very big and confusing now whith its many patches and discussions, this scares off reviewers, so we will file other bugs to depend on for this master bug to address the remaining minor issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186111</commentid>
    <comment_count>83</comment_count>
      <attachid>47768</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-30 06:51:26 -0800</bug_when>
    <thetext>Created attachment 47768
Rebased patch after r54084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186175</commentid>
    <comment_count>84</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-01-31 00:37:26 -0800</bug_when>
    <thetext>I&apos;ve been seeing some issues with the buildbots on Windows (where once one http test times out, they all start timing out), and I believe it&apos;s r53559 that caused it, but I don&apos;t have any evidence behind this.

Did this test change the way run-webkit-tests recovers from a timeout in http tests?

Any feedback on whether or not this could be causing that issue would be great.

Example stdio:

http://build.webkit.org/builders/Windows%20Release%20%28Tests%29/builds/8571/steps/layout-test/logs/stdio

Once http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html -&gt; timed out, then every other test timed out. I&apos;m worried about how run-webkit-tests is recovering from an http timeout after r53559.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186189</commentid>
    <comment_count>85</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-31 06:08:40 -0800</bug_when>
    <thetext>(In reply to comment #84)
&gt; I&apos;ve been seeing some issues with the buildbots on Windows (where once one http
&gt; test times out, they all start timing out), and I believe it&apos;s r53559 that
&gt; caused it, but I don&apos;t have any evidence behind this.
&gt; 
&gt; Did this test change the way run-webkit-tests recovers from a timeout in http
&gt; tests?
&gt; 
&gt; Any feedback on whether or not this could be causing that issue would be great.

r53559 did not change the behaviour at timeout and if the timeout would be related to apache&apos;s start or stop (which was refactored), there should be red stderr messages where the timeout occured in the log you showed.

The logs of Apache are very interesting however in this case:
http://build.webkit.org/results/Windows%20Release%20%28Tests%29/r54106%20%288571%29/access_log.txt
http://build.webkit.org/results/Windows%20Release%20%28Tests%29/r54106%20%288571%29/error_log.txt

Especially the error-log, are many lines like:
[Sat Jan 30 19:54:12 2010] [notice] child pid 2396 exit signal User defined signal 2 (31)
which start before the timeouting xss-DENIED-navigate-opener-document-write.html in the access_log,
127.0.0.1 - - [30/Jan/2010:19:55:34 -0800] &quot;GET /security/aboutBlank/xss-DENIED-navigate-opener-document-write.html HTTP/1.1&quot; 200 3540

Then there is no access log of any other http tests after the timeout and no error messages in stdout which would indicate DRT could not access Apache. This might suggest some strange DRT bug or something similar.
At the end of the error_log there is:

[Sat Jan 30 19:55:51 2010] [notice] child pid 1976 exit signal User defined signal 2 (31)
[Sat Jan 30 21:57:58 2010] [warn] child process 284 still did not exit, sending a SIGTERM
[Sat Jan 30 21:58:02 2010] [error] child process 284 still did not exit, sending a SIGKILL
[Sat Jan 30 21:58:03 2010] [notice] caught SIGTERM, shutting down

What happened in the one hour between 19:55:51 and 21:57:58, where there is no error_log entry at all?
This sigterm at the end is the script initiated kill 15 at the end of the session, but what are these strange sigquit (&quot;User defined signal 2&quot;) and sigkill in the logs? Why does Apache do this, and what processes are these? Only Windows has these log entries among the buildbots, also in the succeeded test runs.

The script works on timeouts the same way it did before the change. The first http test starts Apache, then at the end of the whole session the script sends a sigterm to Apache (that is why we run these tests last). It does not touch Apache on timeouts as it did&apos;t before the change, but my investigation of the logs raised the question in me, maybe at http timeout apache should be restarted, to deal with timeouts caused by strange Apache behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186209</commentid>
    <comment_count>86</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-01-31 10:43:38 -0800</bug_when>
    <thetext>I am still worried about these changes though, because running httpd is now very flaky, and the most recent changes to running http tests have come from this bug. This is something that still needs investigation, because having 300 tests time out after 1 does is not acceptable. I&apos;m trying to figure out where these timeouts started, but the bots don&apos;t keep that much history.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186220</commentid>
    <comment_count>87</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-31 12:04:06 -0800</bug_when>
    <thetext>(In reply to comment #86)
&gt; I am still worried about these changes though, because running httpd is now
&gt; very flaky, and the most recent changes to running http tests have come from
&gt; this bug. This is something that still needs investigation, because having 300
&gt; tests time out after 1 does is not acceptable. I&apos;m trying to figure out where
&gt; these timeouts started, but the bots don&apos;t keep that much history.

I totally agree, that it is not acceptable, to have 300 timeouts because of one test timeout and it needs investigation, but I think it is more likely to be a sporadic sideeffect in http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html or in the testing somewhere, because the change in question is in since 11 days and I&apos;ve only seen these timeouts on the Windows bot since 2 or 3 days. Please let me know what your further investigation revealed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186224</commentid>
    <comment_count>88</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-01-31 13:20:22 -0800</bug_when>
    <thetext>(In reply to comment #87)
&gt; (In reply to comment #86)
I filed a bug to track this issue separatelly, because this bug became rather huge: https://bugs.webkit.org/show_bug.cgi?id=34399.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187156</commentid>
    <comment_count>89</comment_count>
      <attachid>47012</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-02 14:31:38 -0800</bug_when>
    <thetext>Comment on attachment 47012
Updated patch

Clearing ap&apos;s r+ on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187662</commentid>
    <comment_count>90</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-02-04 00:32:08 -0800</bug_when>
    <thetext>Yesterday night in https://bugs.webkit.org/show_bug.cgi?id=34399 we demonstrated that the refactoring patch from this bug isn&apos;t depends on regulary time outs on Windows bots. So I can&apos;t find any reason why not to review httpd locking mechanism patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187743</commentid>
    <comment_count>91</comment_count>
      <attachid>47768</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-02-04 04:52:29 -0800</bug_when>
    <thetext>Comment on attachment 47768
Rebased patch after r54084

Generally I&apos;d like to see a more fleshed out changelog about what&apos;s going on here.

A few style nitpicks:


&gt; +sub filterNumber

I&apos;d rename this extractLockNumber or something along those lines, since you can&apos;t use it to filter any number from any string eg.

&gt; +sub getLockFiles
&gt; +{
&gt; +    opendir(TMPDIR, $tmpDir) or die &quot;Could not open &quot; . $tmpDir . &quot;.&quot;;
&gt; +    my @lockFiles = grep {m/^$httpdLockPrefix\d+$/} readdir TMPDIR;
&gt; +    @lockFiles = sort { filterNumber($a) &lt;=&gt; filterNumber($b) } @lockFiles;
&gt; +    closedir TMPDIR;
&gt; +    return @lockFiles;
&gt; +}

use readdir() and closedir() to match opendir(), ie don&apos;t leave out the parenthesis

&gt; +sub getRunningLockNumber
&gt; +{
&gt; +    my @lockFiles = getLockFiles();
&gt; +    return 0 unless @lockFiles;
&gt; +    return filterNumber($lockFiles[0]);
&gt; +}



&gt; +sub waitForHTTPDLock
&gt; +{
&gt; +    $waitBeginTime = time;
&gt; +    if (scheduleHttpTesting() &gt; 1) {

Refactor scheduleHttpTesting() not return anything, and then do this check in waitForHTTOPD lock, with a comment

&gt; +        my $currentLockFile = File::Spec-&gt;catfile($tmpDir, &quot;$httpdLockPrefix&quot;.getRunningLockNumber());

space between concat operator .

&gt; +        my $currentLockPid = &lt;LOCKFILE&gt; if (-f $currentLockFile &amp;&amp; open(LOCKFILE, &quot;&lt;$currentLockFile&quot;));
&gt; +        # Wait until we are allowed to run the http tests
&gt; +        while($currentLockPid &amp;&amp; $currentLockPid != $$) {

space after while (

&gt; +            $currentLockFile = File::Spec-&gt;catfile($tmpDir, &quot;$httpdLockPrefix&quot;.getRunningLockNumber());

space between concat operator .

&gt; +sub scheduleHttpTesting
&gt; +{
&gt; +    while (!(open(EXLOCK, &quot;&gt;$exclusiveLockFile&quot;) &amp;&amp; flock(EXLOCK, LOCK_EX|LOCK_NB))) {}

full name for EXLOCK

A comment here would be nice

&gt; +    $myLockFile = File::Spec-&gt;catfile($tmpDir, &quot;$httpdLockPrefix&quot;.getNextAvailableLockNumber());

space between concat operator .

&gt; +    open(LOCKFILE, &quot;&gt;$myLockFile&quot;);
&gt; +    print LOCKFILE &quot;$$&quot;;
&gt; +    print EXLOCK &quot;$$&quot;;
&gt; +    close(LOCKFILE);
&gt; +    close(EXLOCK);

I&apos;d like to see LOCKFILE and EXLOCK renamed to better describe how they differ. Comments about this in the changelog would also be nice (ie how the two lock files interact)




&gt; +my $shouldWaitForHTTPD = $ENV{&quot;WEBKIT_WAIT_FOR_HTTPD&quot;};

Please comment in src and changelog why this feature is controlled though an ENV variable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187744</commentid>
    <comment_count>92</comment_count>
      <attachid>47768</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-02-04 04:55:42 -0800</bug_when>
    <thetext>Comment on attachment 47768
Rebased patch after r54084

&gt; +sub getRunningLockNumber
&gt; +{
&gt; +    my @lockFiles = getLockFiles();
&gt; +    return 0 unless @lockFiles;
&gt; +    return filterNumber($lockFiles[0]);
&gt; +}

Also, I&apos;d rename this getLockNumberForCurrentRunning (a bit verbose perhaps), or something along those lines. getRunningLockNumber to me means &quot;running&quot; as in give me the next available/running lock number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187774</commentid>
    <comment_count>93</comment_count>
      <attachid>48137</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-02-04 06:35:22 -0800</bug_when>
    <thetext>Created attachment 48137
Updated naming scheme and changelog as discussed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187775</commentid>
    <comment_count>94</comment_count>
      <attachid>48137</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-02-04 06:44:02 -0800</bug_when>
    <thetext>Comment on attachment 48137
Updated naming scheme and changelog as discussed

r=me with these two fixes before landing:

&gt; -my $verbose = 0;
&gt; +my $verbose = 0; 

Whitespace-change, please fix before landing

&gt; +    &apos;wait-for-httpd&apos; =&gt; \$shouldWaitForHTTPD,

Should be wait-for-http! to signal it&apos;s a boolean flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187776</commentid>
    <comment_count>95</comment_count>
      <attachid>48137</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-02-04 06:54:26 -0800</bug_when>
    <thetext>Comment on attachment 48137
Updated naming scheme and changelog as discussed

Committed in revision 54342. Clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206664</commentid>
    <comment_count>96</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-31 12:51:22 -0700</bug_when>
    <thetext>Adam and I are very interested in this functionality for the EWS bots.  One of the nice things that new-run-webkit-tests does (when running in --chromium mode) is to store the layout test results in the build directory instead of /tmp.  That would also make running more than one run-webkit-tests per machine easier as currently if multiple users run run-webkit-tests one of them is bound to fail due to not being able to access /tmp/layout-test-results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206759</commentid>
    <comment_count>97</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-03-31 15:19:55 -0700</bug_when>
    <thetext>(In reply to comment #96)
You can pass a directory for layout test result with 
(old-)run-webkit-tests with -o option, it works correctly,
so it isn&apos;t a problem. 

There are other problems with running more than one run-webkit-tests:

- hard coded /tmp/... in layout tests - very ugly :((
- not process safe local storage, icon database 
(see: https://bugs.webkit.org/show_bug.cgi?id=36899)
- /tmp/LayoutTests symlink to WEBKIT_SOURCE/LayoutTests
- other hard coded temporary file pathes
(see: https://bugs.webkit.org/show_bug.cgi?id=36899)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207070</commentid>
    <comment_count>98</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-04-01 02:23:52 -0700</bug_when>
    <thetext>We tried multiple aproaches with Ossy to fix the mentioned issues. The non-process safe databases can be fixed with bug 36899, and using the provided per DRT tempdir the ~20 hardcoded /tmp/LayoutTests could also be fixed, but this would need changes to the tests themselves.
The problem is I do not see whether this change would be feasible, because we would need to use js to acquire the path to LayoutTests dir dinamically, and the python script does the whole job without this change, so it might be better to make the python script able to test all platforms rather than hacking the old perl script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207271</commentid>
    <comment_count>99</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-01 11:28:41 -0700</bug_when>
    <thetext>I&apos;m confused on how the python script works around the /tmp/ issue?  Maybe Chromium&apos;s test_shell redirects loads to /tmp/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207284</commentid>
    <comment_count>100</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-01 11:45:35 -0700</bug_when>
    <thetext>(In reply to comment #99)
&gt; I&apos;m confused on how the python script works around the /tmp/ issue?  Maybe
&gt; Chromium&apos;s test_shell redirects loads to /tmp/?

I&apos;m not aware of any hard-coded references to /tmp or any code in test_shell to deal with them. That doesn&apos;t mean that they&apos;re not there, but maybe we don&apos;t run the tests and/or have platform-specific versions of them? I will double check some of the tests listed in the first comment and report back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392366</commentid>
    <comment_count>101</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-04-26 02:50:00 -0700</bug_when>
    <thetext>Runnig multiple instances on close revisions of the LayoutTests dir should be possible with --wait-for-httpd (multiple Qt bots run on the same machine since Q2 last year), furthermore there is active work going on to make new-run-webkit-tests default (BUG 34984), which should resolve any potentially remaining issues.

Closing this bug as fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049854</commentid>
    <comment_count>102</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-19 11:43:37 -0800</bug_when>
    <thetext>Is this feature still used by any supported ports? I&apos;d like to remove it if not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050108</commentid>
    <comment_count>103</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-11-20 04:11:05 -0800</bug_when>
    <thetext>(In reply to comment #102)
&gt; Is this feature still used by any supported ports? I&apos;d like to remove it if
&gt; not.

There were many issues fixed by this bug, many of them were needed
for parallel test running used by new-run-webkit-tests too.

Do you mean only removing http file locking mechanism?
There is already a bug report for it: bug136722</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050155</commentid>
    <comment_count>104</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-20 09:46:32 -0800</bug_when>
    <thetext>Yes, file locking was what caught my eye. Thank you for the pointer to an existing bug!

Was there anything else that was only needed for running multiple run-webkit-tests instances, but not for running tests in parallel under a single run-webkit-tests? We should remove those things too, if there are any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050162</commentid>
    <comment_count>105</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-11-20 10:03:24 -0800</bug_when>
    <thetext>(In reply to comment #104)
&gt; Yes, file locking was what caught my eye. Thank you for the pointer to an
&gt; existing bug!
&gt; 
&gt; Was there anything else that was only needed for running multiple
&gt; run-webkit-tests instances, but not for running tests in parallel under a
&gt; single run-webkit-tests? We should remove those things too, if there are any.

I can&apos;t remember other bug to support running more run-webkit-tests.
Most of these bugs were related to concurrent access to temporary files,
local storage, databases, etc. by different DRT/WTR. Many of them were port
specific. It is absolutely irrelevant if one or more run-webkit-tests run
these DRT/WTR instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050168</commentid>
    <comment_count>106</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-20 10:18:51 -0800</bug_when>
    <thetext>Yes, those things are all good, and still helpful for running tests in parallel within one RWT instance.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45802</attachid>
            <date>2010-01-04 08:49:51 -0800</date>
            <delta_ts>2010-01-05 06:18:11 -0800</delta_ts>
            <desc>1st step: change hardcoded /tmp to File::Spec-&gt;tmpdir()</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>1821</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxZWNhODg0Li4wZmRkNzhmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDEt
MDQgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGhhcmRjb2RlZCAvdG1w
IGluIGh0dHBkIHBpZCBmaWxlIHBhdGggdG8gRmlsZTo6U3BlYy0+dG1wZGlyKCksCisgICAgICAg
IGFuZCByZW1vdmUgdGhlIHBpZGZpbGUgaWYgY2xvc2luZyB0aGUgaHR0cGQuCisKKyAgICAgICAg
KiBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6CisKIDIwMTAtMDEtMDQgIENocmlzIEplcmRvbmVr
ICA8Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IEtpbHplci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCA3NDc2NmYwLi5j
YTgxYTVhIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC0xNDQsNiArMTQ0
LDggQEAgbXkgJHN0cmlwRWRpdGluZ0NhbGxiYWNrcyA9IGlzQ3lnd2luKCk7CiBteSAkdGVzdEhU
VFAgPSAxOwogbXkgJHRlc3RNZWRpYSA9IDE7CiBteSAkdGVzdFJlc3VsdHNEaXJlY3RvcnkgPSAi
L3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzIjsKK215ICRodHRwZFBpZERpciA9IEZpbGU6OlNwZWMt
PnRtcGRpcigpLiIvV2ViS2l0IjsKK215ICRodHRwZFBpZEZpbGUgPSAiJGh0dHBkUGlkRGlyL2h0
dHBkLnBpZCI7CiBteSAkdGVzdHNQZXJEdW1wVG9vbCA9IDEwMDA7CiBteSAkdGhyZWFkZWQgPSAw
OwogIyBEdW1wUmVuZGVyVHJlZSBoYXMgYW4gaW50ZXJuYWwgdGltZW91dCBvZiAxNSBzZWNvbmRz
LCBzbyB0aGlzIG11c3QgYmUgPiAxNS4KQEAgLTEzNDksMTAgKzEzNTEsMTAgQEAgc3ViIG9wZW5I
VFRQRElmTmVlZGVkKCkKIHsKICAgICByZXR1cm4gaWYgJGlzSHR0cGRPcGVuOwogCi0gICAgbWtk
aXIgIi90bXAvV2ViS2l0IjsKKyAgICBta2RpciAiJGh0dHBkUGlkRGlyIjsKICAgICAKLSAgICBp
ZiAoLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCIpIHsKLSAgICAgICAgbXkgJG9sZFBpZCA9IGBj
YXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYDsKKyAgICBpZiAoLWYgIiRodHRwZFBpZEZpbGUiKSB7
CisgICAgICAgIG15ICRvbGRQaWQgPSBgY2F0ICIkaHR0cGRQaWRGaWxlImA7CiAgICAgICAgIGNo
b21wICRvbGRQaWQ7CiAgICAgICAgIGlmICgwICE9IGtpbGwgMCwgJG9sZFBpZCkgewogICAgICAg
ICAgICAgcHJpbnQgIlxuaHR0cGQgaXMgYWxyZWFkeSBydW5uaW5nOiBwaWQgJG9sZFBpZCwga2ls
bGluZy4uLlxuIjsKQEAgLTE0MzEsNyArMTQzMyw4IEBAIHN1YiBjbG9zZUhUVFBEKCkKICAgICBj
bG9zZSBIVFRQRElOOwogICAgIGNsb3NlIEhUVFBET1VUOwogCi0gICAga2lsbCAxNSwgYGNhdCAv
dG1wL1dlYktpdC9odHRwZC5waWRgIGlmIC1mICIvdG1wL1dlYktpdC9odHRwZC5waWQiOworICAg
IGtpbGwgMTUsIGBjYXQgIiRodHRwZFBpZEZpbGUiYCBpZiAtZiAiJGh0dHBkUGlkRmlsZSI7Cisg
ICAgcm10cmVlICIkaHR0cGRQaWREaXIiOwogCiAgICAgJGlzSHR0cGRPcGVuID0gMDsKIH0K
</data>
<flag name="review"
          id="27932"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="27933"
          type_id="3"
          status="-"
          setter="abecsi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45883</attachid>
            <date>2010-01-05 06:18:11 -0800</date>
            <delta_ts>2010-01-05 08:36:24 -0800</delta_ts>
            <desc>1st step 2nd try</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2588</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0OTMyOTdlLi5jOTVjY2JiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDEt
MDUgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGhhcmRjb2RlZCAvdG1w
IGluIHJ1bi13ZWJraXQtdGVzdHMgdG8gRmlsZTo6U3BlYy0+dG1wZGlyKCksCisgICAgICAgIGFu
ZCByZW1vdmUgdGhlIGh0dHBkJ3MgcGlkZmlsZSBkaXJlY3RvcnkgaWYgaHR0cGQgdGVybWluYXRl
ZC4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czoKKwogMjAxMC0wMS0wNCAg
TWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtp
dC10ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCA3NDc2
NmYwLi4yODliM2FlIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC0xNDMs
NyArMTQzLDEwIEBAIG15ICRzaG93SGVscCA9IDA7CiBteSAkc3RyaXBFZGl0aW5nQ2FsbGJhY2tz
ID0gaXNDeWd3aW4oKTsKIG15ICR0ZXN0SFRUUCA9IDE7CiBteSAkdGVzdE1lZGlhID0gMTsKLW15
ICR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9ICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMiOworbXkg
JHRlc3RSZXN1bHRzRGlyZWN0b3J5ID0gY2F0ZmlsZShGaWxlOjpTcGVjLT50bXBkaXIoKSwgImxh
eW91dC10ZXN0LXJlc3VsdHMiKTsKK215ICRsYXlvdXRUZXN0c1N5bUxpbmsgPSBjYXRmaWxlKEZp
bGU6OlNwZWMtPnRtcGRpcigpLCAiTGF5b3V0VGVzdHMiKTsKK215ICRodHRwZFBpZERpciA9IGNh
dGZpbGUoRmlsZTo6U3BlYy0+dG1wZGlyKCksICJXZWJLaXQiKTsKK215ICRodHRwZFBpZEZpbGUg
PSBjYXRmaWxlKCRodHRwZFBpZERpciwgImh0dHBkLnBpZCIpOwogbXkgJHRlc3RzUGVyRHVtcFRv
b2wgPSAxMDAwOwogbXkgJHRocmVhZGVkID0gMDsKICMgRHVtcFJlbmRlclRyZWUgaGFzIGFuIGlu
dGVybmFsIHRpbWVvdXQgb2YgMTUgc2Vjb25kcywgc28gdGhpcyBtdXN0IGJlID4gMTUuCkBAIC00
MDEsNyArNDA0LDcgQEAgaWYgKCRwaXhlbFRlc3RzKSB7CiAgICAgfQogfQogCi1zeXN0ZW0gImxu
IiwgIi1zIiwgJHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90
bXAvTGF5b3V0VGVzdHMiOworc3lzdGVtICJsbiIsICItcyIsICR0ZXN0RGlyZWN0b3J5LCAkbGF5
b3V0VGVzdHNTeW1MaW5rIHVubGVzcyAteCAkbGF5b3V0VGVzdHNTeW1MaW5rOwogCiBteSAlaWdu
b3JlZEZpbGVzID0gKCAicmVzdWx0cy5odG1sIiA9PiAxICk7CiBteSAlaWdub3JlZERpcmVjdG9y
aWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3KHBsYXRmb3JtKTsKQEAgLTEzNDksMTAgKzEzNTIsMTAg
QEAgc3ViIG9wZW5IVFRQRElmTmVlZGVkKCkKIHsKICAgICByZXR1cm4gaWYgJGlzSHR0cGRPcGVu
OwogCi0gICAgbWtkaXIgIi90bXAvV2ViS2l0IjsKKyAgICBta2RpciAkaHR0cGRQaWREaXI7CiAg
ICAgCi0gICAgaWYgKC1mICIvdG1wL1dlYktpdC9odHRwZC5waWQiKSB7Ci0gICAgICAgIG15ICRv
bGRQaWQgPSBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBpZGA7CisgICAgaWYgKC1mICRodHRwZFBp
ZEZpbGUpIHsKKyAgICAgICAgbXkgJG9sZFBpZCA9IGBjYXQgJGh0dHBkUGlkRmlsZWA7CiAgICAg
ICAgIGNob21wICRvbGRQaWQ7CiAgICAgICAgIGlmICgwICE9IGtpbGwgMCwgJG9sZFBpZCkgewog
ICAgICAgICAgICAgcHJpbnQgIlxuaHR0cGQgaXMgYWxyZWFkeSBydW5uaW5nOiBwaWQgJG9sZFBp
ZCwga2lsbGluZy4uLlxuIjsKQEAgLTE0MzEsNyArMTQzNCwxOCBAQCBzdWIgY2xvc2VIVFRQRCgp
CiAgICAgY2xvc2UgSFRUUERJTjsKICAgICBjbG9zZSBIVFRQRE9VVDsKIAotICAgIGtpbGwgMTUs
IGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYCBpZiAtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlk
IjsKKyAgICByZXR1cm4gdW5sZXNzIC1mICRodHRwZFBpZEZpbGU7CisKKyAgICBteSAkaHR0cGRQ
aWQgPSBgY2F0ICRodHRwZFBpZEZpbGVgOworICAgIGtpbGwgMTUsICRodHRwZFBpZDsKKyAgICBt
eSAkcmV0cnlDb3VudCA9IDIwOworICAgIHdoaWxlICgoMCAhPSBraWxsIDAsICRodHRwZFBpZCkg
JiYgJHJldHJ5Q291bnQpIHsKKyAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgLS0kcmV0cnlDb3Vu
dDsKKyAgICB9CisKKyAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byB0ZXJt
aW5hdGUiIHVubGVzcyAkcmV0cnlDb3VudDsKKyAgICBybWRpciAkaHR0cGRQaWREaXI7CiAKICAg
ICAkaXNIdHRwZE9wZW4gPSAwOwogfQo=
</data>
<flag name="commit-queue"
          id="28036"
          type_id="3"
          status="-"
          setter="abecsi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45893</attachid>
            <date>2010-01-05 08:36:24 -0800</date>
            <delta_ts>2010-01-07 03:54:15 -0800</delta_ts>
            <desc>1st step: another try</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2604</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0OTMyOTdlLi5kZTY2ZTkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDEt
MDUgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGhhcmRjb2RlZCAvdG1w
IGluIHJ1bi13ZWJraXQtdGVzdHMgdG8gRmlsZTo6U3BlYy0+dG1wZGlyKCksCisgICAgICAgIGFu
ZCByZW1vdmUgdGhlIGh0dHBkJ3MgcGlkZmlsZSBkaXJlY3RvcnkgaWYgaHR0cGQgdGVybWluYXRl
ZC4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czoKKwogMjAxMC0wMS0wNCAg
TWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtp
dC10ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCA3NDc2
NmYwLi40MDQxYmY4IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC0xNDMs
NyArMTQzLDEwIEBAIG15ICRzaG93SGVscCA9IDA7CiBteSAkc3RyaXBFZGl0aW5nQ2FsbGJhY2tz
ID0gaXNDeWd3aW4oKTsKIG15ICR0ZXN0SFRUUCA9IDE7CiBteSAkdGVzdE1lZGlhID0gMTsKLW15
ICR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9ICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMiOworbXkg
JHRlc3RSZXN1bHRzRGlyZWN0b3J5ID0gY2F0ZmlsZShGaWxlOjpTcGVjLT50bXBkaXIoKSwgImxh
eW91dC10ZXN0LXJlc3VsdHMiKTsKK215ICRsYXlvdXRUZXN0c1N5bUxpbmsgPSBjYXRmaWxlKEZp
bGU6OlNwZWMtPnRtcGRpcigpLCAiTGF5b3V0VGVzdHMiKTsKK215ICRodHRwZFBpZERpciA9IGNh
dGZpbGUoRmlsZTo6U3BlYy0+dG1wZGlyKCksICJXZWJLaXQiKTsKK215ICRodHRwZFBpZEZpbGUg
PSBjYXRmaWxlKCRodHRwZFBpZERpciwgImh0dHBkLnBpZCIpOwogbXkgJHRlc3RzUGVyRHVtcFRv
b2wgPSAxMDAwOwogbXkgJHRocmVhZGVkID0gMDsKICMgRHVtcFJlbmRlclRyZWUgaGFzIGFuIGlu
dGVybmFsIHRpbWVvdXQgb2YgMTUgc2Vjb25kcywgc28gdGhpcyBtdXN0IGJlID4gMTUuCkBAIC00
MDEsNyArNDA0LDcgQEAgaWYgKCRwaXhlbFRlc3RzKSB7CiAgICAgfQogfQogCi1zeXN0ZW0gImxu
IiwgIi1zIiwgJHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90
bXAvTGF5b3V0VGVzdHMiOworc3lzdGVtICJsbiIsICItcyIsICR0ZXN0RGlyZWN0b3J5LCAkbGF5
b3V0VGVzdHNTeW1MaW5rIHVubGVzcyAteCAkbGF5b3V0VGVzdHNTeW1MaW5rOwogCiBteSAlaWdu
b3JlZEZpbGVzID0gKCAicmVzdWx0cy5odG1sIiA9PiAxICk7CiBteSAlaWdub3JlZERpcmVjdG9y
aWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3KHBsYXRmb3JtKTsKQEAgLTEzNDksMTAgKzEzNTIsMTAg
QEAgc3ViIG9wZW5IVFRQRElmTmVlZGVkKCkKIHsKICAgICByZXR1cm4gaWYgJGlzSHR0cGRPcGVu
OwogCi0gICAgbWtkaXIgIi90bXAvV2ViS2l0IjsKKyAgICBta2RpciAkaHR0cGRQaWREaXI7CiAg
ICAgCi0gICAgaWYgKC1mICIvdG1wL1dlYktpdC9odHRwZC5waWQiKSB7Ci0gICAgICAgIG15ICRv
bGRQaWQgPSBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBpZGA7CisgICAgaWYgKC1mICRodHRwZFBp
ZEZpbGUpIHsKKyAgICAgICAgbXkgJG9sZFBpZCA9IGBjYXQgIiRodHRwZFBpZEZpbGUiYDsKICAg
ICAgICAgY2hvbXAgJG9sZFBpZDsKICAgICAgICAgaWYgKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSB7
CiAgICAgICAgICAgICBwcmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1bm5pbmc6IHBpZCAkb2xk
UGlkLCBraWxsaW5nLi4uXG4iOwpAQCAtMTQzMSw3ICsxNDM0LDE4IEBAIHN1YiBjbG9zZUhUVFBE
KCkKICAgICBjbG9zZSBIVFRQRElOOwogICAgIGNsb3NlIEhUVFBET1VUOwogCi0gICAga2lsbCAx
NSwgYGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgIGlmIC1mICIvdG1wL1dlYktpdC9odHRwZC5w
aWQiOworICAgIHJldHVybiB1bmxlc3MgLWYgJGh0dHBkUGlkRmlsZTsKKworICAgIG15ICRodHRw
ZFBpZCA9IGBjYXQgIiRodHRwZFBpZEZpbGUiYDsKKyAgICBraWxsIDE1LCAkaHR0cGRQaWQ7Cisg
ICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKKyAgICB3aGlsZSAoKDAgIT0ga2lsbCAwLCAkaHR0cGRQ
aWQpICYmICRyZXRyeUNvdW50KSB7CisgICAgICAgIHNsZWVwIDE7CisgICAgICAgIC0tJHJldHJ5
Q291bnQ7CisgICAgfQorCisgICAgcHJpbnQgU1RERVJSICJUaW1lZCBvdXQgd2FpdGluZyBmb3Ig
aHR0cGQgdG8gdGVybWluYXRlIVxuIiB1bmxlc3MgJHJldHJ5Q291bnQ7CisgICAgcm1kaXIgJGh0
dHBkUGlkRGlyOwogCiAgICAgJGlzSHR0cGRPcGVuID0gMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46043</attachid>
            <date>2010-01-07 03:54:15 -0800</date>
            <delta_ts>2010-01-12 09:45:46 -0800</delta_ts>
            <desc>Reworked r52853 after r52876 rolled it out.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2888</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4ZjQ5MjFhLi5lN2VkMWUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDEt
MDcgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV3b3JrZWQgcjUyODUzIGFmdGVy
IHI1Mjg3NiByb2xsZWQgaXQgb3V0LgorICAgICAgICBDaG9tcCB0aGUgcGlkIHZhcmlhYmxlIGJl
Zm9yZSBwYXNzaW5nIGl0IHRvIGtpbGwgYW5kIHJlYWQgdGhlIGNvbnRlbnRzIG9mCisgICAgICAg
IHRoZSBwaWRmaWxlIGluIGEgcGxhdGZvcm0gaW5kZXBlbmRlbnQgbWFubmVyLgorICAgICAgICBG
aXJzdCBwYWNoIG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE1
My4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czoKKwogMjAxMC0wMS0wNyAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCA3NDc2NmYwLi5l
OTM3NjcxIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC0xNDMsNyArMTQz
LDEwIEBAIG15ICRzaG93SGVscCA9IDA7CiBteSAkc3RyaXBFZGl0aW5nQ2FsbGJhY2tzID0gaXND
eWd3aW4oKTsKIG15ICR0ZXN0SFRUUCA9IDE7CiBteSAkdGVzdE1lZGlhID0gMTsKLW15ICR0ZXN0
UmVzdWx0c0RpcmVjdG9yeSA9ICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMiOworbXkgJHRlc3RS
ZXN1bHRzRGlyZWN0b3J5ID0gY2F0ZmlsZShGaWxlOjpTcGVjLT50bXBkaXIoKSwgImxheW91dC10
ZXN0LXJlc3VsdHMiKTsKK215ICRsYXlvdXRUZXN0c1N5bUxpbmsgPSBjYXRmaWxlKEZpbGU6OlNw
ZWMtPnRtcGRpcigpLCAiTGF5b3V0VGVzdHMiKTsKK215ICRodHRwZFBpZERpciA9IGNhdGZpbGUo
RmlsZTo6U3BlYy0+dG1wZGlyKCksICJXZWJLaXQiKTsKK215ICRodHRwZFBpZEZpbGUgPSBjYXRm
aWxlKCRodHRwZFBpZERpciwgImh0dHBkLnBpZCIpOwogbXkgJHRlc3RzUGVyRHVtcFRvb2wgPSAx
MDAwOwogbXkgJHRocmVhZGVkID0gMDsKICMgRHVtcFJlbmRlclRyZWUgaGFzIGFuIGludGVybmFs
IHRpbWVvdXQgb2YgMTUgc2Vjb25kcywgc28gdGhpcyBtdXN0IGJlID4gMTUuCkBAIC00MDEsNyAr
NDA0LDcgQEAgaWYgKCRwaXhlbFRlc3RzKSB7CiAgICAgfQogfQogCi1zeXN0ZW0gImxuIiwgIi1z
IiwgJHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90bXAvTGF5
b3V0VGVzdHMiOworc3lzdGVtICJsbiIsICItcyIsICR0ZXN0RGlyZWN0b3J5LCAkbGF5b3V0VGVz
dHNTeW1MaW5rIHVubGVzcyAteCAkbGF5b3V0VGVzdHNTeW1MaW5rOwogCiBteSAlaWdub3JlZEZp
bGVzID0gKCAicmVzdWx0cy5odG1sIiA9PiAxICk7CiBteSAlaWdub3JlZERpcmVjdG9yaWVzID0g
bWFwIHsgJF8gPT4gMSB9IHF3KHBsYXRmb3JtKTsKQEAgLTEzNDksMTEgKzEzNTIsMTMgQEAgc3Vi
IG9wZW5IVFRQRElmTmVlZGVkKCkKIHsKICAgICByZXR1cm4gaWYgJGlzSHR0cGRPcGVuOwogCi0g
ICAgbWtkaXIgIi90bXAvV2ViS2l0IjsKLSAgICAKLSAgICBpZiAoLWYgIi90bXAvV2ViS2l0L2h0
dHBkLnBpZCIpIHsKLSAgICAgICAgbXkgJG9sZFBpZCA9IGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQu
cGlkYDsKKyAgICBta2RpcigkaHR0cGRQaWREaXIsIDA3NTUpOworCisgICAgaWYgKC1mICRodHRw
ZFBpZEZpbGUpIHsKKyAgICAgICAgb3BlbiAoUElERklMRSwgJGh0dHBkUGlkRmlsZSk7CisgICAg
ICAgIG15ICRvbGRQaWQgPSA8UElERklMRT47CiAgICAgICAgIGNob21wICRvbGRQaWQ7CisgICAg
ICAgIGNsb3NlIFBJREZJTEU7CiAgICAgICAgIGlmICgwICE9IGtpbGwgMCwgJG9sZFBpZCkgewog
ICAgICAgICAgICAgcHJpbnQgIlxuaHR0cGQgaXMgYWxyZWFkeSBydW5uaW5nOiBwaWQgJG9sZFBp
ZCwga2lsbGluZy4uLlxuIjsKICAgICAgICAgICAgIGtpbGwgMTUsICRvbGRQaWQ7CkBAIC0xNDMx
LDcgKzE0MzYsMjEgQEAgc3ViIGNsb3NlSFRUUEQoKQogICAgIGNsb3NlIEhUVFBESU47CiAgICAg
Y2xvc2UgSFRUUERPVVQ7CiAKLSAgICBraWxsIDE1LCBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBp
ZGAgaWYgLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCI7CisgICAgb3BlbiAoUElERklMRSwgJGh0
dHBkUGlkRmlsZSk7CisgICAgbXkgJGh0dHBkUGlkID0gPFBJREZJTEU+OworICAgIGNob21wICRo
dHRwZFBpZDsKKyAgICBjbG9zZSBQSURGSUxFOworICAgIGlmICgkaHR0cGRQaWQpIHsKKyAgICAg
ICAga2lsbCAxNSwgJGh0dHBkUGlkOworICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOworICAg
ICAgICB3aGlsZSAoKDAgIT0ga2lsbCAwLCAkaHR0cGRQaWQpICYmICRyZXRyeUNvdW50KSB7Cisg
ICAgICAgICAgICBzbGVlcCAxOworICAgICAgICAgICAgLS0kcmV0cnlDb3VudDsKKyAgICAgICAg
fQorCisgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRv
IHRlcm1pbmF0ZSFcbiIgdW5sZXNzICRyZXRyeUNvdW50OworICAgIH0KKyAgICBybWRpciAkaHR0
cGRQaWREaXI7CiAKICAgICAkaXNIdHRwZE9wZW4gPSAwOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46052</attachid>
            <date>2010-01-07 07:35:17 -0800</date>
            <delta_ts>2010-01-07 10:36:49 -0800</delta_ts>
            <desc>2nd step: run-webkit-tests --http-as-last option</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2702</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMmRiM2E1Li5mZTViN2VjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDEt
MDcgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHJ1bi13ZWJraXQt
dGVzdHMgLS1odHRwLWFzLWxhc3Qgb3B0aW9uIHRvIGJlIGFibGUgdG8gcnVuIHRoZSBodHRwIHRl
c3RzIGFmdGVyIGFsbCBvdGhlciB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtp
dC10ZXN0czoKKwogMjAxMC0wMS0wNyAgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21v
dm9rLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCBlOTM3NjcxLi5kNGYxMjY3IDEwMDc1NQotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC0xNDcsNiArMTQ3LDcgQEAgbXkgJHRlc3RSZXN1
bHRzRGlyZWN0b3J5ID0gY2F0ZmlsZShGaWxlOjpTcGVjLT50bXBkaXIoKSwgImxheW91dC10ZXN0
LXJlc3VsdHMiKTsKIG15ICRsYXlvdXRUZXN0c1N5bUxpbmsgPSBjYXRmaWxlKEZpbGU6OlNwZWMt
PnRtcGRpcigpLCAiTGF5b3V0VGVzdHMiKTsKIG15ICRodHRwZFBpZERpciA9IGNhdGZpbGUoRmls
ZTo6U3BlYy0+dG1wZGlyKCksICJXZWJLaXQiKTsKIG15ICRodHRwZFBpZEZpbGUgPSBjYXRmaWxl
KCRodHRwZFBpZERpciwgImh0dHBkLnBpZCIpOworbXkgJGh0dHBBc0xhc3QgPSAwOwogbXkgJHRl
c3RzUGVyRHVtcFRvb2wgPSAxMDAwOwogbXkgJHRocmVhZGVkID0gMDsKICMgRHVtcFJlbmRlclRy
ZWUgaGFzIGFuIGludGVybmFsIHRpbWVvdXQgb2YgMTUgc2Vjb25kcywgc28gdGhpcyBtdXN0IGJl
ID4gMTUuCkBAIC0yMjYsNiArMjI3LDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10g
W3Rlc3RkaXJ8dGVzdHBhdGggLi4uXQogICAtLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyBOICAgICAg
IEV4aXQgYWZ0ZXIgdGhlIGZpcnN0IE4gZmFpbHVyZXMgaW5zdGVhZCBvZiBydW5uaW5nIGFsbCB0
ZXN0cwogICAtaHwtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1l
c3NhZ2UKICAgLS1bbm8tXWh0dHAgICAgICAgICAgICAgICAgICAgICBSdW4gKG9yIGRvIG5vdCBy
dW4pIGh0dHAgdGVzdHMgKGRlZmF1bHQ6ICRodHRwRGVmYXVsdCkKKyAgLS1odHRwLWFzLWxhc3Qg
ICAgICAgICAgICAgICAgICBSdW4gdGhlIGh0dHAgdGVzdCBhZnRlciBhbGwgb3RoZXIgdGVzdHMu
CiAgIC1pfC0taWdub3JlLXRlc3RzICAgICAgICAgICAgICAgQ29tbWEtc2VwYXJhdGVkIGxpc3Qg
b2YgZGlyZWN0b3JpZXMgb3IgdGVzdHMgdG8gaWdub3JlCiAgIC0taXRlcmF0aW9ucyBuICAgICAg
ICAgICAgICAgICAgTnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgc2V0IG9mIHRlc3RzIChlLmcu
IEFCQ0FCQ0FCQykKICAgLS1bbm8tXWxhdW5jaC1zYWZhcmkgICAgICAgICAgICBMYXVuY2ggKG9y
IGRvIG5vdCBsYXVuY2gpIFNhZmFyaSB0byBkaXNwbGF5IHRlc3QgcmVzdWx0cyAoZGVmYXVsdDog
JGxhdW5jaFNhZmFyaURlZmF1bHQpCkBAIC0yNjksNiArMjcxLDcgQEAgbXkgJGdldE9wdGlvbnNS
ZXN1bHQgPSBHZXRPcHRpb25zKAogICAgICdndWFyZC1tYWxsb2N8ZycgPT4gXCRndWFyZE1hbGxv
YywKICAgICAnaGVscHxoJyA9PiBcJHNob3dIZWxwLAogICAgICdodHRwIScgPT4gXCR0ZXN0SFRU
UCwKKyAgICAnaHR0cC1hcy1sYXN0JyA9PiBcJGh0dHBBc0xhc3QsCiAgICAgJ2lnbm9yZS1tZXRy
aWNzIScgPT4gXCRpZ25vcmVNZXRyaWNzLAogICAgICdpZ25vcmUtdGVzdHN8aT1zJyA9PiBcJGln
bm9yZVRlc3RzLAogICAgICdpdGVyYXRpb25zPWknID0+IFwkaXRlcmF0aW9ucywKQEAgLTIyNDAs
NiArMjI0MywxOSBAQCBzdWIgZmluZFRlc3RzVG9SdW4KIAogICAgIEB0ZXN0c1RvUnVuID0gc29y
dCBwYXRoY21wIEB0ZXN0c1RvUnVuOwogCisgICAgaWYgKCRodHRwQXNMYXN0IHx8ICRFTlZ7IkhU
VFBfQVNfTEFTVCJ9KSB7CisgICAgICAgIG15IEBodHRwVGVzdHM7CisgICAgICAgIG15IEBvdGhl
clRlc3RzOworICAgICAgICBmb3JlYWNoIG15ICR0ZXN0IChAdGVzdHNUb1J1bikgeworICAgICAg
ICAgICAgaWYgKCR0ZXN0ID1+IC9eaHR0cFwvLykgeworICAgICAgICAgICAgICAgIHB1c2goQGh0
dHBUZXN0cywgJHRlc3QpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBvdGhlclRlc3RzLCAkdGVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgQHRlc3RzVG9SdW4gPSAoQG90aGVyVGVzdHMsIEBodHRwVGVzdHMpOworICAgIH0KKwogICAg
ICMgUmV2ZXJzZSB0aGUgdGVzdHMKICAgICBAdGVzdHNUb1J1biA9IHJldmVyc2UgQHRlc3RzVG9S
dW4gaWYgJHJldmVyc2VUZXN0czsKIAo=
</data>
<flag name="review"
          id="28253"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="28254"
          type_id="3"
          status="-"
          setter="abecsi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46063</attachid>
            <date>2010-01-07 10:36:49 -0800</date>
            <delta_ts>2010-01-14 09:30:14 -0800</delta_ts>
            <desc>2nd: step again</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>1240</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMmRiM2E1Li4zZjhmOTc1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDEt
MDcgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUnVuIHRoZSBodHRwIGFuZCB3ZWJz
b2NrZXQgdGVzdHMgYWZ0ZXIgYWxsIG90aGVyIHRlc3RzLgorCisgICAgICAgICogU2NyaXB0cy9y
dW4td2Via2l0LXRlc3RzOgorCiAyMDEwLTAxLTA3ICBLaW0gR3LDtm5ob2xtICA8a2ltLmdyb25o
b2xtQG5vbW92b2suY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IGU5Mzc2NzEuLjliNmEyNmUgMTAw
NzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cworKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTIyNDAsNiArMjI0MCwyMCBAQCBz
dWIgZmluZFRlc3RzVG9SdW4KIAogICAgIEB0ZXN0c1RvUnVuID0gc29ydCBwYXRoY21wIEB0ZXN0
c1RvUnVuOwogCisgICAgbXkgQGh0dHBUZXN0czsKKyAgICBteSBAd2Vic29ja2V0VGVzdHM7Cisg
ICAgbXkgQG90aGVyVGVzdHM7CisgICAgZm9yZWFjaCBteSAkdGVzdCAoQHRlc3RzVG9SdW4pIHsK
KyAgICAgICAgaWYgKCR0ZXN0ID1+IC9eaHR0cFwvLykgeworICAgICAgICAgICAgcHVzaChAaHR0
cFRlc3RzLCAkdGVzdCk7CisgICAgICAgIH0gZWxzaWYgKCR0ZXN0ID1+IC9ed2Vic29ja2V0XC8v
KSB7CisgICAgICAgICAgICBwdXNoKEB3ZWJzb2NrZXRUZXN0cywgJHRlc3QpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcHVzaChAb3RoZXJUZXN0cywgJHRlc3QpOworICAgICAgICB9
CisgICAgfQorICAgIEB0ZXN0c1RvUnVuID0gKEBvdGhlclRlc3RzLCBAaHR0cFRlc3RzLCBAd2Vi
c29ja2V0VGVzdHMpOworCiAgICAgIyBSZXZlcnNlIHRoZSB0ZXN0cwogICAgIEB0ZXN0c1RvUnVu
ID0gcmV2ZXJzZSBAdGVzdHNUb1J1biBpZiAkcmV2ZXJzZVRlc3RzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46379</attachid>
            <date>2010-01-12 09:45:46 -0800</date>
            <delta_ts>2010-01-13 02:11:07 -0800</delta_ts>
            <desc>1st step again</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4029</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkNmYxOGFlLi4yNTY1MGI5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDEt
MTIgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgQXBhY2hlIFBJRCBpbiBh
IHZhcmlhYmxlIGFuZCBvdmVycmlkZSBBcGFjaGUgc2V0dGluZ3MgdG8gcHV0IHRoZQorICAgICAg
ICBQSUQgZmlsZSBpbnRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgcnVuLXdlYmtpdC10ZXN0cyBleHBl
Y3RzIGl0IHRvIGJlLgorICAgICAgICBJZiBzaHV0IGRvd24gcHJvcGVybHkgcnVuLXdlYmtpdC10
ZXN0cyBzaG91bGQgZGVsZXRlIHRoZSBQSUQgZGlyZWN0b3J5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTMKKworICAgICAgICAqIFNjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0czoKKwogMjAxMC0wMS0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IDM5ZWQ1MDEuLmJmYmE3Y2YgMTAwNzU1Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cworKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTE0Myw3ICsxNDMsMTEgQEAgbXkgJHNob3dIZWxwID0g
MDsKIG15ICRzdHJpcEVkaXRpbmdDYWxsYmFja3MgPSBpc0N5Z3dpbigpOwogbXkgJHRlc3RIVFRQ
ID0gMTsKIG15ICR0ZXN0TWVkaWEgPSAxOwotbXkgJHRlc3RSZXN1bHRzRGlyZWN0b3J5ID0gIi90
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cyI7CitteSAkdG1wRGlyID0gIi90bXAiOworbXkgJHRlc3RS
ZXN1bHRzRGlyZWN0b3J5ID0gY2F0ZmlsZSgkdG1wRGlyLCAibGF5b3V0LXRlc3QtcmVzdWx0cyIp
OworbXkgJGh0dHBkUGlkRGlyID0gY2F0ZmlsZSgkdG1wRGlyLCAiV2ViS2l0Iik7CitteSAkaHR0
cGRQaWRGaWxlID0gY2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5waWQiKTsKK215ICRodHRw
ZFBpZDsKIG15ICR0ZXN0c1BlckR1bXBUb29sID0gMTAwMDsKIG15ICR0aHJlYWRlZCA9IDA7CiAj
IER1bXBSZW5kZXJUcmVlIGhhcyBhbiBpbnRlcm5hbCB0aW1lb3V0IG9mIDE1IHNlY29uZHMsIHNv
IHRoaXMgbXVzdCBiZSA+IDE1LgpAQCAtMzgzLDYgKzM4Nyw3IEBAIG15IEBwbGF0Zm9ybVRlc3RI
aWVyYXJjaHkgPSBidWlsZFBsYXRmb3JtVGVzdEhpZXJhcmNoeShAcGxhdGZvcm1SZXN1bHRIaWVy
YXJjaHkpCiAKICRleHBlY3RlZERpcmVjdG9yeSA9ICRFTlZ7IldlYktpdEV4cGVjdGVkVGVzdFJl
c3VsdHNEaXJlY3RvcnkifSBpZiAkRU5WeyJXZWJLaXRFeHBlY3RlZFRlc3RSZXN1bHRzRGlyZWN0
b3J5In07CiAKKyR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoJHRl
c3RSZXN1bHRzRGlyZWN0b3J5KTsKIG15ICR0ZXN0UmVzdWx0cyA9IGNhdGZpbGUoJHRlc3RSZXN1
bHRzRGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIik7CiAKIHByaW50ICJSdW5uaW5nIHRlc3RzIGZy
b20gJHRlc3REaXJlY3RvcnlcbiI7CkBAIC0xMzQ5LDExICsxMzU0LDEzIEBAIHN1YiBvcGVuSFRU
UERJZk5lZWRlZCgpCiB7CiAgICAgcmV0dXJuIGlmICRpc0h0dHBkT3BlbjsKIAotICAgIG1rZGly
ICIvdG1wL1dlYktpdCI7Ci0gICAgCi0gICAgaWYgKC1mICIvdG1wL1dlYktpdC9odHRwZC5waWQi
KSB7Ci0gICAgICAgIG15ICRvbGRQaWQgPSBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBpZGA7Cisg
ICAgbWtkaXIoJGh0dHBkUGlkRGlyLCAwNzU1KTsKKworICAgIGlmICgtZiAkaHR0cGRQaWRGaWxl
KSB7CisgICAgICAgIG9wZW4gKFBJREZJTEUsICRodHRwZFBpZEZpbGUpOworICAgICAgICBteSAk
b2xkUGlkID0gPFBJREZJTEU+OwogICAgICAgICBjaG9tcCAkb2xkUGlkOworICAgICAgICBjbG9z
ZSBQSURGSUxFOwogICAgICAgICBpZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsKICAgICAgICAg
ICAgIHByaW50ICJcbmh0dHBkIGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtpbGxp
bmcuLi5cbiI7CiAgICAgICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwpAQCAtMTM5NCw2ICsxNDAx
LDkgQEAgc3ViIG9wZW5IVFRQRElmTmVlZGVkKCkKICAgICBteSAkYWJzVGVzdFJlc3VsdHNEaXJl
Y3RvcnkgPSByZXNvbHZlQW5kTWFrZVRlc3RSZXN1bHRzRGlyZWN0b3J5KCk7CiAgICAgbXkgJHNz
bENlcnRpZmljYXRlID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi93ZWJraXQtaHR0cGQucGVt
IjsKIAorICAgIG15ICRodHRwZExvY2tGaWxlID0gY2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRw
ZC5sb2NrIik7CisgICAgbXkgJGh0dHBkU2NvcmVCb2FyZEZpbGUgPSBjYXRmaWxlKCRodHRwZFBp
ZERpciwgImh0dHBkLnNjb3JlYm9hcmQiKTsKKwogICAgIG15IEBhcmdzID0gKAogICAgICAgICAi
LWYiLCAiJGh0dHBkQ29uZmlnIiwKICAgICAgICAgIi1DIiwgIkRvY3VtZW50Um9vdCBcIiRkb2N1
bWVudFJvb3RcIiIsCkBAIC0xNDAzLDYgKzE0MTMsOSBAQCBzdWIgb3BlbkhUVFBESWZOZWVkZWQo
KQogICAgICAgICAiLWMiLCAiVHlwZXNDb25maWcgXCIkdHlwZXNDb25maWdcIiIsCiAgICAgICAg
ICItYyIsICJDdXN0b21Mb2cgXCIkYWJzVGVzdFJlc3VsdHNEaXJlY3RvcnkvYWNjZXNzX2xvZy50
eHRcIiBjb21tb24iLAogICAgICAgICAiLWMiLCAiRXJyb3JMb2cgXCIkYWJzVGVzdFJlc3VsdHNE
aXJlY3RvcnkvZXJyb3JfbG9nLnR4dFwiIiwKKyAgICAgICAgIi1jIiwgIkxvY2tGaWxlIFwiJGh0
dHBkTG9ja0ZpbGVcIiIsCisgICAgICAgICItYyIsICJQaWRGaWxlIFwiJGh0dHBkUGlkRmlsZVwi
IiwKKyAgICAgICAgIi1jIiwgIlNjb3JlQm9hcmRGaWxlIFwiJGh0dHBkU2NvcmVCb2FyZEZpbGVc
IiIsCiAgICAgICAgICMgQXBhY2hlIHdvdWxkbid0IHJ1biBDR0lzIHdpdGggcGVybWlzc2lvbnM9
PTcwMCBvdGhlcndpc2UKICAgICAgICAgIi1jIiwgIlVzZXIgXCIjJDxcIiIKICAgICApOwpAQCAt
MTQyMCw2ICsxNDMzLDEwIEBAIHN1YiBvcGVuSFRUUERJZk5lZWRlZCgpCiAgICAgfQogICAgIAog
ICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHN0YXJ0IiB1bmxlc3MgJHJl
dHJ5Q291bnQ7CisKKyAgICAkaHR0cGRQaWQgPSA8UElERklMRT4gaWYgb3BlbihQSURGSUxFLCAk
aHR0cGRQaWRGaWxlKTsKKyAgICBjaG9tcCAkaHR0cGRQaWQgaWYgJGh0dHBkUGlkOworICAgIGNs
b3NlIFBJREZJTEU7CiAgICAgCiAgICAgJGlzSHR0cGRPcGVuID0gMTsKIH0KQEAgLTE0MzEsNyAr
MTQ0OCwxNyBAQCBzdWIgY2xvc2VIVFRQRCgpCiAgICAgY2xvc2UgSFRUUERJTjsKICAgICBjbG9z
ZSBIVFRQRE9VVDsKIAotICAgIGtpbGwgMTUsIGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYCBp
ZiAtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIjsKKyAgICBpZiAoJGh0dHBkUGlkKSB7CisgICAg
ICAgIGtpbGwgMTUsICRodHRwZFBpZDsKKyAgICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKKyAg
ICAgICAgd2hpbGUgKCgwICE9IGtpbGwgMCwgJGh0dHBkUGlkKSAmJiAkcmV0cnlDb3VudCkgewor
ICAgICAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7CisgICAgICAg
IH0KKworICAgICAgICBwcmludCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0
byB0ZXJtaW5hdGUhXG4iIHVubGVzcyAkcmV0cnlDb3VudDsKKyAgICB9CisgICAgcm1kaXIgJGh0
dHBkUGlkRGlyOwogCiAgICAgJGlzSHR0cGRPcGVuID0gMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46575</attachid>
            <date>2010-01-14 09:30:14 -0800</date>
            <delta_ts>2010-01-14 09:59:48 -0800</delta_ts>
            <desc>Extract Apache handling to httpd.pm module</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22443</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwZWVlMjNhLi5iYTMxOWU0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEt
MTQgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCBBcGFjaGUgaGFuZGxp
bmcgdG8gaHR0cGQucG0gbW9kdWxlIGFuZCB1c2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uYWxpdHkK
KyAgICAgICAgaW4gc2NyaXB0cyB3aGVyZSBBcGFjaGUgaXMgbmVlZGVkLgorICAgICAgICBUaGUg
bW9kdWxlIGh0dHBkLnBtIHN0b3JlcyB0aGUgUElEIG9mIEFwYWNoZSBpbiBhIHZhcmlhYmxlIGFu
ZCBjbGVhbnMgdXAKKyAgICAgICAgdGhlIFBJRCBkaXJlY3RvcnkgYWZ0ZXIgQXBhY2hlIHByb3Bl
cmx5IHNodXQgZG93bi4gQ2F0Y2hpbmcgSU5UIGFuZCBURVJNCisgICAgICAgIHNpZ25hbHMgYWxs
b3dzIHRoZSBzY3JpcHMgdG8gc2h1dCBkb3duIEFwYWNoZSBwcm9wZXJseSBldmVuIGlmIHRoZSB0
ZXN0aW5nCisgICAgICAgIHdhcyBpbnRlcnJ1cHRlZC4KKworICAgICAgICAqIFNjcmlwdHMvaHR0
cGQucG06IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0czoKKyAg
ICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtaHR0cGQ6CisgICAgICAgICogU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzOgorCiAyMDEwLTAxLTE0ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50
dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2h0dHBkLnBtIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9odHRwZC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzY2
ZjkxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9odHRwZC5wbQpAQCAt
MCwwICsxLDIxMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCisjIENvcHlyaWdodCAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisjIENvcHlyaWdodCAoQykgMjAxMCBB
bmRyYXMgQmVjc2kgKGFiZWNzaUBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdl
ZAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIE1vZHVsZSB0byBzaGFyZSBjb2RlIHRv
IHN0YXJ0IGFuZCBzdG9wIHRoZSBBcGFjaGUgZGFlbW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdh
cm5pbmdzOworCit1c2UgRmlsZTo6UGF0aDsKK3VzZSBGaWxlOjpTcGVjOwordXNlIEZpbGU6OlNw
ZWM6OkZ1bmN0aW9uczsKK3VzZSBJUEM6Ok9wZW4yOworCit1c2Ugd2Via2l0ZGlyczsKKworQkVH
SU4geworICAgdXNlIEV4cG9ydGVyICAgKCk7CisgICBvdXIgKCRWRVJTSU9OLCBASVNBLCBARVhQ
T1JULCBARVhQT1JUX09LLCAlRVhQT1JUX1RBR1MpOworICAgJFZFUlNJT04gICAgID0gMS4wMDsK
KyAgIEBJU0EgICAgICAgICA9IHF3KEV4cG9ydGVyKTsKKyAgIEBFWFBPUlQgICAgICA9IHF3KCZn
ZXRIVFRQRFBhdGggJmdldERlZmF1bHRDb25maWdGb3JUZXN0RGlyICZvcGVuSFRUUEQgJmNsb3Nl
SFRUUEQgJmdldEhUVFBEUGlkICZzZXRIVFRQRFBpZERpciAmc2V0SFRUUERTdGFuZGFsb25lKTsK
KyAgICVFWFBPUlRfVEFHUyA9ICggKTsKKyAgIEBFWFBPUlRfT0sgICA9ICgpOworfQorCitteSAk
dG1wRGlyID0gIi90bXAiOworbXkgJGh0dHBkUGF0aDsKK215ICRodHRwZFBpZERpciA9IGNhdGZp
bGUoJHRtcERpciwgIldlYktpdCIpOworbXkgJGh0dHBkUGlkRmlsZSA9IGNhdGZpbGUoJGh0dHBk
UGlkRGlyLCAiaHR0cGQucGlkIik7CitteSAkaHR0cGRQaWQ7CitteSAkc3RhbmRhbG9uZSA9IDA7
CisKKyRTSUd7J0lOVCd9ID0gJ2NsZWFudXAnOworJFNJR3snVEVSTSd9ID0gJ2NsZWFudXAnOwor
CitzdWIgZ2V0SFRUUERQYXRoCit7CisgICAgaWYgKGlzRGViaWFuQmFzZWQoKSkgeworICAgICAg
ICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9hcGFjaGUyIjsKKyAgICB9IGVsc2UgeworICAgICAg
ICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCI7CisgICAgfQorICAgIHJldHVybiAkaHR0
cGRQYXRoOworfQorCitzdWIgZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXIKK3sKKyAgICBteSAo
JHRlc3REaXJlY3RvcnkpID0gQF87CisgICAgZGllICJObyB0ZXN0IGRpcmVjdG9yeSBoYXMgYmVl
biBzcGVjaWZpZWQuIiB1bmxlc3MgKCR0ZXN0RGlyZWN0b3J5KTsKKworICAgIG15ICRodHRwZENv
bmZpZzsKKyAgICBnZXRIVFRQRFBhdGgoKTsKKyAgICBpZiAoaXNDeWd3aW4oKSkgeworICAgICAg
ICBteSAkd2luZG93c0NvbmZEaXJlY3RvcnkgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mLyI7
CisgICAgICAgIHVubGVzcyAoLXggIi91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIpIHsKKyAg
ICAgICAgICAgIGNvcHkoIiR3aW5kb3dzQ29uZkRpcmVjdG9yeS9saWJwaHA0LmRsbCIsICIvdXNy
L2xpYi9hcGFjaGUvbGlicGhwNC5kbGwiKTsKKyAgICAgICAgICAgIGNobW9kKDA3NTUsICIvdXNy
L2xpYi9hcGFjaGUvbGlicGhwNC5kbGwiKTsKKyAgICAgICAgfQorICAgICAgICAkaHR0cGRDb25m
aWcgPSAiJHdpbmRvd3NDb25mRGlyZWN0b3J5L2N5Z3dpbi1odHRwZC5jb25mIjsKKyAgICB9IGVs
c2lmIChpc0RlYmlhbkJhc2VkKCkpIHsKKyAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGly
ZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mIjsKKyAgICB9IGVsc2lm
IChpc0ZlZG9yYUJhc2VkKCkpIHsKKyAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0
b3J5L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
JGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25mIjsKKyAg
ICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWh0
dHBkLmNvbmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBtfEFwYWNoZS8yfDsKKyAgICB9CisKKyAg
ICBteSAkZG9jdW1lbnRSb290ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvdGVzdHMiOworICAgIG15
ICRqc1Rlc3RSZXNvdXJjZXNEaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeSAuICIvZmFzdC9qcy9y
ZXNvdXJjZXMiOworICAgIG15ICR0eXBlc0NvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2Nv
bmYvbWltZS50eXBlcyI7CisgICAgbXkgJGh0dHBkTG9ja0ZpbGUgPSBjYXRmaWxlKCRodHRwZFBp
ZERpciwgImh0dHBkLmxvY2siKTsKKyAgICBteSAkaHR0cGRTY29yZUJvYXJkRmlsZSA9IGNhdGZp
bGUoJGh0dHBkUGlkRGlyLCAiaHR0cGQuc2NvcmVib2FyZCIpOworCisgICAgbXkgQGh0dHBkQXJn
cyA9ICgKKyAgICAiLWYiLCAiJGh0dHBkQ29uZmlnIiwKKyAgICAiLUMiLCAiRG9jdW1lbnRSb290
IFwiJGRvY3VtZW50Um9vdFwiIiwKKyAgICAjIFNldHVwIGEgbGluayB0byB3aGVyZSB0aGUganMg
dGVzdCB0ZW1wbGF0ZXMgYXJlIHN0b3JlZCwgdXNlIC1jIHNvIHRoYXQgbW9kX2FsaWFzIHdpbGwg
YWxyZWFkeSBiZSBsYW9kZWQuCisgICAgIi1jIiwgIkFsaWFzIC9qcy10ZXN0LXJlc291cmNlcyBc
IiRqc1Rlc3RSZXNvdXJjZXNEaXJlY3RvcnlcIiIsCisgICAgIi1jIiwgIlR5cGVzQ29uZmlnIFwi
JHR5cGVzQ29uZmlnXCIiLAorICAgICMgQXBhY2hlIHdvdWxkbid0IHJ1biBDR0lzIHdpdGggcGVy
bWlzc2lvbnM9PTcwMCBvdGhlcndpc2UKKyAgICAiLWMiLCAiVXNlciBcIiMkPFwiIiwKKyAgICAi
LWMiLCAiTG9ja0ZpbGUgXCIkaHR0cGRMb2NrRmlsZVwiIiwKKyAgICAiLWMiLCAiUGlkRmlsZSBc
IiRodHRwZFBpZEZpbGVcIiIsCisgICAgIi1jIiwgIlNjb3JlQm9hcmRGaWxlIFwiJGh0dHBkU2Nv
cmVCb2FyZEZpbGVcIiIsCisgICAgKTsKKworICAgICMgRklYTUU6IEVuYWJsZSB0aGlzIG9uIFdp
bmRvd3Mgb25jZSA8cmRhcjovL3Byb2JsZW0vNTM0NTk4NT4gaXMgZml4ZWQKKyAgICAjIFRoZSB2
ZXJzaW9uIG9mIEFwYWNoZSB3ZSB1c2Ugd2l0aCBDeWd3aW4gZG9lcyBub3Qgc3VwcG9ydCBTU0wK
KyAgICBteSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtp
dC1odHRwZC5wZW0iOworICAgIHB1c2goQGh0dHBkQXJncywgIi1jIiwgIlNTTENlcnRpZmljYXRl
RmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5sZXNzIGlzQ3lnd2luKCk7CisKKyAgICByZXR1
cm4gQGh0dHBkQXJnczsKKworfQorCitzdWIgb3BlbkhUVFBEKEApCit7CisgICAgbXkgKEBhcmdz
KSA9IEBfOworICAgIGRpZSAiTm8gSFRUUEQgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBzcGVjaWZp
ZWQiIHVubGVzcyAoQGFyZ3MpOworICAgIG1rZGlyKCRodHRwZFBpZERpciwgMDc1NSk7CisgICAg
ZGllICJObyB3cml0ZSBwZXJtaXNzaW9ucyB0byAkaHR0cGRQaWREaXIiIHVubGVzcyAoLXcgJGh0
dHBkUGlkRGlyKTsKKworICAgIGlmICgtZiAkaHR0cGRQaWRGaWxlKSB7CisgICAgICAgIG9wZW4g
KFBJREZJTEUsICRodHRwZFBpZEZpbGUpOworICAgICAgICBteSAkb2xkUGlkID0gPFBJREZJTEU+
OworICAgICAgICBjaG9tcCAkb2xkUGlkOworICAgICAgICBjbG9zZSBQSURGSUxFOworICAgICAg
ICBpZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsKKyAgICAgICAgICAgIHByaW50ICJcbmh0dHBk
IGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtpbGxpbmcuLi5cbiI7CisgICAgICAg
ICAgICBraWxsIDE1LCAkb2xkUGlkOworCisgICAgICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIw
OworICAgICAgICAgICAgd2hpbGUgKChraWxsKDAsICRvbGRQaWQpICE9IDApICYmICRyZXRyeUNv
dW50KSB7CisgICAgICAgICAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgICAgICAgICAtLSRyZXRy
eUNvdW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0
aW5nIGZvciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJldHJ5Q291bnQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCIgdW5sZXNzICgkaHR0cGRQ
YXRoKTsKKworICAgIG9wZW4yKFwqSFRUUERJTiwgXCpIVFRQRE9VVCwgJGh0dHBkUGF0aCwgQGFy
Z3MpOworCisgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKKyAgICB3aGlsZSAoIS1mICRodHRwZFBp
ZEZpbGUgJiYgJHJldHJ5Q291bnQpIHsKKyAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgLS0kcmV0
cnlDb3VudDsKKyAgICB9CisKKyAgICBpZiAoISRyZXRyeUNvdW50KSB7CisgICAgICAgIHJtZGly
ICRodHRwZFBpZERpcjsKKyAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQg
dG8gc3RhcnQiOworICAgIH0KKworICAgICRodHRwZFBpZCA9IDxQSURGSUxFPiBpZiBvcGVuKFBJ
REZJTEUsICRodHRwZFBpZEZpbGUpOworICAgIGNob21wICRodHRwZFBpZCBpZiAkaHR0cGRQaWQ7
CisgICAgY2xvc2UgUElERklMRTsKKworICAgIHdhaXRwaWQoJGh0dHBkUGlkLCAwKSBpZiAoJHN0
YW5kYWxvbmUgJiYgJGh0dHBkUGlkKTsKKworICAgIHJldHVybiAxOworfQorCitzdWIgY2xvc2VI
VFRQRAoreworICAgIGNsb3NlIEhUVFBESU47CisgICAgY2xvc2UgSFRUUERPVVQ7CisKKyAgICBp
ZiAoJGh0dHBkUGlkKSB7CisgICAgICAgIGtpbGwgMTUsICRodHRwZFBpZDsKKyAgICAgICAgbXkg
JHJldHJ5Q291bnQgPSAyMDsKKyAgICAgICAgd2hpbGUgKC1mICRodHRwZFBpZEZpbGUgJiYgJHJl
dHJ5Q291bnQpIHsKKyAgICAgICAgICAgIHNsZWVwIDE7CisgICAgICAgICAgICAtLSRyZXRyeUNv
dW50OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEkcmV0cnlDb3VudCkgeworICAgICAgICAg
ICAgcHJpbnQgU1RERVJSICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gdGVybWluYXRl
IVxuIjsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorICAgIHJtZGly
ICRodHRwZFBpZERpcjsKKyAgICByZXR1cm4gMDsKK30KKworc3ViIHNldEhUVFBEUGlkRGlyCit7
CisgICAgbXkgKCRwaWREaXIpID0gQF87CisgICAgaWYgKCRwaWREaXIgJiYgLWQgJHBpZERpcikg
eworICAgICAgICAkaHR0cGRQaWREaXIgPSAkcGlkRGlyOworICAgICAgICAkaHR0cGRQaWRGaWxl
ID0gY2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5waWQiKTsKKyAgICB9Cit9CisKK3N1YiBz
ZXRIVFRQRFN0YW5kYWxvbmUKK3sKKyAgICAkc3RhbmRhbG9uZSA9IDE7Cit9CisKK3N1YiBjbGVh
bnVwCit7CisgICAgY2xvc2VIVFRQRCgpOworICAgIHByaW50ICJcbiI7CisgICAgZXhpdCgxKTsK
K30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0cyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0cwppbmRleCBlZDVlY2Q2Li5m
ZDVmZDU0IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi1pZXhwbG9kZXItdGVz
dHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4taWV4cGxvZGVyLXRlc3RzCkBAIC0zOCwx
NiArMzgsMTcgQEAgdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBJUEM6Ok9wZW4yOwogCiB1c2UgbGli
ICRGaW5kQmluOjpCaW47Cit1c2UgaHR0cGQ7CiB1c2Ugd2Via2l0ZGlyczsKIAotc3ViIG9wZW5I
VFRQRElmTmVlZGVkKCk7Ci1zdWIgY2xvc2VIVFRQRCgpOworc3ViIGNvbmZpZ0FuZE9wZW5IVFRQ
RElmTmVlZGVkKCk7CiBzdWIgcnVuU2FmYXJpV2l0aElFeHBsb2RlcigpOwogCiAjIEFyZ3VtZW50
IGhhbmRsaW5nCiBteSAkZ3VhcmRNYWxsb2MgPSAnJzsKIG15ICRodHRwZFBvcnQgPSA4MDAwOwog
bXkgJGRvd25sb2FkVGVzdDsKK215ICRpRXhwbG9kZXJMb2dEaXIgPSAiL3RtcC9pRXhwbG9kZXJM
b2dzIjsKIAogR2V0T3B0aW9ucygKICAgICAnZ3VhcmQtbWFsbG9jfGcnID0+IFwkZ3VhcmRNYWxs
b2MsCkBAIC01NSw3ICs1Niw2IEBAIEdldE9wdGlvbnMoCiAgICAgJ3BvcnQ9aScgPT4gXCRodHRw
ZFBvcnQKICk7CiAKLQogc2V0Q29uZmlndXJhdGlvbigpOwogbXkgJHByb2R1Y3REaXIgPSBwcm9k
dWN0RGlyKCk7CiAKQEAgLTYzLDggKzYzLDggQEAgY2hkaXJXZWJLaXQoKTsKIAogY2hlY2tGcmFt
ZXdvcmtzKCk7CiAKLW15ICRodHRwZE9wZW4gPSAwOwotb3BlbkhUVFBESWZOZWVkZWQoKTsKK215
ICRpc0h0dHBkT3BlbiA9IDA7Citjb25maWdBbmRPcGVuSFRUUERJZk5lZWRlZCgpOwogCiBpZiAo
JGRvd25sb2FkVGVzdCkgewogICAgIHN5c3RlbSAiL3Vzci9iaW4vY3VybCAtbyB+L0Rlc2t0b3Av
aWV4cGxvZGVyJGRvd25sb2FkVGVzdC5odG1sIFwiaHR0cDovLzEyNy4wLjAuMTokaHR0cGRQb3J0
L2lleHBsb2Rlci5jZ2k/bG9va3VwPTEmdGVzdD0kZG93bmxvYWRUZXN0XCIiOwpAQCAtNzIsMTEg
KzcyLDExIEBAIGlmICgkZG93bmxvYWRUZXN0KSB7CiB9IGVsc2UgewogICAgIHJ1blNhZmFyaVdp
dGhJRXhwbG9kZXIoKTsKICAgICBwcmludCAiTGFzdCBnZW5lcmF0ZWQgdGVzdHM6XG4iOwotICAg
IHN5c3RlbSAiZ3JlcCAnaWV4cGxvZGVyLmNnaScgL3RtcC9XZWJLaXQvYWNjZXNzX2xvZy50eHQg
fCB0YWlsIC1uIC01IHwgYXdrIC1GJ1sgPSZcXD9dJyAne2lmIChcJDggPT0gXCJsb29rdXBcIikg
cHJpbnQgXCQxMTsgZWxzZSBwcmludCBcJDl9JyI7CisgICAgc3lzdGVtICJncmVwICdpZXhwbG9k
ZXIuY2dpJyAkaUV4cGxvZGVyTG9nRGlyL2FjY2Vzc19sb2cudHh0IHwgdGFpbCAtbiAtNSB8IGF3
ayAtRidbID0mXFw/XScgJ3tpZiAoXCQ4ID09IFwibG9va3VwXCIpIHByaW50IFwkMTE7IGVsc2Ug
cHJpbnQgXCQ5fSciOwogfQogCi1jbG9zZUhUVFBEKCk7Ci0KK3JtdHJlZSAkaUV4cGxvZGVyTG9n
RGlyOworJGlzSHR0cGRPcGVuID0gY2xvc2VIVFRQRCgpOwogCiBzdWIgcnVuU2FmYXJpV2l0aElF
eHBsb2RlcigpCiB7CkBAIC04Nyw3ICs4Nyw3IEBAIHN1YiBydW5TYWZhcmlXaXRoSUV4cGxvZGVy
KCkKICAgICAgICAgJHJlZGlyZWN0VG8gPSAiaHR0cDovLzEyNy4wLjAuMTokaHR0cGRQb3J0L2lu
ZGV4Lmh0bWwiOwogICAgIH0KIAotICAgIG9wZW4gUkVESVJFQ1RfSFRNTCwgIj4iLCAiL3RtcC9X
ZWJLaXQvcmVkaXJlY3QuaHRtbCIgb3IgZGllOworICAgIG9wZW4gUkVESVJFQ1RfSFRNTCwgIj4i
LCAiJGlFeHBsb2RlckxvZ0Rpci9yZWRpcmVjdC5odG1sIiBvciBkaWU7CiAgICAgcHJpbnQgUkVE
SVJFQ1RfSFRNTCAiPGh0bWw+XG4iOwogICAgIHByaW50IFJFRElSRUNUX0hUTUwgIiAgICA8aGVh
ZD5cbiI7CiAgICAgcHJpbnQgUkVESVJFQ1RfSFRNTCAiICAgICAgICA8bWV0YSBodHRwLWVxdWl2
PVwicmVmcmVzaFwiIGNvbnRlbnQ9XCIxO1VSTD0kcmVkaXJlY3RUb1wiIC8+XG4iOwpAQCAtMTAy
LDM1ICsxMDIsMTcgQEAgc3ViIHJ1blNhZmFyaVdpdGhJRXhwbG9kZXIoKQogICAgIAogICAgIGxv
Y2FsICVFTlY7CiAgICAgJEVOVntEWUxEX0lOU0VSVF9MSUJSQVJJRVN9ID0gIi91c3IvbGliL2xp
YmdtYWxsb2MuZHlsaWIiIGlmICRndWFyZE1hbGxvYzsKLSAgICBzeXN0ZW0gIldlYktpdFRvb2xz
L1NjcmlwdHMvcnVuLXNhZmFyaSIsICItTlNPcGVuIiwgIi90bXAvV2ViS2l0L3JlZGlyZWN0Lmh0
bWwiOworICAgIHN5c3RlbSAiV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tc2FmYXJpIiwgIi1OU09w
ZW4iLCAiJGlFeHBsb2RlckxvZ0Rpci9yZWRpcmVjdC5odG1sIjsKIH0KIAotc3ViIG9wZW5IVFRQ
RElmTmVlZGVkKCkKK3N1YiBjb25maWdBbmRPcGVuSFRUUERJZk5lZWRlZCgpCiB7Ci0gICAgcmV0
dXJuIGlmICRodHRwZE9wZW47Ci0KLSAgICBta2RpciAiL3RtcC9XZWJLaXQiOwotICAgIAotICAg
IGlmICgtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIikgewotICAgICAgICBteSAkb2xkUGlkID0g
YGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgOwotICAgICAgICBjaG9tcCAkb2xkUGlkOwotICAg
ICAgICBpZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsKLSAgICAgICAgICAgIHByaW50ICJcbmh0
dHBkIGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtpbGxpbmcuLi5cbiI7Ci0gICAg
ICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBteSAk
cmV0cnlDb3VudCA9IDIwOwotICAgICAgICAgICAgd2hpbGUgKCgwICE9IGtpbGwgMCwgJG9sZFBp
ZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgICAgICBzbGVlcCAxOwotICAgICAgICAg
ICAgICAgIC0tJHJldHJ5Q291bnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHF1aXQiIHVubGVzcyAk
cmV0cnlDb3VudDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBteSAkdGVzdERpcmVjdG9y
eSA9IGdldGN3ZCgpIC4gIi9MYXlvdXRUZXN0cyI7Ci0gICAgbXkgJGlFeHBsb2RlckRpcmVjdG9y
eSA9IGdldGN3ZCgpIC4gIi9XZWJLaXRUb29scy9pRXhwbG9kZXIiOwotICAgIG15ICRodHRwZFBh
dGggPSAiL3Vzci9zYmluL2h0dHBkIjsKKyAgICByZXR1cm4gaWYgJGlzSHR0cGRPcGVuOworICAg
IG1rZGlyICRpRXhwbG9kZXJMb2dEaXI7CisgICAgbXkgJGh0dHBkUGF0aCA9IGdldEhUVFBEUGF0
aCgpOworICAgIG15ICR3ZWJraXREaXIgPSBnZXRjd2QoKTsKKyAgICBteSAkdGVzdERpcmVjdG9y
eSA9ICR3ZWJraXREaXIgLiAiL0xheW91dFRlc3RzIjsKKyAgICBteSAkaUV4cGxvZGVyRGlyZWN0
b3J5ID0gJHdlYmtpdERpciAuICIvV2ViS2l0VG9vbHMvaUV4cGxvZGVyIjsKICAgICBteSAkaHR0
cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2h0dHBkLmNvbmYiOwogICAgICRo
dHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1odHRwZC5jb25m
IiBpZiBgJGh0dHBkUGF0aCAtdmAgPX4gbXxBcGFjaGUvMnw7CiAgICAgbXkgJGRvY3VtZW50Um9v
dCA9ICIkaUV4cGxvZGVyRGlyZWN0b3J5L2h0ZG9jcyI7CkBAIC0xMzgsMzYgKzEyMCwxOCBAQCBz
dWIgb3BlbkhUVFBESWZOZWVkZWQoKQogICAgIG15ICRzc2xDZXJ0aWZpY2F0ZSA9ICIkdGVzdERp
cmVjdG9yeS9odHRwL2NvbmYvd2Via2l0LWh0dHBkLnBlbSI7CiAgICAgbXkgJGxpc3RlbiA9ICIx
MjcuMC4wLjE6JGh0dHBkUG9ydCI7CiAKLSAgICBvcGVuMihcKkhUVFBESU4sIFwqSFRUUERPVVQs
ICRodHRwZFBhdGgsIAorCisgICAgbXkgQGFyZ3MgPSAoCiAgICAgICAgICItZiIsICIkaHR0cGRD
b25maWciLAogICAgICAgICAiLUMiLCAiRG9jdW1lbnRSb290IFwiJGRvY3VtZW50Um9vdFwiIiwK
ICAgICAgICAgIi1DIiwgIkxpc3RlbiAkbGlzdGVuIiwKICAgICAgICAgIi1jIiwgIlR5cGVzQ29u
ZmlnIFwiJHR5cGVzQ29uZmlnXCIiLAotICAgICAgICAiLWMiLCAiQ3VzdG9tTG9nIFwiL3RtcC9X
ZWJLaXQvYWNjZXNzX2xvZy50eHRcIiBjb21tb24iLAotICAgICAgICAiLWMiLCAiRXJyb3JMb2cg
XCIvdG1wL1dlYktpdC9lcnJvcl9sb2cudHh0XCIiLAorICAgICAgICAiLWMiLCAiQ3VzdG9tTG9n
IFwiJGlFeHBsb2RlckxvZ0Rpci9hY2Nlc3NfbG9nLnR4dFwiIGNvbW1vbiIsCisgICAgICAgICIt
YyIsICJFcnJvckxvZyBcIiRpRXhwbG9kZXJMb2dEaXIvZXJyb3JfbG9nLnR4dFwiIiwKICAgICAg
ICAgIi1jIiwgIlNTTENlcnRpZmljYXRlRmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIiwKICAgICAg
ICAgIyBBcGFjaGUgd291bGRuJ3QgcnVuIENHSXMgd2l0aCBwZXJtaXNzaW9ucz09NzAwIG90aGVy
d2lzZQotICAgICAgICAiLWMiLCAiVXNlciBcIiMkPFwiIik7Ci0KLSAgICBteSAkcmV0cnlDb3Vu
dCA9IDIwOwotICAgIHdoaWxlIChzeXN0ZW0oIi91c3IvYmluL2N1cmwgLXEgLS1zaWxlbnQgLS1z
dGRlcnIgLSAtLW91dHB1dCAiIC4gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpIC4gIiAkbGlzdGVuIikg
JiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgc2xlZXAgMTsKLSAgICAgICAgLS0kcmV0cnlDb3Vu
dDsKLSAgICB9Ci0gICAgCi0gICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8g
c3RhcnQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICAKLSAgICAkaHR0cGRPcGVuID0gMTsKLX0K
LQotc3ViIGNsb3NlSFRUUEQoKQotewotICAgIHJldHVybiBpZiAhJGh0dHBkT3BlbjsKLQotICAg
IGNsb3NlIEhUVFBESU47Ci0gICAgY2xvc2UgSFRUUERPVVQ7Ci0KLSAgICBraWxsIDE1LCBgY2F0
IC90bXAvV2ViS2l0L2h0dHBkLnBpZGAgaWYgLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCI7Cisg
ICAgICAgICItYyIsICJVc2VyIFwiIyQ8XCIiCisgICAgKTsKIAotICAgICRodHRwZE9wZW4gPSAw
OworICAgICRpc0h0dHBkT3BlbiA9IG9wZW5IVFRQRChAYXJncyk7CiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtaHR0cGQgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3J1bi13ZWJraXQtaHR0cGQKaW5kZXggOWE5NzE5MC4uYmQ1ZmJiMCAxMDA3NTUKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LWh0dHBkCisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLXdlYmtpdC1odHRwZApAQCAtMzMsMTEgKzMzLDEzIEBAIHVzZSBzdHJpY3Q7CiB1c2Ug
d2FybmluZ3M7CiAKIHVzZSBDd2Q7Cit1c2UgRmlsZTo6UGF0aDsKIHVzZSBGaWxlOjpCYXNlbmFt
ZTsKIHVzZSBHZXRvcHQ6Okxvbmc7CiB1c2UgRmluZEJpbjsKIAogdXNlIGxpYiAkRmluZEJpbjo6
QmluOwordXNlIGh0dHBkOwogdXNlIHdlYmtpdGRpcnM7CiAKICMgQXJndW1lbnQgaGFuZGxpbmcK
QEAgLTYyLDM5ICs2NCw3IEBAIGlmICghJHJlc3VsdCB8fCBAQVJHViB8fCAkc2hvd0hlbHApIHsK
IHNldENvbmZpZ3VyYXRpb24oKTsKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogY2hk
aXJXZWJLaXQoKTsKLQotbWtkaXIgIi90bXAvV2ViS2l0IjsKLQotaWYgKC1mICIvdG1wL1dlYktp
dC9odHRwZC5waWQiKSB7Ci0gICAgbXkgJG9sZFBpZCA9IGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQu
cGlkYDsKLSAgICBjaG9tcCAkb2xkUGlkOwotICAgIGlmICgwICE9IGtpbGwgMCwgJG9sZFBpZCkg
ewotICAgICAgICBwcmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1bm5pbmc6IHBpZCAkb2xkUGlk
LCBraWxsaW5nLi4uXG4iOwotICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwotICAgICAgICAKLSAg
ICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKLSAgICAgICAgd2hpbGUgKCgwICE9IGtpbGwgMCwg
JG9sZFBpZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgIHNsZWVwIDE7Ci0gICAgICAg
ICAgICAtLSRyZXRyeUNvdW50OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBkaWUgIlRp
bWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJldHJ5Q291bnQ7Ci0g
ICAgfQotfQotCi1teSAkdGVzdERpcmVjdG9yeSA9IGdldGN3ZCgpIC4gIi9MYXlvdXRUZXN0cyI7
Ci1teSAkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5ID0gJHRlc3REaXJlY3RvcnkgLiAiL2Zhc3Qv
anMvcmVzb3VyY2VzIjsKLW15ICRodHRwZFBhdGggPSAiL3Vzci9zYmluL2h0dHBkIjsKLSRodHRw
ZFBhdGggPSAiL3Vzci9zYmluL2FwYWNoZTIiIGlmIGlzRGViaWFuQmFzZWQoKTsKLW15ICRodHRw
ZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvaHR0cGQuY29uZiI7Ci0kaHR0cGRD
b25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2N5Z3dpbi1odHRwZC5jb25mIiBpZiBp
c0N5Z3dpbigpOwotJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFj
aGUyLWh0dHBkLmNvbmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBtfEFwYWNoZS8yfDsKLSRodHRw
ZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1kZWJpYW4taHR0cGQu
Y29uZiIgaWYgaXNEZWJpYW5CYXNlZCgpOwotJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5
L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiIgaWYgaXNGZWRvcmFCYXNlZCgpOwotbXkgJGRv
Y3VtZW50Um9vdCA9ICIkdGVzdERpcmVjdG9yeS9odHRwL3Rlc3RzIjsKLW15ICR0eXBlc0NvbmZp
ZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvbWltZS50eXBlcyI7Ci1teSAkc3NsQ2VydGlm
aWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtpdC1odHRwZC5wZW0iOwotCitt
eSAkdGVzdERpcmVjdG9yeSA9IGNhdGZpbGUoZ2V0Y3dkKCksICJMYXlvdXRUZXN0cyIpOwogbXkg
JGxpc3RlbiA9ICIxMjcuMC4wLjE6JGh0dHBkUG9ydCI7CiAkbGlzdGVuID0gIiRodHRwZFBvcnQi
IGlmICgkYWxsSW50ZXJmYWNlcyk7CiAKQEAgLTEwNiwxNiArNzYsOSBAQCBpZiAoJGFsbEludGVy
ZmFjZXMpIHsKIHByaW50ICJQcmVzcyBDdHJsK0MgdG8gc3RvcCBpdC5cblxuIjsKIAogbXkgQGFy
Z3MgPSAoCi0gICAgIi1mIiwgIiRodHRwZENvbmZpZyIsCi0gICAgIi1DIiwgIkRvY3VtZW50Um9v
dCBcIiRkb2N1bWVudFJvb3RcIiIsCi0gICAgIyBTZXR1cCBhIGxpbmsgdG8gd2hlcmUgdGhlIGpz
IHRlc3QgdGVtcGxhdGVzIGFyZSBzdG9yZWQsIHVzZSAtYyBzbyB0aGF0IG1vZF9hbGlhcyB3aWxs
IGFscmVhZHkgYmUgbGFvZGVkLgotICAgICItYyIsICJBbGlhcyAvanMtdGVzdC1yZXNvdXJjZXMg
XCIkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5XCIiLAogICAgICItQyIsICJMaXN0ZW4gJGxpc3Rl
biIsCi0gICAgIi1jIiwgIlR5cGVzQ29uZmlnIFwiJHR5cGVzQ29uZmlnXCIiLAogICAgICItYyIs
ICJDdXN0b21Mb2cgfC91c3IvYmluL3RlZSBjb21tb24iLAogICAgICItYyIsICJFcnJvckxvZyB8
L3Vzci9iaW4vdGVlIiwKLSAgICAjIEFwYWNoZSB3b3VsZG4ndCBydW4gQ0dJcyB3aXRoIHBlcm1p
c3Npb25zPT03MDAgb3RoZXJ3aXNlLgotICAgICItYyIsICJVc2VyIFwiIyQ8XCIiLAogICAgICMg
UnVuIGluIHNpbmdsZS1wcm9jZXNzIG1vZGUsIGRvIG5vdCBkZXRhY2ggZnJvbSB0aGUgY29udHJv
bGxpbmcgdGVybWluYWwuCiAgICAgIi1YIiwKICAgICAjIERpc2FibGUgS2VlcC1BbGl2ZSBzdXBw
b3J0LiBNYWtlcyB0ZXN0aW5nIGluIG11bHRpcGxlIGJyb3dzZXJzIGVhc2llciAobm8gbmVlZCB0
byB3YWl0CkBAIC0xMjMsOSArODYsNyBAQCBteSBAYXJncyA9ICgKICAgICAiLWMiLCAiS2VlcEFs
aXZlIDAiCiApOwogCi0jIEZJWE1FOiBFbmFibGUgdGhpcyBvbiBXaW5kb3dzIG9uY2UgPHJkYXI6
Ly9wcm9ibGVtLzUzNDU5ODU+IGlzIGZpeGVkCi1wdXNoKEBhcmdzLCAiLWMiLCAiU1NMQ2VydGlm
aWNhdGVGaWxlIFwiJHNzbENlcnRpZmljYXRlXCIiKSB1bmxlc3MgaXNDeWd3aW4oKTsKLQotc3lz
dGVtKCRodHRwZFBhdGgsIEBhcmdzKTsKLQotdW5saW5rICIvdG1wL1dlYktpdC9odHRwZC5waWQi
OworbXkgQGRlZmF1bHRBcmdzID0gZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXIoJHRlc3REaXJl
Y3RvcnkpOworQGFyZ3MgPSAoQGRlZmF1bHRBcmdzLCBAYXJncyk7CitzZXRIVFRQRFN0YW5kYWxv
bmUoKTsKK29wZW5IVFRQRChAYXJncyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3J1bi13ZWJraXQtdGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMK
aW5kZXggMzllZDUwMS4uMDFhODVmZCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9y
dW4td2Via2l0LXRlc3RzCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cwpAQCAtNjcsNiArNjcsNyBAQCB1c2UgVGltZTo6SGlSZXMgcXcodGltZSB1c2xlZXApOwogdXNl
IExpc3Q6OlV0aWwgJ3NodWZmbGUnOwogCiB1c2UgbGliICRGaW5kQmluOjpCaW47Cit1c2UgaHR0
cGQ7CiB1c2Ugd2Via2l0ZGlyczsKIHVzZSBWQ1NVdGlsczsKIHVzZSBQT1NJWDsKQEAgLTc1LDgg
Kzc2LDggQEAgc3ViIGJ1aWxkUGxhdGZvcm1SZXN1bHRIaWVyYXJjaHkoKTsKIHN1YiBidWlsZFBs
YXRmb3JtVGVzdEhpZXJhcmNoeShAKTsKIHN1YiBjbG9zZUN5Z3BhdGhzKCk7CiBzdWIgY2xvc2VE
dW1wVG9vbCgpOwotc3ViIGNsb3NlSFRUUEQoKTsKIHN1YiBjbG9zZVdlYlNvY2tldFNlcnZlcigp
Oworc3ViIGNvbmZpZ0FuZE9wZW5IVFRQRElmTmVlZGVkKCk7CiBzdWIgY291bnRBbmRQcmludExl
YWtzKCQkJCk7CiBzdWIgY291bnRGaW5pc2hlZFRlc3QoJCQkJCk7CiBzdWIgZGVsZXRlRXhwZWN0
ZWRBbmRBY3R1YWxSZXN1bHRzKCQpOwpAQCAtOTEsNyArOTIsNiBAQCBzdWIgcmVzb2x2ZUFuZE1h
a2VUZXN0UmVzdWx0c0RpcmVjdG9yeSgpOwogc3ViIG51bWVyaWNjbXAoJCQpOwogc3ViIG9wZW5E
aWZmVG9vbCgpOwogc3ViIG9wZW5EdW1wVG9vbCgpOwotc3ViIG9wZW5IVFRQRElmTmVlZGVkKCk7
CiBzdWIgcGFyc2VMZWFrc2FuZFByaW50VW5pcXVlTGVha3MoKTsKIHN1YiBvcGVuV2ViU29ja2V0
U2VydmVySWZOZWVkZWQoKTsKIHN1YiBwYXRoY21wKCQkKTsKQEAgLTE0Myw3ICsxNDMsOCBAQCBt
eSAkc2hvd0hlbHAgPSAwOwogbXkgJHN0cmlwRWRpdGluZ0NhbGxiYWNrcyA9IGlzQ3lnd2luKCk7
CiBteSAkdGVzdEhUVFAgPSAxOwogbXkgJHRlc3RNZWRpYSA9IDE7Ci1teSAkdGVzdFJlc3VsdHNE
aXJlY3RvcnkgPSAiL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzIjsKK215ICR0bXBEaXIgPSAiL3Rt
cCI7CitteSAkdGVzdFJlc3VsdHNEaXJlY3RvcnkgPSBjYXRmaWxlKCR0bXBEaXIsICJsYXlvdXQt
dGVzdC1yZXN1bHRzIik7CiBteSAkdGVzdHNQZXJEdW1wVG9vbCA9IDEwMDA7CiBteSAkdGhyZWFk
ZWQgPSAwOwogIyBEdW1wUmVuZGVyVHJlZSBoYXMgYW4gaW50ZXJuYWwgdGltZW91dCBvZiAxNSBz
ZWNvbmRzLCBzbyB0aGlzIG11c3QgYmUgPiAxNS4KQEAgLTM4Myw2ICszODQsNyBAQCBteSBAcGxh
dGZvcm1UZXN0SGllcmFyY2h5ID0gYnVpbGRQbGF0Zm9ybVRlc3RIaWVyYXJjaHkoQHBsYXRmb3Jt
UmVzdWx0SGllcmFyY2h5KQogCiAkZXhwZWN0ZWREaXJlY3RvcnkgPSAkRU5WeyJXZWJLaXRFeHBl
Y3RlZFRlc3RSZXN1bHRzRGlyZWN0b3J5In0gaWYgJEVOVnsiV2ViS2l0RXhwZWN0ZWRUZXN0UmVz
dWx0c0RpcmVjdG9yeSJ9OwogCiskdGVzdFJlc3VsdHNEaXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5y
ZWwyYWJzKCR0ZXN0UmVzdWx0c0RpcmVjdG9yeSk7CiBteSAkdGVzdFJlc3VsdHMgPSBjYXRmaWxl
KCR0ZXN0UmVzdWx0c0RpcmVjdG9yeSwgInJlc3VsdHMuaHRtbCIpOwogCiBwcmludCAiUnVubmlu
ZyB0ZXN0cyBmcm9tICR0ZXN0RGlyZWN0b3J5XG4iOwpAQCAtNjA1LDcgKzYwNyw3IEBAIGZvciBt
eSAkdGVzdCAoQHRlc3RzKSB7CiAgICAgfQogCiAgICAgaWYgKCR0ZXN0ID1+IC9eaHR0cFwvLykg
ewotICAgICAgICBvcGVuSFRUUERJZk5lZWRlZCgpOworICAgICAgICBjb25maWdBbmRPcGVuSFRU
UERJZk5lZWRlZCgpOwogICAgICAgICBpZiAoJHRlc3QgIX4gL15odHRwXC90ZXN0c1wvbG9jYWxc
Ly8gJiYgJHRlc3QgIX4gL15odHRwXC90ZXN0c1wvc3NsXC8vICYmICR0ZXN0ICF+IC9eaHR0cFwv
dGVzdHNcL3dtbFwvLyAmJiAkdGVzdCAhfiAvXmh0dHBcL3Rlc3RzXC9tZWRpYVwvLykgewogICAg
ICAgICAgICAgbXkgJHBhdGggPSBjYW5vbnBhdGgoJHRlc3QpOwogICAgICAgICAgICAgJHBhdGgg
PX4gcy9eaHR0cFwvdGVzdHNcLy8vOwpAQCAtOTQ1LDcgKzk0Nyw3IEBAIHByaW50ZiAiXG4lMC4y
ZnMgdG90YWwgdGVzdGluZyB0aW1lXG4iLCAodGltZSAtICRvdmVyYWxsU3RhcnRUaW1lKSAuICIi
OwogCiAhJGlzRHVtcFRvb2xPcGVuIHx8IGRpZSAiRmFpbGVkIHRvIGNsb3NlICRkdW1wVG9vbE5h
bWUuXG4iOwogCi1jbG9zZUhUVFBEKCk7CiskaXNIdHRwZE9wZW4gPSBjbG9zZUhUVFBEKCk7CiBj
bG9zZVdlYlNvY2tldFNlcnZlcigpOwogCiAjIEJlY2F1c2UgbXVsdGlwbGUgaW5zdGFuY2VzIG9m
IHRoaXMgc2NyaXB0IGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseSB3ZSBjYW5ub3QgCkBAIC0xMzQ1
LDk1ICsxMzQ3LDIxIEBAIHN1YiBkdW1wVG9vbERpZENyYXNoKCkKICAgICByZXR1cm4gRHVtcFJl
bmRlclRyZWVTdXBwb3J0Ojpwcm9jZXNzSXNDcmFzaGluZygkZHVtcFRvb2xQSUQpOwogfQogCi1z
dWIgb3BlbkhUVFBESWZOZWVkZWQoKQorc3ViIGNvbmZpZ0FuZE9wZW5IVFRQRElmTmVlZGVkKCkK
IHsKICAgICByZXR1cm4gaWYgJGlzSHR0cGRPcGVuOwotCi0gICAgbWtkaXIgIi90bXAvV2ViS2l0
IjsKLSAgICAKLSAgICBpZiAoLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCIpIHsKLSAgICAgICAg
bXkgJG9sZFBpZCA9IGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYDsKLSAgICAgICAgY2hvbXAg
JG9sZFBpZDsKLSAgICAgICAgaWYgKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSB7Ci0gICAgICAgICAg
ICBwcmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1bm5pbmc6IHBpZCAkb2xkUGlkLCBraWxsaW5n
Li4uXG4iOwotICAgICAgICAgICAga2lsbCAxNSwgJG9sZFBpZDsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKLSAgICAgICAgICAgIHdoaWxlICgoMCAhPSBr
aWxsIDAsICRvbGRQaWQpICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgc2xlZXAg
MTsKLSAgICAgICAgICAgICAgICAtLSRyZXRyeUNvdW50OwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBx
dWl0IiB1bmxlc3MgJHJldHJ5Q291bnQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgbXkg
JGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vaHR0cGQiOwotICAgIG15ICRodHRwZENvbmZpZzsKLSAg
ICBpZiAoaXNDeWd3aW4oKSkgewotICAgICAgICBteSAkd2luZG93c0NvbmZEaXJlY3RvcnkgPSAi
JHRlc3REaXJlY3RvcnkvaHR0cC9jb25mLyI7Ci0gICAgICAgIHVubGVzcyAoLXggIi91c3IvbGli
L2FwYWNoZS9saWJwaHA0LmRsbCIpIHsKLSAgICAgICAgICAgIGNvcHkoIiR3aW5kb3dzQ29uZkRp
cmVjdG9yeS9saWJwaHA0LmRsbCIsICIvdXNyL2xpYi9hcGFjaGUvbGlicGhwNC5kbGwiKTsKLSAg
ICAgICAgICAgIGNobW9kKDA3NTUsICIvdXNyL2xpYi9hcGFjaGUvbGlicGhwNC5kbGwiKTsKLSAg
ICAgICAgfQotICAgICAgICAkaHR0cGRDb25maWcgPSAiJHdpbmRvd3NDb25mRGlyZWN0b3J5L2N5
Z3dpbi1odHRwZC5jb25mIjsKLSAgICB9IGVsc2lmIChpc0RlYmlhbkJhc2VkKCkpIHsKLSAgICAg
ICAgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vYXBhY2hlMiI7Ci0gICAgICAgICRodHRwZENvbmZp
ZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZiI7
Ci0gICAgfSBlbHNpZiAoaXNGZWRvcmFCYXNlZCgpKSB7Ci0gICAgICAgICRodHRwZFBhdGggPSAi
L3Vzci9zYmluL2h0dHBkIjsKLSAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5
L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgJGh0
dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25mIjsKLSAgICAg
ICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWh0dHBk
LmNvbmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBtfEFwYWNoZS8yfDsKLSAgICB9Ci0gICAgbXkg
JGRvY3VtZW50Um9vdCA9ICIkdGVzdERpcmVjdG9yeS9odHRwL3Rlc3RzIjsKLSAgICBteSAkanNU
ZXN0UmVzb3VyY2VzRGlyZWN0b3J5ID0gJHRlc3REaXJlY3RvcnkgLiAiL2Zhc3QvanMvcmVzb3Vy
Y2VzIjsKLSAgICBteSAkdHlwZXNDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL21p
bWUudHlwZXMiOwotICAgIG15ICRsaXN0ZW4gPSAiMTI3LjAuMC4xOiRodHRwZFBvcnQiOwogICAg
IG15ICRhYnNUZXN0UmVzdWx0c0RpcmVjdG9yeSA9IHJlc29sdmVBbmRNYWtlVGVzdFJlc3VsdHNE
aXJlY3RvcnkoKTsKLSAgICBteSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0
cC9jb25mL3dlYmtpdC1odHRwZC5wZW0iOwotCisgICAgbXkgJGxpc3RlbiA9ICIxMjcuMC4wLjE6
JGh0dHBkUG9ydCI7CiAgICAgbXkgQGFyZ3MgPSAoCi0gICAgICAgICItZiIsICIkaHR0cGRDb25m
aWciLAotICAgICAgICAiLUMiLCAiRG9jdW1lbnRSb290IFwiJGRvY3VtZW50Um9vdFwiIiwKLSAg
ICAgICAgIyBTZXR1cCBhIGxpbmsgdG8gd2hlcmUgdGhlIGpzIHRlc3QgdGVtcGxhdGVzIGFyZSBz
dG9yZWQsIHVzZSAtYyBzbyB0aGF0IG1vZF9hbGlhcyB3aWxsIGFscmVhZHkgYmUgbGFvZGVkLgot
ICAgICAgICAiLWMiLCAiQWxpYXMgL2pzLXRlc3QtcmVzb3VyY2VzIFwiJGpzVGVzdFJlc291cmNl
c0RpcmVjdG9yeVwiIiwKLSAgICAgICAgIi1DIiwgIkxpc3RlbiAkbGlzdGVuIiwKLSAgICAgICAg
Ii1jIiwgIlR5cGVzQ29uZmlnIFwiJHR5cGVzQ29uZmlnXCIiLAogICAgICAgICAiLWMiLCAiQ3Vz
dG9tTG9nIFwiJGFic1Rlc3RSZXN1bHRzRGlyZWN0b3J5L2FjY2Vzc19sb2cudHh0XCIgY29tbW9u
IiwKICAgICAgICAgIi1jIiwgIkVycm9yTG9nIFwiJGFic1Rlc3RSZXN1bHRzRGlyZWN0b3J5L2Vy
cm9yX2xvZy50eHRcIiIsCi0gICAgICAgICMgQXBhY2hlIHdvdWxkbid0IHJ1biBDR0lzIHdpdGgg
cGVybWlzc2lvbnM9PTcwMCBvdGhlcndpc2UKLSAgICAgICAgIi1jIiwgIlVzZXIgXCIjJDxcIiIK
KyAgICAgICAgIi1DIiwgIkxpc3RlbiAkbGlzdGVuIgogICAgICk7CiAKLSAgICAjIEZJWE1FOiBF
bmFibGUgdGhpcyBvbiBXaW5kb3dzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzUzNDU5ODU+IGlzIGZp
eGVkCi0gICAgIyBUaGUgdmVyc2lvbiBvZiBBcGFjaGUgd2UgdXNlIHdpdGggQ3lnd2luIGRvZXMg
bm90IHN1cHBvcnQgU1NMCi0gICAgcHVzaChAYXJncywgIi1jIiwgIlNTTENlcnRpZmljYXRlRmls
ZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5sZXNzIGlzQ3lnd2luKCk7Ci0KLSAgICBvcGVuMihc
KkhUVFBESU4sIFwqSFRUUERPVVQsICRodHRwZFBhdGgsIEBhcmdzKTsKLQotICAgIG15ICRyZXRy
eUNvdW50ID0gMjA7Ci0gICAgd2hpbGUgKHN5c3RlbSgiL3Vzci9iaW4vY3VybCAtcSAtLXNpbGVu
dCAtLXN0ZGVyciAtIC0tb3V0cHV0ICIgLiBGaWxlOjpTcGVjLT5kZXZudWxsKCkgLiAiICRsaXN0
ZW4iKSAmJiAkcmV0cnlDb3VudCkgewotICAgICAgICBzbGVlcCAxOwotICAgICAgICAtLSRyZXRy
eUNvdW50OwotICAgIH0KLSAgICAKLSAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRw
ZCB0byBzdGFydCIgdW5sZXNzICRyZXRyeUNvdW50OwotICAgIAotICAgICRpc0h0dHBkT3BlbiA9
IDE7Ci19Ci0KLXN1YiBjbG9zZUhUVFBEKCkKLXsKLSAgICByZXR1cm4gaWYgISRpc0h0dHBkT3Bl
bjsKLQotICAgIGNsb3NlIEhUVFBESU47Ci0gICAgY2xvc2UgSFRUUERPVVQ7Ci0KLSAgICBraWxs
IDE1LCBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBpZGAgaWYgLWYgIi90bXAvV2ViS2l0L2h0dHBk
LnBpZCI7CisgICAgbXkgQGRlZmF1bHRBcmdzID0gZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXIo
JHRlc3REaXJlY3RvcnkpOworICAgIEBhcmdzID0gKEBkZWZhdWx0QXJncywgQGFyZ3MpOwogCi0g
ICAgJGlzSHR0cGRPcGVuID0gMDsKKyAgICAkaXNIdHRwZE9wZW4gPSBvcGVuSFRUUEQoQGFyZ3Mp
OwogfQogCiBzdWIgb3BlbldlYlNvY2tldFNlcnZlcklmTmVlZGVkKCkK
</data>
<flag name="commit-queue"
          id="28877"
          type_id="3"
          status="-"
          setter="abecsi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46580</attachid>
            <date>2010-01-14 09:59:48 -0800</date>
            <delta_ts>2010-01-15 05:30:18 -0800</delta_ts>
            <desc>Moved httpd.pm to webkitperl directory</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22512</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwZWVlMjNhLi5iYTMxOWU0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEt
MTQgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCBBcGFjaGUgaGFuZGxp
bmcgdG8gaHR0cGQucG0gbW9kdWxlIGFuZCB1c2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uYWxpdHkK
KyAgICAgICAgaW4gc2NyaXB0cyB3aGVyZSBBcGFjaGUgaXMgbmVlZGVkLgorICAgICAgICBUaGUg
bW9kdWxlIGh0dHBkLnBtIHN0b3JlcyB0aGUgUElEIG9mIEFwYWNoZSBpbiBhIHZhcmlhYmxlIGFu
ZCBjbGVhbnMgdXAKKyAgICAgICAgdGhlIFBJRCBkaXJlY3RvcnkgYWZ0ZXIgQXBhY2hlIHByb3Bl
cmx5IHNodXQgZG93bi4gQ2F0Y2hpbmcgSU5UIGFuZCBURVJNCisgICAgICAgIHNpZ25hbHMgYWxs
b3dzIHRoZSBzY3JpcHMgdG8gc2h1dCBkb3duIEFwYWNoZSBwcm9wZXJseSBldmVuIGlmIHRoZSB0
ZXN0aW5nCisgICAgICAgIHdhcyBpbnRlcnJ1cHRlZC4KKworICAgICAgICAqIFNjcmlwdHMvaHR0
cGQucG06IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0czoKKyAg
ICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtaHR0cGQ6CisgICAgICAgICogU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzOgorCiAyMDEwLTAxLTE0ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50
dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi1pZXhwbG9kZXItdGVzdHMgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi1pZXhwbG9kZXItdGVzdHMKaW5kZXggZWQ1ZWNkNi4uMzYy
NzQ0OSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4taWV4cGxvZGVyLXRlc3Rz
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0cwpAQCAtMzgsMTYg
KzM4LDE3IEBAIHVzZSBHZXRvcHQ6Okxvbmc7CiB1c2UgSVBDOjpPcGVuMjsKIAogdXNlIGxpYiAk
RmluZEJpbjo6QmluOwordXNlIHdlYmtpdHBlcmw6Omh0dHBkOwogdXNlIHdlYmtpdGRpcnM7CiAK
LXN1YiBvcGVuSFRUUERJZk5lZWRlZCgpOwotc3ViIGNsb3NlSFRUUEQoKTsKK3N1YiBjb25maWdB
bmRPcGVuSFRUUERJZk5lZWRlZCgpOwogc3ViIHJ1blNhZmFyaVdpdGhJRXhwbG9kZXIoKTsKIAog
IyBBcmd1bWVudCBoYW5kbGluZwogbXkgJGd1YXJkTWFsbG9jID0gJyc7CiBteSAkaHR0cGRQb3J0
ID0gODAwMDsKIG15ICRkb3dubG9hZFRlc3Q7CitteSAkaUV4cGxvZGVyTG9nRGlyID0gIi90bXAv
aUV4cGxvZGVyTG9ncyI7CiAKIEdldE9wdGlvbnMoCiAgICAgJ2d1YXJkLW1hbGxvY3xnJyA9PiBc
JGd1YXJkTWFsbG9jLApAQCAtNTUsNyArNTYsNiBAQCBHZXRPcHRpb25zKAogICAgICdwb3J0PWkn
ID0+IFwkaHR0cGRQb3J0CiApOwogCi0KIHNldENvbmZpZ3VyYXRpb24oKTsKIG15ICRwcm9kdWN0
RGlyID0gcHJvZHVjdERpcigpOwogCkBAIC02Myw4ICs2Myw4IEBAIGNoZGlyV2ViS2l0KCk7CiAK
IGNoZWNrRnJhbWV3b3JrcygpOwogCi1teSAkaHR0cGRPcGVuID0gMDsKLW9wZW5IVFRQRElmTmVl
ZGVkKCk7CitteSAkaXNIdHRwZE9wZW4gPSAwOworY29uZmlnQW5kT3BlbkhUVFBESWZOZWVkZWQo
KTsKIAogaWYgKCRkb3dubG9hZFRlc3QpIHsKICAgICBzeXN0ZW0gIi91c3IvYmluL2N1cmwgLW8g
fi9EZXNrdG9wL2lleHBsb2RlciRkb3dubG9hZFRlc3QuaHRtbCBcImh0dHA6Ly8xMjcuMC4wLjE6
JGh0dHBkUG9ydC9pZXhwbG9kZXIuY2dpP2xvb2t1cD0xJnRlc3Q9JGRvd25sb2FkVGVzdFwiIjsK
QEAgLTcyLDExICs3MiwxMSBAQCBpZiAoJGRvd25sb2FkVGVzdCkgewogfSBlbHNlIHsKICAgICBy
dW5TYWZhcmlXaXRoSUV4cGxvZGVyKCk7CiAgICAgcHJpbnQgIkxhc3QgZ2VuZXJhdGVkIHRlc3Rz
OlxuIjsKLSAgICBzeXN0ZW0gImdyZXAgJ2lleHBsb2Rlci5jZ2knIC90bXAvV2ViS2l0L2FjY2Vz
c19sb2cudHh0IHwgdGFpbCAtbiAtNSB8IGF3ayAtRidbID0mXFw/XScgJ3tpZiAoXCQ4ID09IFwi
bG9va3VwXCIpIHByaW50IFwkMTE7IGVsc2UgcHJpbnQgXCQ5fSciOworICAgIHN5c3RlbSAiZ3Jl
cCAnaWV4cGxvZGVyLmNnaScgJGlFeHBsb2RlckxvZ0Rpci9hY2Nlc3NfbG9nLnR4dCB8IHRhaWwg
LW4gLTUgfCBhd2sgLUYnWyA9JlxcP10nICd7aWYgKFwkOCA9PSBcImxvb2t1cFwiKSBwcmludCBc
JDExOyBlbHNlIHByaW50IFwkOX0nIjsKIH0KIAotY2xvc2VIVFRQRCgpOwotCitybXRyZWUgJGlF
eHBsb2RlckxvZ0RpcjsKKyRpc0h0dHBkT3BlbiA9IGNsb3NlSFRUUEQoKTsKIAogc3ViIHJ1blNh
ZmFyaVdpdGhJRXhwbG9kZXIoKQogewpAQCAtODcsNyArODcsNyBAQCBzdWIgcnVuU2FmYXJpV2l0
aElFeHBsb2RlcigpCiAgICAgICAgICRyZWRpcmVjdFRvID0gImh0dHA6Ly8xMjcuMC4wLjE6JGh0
dHBkUG9ydC9pbmRleC5odG1sIjsKICAgICB9CiAKLSAgICBvcGVuIFJFRElSRUNUX0hUTUwsICI+
IiwgIi90bXAvV2ViS2l0L3JlZGlyZWN0Lmh0bWwiIG9yIGRpZTsKKyAgICBvcGVuIFJFRElSRUNU
X0hUTUwsICI+IiwgIiRpRXhwbG9kZXJMb2dEaXIvcmVkaXJlY3QuaHRtbCIgb3IgZGllOwogICAg
IHByaW50IFJFRElSRUNUX0hUTUwgIjxodG1sPlxuIjsKICAgICBwcmludCBSRURJUkVDVF9IVE1M
ICIgICAgPGhlYWQ+XG4iOwogICAgIHByaW50IFJFRElSRUNUX0hUTUwgIiAgICAgICAgPG1ldGEg
aHR0cC1lcXVpdj1cInJlZnJlc2hcIiBjb250ZW50PVwiMTtVUkw9JHJlZGlyZWN0VG9cIiAvPlxu
IjsKQEAgLTEwMiwzNSArMTAyLDE3IEBAIHN1YiBydW5TYWZhcmlXaXRoSUV4cGxvZGVyKCkKICAg
ICAKICAgICBsb2NhbCAlRU5WOwogICAgICRFTlZ7RFlMRF9JTlNFUlRfTElCUkFSSUVTfSA9ICIv
dXNyL2xpYi9saWJnbWFsbG9jLmR5bGliIiBpZiAkZ3VhcmRNYWxsb2M7Ci0gICAgc3lzdGVtICJX
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi1zYWZhcmkiLCAiLU5TT3BlbiIsICIvdG1wL1dlYktpdC9y
ZWRpcmVjdC5odG1sIjsKKyAgICBzeXN0ZW0gIldlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXNhZmFy
aSIsICItTlNPcGVuIiwgIiRpRXhwbG9kZXJMb2dEaXIvcmVkaXJlY3QuaHRtbCI7CiB9CiAKLXN1
YiBvcGVuSFRUUERJZk5lZWRlZCgpCitzdWIgY29uZmlnQW5kT3BlbkhUVFBESWZOZWVkZWQoKQog
ewotICAgIHJldHVybiBpZiAkaHR0cGRPcGVuOwotCi0gICAgbWtkaXIgIi90bXAvV2ViS2l0IjsK
LSAgICAKLSAgICBpZiAoLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCIpIHsKLSAgICAgICAgbXkg
JG9sZFBpZCA9IGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYDsKLSAgICAgICAgY2hvbXAgJG9s
ZFBpZDsKLSAgICAgICAgaWYgKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSB7Ci0gICAgICAgICAgICBw
cmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1bm5pbmc6IHBpZCAkb2xkUGlkLCBraWxsaW5nLi4u
XG4iOwotICAgICAgICAgICAga2lsbCAxNSwgJG9sZFBpZDsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKLSAgICAgICAgICAgIHdoaWxlICgoMCAhPSBraWxs
IDAsICRvbGRQaWQpICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgc2xlZXAgMTsK
LSAgICAgICAgICAgICAgICAtLSRyZXRyeUNvdW50OwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBxdWl0
IiB1bmxlc3MgJHJldHJ5Q291bnQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgbXkgJHRl
c3REaXJlY3RvcnkgPSBnZXRjd2QoKSAuICIvTGF5b3V0VGVzdHMiOwotICAgIG15ICRpRXhwbG9k
ZXJEaXJlY3RvcnkgPSBnZXRjd2QoKSAuICIvV2ViS2l0VG9vbHMvaUV4cGxvZGVyIjsKLSAgICBt
eSAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCI7CisgICAgcmV0dXJuIGlmICRpc0h0dHBk
T3BlbjsKKyAgICBta2RpciAkaUV4cGxvZGVyTG9nRGlyOworICAgIG15ICRodHRwZFBhdGggPSBn
ZXRIVFRQRFBhdGgoKTsKKyAgICBteSAkd2Via2l0RGlyID0gZ2V0Y3dkKCk7CisgICAgbXkgJHRl
c3REaXJlY3RvcnkgPSAkd2Via2l0RGlyIC4gIi9MYXlvdXRUZXN0cyI7CisgICAgbXkgJGlFeHBs
b2RlckRpcmVjdG9yeSA9ICR3ZWJraXREaXIgLiAiL1dlYktpdFRvb2xzL2lFeHBsb2RlciI7CiAg
ICAgbXkgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25m
IjsKICAgICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTIt
aHR0cGQuY29uZiIgaWYgYCRodHRwZFBhdGggLXZgID1+IG18QXBhY2hlLzJ8OwogICAgIG15ICRk
b2N1bWVudFJvb3QgPSAiJGlFeHBsb2RlckRpcmVjdG9yeS9odGRvY3MiOwpAQCAtMTM4LDM2ICsx
MjAsMTggQEAgc3ViIG9wZW5IVFRQRElmTmVlZGVkKCkKICAgICBteSAkc3NsQ2VydGlmaWNhdGUg
PSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtpdC1odHRwZC5wZW0iOwogICAgIG15ICRs
aXN0ZW4gPSAiMTI3LjAuMC4xOiRodHRwZFBvcnQiOwogCi0gICAgb3BlbjIoXCpIVFRQRElOLCBc
KkhUVFBET1VULCAkaHR0cGRQYXRoLCAKKworICAgIG15IEBhcmdzID0gKAogICAgICAgICAiLWYi
LCAiJGh0dHBkQ29uZmlnIiwKICAgICAgICAgIi1DIiwgIkRvY3VtZW50Um9vdCBcIiRkb2N1bWVu
dFJvb3RcIiIsCiAgICAgICAgICItQyIsICJMaXN0ZW4gJGxpc3RlbiIsCiAgICAgICAgICItYyIs
ICJUeXBlc0NvbmZpZyBcIiR0eXBlc0NvbmZpZ1wiIiwKLSAgICAgICAgIi1jIiwgIkN1c3RvbUxv
ZyBcIi90bXAvV2ViS2l0L2FjY2Vzc19sb2cudHh0XCIgY29tbW9uIiwKLSAgICAgICAgIi1jIiwg
IkVycm9yTG9nIFwiL3RtcC9XZWJLaXQvZXJyb3JfbG9nLnR4dFwiIiwKKyAgICAgICAgIi1jIiwg
IkN1c3RvbUxvZyBcIiRpRXhwbG9kZXJMb2dEaXIvYWNjZXNzX2xvZy50eHRcIiBjb21tb24iLAor
ICAgICAgICAiLWMiLCAiRXJyb3JMb2cgXCIkaUV4cGxvZGVyTG9nRGlyL2Vycm9yX2xvZy50eHRc
IiIsCiAgICAgICAgICItYyIsICJTU0xDZXJ0aWZpY2F0ZUZpbGUgXCIkc3NsQ2VydGlmaWNhdGVc
IiIsCiAgICAgICAgICMgQXBhY2hlIHdvdWxkbid0IHJ1biBDR0lzIHdpdGggcGVybWlzc2lvbnM9
PTcwMCBvdGhlcndpc2UKLSAgICAgICAgIi1jIiwgIlVzZXIgXCIjJDxcIiIpOwotCi0gICAgbXkg
JHJldHJ5Q291bnQgPSAyMDsKLSAgICB3aGlsZSAoc3lzdGVtKCIvdXNyL2Jpbi9jdXJsIC1xIC0t
c2lsZW50IC0tc3RkZXJyIC0gLS1vdXRwdXQgIiAuIEZpbGU6OlNwZWMtPmRldm51bGwoKSAuICIg
JGxpc3RlbiIpICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAgIHNsZWVwIDE7Ci0gICAgICAgIC0t
JHJldHJ5Q291bnQ7Ci0gICAgfQotICAgIAotICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9y
IGh0dHBkIHRvIHN0YXJ0IiB1bmxlc3MgJHJldHJ5Q291bnQ7Ci0gICAgCi0gICAgJGh0dHBkT3Bl
biA9IDE7Ci19Ci0KLXN1YiBjbG9zZUhUVFBEKCkKLXsKLSAgICByZXR1cm4gaWYgISRodHRwZE9w
ZW47Ci0KLSAgICBjbG9zZSBIVFRQRElOOwotICAgIGNsb3NlIEhUVFBET1VUOwotCi0gICAga2ls
bCAxNSwgYGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgIGlmIC1mICIvdG1wL1dlYktpdC9odHRw
ZC5waWQiOworICAgICAgICAiLWMiLCAiVXNlciBcIiMkPFwiIgorICAgICk7CiAKLSAgICAkaHR0
cGRPcGVuID0gMDsKKyAgICAkaXNIdHRwZE9wZW4gPSBvcGVuSFRUUEQoQGFyZ3MpOwogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LWh0dHBkIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy9ydW4td2Via2l0LWh0dHBkCmluZGV4IDlhOTcxOTAuLmY2YjlmMDkgMTAwNzU1
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC1odHRwZAorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3J1bi13ZWJraXQtaHR0cGQKQEAgLTMzLDExICszMywxMyBAQCB1c2Ugc3Ry
aWN0OwogdXNlIHdhcm5pbmdzOwogCiB1c2UgQ3dkOwordXNlIEZpbGU6OlBhdGg7CiB1c2UgRmls
ZTo6QmFzZW5hbWU7CiB1c2UgR2V0b3B0OjpMb25nOwogdXNlIEZpbmRCaW47CiAKIHVzZSBsaWIg
JEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRwZXJsOjpodHRwZDsKIHVzZSB3ZWJraXRkaXJzOwog
CiAjIEFyZ3VtZW50IGhhbmRsaW5nCkBAIC02MiwzOSArNjQsNyBAQCBpZiAoISRyZXN1bHQgfHwg
QEFSR1YgfHwgJHNob3dIZWxwKSB7CiBzZXRDb25maWd1cmF0aW9uKCk7CiBteSAkcHJvZHVjdERp
ciA9IHByb2R1Y3REaXIoKTsKIGNoZGlyV2ViS2l0KCk7Ci0KLW1rZGlyICIvdG1wL1dlYktpdCI7
Ci0KLWlmICgtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIikgewotICAgIG15ICRvbGRQaWQgPSBg
Y2F0IC90bXAvV2ViS2l0L2h0dHBkLnBpZGA7Ci0gICAgY2hvbXAgJG9sZFBpZDsKLSAgICBpZiAo
MCAhPSBraWxsIDAsICRvbGRQaWQpIHsKLSAgICAgICAgcHJpbnQgIlxuaHR0cGQgaXMgYWxyZWFk
eSBydW5uaW5nOiBwaWQgJG9sZFBpZCwga2lsbGluZy4uLlxuIjsKLSAgICAgICAga2lsbCAxNSwg
JG9sZFBpZDsKLSAgICAgICAgCi0gICAgICAgIG15ICRyZXRyeUNvdW50ID0gMjA7Ci0gICAgICAg
IHdoaWxlICgoMCAhPSBraWxsIDAsICRvbGRQaWQpICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAg
ICAgICBzbGVlcCAxOwotICAgICAgICAgICAgLS0kcmV0cnlDb3VudDsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gcXVpdCIg
dW5sZXNzICRyZXRyeUNvdW50OwotICAgIH0KLX0KLQotbXkgJHRlc3REaXJlY3RvcnkgPSBnZXRj
d2QoKSAuICIvTGF5b3V0VGVzdHMiOwotbXkgJGpzVGVzdFJlc291cmNlc0RpcmVjdG9yeSA9ICR0
ZXN0RGlyZWN0b3J5IC4gIi9mYXN0L2pzL3Jlc291cmNlcyI7Ci1teSAkaHR0cGRQYXRoID0gIi91
c3Ivc2Jpbi9odHRwZCI7Ci0kaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9hcGFjaGUyIiBpZiBpc0Rl
YmlhbkJhc2VkKCk7Ci1teSAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25m
L2h0dHBkLmNvbmYiOwotJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9j
eWd3aW4taHR0cGQuY29uZiIgaWYgaXNDeWd3aW4oKTsKLSRodHRwZENvbmZpZyA9ICIkdGVzdERp
cmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1odHRwZC5jb25mIiBpZiBgJGh0dHBkUGF0aCAtdmAg
PX4gbXxBcGFjaGUvMnw7Ci0kaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25m
L2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYiIGlmIGlzRGViaWFuQmFzZWQoKTsKLSRodHRwZENv
bmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvZmVkb3JhLWh0dHBkLmNvbmYiIGlmIGlz
RmVkb3JhQmFzZWQoKTsKLW15ICRkb2N1bWVudFJvb3QgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC90
ZXN0cyI7Ci1teSAkdHlwZXNDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL21pbWUu
dHlwZXMiOwotbXkgJHNzbENlcnRpZmljYXRlID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi93
ZWJraXQtaHR0cGQucGVtIjsKLQorbXkgJHRlc3REaXJlY3RvcnkgPSBjYXRmaWxlKGdldGN3ZCgp
LCAiTGF5b3V0VGVzdHMiKTsKIG15ICRsaXN0ZW4gPSAiMTI3LjAuMC4xOiRodHRwZFBvcnQiOwog
JGxpc3RlbiA9ICIkaHR0cGRQb3J0IiBpZiAoJGFsbEludGVyZmFjZXMpOwogCkBAIC0xMDYsMTYg
Kzc2LDkgQEAgaWYgKCRhbGxJbnRlcmZhY2VzKSB7CiBwcmludCAiUHJlc3MgQ3RybCtDIHRvIHN0
b3AgaXQuXG5cbiI7CiAKIG15IEBhcmdzID0gKAotICAgICItZiIsICIkaHR0cGRDb25maWciLAot
ICAgICItQyIsICJEb2N1bWVudFJvb3QgXCIkZG9jdW1lbnRSb290XCIiLAotICAgICMgU2V0dXAg
YSBsaW5rIHRvIHdoZXJlIHRoZSBqcyB0ZXN0IHRlbXBsYXRlcyBhcmUgc3RvcmVkLCB1c2UgLWMg
c28gdGhhdCBtb2RfYWxpYXMgd2lsbCBhbHJlYWR5IGJlIGxhb2RlZC4KLSAgICAiLWMiLCAiQWxp
YXMgL2pzLXRlc3QtcmVzb3VyY2VzIFwiJGpzVGVzdFJlc291cmNlc0RpcmVjdG9yeVwiIiwKICAg
ICAiLUMiLCAiTGlzdGVuICRsaXN0ZW4iLAotICAgICItYyIsICJUeXBlc0NvbmZpZyBcIiR0eXBl
c0NvbmZpZ1wiIiwKICAgICAiLWMiLCAiQ3VzdG9tTG9nIHwvdXNyL2Jpbi90ZWUgY29tbW9uIiwK
ICAgICAiLWMiLCAiRXJyb3JMb2cgfC91c3IvYmluL3RlZSIsCi0gICAgIyBBcGFjaGUgd291bGRu
J3QgcnVuIENHSXMgd2l0aCBwZXJtaXNzaW9ucz09NzAwIG90aGVyd2lzZS4KLSAgICAiLWMiLCAi
VXNlciBcIiMkPFwiIiwKICAgICAjIFJ1biBpbiBzaW5nbGUtcHJvY2VzcyBtb2RlLCBkbyBub3Qg
ZGV0YWNoIGZyb20gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsLgogICAgICItWCIsCiAgICAgIyBE
aXNhYmxlIEtlZXAtQWxpdmUgc3VwcG9ydC4gTWFrZXMgdGVzdGluZyBpbiBtdWx0aXBsZSBicm93
c2VycyBlYXNpZXIgKG5vIG5lZWQgdG8gd2FpdApAQCAtMTIzLDkgKzg2LDcgQEAgbXkgQGFyZ3Mg
PSAoCiAgICAgIi1jIiwgIktlZXBBbGl2ZSAwIgogKTsKIAotIyBGSVhNRTogRW5hYmxlIHRoaXMg
b24gV2luZG93cyBvbmNlIDxyZGFyOi8vcHJvYmxlbS81MzQ1OTg1PiBpcyBmaXhlZAotcHVzaChA
YXJncywgIi1jIiwgIlNTTENlcnRpZmljYXRlRmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5s
ZXNzIGlzQ3lnd2luKCk7Ci0KLXN5c3RlbSgkaHR0cGRQYXRoLCBAYXJncyk7Ci0KLXVubGluayAi
L3RtcC9XZWJLaXQvaHR0cGQucGlkIjsKK215IEBkZWZhdWx0QXJncyA9IGdldERlZmF1bHRDb25m
aWdGb3JUZXN0RGlyKCR0ZXN0RGlyZWN0b3J5KTsKK0BhcmdzID0gKEBkZWZhdWx0QXJncywgQGFy
Z3MpOworc2V0SFRUUERTdGFuZGFsb25lKCk7CitvcGVuSFRUUEQoQGFyZ3MpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IDM5ZWQ1MDEuLmFlYjU1YmEgMTAwNzU1Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cworKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTY3LDYgKzY3LDcgQEAgdXNlIFRpbWU6OkhpUmVz
IHF3KHRpbWUgdXNsZWVwKTsKIHVzZSBMaXN0OjpVdGlsICdzaHVmZmxlJzsKIAogdXNlIGxpYiAk
RmluZEJpbjo6QmluOwordXNlIHdlYmtpdHBlcmw6Omh0dHBkOwogdXNlIHdlYmtpdGRpcnM7CiB1
c2UgVkNTVXRpbHM7CiB1c2UgUE9TSVg7CkBAIC03NSw4ICs3Niw4IEBAIHN1YiBidWlsZFBsYXRm
b3JtUmVzdWx0SGllcmFyY2h5KCk7CiBzdWIgYnVpbGRQbGF0Zm9ybVRlc3RIaWVyYXJjaHkoQCk7
CiBzdWIgY2xvc2VDeWdwYXRocygpOwogc3ViIGNsb3NlRHVtcFRvb2woKTsKLXN1YiBjbG9zZUhU
VFBEKCk7CiBzdWIgY2xvc2VXZWJTb2NrZXRTZXJ2ZXIoKTsKK3N1YiBjb25maWdBbmRPcGVuSFRU
UERJZk5lZWRlZCgpOwogc3ViIGNvdW50QW5kUHJpbnRMZWFrcygkJCQpOwogc3ViIGNvdW50Rmlu
aXNoZWRUZXN0KCQkJCQpOwogc3ViIGRlbGV0ZUV4cGVjdGVkQW5kQWN0dWFsUmVzdWx0cygkKTsK
QEAgLTkxLDcgKzkyLDYgQEAgc3ViIHJlc29sdmVBbmRNYWtlVGVzdFJlc3VsdHNEaXJlY3Rvcnko
KTsKIHN1YiBudW1lcmljY21wKCQkKTsKIHN1YiBvcGVuRGlmZlRvb2woKTsKIHN1YiBvcGVuRHVt
cFRvb2woKTsKLXN1YiBvcGVuSFRUUERJZk5lZWRlZCgpOwogc3ViIHBhcnNlTGVha3NhbmRQcmlu
dFVuaXF1ZUxlYWtzKCk7CiBzdWIgb3BlbldlYlNvY2tldFNlcnZlcklmTmVlZGVkKCk7CiBzdWIg
cGF0aGNtcCgkJCk7CkBAIC0xNDMsNyArMTQzLDggQEAgbXkgJHNob3dIZWxwID0gMDsKIG15ICRz
dHJpcEVkaXRpbmdDYWxsYmFja3MgPSBpc0N5Z3dpbigpOwogbXkgJHRlc3RIVFRQID0gMTsKIG15
ICR0ZXN0TWVkaWEgPSAxOwotbXkgJHRlc3RSZXN1bHRzRGlyZWN0b3J5ID0gIi90bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cyI7CitteSAkdG1wRGlyID0gIi90bXAiOworbXkgJHRlc3RSZXN1bHRzRGly
ZWN0b3J5ID0gY2F0ZmlsZSgkdG1wRGlyLCAibGF5b3V0LXRlc3QtcmVzdWx0cyIpOwogbXkgJHRl
c3RzUGVyRHVtcFRvb2wgPSAxMDAwOwogbXkgJHRocmVhZGVkID0gMDsKICMgRHVtcFJlbmRlclRy
ZWUgaGFzIGFuIGludGVybmFsIHRpbWVvdXQgb2YgMTUgc2Vjb25kcywgc28gdGhpcyBtdXN0IGJl
ID4gMTUuCkBAIC0zODMsNiArMzg0LDcgQEAgbXkgQHBsYXRmb3JtVGVzdEhpZXJhcmNoeSA9IGJ1
aWxkUGxhdGZvcm1UZXN0SGllcmFyY2h5KEBwbGF0Zm9ybVJlc3VsdEhpZXJhcmNoeSkKIAogJGV4
cGVjdGVkRGlyZWN0b3J5ID0gJEVOVnsiV2ViS2l0RXhwZWN0ZWRUZXN0UmVzdWx0c0RpcmVjdG9y
eSJ9IGlmICRFTlZ7IldlYktpdEV4cGVjdGVkVGVzdFJlc3VsdHNEaXJlY3RvcnkifTsKIAorJHRl
c3RSZXN1bHRzRGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+cmVsMmFicygkdGVzdFJlc3VsdHNEaXJl
Y3RvcnkpOwogbXkgJHRlc3RSZXN1bHRzID0gY2F0ZmlsZSgkdGVzdFJlc3VsdHNEaXJlY3Rvcnks
ICJyZXN1bHRzLmh0bWwiKTsKIAogcHJpbnQgIlJ1bm5pbmcgdGVzdHMgZnJvbSAkdGVzdERpcmVj
dG9yeVxuIjsKQEAgLTYwNSw3ICs2MDcsNyBAQCBmb3IgbXkgJHRlc3QgKEB0ZXN0cykgewogICAg
IH0KIAogICAgIGlmICgkdGVzdCA9fiAvXmh0dHBcLy8pIHsKLSAgICAgICAgb3BlbkhUVFBESWZO
ZWVkZWQoKTsKKyAgICAgICAgY29uZmlnQW5kT3BlbkhUVFBESWZOZWVkZWQoKTsKICAgICAgICAg
aWYgKCR0ZXN0ICF+IC9eaHR0cFwvdGVzdHNcL2xvY2FsXC8vICYmICR0ZXN0ICF+IC9eaHR0cFwv
dGVzdHNcL3NzbFwvLyAmJiAkdGVzdCAhfiAvXmh0dHBcL3Rlc3RzXC93bWxcLy8gJiYgJHRlc3Qg
IX4gL15odHRwXC90ZXN0c1wvbWVkaWFcLy8pIHsKICAgICAgICAgICAgIG15ICRwYXRoID0gY2Fu
b25wYXRoKCR0ZXN0KTsKICAgICAgICAgICAgICRwYXRoID1+IHMvXmh0dHBcL3Rlc3RzXC8vLzsK
QEAgLTk0NSw3ICs5NDcsNyBAQCBwcmludGYgIlxuJTAuMmZzIHRvdGFsIHRlc3RpbmcgdGltZVxu
IiwgKHRpbWUgLSAkb3ZlcmFsbFN0YXJ0VGltZSkgLiAiIjsKIAogISRpc0R1bXBUb29sT3BlbiB8
fCBkaWUgIkZhaWxlZCB0byBjbG9zZSAkZHVtcFRvb2xOYW1lLlxuIjsKIAotY2xvc2VIVFRQRCgp
OworJGlzSHR0cGRPcGVuID0gY2xvc2VIVFRQRCgpOwogY2xvc2VXZWJTb2NrZXRTZXJ2ZXIoKTsK
IAogIyBCZWNhdXNlIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGlzIHNjcmlwdCBhcmUgcnVubmlu
ZyBjb25jdXJyZW50bHkgd2UgY2Fubm90IApAQCAtMTM0NSw5NSArMTM0NywyMSBAQCBzdWIgZHVt
cFRvb2xEaWRDcmFzaCgpCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6cHJvY2Vz
c0lzQ3Jhc2hpbmcoJGR1bXBUb29sUElEKTsKIH0KIAotc3ViIG9wZW5IVFRQRElmTmVlZGVkKCkK
K3N1YiBjb25maWdBbmRPcGVuSFRUUERJZk5lZWRlZCgpCiB7CiAgICAgcmV0dXJuIGlmICRpc0h0
dHBkT3BlbjsKLQotICAgIG1rZGlyICIvdG1wL1dlYktpdCI7Ci0gICAgCi0gICAgaWYgKC1mICIv
dG1wL1dlYktpdC9odHRwZC5waWQiKSB7Ci0gICAgICAgIG15ICRvbGRQaWQgPSBgY2F0IC90bXAv
V2ViS2l0L2h0dHBkLnBpZGA7Ci0gICAgICAgIGNob21wICRvbGRQaWQ7Ci0gICAgICAgIGlmICgw
ICE9IGtpbGwgMCwgJG9sZFBpZCkgewotICAgICAgICAgICAgcHJpbnQgIlxuaHR0cGQgaXMgYWxy
ZWFkeSBydW5uaW5nOiBwaWQgJG9sZFBpZCwga2lsbGluZy4uLlxuIjsKLSAgICAgICAgICAgIGtp
bGwgMTUsICRvbGRQaWQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG15ICRyZXRyeUNvdW50
ID0gMjA7Ci0gICAgICAgICAgICB3aGlsZSAoKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSAmJiAkcmV0
cnlDb3VudCkgewotICAgICAgICAgICAgICAgIHNsZWVwIDE7Ci0gICAgICAgICAgICAgICAgLS0k
cmV0cnlDb3VudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZGll
ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gcXVpdCIgdW5sZXNzICRyZXRyeUNvdW50
OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIG15ICRodHRwZFBhdGggPSAiL3Vzci9zYmlu
L2h0dHBkIjsKLSAgICBteSAkaHR0cGRDb25maWc7Ci0gICAgaWYgKGlzQ3lnd2luKCkpIHsKLSAg
ICAgICAgbXkgJHdpbmRvd3NDb25mRGlyZWN0b3J5ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29u
Zi8iOwotICAgICAgICB1bmxlc3MgKC14ICIvdXNyL2xpYi9hcGFjaGUvbGlicGhwNC5kbGwiKSB7
Ci0gICAgICAgICAgICBjb3B5KCIkd2luZG93c0NvbmZEaXJlY3RvcnkvbGlicGhwNC5kbGwiLCAi
L3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIik7Ci0gICAgICAgICAgICBjaG1vZCgwNzU1LCAi
L3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIik7Ci0gICAgICAgIH0KLSAgICAgICAgJGh0dHBk
Q29uZmlnID0gIiR3aW5kb3dzQ29uZkRpcmVjdG9yeS9jeWd3aW4taHR0cGQuY29uZiI7Ci0gICAg
fSBlbHNpZiAoaXNEZWJpYW5CYXNlZCgpKSB7Ci0gICAgICAgICRodHRwZFBhdGggPSAiL3Vzci9z
YmluL2FwYWNoZTIiOwotICAgICAgICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0
cC9jb25mL2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYiOwotICAgIH0gZWxzaWYgKGlzRmVkb3Jh
QmFzZWQoKSkgewotICAgICAgICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCI7Ci0gICAg
ICAgICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvZmVkb3JhLWh0dHBk
LmNvbmYiOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVj
dG9yeS9odHRwL2NvbmYvaHR0cGQuY29uZiI7Ci0gICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVz
dERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1odHRwZC5jb25mIiBpZiBgJGh0dHBkUGF0aCAt
dmAgPX4gbXxBcGFjaGUvMnw7Ci0gICAgfQotICAgIG15ICRkb2N1bWVudFJvb3QgPSAiJHRlc3RE
aXJlY3RvcnkvaHR0cC90ZXN0cyI7Ci0gICAgbXkgJGpzVGVzdFJlc291cmNlc0RpcmVjdG9yeSA9
ICR0ZXN0RGlyZWN0b3J5IC4gIi9mYXN0L2pzL3Jlc291cmNlcyI7Ci0gICAgbXkgJHR5cGVzQ29u
ZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9taW1lLnR5cGVzIjsKLSAgICBteSAkbGlz
dGVuID0gIjEyNy4wLjAuMTokaHR0cGRQb3J0IjsKICAgICBteSAkYWJzVGVzdFJlc3VsdHNEaXJl
Y3RvcnkgPSByZXNvbHZlQW5kTWFrZVRlc3RSZXN1bHRzRGlyZWN0b3J5KCk7Ci0gICAgbXkgJHNz
bENlcnRpZmljYXRlID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi93ZWJraXQtaHR0cGQucGVt
IjsKLQorICAgIG15ICRsaXN0ZW4gPSAiMTI3LjAuMC4xOiRodHRwZFBvcnQiOwogICAgIG15IEBh
cmdzID0gKAotICAgICAgICAiLWYiLCAiJGh0dHBkQ29uZmlnIiwKLSAgICAgICAgIi1DIiwgIkRv
Y3VtZW50Um9vdCBcIiRkb2N1bWVudFJvb3RcIiIsCi0gICAgICAgICMgU2V0dXAgYSBsaW5rIHRv
IHdoZXJlIHRoZSBqcyB0ZXN0IHRlbXBsYXRlcyBhcmUgc3RvcmVkLCB1c2UgLWMgc28gdGhhdCBt
b2RfYWxpYXMgd2lsbCBhbHJlYWR5IGJlIGxhb2RlZC4KLSAgICAgICAgIi1jIiwgIkFsaWFzIC9q
cy10ZXN0LXJlc291cmNlcyBcIiRqc1Rlc3RSZXNvdXJjZXNEaXJlY3RvcnlcIiIsCi0gICAgICAg
ICItQyIsICJMaXN0ZW4gJGxpc3RlbiIsCi0gICAgICAgICItYyIsICJUeXBlc0NvbmZpZyBcIiR0
eXBlc0NvbmZpZ1wiIiwKICAgICAgICAgIi1jIiwgIkN1c3RvbUxvZyBcIiRhYnNUZXN0UmVzdWx0
c0RpcmVjdG9yeS9hY2Nlc3NfbG9nLnR4dFwiIGNvbW1vbiIsCiAgICAgICAgICItYyIsICJFcnJv
ckxvZyBcIiRhYnNUZXN0UmVzdWx0c0RpcmVjdG9yeS9lcnJvcl9sb2cudHh0XCIiLAotICAgICAg
ICAjIEFwYWNoZSB3b3VsZG4ndCBydW4gQ0dJcyB3aXRoIHBlcm1pc3Npb25zPT03MDAgb3RoZXJ3
aXNlCi0gICAgICAgICItYyIsICJVc2VyIFwiIyQ8XCIiCisgICAgICAgICItQyIsICJMaXN0ZW4g
JGxpc3RlbiIKICAgICApOwogCi0gICAgIyBGSVhNRTogRW5hYmxlIHRoaXMgb24gV2luZG93cyBv
bmNlIDxyZGFyOi8vcHJvYmxlbS81MzQ1OTg1PiBpcyBmaXhlZAotICAgICMgVGhlIHZlcnNpb24g
b2YgQXBhY2hlIHdlIHVzZSB3aXRoIEN5Z3dpbiBkb2VzIG5vdCBzdXBwb3J0IFNTTAotICAgIHB1
c2goQGFyZ3MsICItYyIsICJTU0xDZXJ0aWZpY2F0ZUZpbGUgXCIkc3NsQ2VydGlmaWNhdGVcIiIp
IHVubGVzcyBpc0N5Z3dpbigpOwotCi0gICAgb3BlbjIoXCpIVFRQRElOLCBcKkhUVFBET1VULCAk
aHR0cGRQYXRoLCBAYXJncyk7Ci0KLSAgICBteSAkcmV0cnlDb3VudCA9IDIwOwotICAgIHdoaWxl
IChzeXN0ZW0oIi91c3IvYmluL2N1cmwgLXEgLS1zaWxlbnQgLS1zdGRlcnIgLSAtLW91dHB1dCAi
IC4gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpIC4gIiAkbGlzdGVuIikgJiYgJHJldHJ5Q291bnQpIHsK
LSAgICAgICAgc2xlZXAgMTsKLSAgICAgICAgLS0kcmV0cnlDb3VudDsKLSAgICB9Ci0gICAgCi0g
ICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gc3RhcnQiIHVubGVzcyAkcmV0
cnlDb3VudDsKLSAgICAKLSAgICAkaXNIdHRwZE9wZW4gPSAxOwotfQotCi1zdWIgY2xvc2VIVFRQ
RCgpCi17Ci0gICAgcmV0dXJuIGlmICEkaXNIdHRwZE9wZW47Ci0KLSAgICBjbG9zZSBIVFRQRElO
OwotICAgIGNsb3NlIEhUVFBET1VUOwotCi0gICAga2lsbCAxNSwgYGNhdCAvdG1wL1dlYktpdC9o
dHRwZC5waWRgIGlmIC1mICIvdG1wL1dlYktpdC9odHRwZC5waWQiOworICAgIG15IEBkZWZhdWx0
QXJncyA9IGdldERlZmF1bHRDb25maWdGb3JUZXN0RGlyKCR0ZXN0RGlyZWN0b3J5KTsKKyAgICBA
YXJncyA9IChAZGVmYXVsdEFyZ3MsIEBhcmdzKTsKIAotICAgICRpc0h0dHBkT3BlbiA9IDA7Cisg
ICAgJGlzSHR0cGRPcGVuID0gb3BlbkhUVFBEKEBhcmdzKTsKIH0KIAogc3ViIG9wZW5XZWJTb2Nr
ZXRTZXJ2ZXJJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvaHR0cGQucG0gYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2NmY5MQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9odHRwZC5wbQpAQCAtMCwwICsx
LDIxMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCisjIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisjIENvcHlyaWdodCAoQykgMjAxMCBBbmRyYXMg
QmVjc2kgKGFiZWNzaUBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIE1vZHVsZSB0byBzaGFyZSBjb2RlIHRvIHN0YXJ0
IGFuZCBzdG9wIHRoZSBBcGFjaGUgZGFlbW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz
OworCit1c2UgRmlsZTo6UGF0aDsKK3VzZSBGaWxlOjpTcGVjOwordXNlIEZpbGU6OlNwZWM6OkZ1
bmN0aW9uczsKK3VzZSBJUEM6Ok9wZW4yOworCit1c2Ugd2Via2l0ZGlyczsKKworQkVHSU4gewor
ICAgdXNlIEV4cG9ydGVyICAgKCk7CisgICBvdXIgKCRWRVJTSU9OLCBASVNBLCBARVhQT1JULCBA
RVhQT1JUX09LLCAlRVhQT1JUX1RBR1MpOworICAgJFZFUlNJT04gICAgID0gMS4wMDsKKyAgIEBJ
U0EgICAgICAgICA9IHF3KEV4cG9ydGVyKTsKKyAgIEBFWFBPUlQgICAgICA9IHF3KCZnZXRIVFRQ
RFBhdGggJmdldERlZmF1bHRDb25maWdGb3JUZXN0RGlyICZvcGVuSFRUUEQgJmNsb3NlSFRUUEQg
JmdldEhUVFBEUGlkICZzZXRIVFRQRFBpZERpciAmc2V0SFRUUERTdGFuZGFsb25lKTsKKyAgICVF
WFBPUlRfVEFHUyA9ICggKTsKKyAgIEBFWFBPUlRfT0sgICA9ICgpOworfQorCitteSAkdG1wRGly
ID0gIi90bXAiOworbXkgJGh0dHBkUGF0aDsKK215ICRodHRwZFBpZERpciA9IGNhdGZpbGUoJHRt
cERpciwgIldlYktpdCIpOworbXkgJGh0dHBkUGlkRmlsZSA9IGNhdGZpbGUoJGh0dHBkUGlkRGly
LCAiaHR0cGQucGlkIik7CitteSAkaHR0cGRQaWQ7CitteSAkc3RhbmRhbG9uZSA9IDA7CisKKyRT
SUd7J0lOVCd9ID0gJ2NsZWFudXAnOworJFNJR3snVEVSTSd9ID0gJ2NsZWFudXAnOworCitzdWIg
Z2V0SFRUUERQYXRoCit7CisgICAgaWYgKGlzRGViaWFuQmFzZWQoKSkgeworICAgICAgICAkaHR0
cGRQYXRoID0gIi91c3Ivc2Jpbi9hcGFjaGUyIjsKKyAgICB9IGVsc2UgeworICAgICAgICAkaHR0
cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCI7CisgICAgfQorICAgIHJldHVybiAkaHR0cGRQYXRo
OworfQorCitzdWIgZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXIKK3sKKyAgICBteSAoJHRlc3RE
aXJlY3RvcnkpID0gQF87CisgICAgZGllICJObyB0ZXN0IGRpcmVjdG9yeSBoYXMgYmVlbiBzcGVj
aWZpZWQuIiB1bmxlc3MgKCR0ZXN0RGlyZWN0b3J5KTsKKworICAgIG15ICRodHRwZENvbmZpZzsK
KyAgICBnZXRIVFRQRFBhdGgoKTsKKyAgICBpZiAoaXNDeWd3aW4oKSkgeworICAgICAgICBteSAk
d2luZG93c0NvbmZEaXJlY3RvcnkgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mLyI7CisgICAg
ICAgIHVubGVzcyAoLXggIi91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIpIHsKKyAgICAgICAg
ICAgIGNvcHkoIiR3aW5kb3dzQ29uZkRpcmVjdG9yeS9saWJwaHA0LmRsbCIsICIvdXNyL2xpYi9h
cGFjaGUvbGlicGhwNC5kbGwiKTsKKyAgICAgICAgICAgIGNobW9kKDA3NTUsICIvdXNyL2xpYi9h
cGFjaGUvbGlicGhwNC5kbGwiKTsKKyAgICAgICAgfQorICAgICAgICAkaHR0cGRDb25maWcgPSAi
JHdpbmRvd3NDb25mRGlyZWN0b3J5L2N5Z3dpbi1odHRwZC5jb25mIjsKKyAgICB9IGVsc2lmIChp
c0RlYmlhbkJhc2VkKCkpIHsKKyAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5
L2h0dHAvY29uZi9hcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mIjsKKyAgICB9IGVsc2lmIChpc0Zl
ZG9yYUJhc2VkKCkpIHsKKyAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0
dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGh0dHBk
Q29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25mIjsKKyAgICAgICAg
JGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWh0dHBkLmNv
bmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBtfEFwYWNoZS8yfDsKKyAgICB9CisKKyAgICBteSAk
ZG9jdW1lbnRSb290ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvdGVzdHMiOworICAgIG15ICRqc1Rl
c3RSZXNvdXJjZXNEaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeSAuICIvZmFzdC9qcy9yZXNvdXJj
ZXMiOworICAgIG15ICR0eXBlc0NvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvbWlt
ZS50eXBlcyI7CisgICAgbXkgJGh0dHBkTG9ja0ZpbGUgPSBjYXRmaWxlKCRodHRwZFBpZERpciwg
Imh0dHBkLmxvY2siKTsKKyAgICBteSAkaHR0cGRTY29yZUJvYXJkRmlsZSA9IGNhdGZpbGUoJGh0
dHBkUGlkRGlyLCAiaHR0cGQuc2NvcmVib2FyZCIpOworCisgICAgbXkgQGh0dHBkQXJncyA9ICgK
KyAgICAiLWYiLCAiJGh0dHBkQ29uZmlnIiwKKyAgICAiLUMiLCAiRG9jdW1lbnRSb290IFwiJGRv
Y3VtZW50Um9vdFwiIiwKKyAgICAjIFNldHVwIGEgbGluayB0byB3aGVyZSB0aGUganMgdGVzdCB0
ZW1wbGF0ZXMgYXJlIHN0b3JlZCwgdXNlIC1jIHNvIHRoYXQgbW9kX2FsaWFzIHdpbGwgYWxyZWFk
eSBiZSBsYW9kZWQuCisgICAgIi1jIiwgIkFsaWFzIC9qcy10ZXN0LXJlc291cmNlcyBcIiRqc1Rl
c3RSZXNvdXJjZXNEaXJlY3RvcnlcIiIsCisgICAgIi1jIiwgIlR5cGVzQ29uZmlnIFwiJHR5cGVz
Q29uZmlnXCIiLAorICAgICMgQXBhY2hlIHdvdWxkbid0IHJ1biBDR0lzIHdpdGggcGVybWlzc2lv
bnM9PTcwMCBvdGhlcndpc2UKKyAgICAiLWMiLCAiVXNlciBcIiMkPFwiIiwKKyAgICAiLWMiLCAi
TG9ja0ZpbGUgXCIkaHR0cGRMb2NrRmlsZVwiIiwKKyAgICAiLWMiLCAiUGlkRmlsZSBcIiRodHRw
ZFBpZEZpbGVcIiIsCisgICAgIi1jIiwgIlNjb3JlQm9hcmRGaWxlIFwiJGh0dHBkU2NvcmVCb2Fy
ZEZpbGVcIiIsCisgICAgKTsKKworICAgICMgRklYTUU6IEVuYWJsZSB0aGlzIG9uIFdpbmRvd3Mg
b25jZSA8cmRhcjovL3Byb2JsZW0vNTM0NTk4NT4gaXMgZml4ZWQKKyAgICAjIFRoZSB2ZXJzaW9u
IG9mIEFwYWNoZSB3ZSB1c2Ugd2l0aCBDeWd3aW4gZG9lcyBub3Qgc3VwcG9ydCBTU0wKKyAgICBt
eSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtpdC1odHRw
ZC5wZW0iOworICAgIHB1c2goQGh0dHBkQXJncywgIi1jIiwgIlNTTENlcnRpZmljYXRlRmlsZSBc
IiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5sZXNzIGlzQ3lnd2luKCk7CisKKyAgICByZXR1cm4gQGh0
dHBkQXJnczsKKworfQorCitzdWIgb3BlbkhUVFBEKEApCit7CisgICAgbXkgKEBhcmdzKSA9IEBf
OworICAgIGRpZSAiTm8gSFRUUEQgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBzcGVjaWZpZWQiIHVu
bGVzcyAoQGFyZ3MpOworICAgIG1rZGlyKCRodHRwZFBpZERpciwgMDc1NSk7CisgICAgZGllICJO
byB3cml0ZSBwZXJtaXNzaW9ucyB0byAkaHR0cGRQaWREaXIiIHVubGVzcyAoLXcgJGh0dHBkUGlk
RGlyKTsKKworICAgIGlmICgtZiAkaHR0cGRQaWRGaWxlKSB7CisgICAgICAgIG9wZW4gKFBJREZJ
TEUsICRodHRwZFBpZEZpbGUpOworICAgICAgICBteSAkb2xkUGlkID0gPFBJREZJTEU+OworICAg
ICAgICBjaG9tcCAkb2xkUGlkOworICAgICAgICBjbG9zZSBQSURGSUxFOworICAgICAgICBpZiAo
MCAhPSBraWxsIDAsICRvbGRQaWQpIHsKKyAgICAgICAgICAgIHByaW50ICJcbmh0dHBkIGlzIGFs
cmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtpbGxpbmcuLi5cbiI7CisgICAgICAgICAgICBr
aWxsIDE1LCAkb2xkUGlkOworCisgICAgICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOworICAg
ICAgICAgICAgd2hpbGUgKChraWxsKDAsICRvbGRQaWQpICE9IDApICYmICRyZXRyeUNvdW50KSB7
CisgICAgICAgICAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgICAgICAgICAtLSRyZXRyeUNvdW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZv
ciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJldHJ5Q291bnQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCIgdW5sZXNzICgkaHR0cGRQYXRoKTsK
KworICAgIG9wZW4yKFwqSFRUUERJTiwgXCpIVFRQRE9VVCwgJGh0dHBkUGF0aCwgQGFyZ3MpOwor
CisgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKKyAgICB3aGlsZSAoIS1mICRodHRwZFBpZEZpbGUg
JiYgJHJldHJ5Q291bnQpIHsKKyAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgLS0kcmV0cnlDb3Vu
dDsKKyAgICB9CisKKyAgICBpZiAoISRyZXRyeUNvdW50KSB7CisgICAgICAgIHJtZGlyICRodHRw
ZFBpZERpcjsKKyAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gc3Rh
cnQiOworICAgIH0KKworICAgICRodHRwZFBpZCA9IDxQSURGSUxFPiBpZiBvcGVuKFBJREZJTEUs
ICRodHRwZFBpZEZpbGUpOworICAgIGNob21wICRodHRwZFBpZCBpZiAkaHR0cGRQaWQ7CisgICAg
Y2xvc2UgUElERklMRTsKKworICAgIHdhaXRwaWQoJGh0dHBkUGlkLCAwKSBpZiAoJHN0YW5kYWxv
bmUgJiYgJGh0dHBkUGlkKTsKKworICAgIHJldHVybiAxOworfQorCitzdWIgY2xvc2VIVFRQRAor
eworICAgIGNsb3NlIEhUVFBESU47CisgICAgY2xvc2UgSFRUUERPVVQ7CisKKyAgICBpZiAoJGh0
dHBkUGlkKSB7CisgICAgICAgIGtpbGwgMTUsICRodHRwZFBpZDsKKyAgICAgICAgbXkgJHJldHJ5
Q291bnQgPSAyMDsKKyAgICAgICAgd2hpbGUgKC1mICRodHRwZFBpZEZpbGUgJiYgJHJldHJ5Q291
bnQpIHsKKyAgICAgICAgICAgIHNsZWVwIDE7CisgICAgICAgICAgICAtLSRyZXRyeUNvdW50Owor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCEkcmV0cnlDb3VudCkgeworICAgICAgICAgICAgcHJp
bnQgU1RERVJSICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gdGVybWluYXRlIVxuIjsK
KyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorICAgIHJtZGlyICRodHRw
ZFBpZERpcjsKKyAgICByZXR1cm4gMDsKK30KKworc3ViIHNldEhUVFBEUGlkRGlyCit7CisgICAg
bXkgKCRwaWREaXIpID0gQF87CisgICAgaWYgKCRwaWREaXIgJiYgLWQgJHBpZERpcikgeworICAg
ICAgICAkaHR0cGRQaWREaXIgPSAkcGlkRGlyOworICAgICAgICAkaHR0cGRQaWRGaWxlID0gY2F0
ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5waWQiKTsKKyAgICB9Cit9CisKK3N1YiBzZXRIVFRQ
RFN0YW5kYWxvbmUKK3sKKyAgICAkc3RhbmRhbG9uZSA9IDE7Cit9CisKK3N1YiBjbGVhbnVwCit7
CisgICAgY2xvc2VIVFRQRCgpOworICAgIHByaW50ICJcbiI7CisgICAgZXhpdCgxKTsKK30K
</data>
<flag name="commit-queue"
          id="28881"
          type_id="3"
          status="-"
          setter="abecsi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46673</attachid>
            <date>2010-01-15 05:30:18 -0800</date>
            <delta_ts>2010-01-20 05:53:59 -0800</delta_ts>
            <desc>Updated changelog to correctly show added module path</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22534</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkMGRkNTVjLi44ZGJjZDFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEt
MTUgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCBBcGFjaGUgaGFuZGxp
bmcgdG8gaHR0cGQucG0gbW9kdWxlIGFuZCB1c2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uYWxpdHkK
KyAgICAgICAgaW4gc2NyaXB0cyB3aGVyZSBBcGFjaGUgaXMgbmVlZGVkLgorICAgICAgICBUaGUg
bW9kdWxlIGh0dHBkLnBtIHN0b3JlcyB0aGUgUElEIG9mIEFwYWNoZSBpbiBhIHZhcmlhYmxlIGFu
ZCBjbGVhbnMgdXAKKyAgICAgICAgdGhlIFBJRCBkaXJlY3RvcnkgYWZ0ZXIgQXBhY2hlIHByb3Bl
cmx5IHNodXQgZG93bi4gQ2F0Y2hpbmcgSU5UIGFuZCBURVJNCisgICAgICAgIHNpZ25hbHMgYWxs
b3dzIHRoZSBzY3JpcHRzIHRvIGNsb3NlIEFwYWNoZSBhbmQgY2xlYW4gdXAgaXRzIFBJRCBkaXJl
Y3RvcnkKKyAgICAgICAgZXZlbiBpZiB0aGUgdGVzdGluZyB3YXMgaW50ZXJydXB0ZWQuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG06IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQt
aHR0cGQ6CisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOgorCiAyMDEwLTAxLTE0
ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9y
dW4taWV4cGxvZGVyLXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4taWV4cGxvZGVyLXRl
c3RzCmluZGV4IGVkNWVjZDYuLjM2Mjc0NDkgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLWlleHBsb2Rlci10ZXN0cworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi1pZXhw
bG9kZXItdGVzdHMKQEAgLTM4LDE2ICszOCwxNyBAQCB1c2UgR2V0b3B0OjpMb25nOwogdXNlIElQ
Qzo6T3BlbjI7CiAKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRwZXJsOjpodHRw
ZDsKIHVzZSB3ZWJraXRkaXJzOwogCi1zdWIgb3BlbkhUVFBESWZOZWVkZWQoKTsKLXN1YiBjbG9z
ZUhUVFBEKCk7CitzdWIgY29uZmlnQW5kT3BlbkhUVFBESWZOZWVkZWQoKTsKIHN1YiBydW5TYWZh
cmlXaXRoSUV4cGxvZGVyKCk7CiAKICMgQXJndW1lbnQgaGFuZGxpbmcKIG15ICRndWFyZE1hbGxv
YyA9ICcnOwogbXkgJGh0dHBkUG9ydCA9IDgwMDA7CiBteSAkZG93bmxvYWRUZXN0OworbXkgJGlF
eHBsb2RlckxvZ0RpciA9ICIvdG1wL2lFeHBsb2RlckxvZ3MiOwogCiBHZXRPcHRpb25zKAogICAg
ICdndWFyZC1tYWxsb2N8ZycgPT4gXCRndWFyZE1hbGxvYywKQEAgLTU1LDcgKzU2LDYgQEAgR2V0
T3B0aW9ucygKICAgICAncG9ydD1pJyA9PiBcJGh0dHBkUG9ydAogKTsKIAotCiBzZXRDb25maWd1
cmF0aW9uKCk7CiBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKIApAQCAtNjMsOCArNjMs
OCBAQCBjaGRpcldlYktpdCgpOwogCiBjaGVja0ZyYW1ld29ya3MoKTsKIAotbXkgJGh0dHBkT3Bl
biA9IDA7Ci1vcGVuSFRUUERJZk5lZWRlZCgpOworbXkgJGlzSHR0cGRPcGVuID0gMDsKK2NvbmZp
Z0FuZE9wZW5IVFRQRElmTmVlZGVkKCk7CiAKIGlmICgkZG93bmxvYWRUZXN0KSB7CiAgICAgc3lz
dGVtICIvdXNyL2Jpbi9jdXJsIC1vIH4vRGVza3RvcC9pZXhwbG9kZXIkZG93bmxvYWRUZXN0Lmh0
bWwgXCJodHRwOi8vMTI3LjAuMC4xOiRodHRwZFBvcnQvaWV4cGxvZGVyLmNnaT9sb29rdXA9MSZ0
ZXN0PSRkb3dubG9hZFRlc3RcIiI7CkBAIC03MiwxMSArNzIsMTEgQEAgaWYgKCRkb3dubG9hZFRl
c3QpIHsKIH0gZWxzZSB7CiAgICAgcnVuU2FmYXJpV2l0aElFeHBsb2RlcigpOwogICAgIHByaW50
ICJMYXN0IGdlbmVyYXRlZCB0ZXN0czpcbiI7Ci0gICAgc3lzdGVtICJncmVwICdpZXhwbG9kZXIu
Y2dpJyAvdG1wL1dlYktpdC9hY2Nlc3NfbG9nLnR4dCB8IHRhaWwgLW4gLTUgfCBhd2sgLUYnWyA9
JlxcP10nICd7aWYgKFwkOCA9PSBcImxvb2t1cFwiKSBwcmludCBcJDExOyBlbHNlIHByaW50IFwk
OX0nIjsKKyAgICBzeXN0ZW0gImdyZXAgJ2lleHBsb2Rlci5jZ2knICRpRXhwbG9kZXJMb2dEaXIv
YWNjZXNzX2xvZy50eHQgfCB0YWlsIC1uIC01IHwgYXdrIC1GJ1sgPSZcXD9dJyAne2lmIChcJDgg
PT0gXCJsb29rdXBcIikgcHJpbnQgXCQxMTsgZWxzZSBwcmludCBcJDl9JyI7CiB9CiAKLWNsb3Nl
SFRUUEQoKTsKLQorcm10cmVlICRpRXhwbG9kZXJMb2dEaXI7CiskaXNIdHRwZE9wZW4gPSBjbG9z
ZUhUVFBEKCk7CiAKIHN1YiBydW5TYWZhcmlXaXRoSUV4cGxvZGVyKCkKIHsKQEAgLTg3LDcgKzg3
LDcgQEAgc3ViIHJ1blNhZmFyaVdpdGhJRXhwbG9kZXIoKQogICAgICAgICAkcmVkaXJlY3RUbyA9
ICJodHRwOi8vMTI3LjAuMC4xOiRodHRwZFBvcnQvaW5kZXguaHRtbCI7CiAgICAgfQogCi0gICAg
b3BlbiBSRURJUkVDVF9IVE1MLCAiPiIsICIvdG1wL1dlYktpdC9yZWRpcmVjdC5odG1sIiBvciBk
aWU7CisgICAgb3BlbiBSRURJUkVDVF9IVE1MLCAiPiIsICIkaUV4cGxvZGVyTG9nRGlyL3JlZGly
ZWN0Lmh0bWwiIG9yIGRpZTsKICAgICBwcmludCBSRURJUkVDVF9IVE1MICI8aHRtbD5cbiI7CiAg
ICAgcHJpbnQgUkVESVJFQ1RfSFRNTCAiICAgIDxoZWFkPlxuIjsKICAgICBwcmludCBSRURJUkVD
VF9IVE1MICIgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9XCJyZWZyZXNoXCIgY29udGVudD1cIjE7
VVJMPSRyZWRpcmVjdFRvXCIgLz5cbiI7CkBAIC0xMDIsMzUgKzEwMiwxNyBAQCBzdWIgcnVuU2Fm
YXJpV2l0aElFeHBsb2RlcigpCiAgICAgCiAgICAgbG9jYWwgJUVOVjsKICAgICAkRU5We0RZTERf
SU5TRVJUX0xJQlJBUklFU30gPSAiL3Vzci9saWIvbGliZ21hbGxvYy5keWxpYiIgaWYgJGd1YXJk
TWFsbG9jOwotICAgIHN5c3RlbSAiV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tc2FmYXJpIiwgIi1O
U09wZW4iLCAiL3RtcC9XZWJLaXQvcmVkaXJlY3QuaHRtbCI7CisgICAgc3lzdGVtICJXZWJLaXRU
b29scy9TY3JpcHRzL3J1bi1zYWZhcmkiLCAiLU5TT3BlbiIsICIkaUV4cGxvZGVyTG9nRGlyL3Jl
ZGlyZWN0Lmh0bWwiOwogfQogCi1zdWIgb3BlbkhUVFBESWZOZWVkZWQoKQorc3ViIGNvbmZpZ0Fu
ZE9wZW5IVFRQRElmTmVlZGVkKCkKIHsKLSAgICByZXR1cm4gaWYgJGh0dHBkT3BlbjsKLQotICAg
IG1rZGlyICIvdG1wL1dlYktpdCI7Ci0gICAgCi0gICAgaWYgKC1mICIvdG1wL1dlYktpdC9odHRw
ZC5waWQiKSB7Ci0gICAgICAgIG15ICRvbGRQaWQgPSBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBp
ZGA7Ci0gICAgICAgIGNob21wICRvbGRQaWQ7Ci0gICAgICAgIGlmICgwICE9IGtpbGwgMCwgJG9s
ZFBpZCkgewotICAgICAgICAgICAgcHJpbnQgIlxuaHR0cGQgaXMgYWxyZWFkeSBydW5uaW5nOiBw
aWQgJG9sZFBpZCwga2lsbGluZy4uLlxuIjsKLSAgICAgICAgICAgIGtpbGwgMTUsICRvbGRQaWQ7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG15ICRyZXRyeUNvdW50ID0gMjA7Ci0gICAgICAg
ICAgICB3aGlsZSAoKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSAmJiAkcmV0cnlDb3VudCkgewotICAg
ICAgICAgICAgICAgIHNsZWVwIDE7Ci0gICAgICAgICAgICAgICAgLS0kcmV0cnlDb3VudDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZGllICJUaW1lZCBvdXQgd2Fp
dGluZyBmb3IgaHR0cGQgdG8gcXVpdCIgdW5sZXNzICRyZXRyeUNvdW50OwotICAgICAgICB9Ci0g
ICAgfQotICAgIAotICAgIG15ICR0ZXN0RGlyZWN0b3J5ID0gZ2V0Y3dkKCkgLiAiL0xheW91dFRl
c3RzIjsKLSAgICBteSAkaUV4cGxvZGVyRGlyZWN0b3J5ID0gZ2V0Y3dkKCkgLiAiL1dlYktpdFRv
b2xzL2lFeHBsb2RlciI7Ci0gICAgbXkgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vaHR0cGQiOwor
ICAgIHJldHVybiBpZiAkaXNIdHRwZE9wZW47CisgICAgbWtkaXIgJGlFeHBsb2RlckxvZ0RpcjsK
KyAgICBteSAkaHR0cGRQYXRoID0gZ2V0SFRUUERQYXRoKCk7CisgICAgbXkgJHdlYmtpdERpciA9
IGdldGN3ZCgpOworICAgIG15ICR0ZXN0RGlyZWN0b3J5ID0gJHdlYmtpdERpciAuICIvTGF5b3V0
VGVzdHMiOworICAgIG15ICRpRXhwbG9kZXJEaXJlY3RvcnkgPSAkd2Via2l0RGlyIC4gIi9XZWJL
aXRUb29scy9pRXhwbG9kZXIiOwogICAgIG15ICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9y
eS9odHRwL2NvbmYvaHR0cGQuY29uZiI7CiAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0
b3J5L2h0dHAvY29uZi9hcGFjaGUyLWh0dHBkLmNvbmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBt
fEFwYWNoZS8yfDsKICAgICBteSAkZG9jdW1lbnRSb290ID0gIiRpRXhwbG9kZXJEaXJlY3Rvcnkv
aHRkb2NzIjsKQEAgLTEzOCwzNiArMTIwLDE4IEBAIHN1YiBvcGVuSFRUUERJZk5lZWRlZCgpCiAg
ICAgbXkgJHNzbENlcnRpZmljYXRlID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi93ZWJraXQt
aHR0cGQucGVtIjsKICAgICBteSAkbGlzdGVuID0gIjEyNy4wLjAuMTokaHR0cGRQb3J0IjsKIAot
ICAgIG9wZW4yKFwqSFRUUERJTiwgXCpIVFRQRE9VVCwgJGh0dHBkUGF0aCwgCisKKyAgICBteSBA
YXJncyA9ICgKICAgICAgICAgIi1mIiwgIiRodHRwZENvbmZpZyIsCiAgICAgICAgICItQyIsICJE
b2N1bWVudFJvb3QgXCIkZG9jdW1lbnRSb290XCIiLAogICAgICAgICAiLUMiLCAiTGlzdGVuICRs
aXN0ZW4iLAogICAgICAgICAiLWMiLCAiVHlwZXNDb25maWcgXCIkdHlwZXNDb25maWdcIiIsCi0g
ICAgICAgICItYyIsICJDdXN0b21Mb2cgXCIvdG1wL1dlYktpdC9hY2Nlc3NfbG9nLnR4dFwiIGNv
bW1vbiIsCi0gICAgICAgICItYyIsICJFcnJvckxvZyBcIi90bXAvV2ViS2l0L2Vycm9yX2xvZy50
eHRcIiIsCisgICAgICAgICItYyIsICJDdXN0b21Mb2cgXCIkaUV4cGxvZGVyTG9nRGlyL2FjY2Vz
c19sb2cudHh0XCIgY29tbW9uIiwKKyAgICAgICAgIi1jIiwgIkVycm9yTG9nIFwiJGlFeHBsb2Rl
ckxvZ0Rpci9lcnJvcl9sb2cudHh0XCIiLAogICAgICAgICAiLWMiLCAiU1NMQ2VydGlmaWNhdGVG
aWxlIFwiJHNzbENlcnRpZmljYXRlXCIiLAogICAgICAgICAjIEFwYWNoZSB3b3VsZG4ndCBydW4g
Q0dJcyB3aXRoIHBlcm1pc3Npb25zPT03MDAgb3RoZXJ3aXNlCi0gICAgICAgICItYyIsICJVc2Vy
IFwiIyQ8XCIiKTsKLQotICAgIG15ICRyZXRyeUNvdW50ID0gMjA7Ci0gICAgd2hpbGUgKHN5c3Rl
bSgiL3Vzci9iaW4vY3VybCAtcSAtLXNpbGVudCAtLXN0ZGVyciAtIC0tb3V0cHV0ICIgLiBGaWxl
OjpTcGVjLT5kZXZudWxsKCkgLiAiICRsaXN0ZW4iKSAmJiAkcmV0cnlDb3VudCkgewotICAgICAg
ICBzbGVlcCAxOwotICAgICAgICAtLSRyZXRyeUNvdW50OwotICAgIH0KLSAgICAKLSAgICBkaWUg
IlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBzdGFydCIgdW5sZXNzICRyZXRyeUNvdW50
OwotICAgIAotICAgICRodHRwZE9wZW4gPSAxOwotfQotCi1zdWIgY2xvc2VIVFRQRCgpCi17Ci0g
ICAgcmV0dXJuIGlmICEkaHR0cGRPcGVuOwotCi0gICAgY2xvc2UgSFRUUERJTjsKLSAgICBjbG9z
ZSBIVFRQRE9VVDsKLQotICAgIGtpbGwgMTUsIGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYCBp
ZiAtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIjsKKyAgICAgICAgIi1jIiwgIlVzZXIgXCIjJDxc
IiIKKyAgICApOwogCi0gICAgJGh0dHBkT3BlbiA9IDA7CisgICAgJGlzSHR0cGRPcGVuID0gb3Bl
bkhUVFBEKEBhcmdzKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdl
YmtpdC1odHRwZCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC1odHRwZAppbmRleCA5
YTk3MTkwLi5mNmI5ZjA5IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtaHR0cGQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LWh0dHBkCkBAIC0z
MywxMSArMzMsMTMgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIAogdXNlIEN3ZDsKK3Vz
ZSBGaWxlOjpQYXRoOwogdXNlIEZpbGU6OkJhc2VuYW1lOwogdXNlIEdldG9wdDo6TG9uZzsKIHVz
ZSBGaW5kQmluOwogCiB1c2UgbGliICRGaW5kQmluOjpCaW47Cit1c2Ugd2Via2l0cGVybDo6aHR0
cGQ7CiB1c2Ugd2Via2l0ZGlyczsKIAogIyBBcmd1bWVudCBoYW5kbGluZwpAQCAtNjIsMzkgKzY0
LDcgQEAgaWYgKCEkcmVzdWx0IHx8IEBBUkdWIHx8ICRzaG93SGVscCkgewogc2V0Q29uZmlndXJh
dGlvbigpOwogbXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7CiBjaGRpcldlYktpdCgpOwot
Ci1ta2RpciAiL3RtcC9XZWJLaXQiOwotCi1pZiAoLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCIp
IHsKLSAgICBteSAkb2xkUGlkID0gYGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgOwotICAgIGNo
b21wICRvbGRQaWQ7Ci0gICAgaWYgKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSB7Ci0gICAgICAgIHBy
aW50ICJcbmh0dHBkIGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtpbGxpbmcuLi5c
biI7Ci0gICAgICAgIGtpbGwgMTUsICRvbGRQaWQ7Ci0gICAgICAgIAotICAgICAgICBteSAkcmV0
cnlDb3VudCA9IDIwOwotICAgICAgICB3aGlsZSAoKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSAmJiAk
cmV0cnlDb3VudCkgewotICAgICAgICAgICAgc2xlZXAgMTsKLSAgICAgICAgICAgIC0tJHJldHJ5
Q291bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRp
bmcgZm9yIGh0dHBkIHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICB9Ci19Ci0KLW15
ICR0ZXN0RGlyZWN0b3J5ID0gZ2V0Y3dkKCkgLiAiL0xheW91dFRlc3RzIjsKLW15ICRqc1Rlc3RS
ZXNvdXJjZXNEaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeSAuICIvZmFzdC9qcy9yZXNvdXJjZXMi
OwotbXkgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vaHR0cGQiOwotJGh0dHBkUGF0aCA9ICIvdXNy
L3NiaW4vYXBhY2hlMiIgaWYgaXNEZWJpYW5CYXNlZCgpOwotbXkgJGh0dHBkQ29uZmlnID0gIiR0
ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25mIjsKLSRodHRwZENvbmZpZyA9ICIkdGVz
dERpcmVjdG9yeS9odHRwL2NvbmYvY3lnd2luLWh0dHBkLmNvbmYiIGlmIGlzQ3lnd2luKCk7Ci0k
aHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTItaHR0cGQuY29u
ZiIgaWYgYCRodHRwZFBhdGggLXZgID1+IG18QXBhY2hlLzJ8OwotJGh0dHBkQ29uZmlnID0gIiR0
ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mIiBpZiBpc0Rl
YmlhbkJhc2VkKCk7Ci0kaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2Zl
ZG9yYS1odHRwZC5jb25mIiBpZiBpc0ZlZG9yYUJhc2VkKCk7Ci1teSAkZG9jdW1lbnRSb290ID0g
IiR0ZXN0RGlyZWN0b3J5L2h0dHAvdGVzdHMiOwotbXkgJHR5cGVzQ29uZmlnID0gIiR0ZXN0RGly
ZWN0b3J5L2h0dHAvY29uZi9taW1lLnR5cGVzIjsKLW15ICRzc2xDZXJ0aWZpY2F0ZSA9ICIkdGVz
dERpcmVjdG9yeS9odHRwL2NvbmYvd2Via2l0LWh0dHBkLnBlbSI7Ci0KK215ICR0ZXN0RGlyZWN0
b3J5ID0gY2F0ZmlsZShnZXRjd2QoKSwgIkxheW91dFRlc3RzIik7CiBteSAkbGlzdGVuID0gIjEy
Ny4wLjAuMTokaHR0cGRQb3J0IjsKICRsaXN0ZW4gPSAiJGh0dHBkUG9ydCIgaWYgKCRhbGxJbnRl
cmZhY2VzKTsKIApAQCAtMTA2LDE2ICs3Niw5IEBAIGlmICgkYWxsSW50ZXJmYWNlcykgewogcHJp
bnQgIlByZXNzIEN0cmwrQyB0byBzdG9wIGl0LlxuXG4iOwogCiBteSBAYXJncyA9ICgKLSAgICAi
LWYiLCAiJGh0dHBkQ29uZmlnIiwKLSAgICAiLUMiLCAiRG9jdW1lbnRSb290IFwiJGRvY3VtZW50
Um9vdFwiIiwKLSAgICAjIFNldHVwIGEgbGluayB0byB3aGVyZSB0aGUganMgdGVzdCB0ZW1wbGF0
ZXMgYXJlIHN0b3JlZCwgdXNlIC1jIHNvIHRoYXQgbW9kX2FsaWFzIHdpbGwgYWxyZWFkeSBiZSBs
YW9kZWQuCi0gICAgIi1jIiwgIkFsaWFzIC9qcy10ZXN0LXJlc291cmNlcyBcIiRqc1Rlc3RSZXNv
dXJjZXNEaXJlY3RvcnlcIiIsCiAgICAgIi1DIiwgIkxpc3RlbiAkbGlzdGVuIiwKLSAgICAiLWMi
LCAiVHlwZXNDb25maWcgXCIkdHlwZXNDb25maWdcIiIsCiAgICAgIi1jIiwgIkN1c3RvbUxvZyB8
L3Vzci9iaW4vdGVlIGNvbW1vbiIsCiAgICAgIi1jIiwgIkVycm9yTG9nIHwvdXNyL2Jpbi90ZWUi
LAotICAgICMgQXBhY2hlIHdvdWxkbid0IHJ1biBDR0lzIHdpdGggcGVybWlzc2lvbnM9PTcwMCBv
dGhlcndpc2UuCi0gICAgIi1jIiwgIlVzZXIgXCIjJDxcIiIsCiAgICAgIyBSdW4gaW4gc2luZ2xl
LXByb2Nlc3MgbW9kZSwgZG8gbm90IGRldGFjaCBmcm9tIHRoZSBjb250cm9sbGluZyB0ZXJtaW5h
bC4KICAgICAiLVgiLAogICAgICMgRGlzYWJsZSBLZWVwLUFsaXZlIHN1cHBvcnQuIE1ha2VzIHRl
c3RpbmcgaW4gbXVsdGlwbGUgYnJvd3NlcnMgZWFzaWVyIChubyBuZWVkIHRvIHdhaXQKQEAgLTEy
Myw5ICs4Niw3IEBAIG15IEBhcmdzID0gKAogICAgICItYyIsICJLZWVwQWxpdmUgMCIKICk7CiAK
LSMgRklYTUU6IEVuYWJsZSB0aGlzIG9uIFdpbmRvd3Mgb25jZSA8cmRhcjovL3Byb2JsZW0vNTM0
NTk4NT4gaXMgZml4ZWQKLXB1c2goQGFyZ3MsICItYyIsICJTU0xDZXJ0aWZpY2F0ZUZpbGUgXCIk
c3NsQ2VydGlmaWNhdGVcIiIpIHVubGVzcyBpc0N5Z3dpbigpOwotCi1zeXN0ZW0oJGh0dHBkUGF0
aCwgQGFyZ3MpOwotCi11bmxpbmsgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCI7CitteSBAZGVmYXVs
dEFyZ3MgPSBnZXREZWZhdWx0Q29uZmlnRm9yVGVzdERpcigkdGVzdERpcmVjdG9yeSk7CitAYXJn
cyA9IChAZGVmYXVsdEFyZ3MsIEBhcmdzKTsKK3NldEhUVFBEU3RhbmRhbG9uZSgpOworb3BlbkhU
VFBEKEBhcmdzKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10
ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCAzOWVkNTAx
Li5hZWI1NWJhIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVz
dHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC02Nyw2ICs2
Nyw3IEBAIHVzZSBUaW1lOjpIaVJlcyBxdyh0aW1lIHVzbGVlcCk7CiB1c2UgTGlzdDo6VXRpbCAn
c2h1ZmZsZSc7CiAKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRwZXJsOjpodHRw
ZDsKIHVzZSB3ZWJraXRkaXJzOwogdXNlIFZDU1V0aWxzOwogdXNlIFBPU0lYOwpAQCAtNzUsOCAr
NzYsOCBAQCBzdWIgYnVpbGRQbGF0Zm9ybVJlc3VsdEhpZXJhcmNoeSgpOwogc3ViIGJ1aWxkUGxh
dGZvcm1UZXN0SGllcmFyY2h5KEApOwogc3ViIGNsb3NlQ3lncGF0aHMoKTsKIHN1YiBjbG9zZUR1
bXBUb29sKCk7Ci1zdWIgY2xvc2VIVFRQRCgpOwogc3ViIGNsb3NlV2ViU29ja2V0U2VydmVyKCk7
CitzdWIgY29uZmlnQW5kT3BlbkhUVFBESWZOZWVkZWQoKTsKIHN1YiBjb3VudEFuZFByaW50TGVh
a3MoJCQkKTsKIHN1YiBjb3VudEZpbmlzaGVkVGVzdCgkJCQkKTsKIHN1YiBkZWxldGVFeHBlY3Rl
ZEFuZEFjdHVhbFJlc3VsdHMoJCk7CkBAIC05MSw3ICs5Miw2IEBAIHN1YiByZXNvbHZlQW5kTWFr
ZVRlc3RSZXN1bHRzRGlyZWN0b3J5KCk7CiBzdWIgbnVtZXJpY2NtcCgkJCk7CiBzdWIgb3BlbkRp
ZmZUb29sKCk7CiBzdWIgb3BlbkR1bXBUb29sKCk7Ci1zdWIgb3BlbkhUVFBESWZOZWVkZWQoKTsK
IHN1YiBwYXJzZUxlYWtzYW5kUHJpbnRVbmlxdWVMZWFrcygpOwogc3ViIG9wZW5XZWJTb2NrZXRT
ZXJ2ZXJJZk5lZWRlZCgpOwogc3ViIHBhdGhjbXAoJCQpOwpAQCAtMTQzLDcgKzE0Myw4IEBAIG15
ICRzaG93SGVscCA9IDA7CiBteSAkc3RyaXBFZGl0aW5nQ2FsbGJhY2tzID0gaXNDeWd3aW4oKTsK
IG15ICR0ZXN0SFRUUCA9IDE7CiBteSAkdGVzdE1lZGlhID0gMTsKLW15ICR0ZXN0UmVzdWx0c0Rp
cmVjdG9yeSA9ICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMiOworbXkgJHRtcERpciA9ICIvdG1w
IjsKK215ICR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9IGNhdGZpbGUoJHRtcERpciwgImxheW91dC10
ZXN0LXJlc3VsdHMiKTsKIG15ICR0ZXN0c1BlckR1bXBUb29sID0gMTAwMDsKIG15ICR0aHJlYWRl
ZCA9IDA7CiAjIER1bXBSZW5kZXJUcmVlIGhhcyBhbiBpbnRlcm5hbCB0aW1lb3V0IG9mIDE1IHNl
Y29uZHMsIHNvIHRoaXMgbXVzdCBiZSA+IDE1LgpAQCAtMzgzLDYgKzM4NCw3IEBAIG15IEBwbGF0
Zm9ybVRlc3RIaWVyYXJjaHkgPSBidWlsZFBsYXRmb3JtVGVzdEhpZXJhcmNoeShAcGxhdGZvcm1S
ZXN1bHRIaWVyYXJjaHkpCiAKICRleHBlY3RlZERpcmVjdG9yeSA9ICRFTlZ7IldlYktpdEV4cGVj
dGVkVGVzdFJlc3VsdHNEaXJlY3RvcnkifSBpZiAkRU5WeyJXZWJLaXRFeHBlY3RlZFRlc3RSZXN1
bHRzRGlyZWN0b3J5In07CiAKKyR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJl
bDJhYnMoJHRlc3RSZXN1bHRzRGlyZWN0b3J5KTsKIG15ICR0ZXN0UmVzdWx0cyA9IGNhdGZpbGUo
JHRlc3RSZXN1bHRzRGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIik7CiAKIHByaW50ICJSdW5uaW5n
IHRlc3RzIGZyb20gJHRlc3REaXJlY3RvcnlcbiI7CkBAIC02MDUsNyArNjA3LDcgQEAgZm9yIG15
ICR0ZXN0IChAdGVzdHMpIHsKICAgICB9CiAKICAgICBpZiAoJHRlc3QgPX4gL15odHRwXC8vKSB7
Ci0gICAgICAgIG9wZW5IVFRQRElmTmVlZGVkKCk7CisgICAgICAgIGNvbmZpZ0FuZE9wZW5IVFRQ
RElmTmVlZGVkKCk7CiAgICAgICAgIGlmICgkdGVzdCAhfiAvXmh0dHBcL3Rlc3RzXC9sb2NhbFwv
LyAmJiAkdGVzdCAhfiAvXmh0dHBcL3Rlc3RzXC9zc2xcLy8gJiYgJHRlc3QgIX4gL15odHRwXC90
ZXN0c1wvd21sXC8vICYmICR0ZXN0ICF+IC9eaHR0cFwvdGVzdHNcL21lZGlhXC8vKSB7CiAgICAg
ICAgICAgICBteSAkcGF0aCA9IGNhbm9ucGF0aCgkdGVzdCk7CiAgICAgICAgICAgICAkcGF0aCA9
fiBzL15odHRwXC90ZXN0c1wvLy87CkBAIC05NDUsNyArOTQ3LDcgQEAgcHJpbnRmICJcbiUwLjJm
cyB0b3RhbCB0ZXN0aW5nIHRpbWVcbiIsICh0aW1lIC0gJG92ZXJhbGxTdGFydFRpbWUpIC4gIiI7
CiAKICEkaXNEdW1wVG9vbE9wZW4gfHwgZGllICJGYWlsZWQgdG8gY2xvc2UgJGR1bXBUb29sTmFt
ZS5cbiI7CiAKLWNsb3NlSFRUUEQoKTsKKyRpc0h0dHBkT3BlbiA9IGNsb3NlSFRUUEQoKTsKIGNs
b3NlV2ViU29ja2V0U2VydmVyKCk7CiAKICMgQmVjYXVzZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2Yg
dGhpcyBzY3JpcHQgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5IHdlIGNhbm5vdCAKQEAgLTEzNDUs
OTUgKzEzNDcsMjEgQEAgc3ViIGR1bXBUb29sRGlkQ3Jhc2goKQogICAgIHJldHVybiBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnQ6OnByb2Nlc3NJc0NyYXNoaW5nKCRkdW1wVG9vbFBJRCk7CiB9CiAKLXN1
YiBvcGVuSFRUUERJZk5lZWRlZCgpCitzdWIgY29uZmlnQW5kT3BlbkhUVFBESWZOZWVkZWQoKQog
ewogICAgIHJldHVybiBpZiAkaXNIdHRwZE9wZW47Ci0KLSAgICBta2RpciAiL3RtcC9XZWJLaXQi
OwotICAgIAotICAgIGlmICgtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIikgewotICAgICAgICBt
eSAkb2xkUGlkID0gYGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgOwotICAgICAgICBjaG9tcCAk
b2xkUGlkOwotICAgICAgICBpZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsKLSAgICAgICAgICAg
IHByaW50ICJcbmh0dHBkIGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtpbGxpbmcu
Li5cbiI7Ci0gICAgICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwotICAgICAgICAgICAgd2hpbGUgKCgwICE9IGtp
bGwgMCwgJG9sZFBpZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgICAgICBzbGVlcCAx
OwotICAgICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHF1
aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBteSAk
aHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCI7Ci0gICAgbXkgJGh0dHBkQ29uZmlnOwotICAg
IGlmIChpc0N5Z3dpbigpKSB7Ci0gICAgICAgIG15ICR3aW5kb3dzQ29uZkRpcmVjdG9yeSA9ICIk
dGVzdERpcmVjdG9yeS9odHRwL2NvbmYvIjsKLSAgICAgICAgdW5sZXNzICgteCAiL3Vzci9saWIv
YXBhY2hlL2xpYnBocDQuZGxsIikgewotICAgICAgICAgICAgY29weSgiJHdpbmRvd3NDb25mRGly
ZWN0b3J5L2xpYnBocDQuZGxsIiwgIi91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIpOwotICAg
ICAgICAgICAgY2htb2QoMDc1NSwgIi91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIpOwotICAg
ICAgICB9Ci0gICAgICAgICRodHRwZENvbmZpZyA9ICIkd2luZG93c0NvbmZEaXJlY3RvcnkvY3ln
d2luLWh0dHBkLmNvbmYiOwotICAgIH0gZWxzaWYgKGlzRGViaWFuQmFzZWQoKSkgewotICAgICAg
ICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9hcGFjaGUyIjsKLSAgICAgICAgJGh0dHBkQ29uZmln
ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mIjsK
LSAgICB9IGVsc2lmIChpc0ZlZG9yYUJhc2VkKCkpIHsKLSAgICAgICAgJGh0dHBkUGF0aCA9ICIv
dXNyL3NiaW4vaHR0cGQiOwotICAgICAgICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3Rvcnkv
aHR0cC9jb25mL2ZlZG9yYS1odHRwZC5jb25mIjsKLSAgICB9IGVsc2UgewotICAgICAgICAkaHR0
cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2h0dHBkLmNvbmYiOwotICAgICAg
ICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTItaHR0cGQu
Y29uZiIgaWYgYCRodHRwZFBhdGggLXZgID1+IG18QXBhY2hlLzJ8OwotICAgIH0KLSAgICBteSAk
ZG9jdW1lbnRSb290ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvdGVzdHMiOwotICAgIG15ICRqc1Rl
c3RSZXNvdXJjZXNEaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeSAuICIvZmFzdC9qcy9yZXNvdXJj
ZXMiOwotICAgIG15ICR0eXBlc0NvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvbWlt
ZS50eXBlcyI7Ci0gICAgbXkgJGxpc3RlbiA9ICIxMjcuMC4wLjE6JGh0dHBkUG9ydCI7CiAgICAg
bXkgJGFic1Rlc3RSZXN1bHRzRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZE1ha2VUZXN0UmVzdWx0c0Rp
cmVjdG9yeSgpOwotICAgIG15ICRzc2xDZXJ0aWZpY2F0ZSA9ICIkdGVzdERpcmVjdG9yeS9odHRw
L2NvbmYvd2Via2l0LWh0dHBkLnBlbSI7Ci0KKyAgICBteSAkbGlzdGVuID0gIjEyNy4wLjAuMTok
aHR0cGRQb3J0IjsKICAgICBteSBAYXJncyA9ICgKLSAgICAgICAgIi1mIiwgIiRodHRwZENvbmZp
ZyIsCi0gICAgICAgICItQyIsICJEb2N1bWVudFJvb3QgXCIkZG9jdW1lbnRSb290XCIiLAotICAg
ICAgICAjIFNldHVwIGEgbGluayB0byB3aGVyZSB0aGUganMgdGVzdCB0ZW1wbGF0ZXMgYXJlIHN0
b3JlZCwgdXNlIC1jIHNvIHRoYXQgbW9kX2FsaWFzIHdpbGwgYWxyZWFkeSBiZSBsYW9kZWQuCi0g
ICAgICAgICItYyIsICJBbGlhcyAvanMtdGVzdC1yZXNvdXJjZXMgXCIkanNUZXN0UmVzb3VyY2Vz
RGlyZWN0b3J5XCIiLAotICAgICAgICAiLUMiLCAiTGlzdGVuICRsaXN0ZW4iLAotICAgICAgICAi
LWMiLCAiVHlwZXNDb25maWcgXCIkdHlwZXNDb25maWdcIiIsCiAgICAgICAgICItYyIsICJDdXN0
b21Mb2cgXCIkYWJzVGVzdFJlc3VsdHNEaXJlY3RvcnkvYWNjZXNzX2xvZy50eHRcIiBjb21tb24i
LAogICAgICAgICAiLWMiLCAiRXJyb3JMb2cgXCIkYWJzVGVzdFJlc3VsdHNEaXJlY3RvcnkvZXJy
b3JfbG9nLnR4dFwiIiwKLSAgICAgICAgIyBBcGFjaGUgd291bGRuJ3QgcnVuIENHSXMgd2l0aCBw
ZXJtaXNzaW9ucz09NzAwIG90aGVyd2lzZQotICAgICAgICAiLWMiLCAiVXNlciBcIiMkPFwiIgor
ICAgICAgICAiLUMiLCAiTGlzdGVuICRsaXN0ZW4iCiAgICAgKTsKIAotICAgICMgRklYTUU6IEVu
YWJsZSB0aGlzIG9uIFdpbmRvd3Mgb25jZSA8cmRhcjovL3Byb2JsZW0vNTM0NTk4NT4gaXMgZml4
ZWQKLSAgICAjIFRoZSB2ZXJzaW9uIG9mIEFwYWNoZSB3ZSB1c2Ugd2l0aCBDeWd3aW4gZG9lcyBu
b3Qgc3VwcG9ydCBTU0wKLSAgICBwdXNoKEBhcmdzLCAiLWMiLCAiU1NMQ2VydGlmaWNhdGVGaWxl
IFwiJHNzbENlcnRpZmljYXRlXCIiKSB1bmxlc3MgaXNDeWd3aW4oKTsKLQotICAgIG9wZW4yKFwq
SFRUUERJTiwgXCpIVFRQRE9VVCwgJGh0dHBkUGF0aCwgQGFyZ3MpOwotCi0gICAgbXkgJHJldHJ5
Q291bnQgPSAyMDsKLSAgICB3aGlsZSAoc3lzdGVtKCIvdXNyL2Jpbi9jdXJsIC1xIC0tc2lsZW50
IC0tc3RkZXJyIC0gLS1vdXRwdXQgIiAuIEZpbGU6OlNwZWMtPmRldm51bGwoKSAuICIgJGxpc3Rl
biIpICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAgIHNsZWVwIDE7Ci0gICAgICAgIC0tJHJldHJ5
Q291bnQ7Ci0gICAgfQotICAgIAotICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBk
IHRvIHN0YXJ0IiB1bmxlc3MgJHJldHJ5Q291bnQ7Ci0gICAgCi0gICAgJGlzSHR0cGRPcGVuID0g
MTsKLX0KLQotc3ViIGNsb3NlSFRUUEQoKQotewotICAgIHJldHVybiBpZiAhJGlzSHR0cGRPcGVu
OwotCi0gICAgY2xvc2UgSFRUUERJTjsKLSAgICBjbG9zZSBIVFRQRE9VVDsKLQotICAgIGtpbGwg
MTUsIGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYCBpZiAtZiAiL3RtcC9XZWJLaXQvaHR0cGQu
cGlkIjsKKyAgICBteSBAZGVmYXVsdEFyZ3MgPSBnZXREZWZhdWx0Q29uZmlnRm9yVGVzdERpcigk
dGVzdERpcmVjdG9yeSk7CisgICAgQGFyZ3MgPSAoQGRlZmF1bHRBcmdzLCBAYXJncyk7CiAKLSAg
ICAkaXNIdHRwZE9wZW4gPSAwOworICAgICRpc0h0dHBkT3BlbiA9IG9wZW5IVFRQRChAYXJncyk7
CiB9CiAKIHN1YiBvcGVuV2ViU29ja2V0U2VydmVySWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL2h0dHBkLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmUzNjZmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvaHR0cGQucG0KQEAgLTAsMCArMSwyMTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAorIyBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQW5kcmFzIEJlY3NpIChhYmVjc2lAaW5mLnUtc3plZ2VkLmh1KSwgVW5p
dmVyc2l0eSBvZiBTemVnZWQKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBNb2R1bGUg
dG8gc2hhcmUgY29kZSB0byBzdGFydCBhbmQgc3RvcCB0aGUgQXBhY2hlIGRhZW1vbi4KKwordXNl
IHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEZpbGU6OlBhdGg7Cit1c2UgRmlsZTo6U3Bl
YzsKK3VzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7Cit1c2UgSVBDOjpPcGVuMjsKKwordXNlIHdl
YmtpdGRpcnM7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVS
U0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJT
SU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQ
T1JUICAgICAgPSBxdygmZ2V0SFRUUERQYXRoICZnZXREZWZhdWx0Q29uZmlnRm9yVGVzdERpciAm
b3BlbkhUVFBEICZjbG9zZUhUVFBEICZnZXRIVFRQRFBpZCAmc2V0SFRUUERQaWREaXIgJnNldEhU
VFBEU3RhbmRhbG9uZSk7CisgICAlRVhQT1JUX1RBR1MgPSAoICk7CisgICBARVhQT1JUX09LICAg
PSAoKTsKK30KKworbXkgJHRtcERpciA9ICIvdG1wIjsKK215ICRodHRwZFBhdGg7CitteSAkaHR0
cGRQaWREaXIgPSBjYXRmaWxlKCR0bXBEaXIsICJXZWJLaXQiKTsKK215ICRodHRwZFBpZEZpbGUg
PSBjYXRmaWxlKCRodHRwZFBpZERpciwgImh0dHBkLnBpZCIpOworbXkgJGh0dHBkUGlkOworbXkg
JHN0YW5kYWxvbmUgPSAwOworCiskU0lHeydJTlQnfSA9ICdjbGVhbnVwJzsKKyRTSUd7J1RFUk0n
fSA9ICdjbGVhbnVwJzsKKworc3ViIGdldEhUVFBEUGF0aAoreworICAgIGlmIChpc0RlYmlhbkJh
c2VkKCkpIHsKKyAgICAgICAgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vYXBhY2hlMiI7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vaHR0cGQiOworICAgIH0K
KyAgICByZXR1cm4gJGh0dHBkUGF0aDsKK30KKworc3ViIGdldERlZmF1bHRDb25maWdGb3JUZXN0
RGlyCit7CisgICAgbXkgKCR0ZXN0RGlyZWN0b3J5KSA9IEBfOworICAgIGRpZSAiTm8gdGVzdCBk
aXJlY3RvcnkgaGFzIGJlZW4gc3BlY2lmaWVkLiIgdW5sZXNzICgkdGVzdERpcmVjdG9yeSk7CisK
KyAgICBteSAkaHR0cGRDb25maWc7CisgICAgZ2V0SFRUUERQYXRoKCk7CisgICAgaWYgKGlzQ3ln
d2luKCkpIHsKKyAgICAgICAgbXkgJHdpbmRvd3NDb25mRGlyZWN0b3J5ID0gIiR0ZXN0RGlyZWN0
b3J5L2h0dHAvY29uZi8iOworICAgICAgICB1bmxlc3MgKC14ICIvdXNyL2xpYi9hcGFjaGUvbGli
cGhwNC5kbGwiKSB7CisgICAgICAgICAgICBjb3B5KCIkd2luZG93c0NvbmZEaXJlY3RvcnkvbGli
cGhwNC5kbGwiLCAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIik7CisgICAgICAgICAgICBj
aG1vZCgwNzU1LCAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIik7CisgICAgICAgIH0KKyAg
ICAgICAgJGh0dHBkQ29uZmlnID0gIiR3aW5kb3dzQ29uZkRpcmVjdG9yeS9jeWd3aW4taHR0cGQu
Y29uZiI7CisgICAgfSBlbHNpZiAoaXNEZWJpYW5CYXNlZCgpKSB7CisgICAgICAgICRodHRwZENv
bmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1kZWJpYW4taHR0cGQuY29u
ZiI7CisgICAgfSBlbHNpZiAoaXNGZWRvcmFCYXNlZCgpKSB7CisgICAgICAgICRodHRwZENvbmZp
ZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvZmVkb3JhLWh0dHBkLmNvbmYiOworICAgIH0g
ZWxzZSB7CisgICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYv
aHR0cGQuY29uZiI7CisgICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRw
L2NvbmYvYXBhY2hlMi1odHRwZC5jb25mIiBpZiBgJGh0dHBkUGF0aCAtdmAgPX4gbXxBcGFjaGUv
Mnw7CisgICAgfQorCisgICAgbXkgJGRvY3VtZW50Um9vdCA9ICIkdGVzdERpcmVjdG9yeS9odHRw
L3Rlc3RzIjsKKyAgICBteSAkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rv
cnkgLiAiL2Zhc3QvanMvcmVzb3VyY2VzIjsKKyAgICBteSAkdHlwZXNDb25maWcgPSAiJHRlc3RE
aXJlY3RvcnkvaHR0cC9jb25mL21pbWUudHlwZXMiOworICAgIG15ICRodHRwZExvY2tGaWxlID0g
Y2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5sb2NrIik7CisgICAgbXkgJGh0dHBkU2NvcmVC
b2FyZEZpbGUgPSBjYXRmaWxlKCRodHRwZFBpZERpciwgImh0dHBkLnNjb3JlYm9hcmQiKTsKKwor
ICAgIG15IEBodHRwZEFyZ3MgPSAoCisgICAgIi1mIiwgIiRodHRwZENvbmZpZyIsCisgICAgIi1D
IiwgIkRvY3VtZW50Um9vdCBcIiRkb2N1bWVudFJvb3RcIiIsCisgICAgIyBTZXR1cCBhIGxpbmsg
dG8gd2hlcmUgdGhlIGpzIHRlc3QgdGVtcGxhdGVzIGFyZSBzdG9yZWQsIHVzZSAtYyBzbyB0aGF0
IG1vZF9hbGlhcyB3aWxsIGFscmVhZHkgYmUgbGFvZGVkLgorICAgICItYyIsICJBbGlhcyAvanMt
dGVzdC1yZXNvdXJjZXMgXCIkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5XCIiLAorICAgICItYyIs
ICJUeXBlc0NvbmZpZyBcIiR0eXBlc0NvbmZpZ1wiIiwKKyAgICAjIEFwYWNoZSB3b3VsZG4ndCBy
dW4gQ0dJcyB3aXRoIHBlcm1pc3Npb25zPT03MDAgb3RoZXJ3aXNlCisgICAgIi1jIiwgIlVzZXIg
XCIjJDxcIiIsCisgICAgIi1jIiwgIkxvY2tGaWxlIFwiJGh0dHBkTG9ja0ZpbGVcIiIsCisgICAg
Ii1jIiwgIlBpZEZpbGUgXCIkaHR0cGRQaWRGaWxlXCIiLAorICAgICItYyIsICJTY29yZUJvYXJk
RmlsZSBcIiRodHRwZFNjb3JlQm9hcmRGaWxlXCIiLAorICAgICk7CisKKyAgICAjIEZJWE1FOiBF
bmFibGUgdGhpcyBvbiBXaW5kb3dzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzUzNDU5ODU+IGlzIGZp
eGVkCisgICAgIyBUaGUgdmVyc2lvbiBvZiBBcGFjaGUgd2UgdXNlIHdpdGggQ3lnd2luIGRvZXMg
bm90IHN1cHBvcnQgU1NMCisgICAgbXkgJHNzbENlcnRpZmljYXRlID0gIiR0ZXN0RGlyZWN0b3J5
L2h0dHAvY29uZi93ZWJraXQtaHR0cGQucGVtIjsKKyAgICBwdXNoKEBodHRwZEFyZ3MsICItYyIs
ICJTU0xDZXJ0aWZpY2F0ZUZpbGUgXCIkc3NsQ2VydGlmaWNhdGVcIiIpIHVubGVzcyBpc0N5Z3dp
bigpOworCisgICAgcmV0dXJuIEBodHRwZEFyZ3M7CisKK30KKworc3ViIG9wZW5IVFRQRChAKQor
eworICAgIG15IChAYXJncykgPSBAXzsKKyAgICBkaWUgIk5vIEhUVFBEIGNvbmZpZ3VyYXRpb24g
aGFzIGJlZW4gc3BlY2lmaWVkIiB1bmxlc3MgKEBhcmdzKTsKKyAgICBta2RpcigkaHR0cGRQaWRE
aXIsIDA3NTUpOworICAgIGRpZSAiTm8gd3JpdGUgcGVybWlzc2lvbnMgdG8gJGh0dHBkUGlkRGly
IiB1bmxlc3MgKC13ICRodHRwZFBpZERpcik7CisKKyAgICBpZiAoLWYgJGh0dHBkUGlkRmlsZSkg
eworICAgICAgICBvcGVuIChQSURGSUxFLCAkaHR0cGRQaWRGaWxlKTsKKyAgICAgICAgbXkgJG9s
ZFBpZCA9IDxQSURGSUxFPjsKKyAgICAgICAgY2hvbXAgJG9sZFBpZDsKKyAgICAgICAgY2xvc2Ug
UElERklMRTsKKyAgICAgICAgaWYgKDAgIT0ga2lsbCAwLCAkb2xkUGlkKSB7CisgICAgICAgICAg
ICBwcmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1bm5pbmc6IHBpZCAkb2xkUGlkLCBraWxsaW5n
Li4uXG4iOworICAgICAgICAgICAga2lsbCAxNSwgJG9sZFBpZDsKKworICAgICAgICAgICAgbXkg
JHJldHJ5Q291bnQgPSAyMDsKKyAgICAgICAgICAgIHdoaWxlICgoa2lsbCgwLCAkb2xkUGlkKSAh
PSAwKSAmJiAkcmV0cnlDb3VudCkgeworICAgICAgICAgICAgICAgIHNsZWVwIDE7CisgICAgICAg
ICAgICAgICAgLS0kcmV0cnlDb3VudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGll
ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gcXVpdCIgdW5sZXNzICRyZXRyeUNvdW50
OworICAgICAgICB9CisgICAgfQorCisgICAgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vaHR0cGQi
IHVubGVzcyAoJGh0dHBkUGF0aCk7CisKKyAgICBvcGVuMihcKkhUVFBESU4sIFwqSFRUUERPVVQs
ICRodHRwZFBhdGgsIEBhcmdzKTsKKworICAgIG15ICRyZXRyeUNvdW50ID0gMjA7CisgICAgd2hp
bGUgKCEtZiAkaHR0cGRQaWRGaWxlICYmICRyZXRyeUNvdW50KSB7CisgICAgICAgIHNsZWVwIDE7
CisgICAgICAgIC0tJHJldHJ5Q291bnQ7CisgICAgfQorCisgICAgaWYgKCEkcmV0cnlDb3VudCkg
eworICAgICAgICBybWRpciAkaHR0cGRQaWREaXI7CisgICAgICAgIGRpZSAiVGltZWQgb3V0IHdh
aXRpbmcgZm9yIGh0dHBkIHRvIHN0YXJ0IjsKKyAgICB9CisKKyAgICAkaHR0cGRQaWQgPSA8UElE
RklMRT4gaWYgb3BlbihQSURGSUxFLCAkaHR0cGRQaWRGaWxlKTsKKyAgICBjaG9tcCAkaHR0cGRQ
aWQgaWYgJGh0dHBkUGlkOworICAgIGNsb3NlIFBJREZJTEU7CisKKyAgICB3YWl0cGlkKCRodHRw
ZFBpZCwgMCkgaWYgKCRzdGFuZGFsb25lICYmICRodHRwZFBpZCk7CisKKyAgICByZXR1cm4gMTsK
K30KKworc3ViIGNsb3NlSFRUUEQKK3sKKyAgICBjbG9zZSBIVFRQRElOOworICAgIGNsb3NlIEhU
VFBET1VUOworCisgICAgaWYgKCRodHRwZFBpZCkgeworICAgICAgICBraWxsIDE1LCAkaHR0cGRQ
aWQ7CisgICAgICAgIG15ICRyZXRyeUNvdW50ID0gMjA7CisgICAgICAgIHdoaWxlICgtZiAkaHR0
cGRQaWRGaWxlICYmICRyZXRyeUNvdW50KSB7CisgICAgICAgICAgICBzbGVlcCAxOworICAgICAg
ICAgICAgLS0kcmV0cnlDb3VudDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghJHJldHJ5Q291
bnQpIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0
dHBkIHRvIHRlcm1pbmF0ZSFcbiI7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBybWRpciAkaHR0cGRQaWREaXI7CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBz
ZXRIVFRQRFBpZERpcgoreworICAgIG15ICgkcGlkRGlyKSA9IEBfOworICAgIGlmICgkcGlkRGly
ICYmIC1kICRwaWREaXIpIHsKKyAgICAgICAgJGh0dHBkUGlkRGlyID0gJHBpZERpcjsKKyAgICAg
ICAgJGh0dHBkUGlkRmlsZSA9IGNhdGZpbGUoJGh0dHBkUGlkRGlyLCAiaHR0cGQucGlkIik7Cisg
ICAgfQorfQorCitzdWIgc2V0SFRUUERTdGFuZGFsb25lCit7CisgICAgJHN0YW5kYWxvbmUgPSAx
OworfQorCitzdWIgY2xlYW51cAoreworICAgIGNsb3NlSFRUUEQoKTsKKyAgICBwcmludCAiXG4i
OworICAgIGV4aXQoMSk7Cit9Cg==
</data>
<flag name="review"
          id="28972"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47012</attachid>
            <date>2010-01-20 05:53:59 -0800</date>
            <delta_ts>2010-02-02 14:31:37 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22615</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5NTUzMDFkLi4zN2I2NmM2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEt
MjAgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCBBcGFjaGUgaGFuZGxp
bmcgdG8gaHR0cGQucG0gbW9kdWxlIGFuZCB1c2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uYWxpdHkK
KyAgICAgICAgaW4gc2NyaXB0cyB3aGVyZSBBcGFjaGUgaXMgbmVlZGVkLgorICAgICAgICBUaGUg
bW9kdWxlIGh0dHBkLnBtIHN0b3JlcyB0aGUgUElEIG9mIEFwYWNoZSBpbiBhIHZhcmlhYmxlIGFu
ZCBjbGVhbnMgdXAKKyAgICAgICAgdGhlIFBJRCBkaXJlY3RvcnkgYWZ0ZXIgQXBhY2hlIHByb3Bl
cmx5IHNodXQgZG93bi4gQ2F0Y2hpbmcgSU5UIGFuZCBURVJNCisgICAgICAgIHNpZ25hbHMgYWxs
b3dzIHRoZSBzY3JpcHRzIHRvIGNsb3NlIEFwYWNoZSBhbmQgY2xlYW4gdXAgaXRzIFBJRCBkaXJl
Y3RvcnkKKyAgICAgICAgZXZlbiBpZiB0aGUgdGVzdGluZyB3YXMgaW50ZXJydXB0ZWQuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG06IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQt
aHR0cGQ6CisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOgorCiAyMDEwLTAxLTIw
ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWlleHBs
b2Rlci10ZXN0cwppbmRleCBlZDVlY2Q2Li40ODliMWRkIDEwMDc1NQotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3J1bi1pZXhwbG9kZXItdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9y
dW4taWV4cGxvZGVyLXRlc3RzCkBAIC0zOCwxNiArMzgsMTcgQEAgdXNlIEdldG9wdDo6TG9uZzsK
IHVzZSBJUEM6Ok9wZW4yOwogCiB1c2UgbGliICRGaW5kQmluOjpCaW47Cit1c2Ugd2Via2l0cGVy
bDo6aHR0cGQ7CiB1c2Ugd2Via2l0ZGlyczsKIAotc3ViIG9wZW5IVFRQRElmTmVlZGVkKCk7Ci1z
dWIgY2xvc2VIVFRQRCgpOworc3ViIGNvbmZpZ3VyZUFuZE9wZW5IVFRQRElmTmVlZGVkKCk7CiBz
dWIgcnVuU2FmYXJpV2l0aElFeHBsb2RlcigpOwogCiAjIEFyZ3VtZW50IGhhbmRsaW5nCiBteSAk
Z3VhcmRNYWxsb2MgPSAnJzsKIG15ICRodHRwZFBvcnQgPSA4MDAwOwogbXkgJGRvd25sb2FkVGVz
dDsKK215ICRpRXhwbG9kZXJUZXN0RGlyZWN0b3J5ID0gIi90bXAvaUV4cGxvZGVyVGVzdCI7CiAK
IEdldE9wdGlvbnMoCiAgICAgJ2d1YXJkLW1hbGxvY3xnJyA9PiBcJGd1YXJkTWFsbG9jLApAQCAt
NjMsOCArNjQsOCBAQCBjaGRpcldlYktpdCgpOwogCiBjaGVja0ZyYW1ld29ya3MoKTsKIAotbXkg
JGh0dHBkT3BlbiA9IDA7Ci1vcGVuSFRUUERJZk5lZWRlZCgpOworbXkgJGlzSHR0cGRPcGVuID0g
MDsKK2NvbmZpZ3VyZUFuZE9wZW5IVFRQRElmTmVlZGVkKCk7CiAKIGlmICgkZG93bmxvYWRUZXN0
KSB7CiAgICAgc3lzdGVtICIvdXNyL2Jpbi9jdXJsIC1vIH4vRGVza3RvcC9pZXhwbG9kZXIkZG93
bmxvYWRUZXN0Lmh0bWwgXCJodHRwOi8vMTI3LjAuMC4xOiRodHRwZFBvcnQvaWV4cGxvZGVyLmNn
aT9sb29rdXA9MSZ0ZXN0PSRkb3dubG9hZFRlc3RcIiI7CkBAIC03MiwxMSArNzMsMTEgQEAgaWYg
KCRkb3dubG9hZFRlc3QpIHsKIH0gZWxzZSB7CiAgICAgcnVuU2FmYXJpV2l0aElFeHBsb2Rlcigp
OwogICAgIHByaW50ICJMYXN0IGdlbmVyYXRlZCB0ZXN0czpcbiI7Ci0gICAgc3lzdGVtICJncmVw
ICdpZXhwbG9kZXIuY2dpJyAvdG1wL1dlYktpdC9hY2Nlc3NfbG9nLnR4dCB8IHRhaWwgLW4gLTUg
fCBhd2sgLUYnWyA9JlxcP10nICd7aWYgKFwkOCA9PSBcImxvb2t1cFwiKSBwcmludCBcJDExOyBl
bHNlIHByaW50IFwkOX0nIjsKKyAgICBzeXN0ZW0gImdyZXAgJ2lleHBsb2Rlci5jZ2knICRpRXhw
bG9kZXJUZXN0RGlyZWN0b3J5L2FjY2Vzc19sb2cudHh0IHwgdGFpbCAtbiAtNSB8IGF3ayAtRidb
ID0mXFw/XScgJ3tpZiAoXCQ4ID09IFwibG9va3VwXCIpIHByaW50IFwkMTE7IGVsc2UgcHJpbnQg
XCQ5fSciOwogfQogCi1jbG9zZUhUVFBEKCk7Ci0KK3JtdHJlZSAkaUV4cGxvZGVyVGVzdERpcmVj
dG9yeTsKKyRpc0h0dHBkT3BlbiA9IGNsb3NlSFRUUEQoKTsKIAogc3ViIHJ1blNhZmFyaVdpdGhJ
RXhwbG9kZXIoKQogewpAQCAtODcsNyArODgsNyBAQCBzdWIgcnVuU2FmYXJpV2l0aElFeHBsb2Rl
cigpCiAgICAgICAgICRyZWRpcmVjdFRvID0gImh0dHA6Ly8xMjcuMC4wLjE6JGh0dHBkUG9ydC9p
bmRleC5odG1sIjsKICAgICB9CiAKLSAgICBvcGVuIFJFRElSRUNUX0hUTUwsICI+IiwgIi90bXAv
V2ViS2l0L3JlZGlyZWN0Lmh0bWwiIG9yIGRpZTsKKyAgICBvcGVuIFJFRElSRUNUX0hUTUwsICI+
IiwgIiRpRXhwbG9kZXJUZXN0RGlyZWN0b3J5L3JlZGlyZWN0Lmh0bWwiIG9yIGRpZTsKICAgICBw
cmludCBSRURJUkVDVF9IVE1MICI8aHRtbD5cbiI7CiAgICAgcHJpbnQgUkVESVJFQ1RfSFRNTCAi
ICAgIDxoZWFkPlxuIjsKICAgICBwcmludCBSRURJUkVDVF9IVE1MICIgICAgICAgIDxtZXRhIGh0
dHAtZXF1aXY9XCJyZWZyZXNoXCIgY29udGVudD1cIjE7VVJMPSRyZWRpcmVjdFRvXCIgLz5cbiI7
CkBAIC0xMDIsMzUgKzEwMywxNyBAQCBzdWIgcnVuU2FmYXJpV2l0aElFeHBsb2RlcigpCiAgICAg
CiAgICAgbG9jYWwgJUVOVjsKICAgICAkRU5We0RZTERfSU5TRVJUX0xJQlJBUklFU30gPSAiL3Vz
ci9saWIvbGliZ21hbGxvYy5keWxpYiIgaWYgJGd1YXJkTWFsbG9jOwotICAgIHN5c3RlbSAiV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4tc2FmYXJpIiwgIi1OU09wZW4iLCAiL3RtcC9XZWJLaXQvcmVk
aXJlY3QuaHRtbCI7CisgICAgc3lzdGVtICJXZWJLaXRUb29scy9TY3JpcHRzL3J1bi1zYWZhcmki
LCAiLU5TT3BlbiIsICIkaUV4cGxvZGVyVGVzdERpcmVjdG9yeS9yZWRpcmVjdC5odG1sIjsKIH0K
IAotc3ViIG9wZW5IVFRQRElmTmVlZGVkKCkKK3N1YiBjb25maWd1cmVBbmRPcGVuSFRUUERJZk5l
ZWRlZCgpCiB7Ci0gICAgcmV0dXJuIGlmICRodHRwZE9wZW47Ci0KLSAgICBta2RpciAiL3RtcC9X
ZWJLaXQiOwotICAgIAotICAgIGlmICgtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIikgewotICAg
ICAgICBteSAkb2xkUGlkID0gYGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgOwotICAgICAgICBj
aG9tcCAkb2xkUGlkOwotICAgICAgICBpZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsKLSAgICAg
ICAgICAgIHByaW50ICJcbmh0dHBkIGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtp
bGxpbmcuLi5cbiI7Ci0gICAgICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwotICAgICAgICAgICAgd2hpbGUgKCgw
ICE9IGtpbGwgMCwgJG9sZFBpZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgICAgICBz
bGVlcCAxOwotICAgICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBk
IHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAg
ICBteSAkdGVzdERpcmVjdG9yeSA9IGdldGN3ZCgpIC4gIi9MYXlvdXRUZXN0cyI7Ci0gICAgbXkg
JGlFeHBsb2RlckRpcmVjdG9yeSA9IGdldGN3ZCgpIC4gIi9XZWJLaXRUb29scy9pRXhwbG9kZXIi
OwotICAgIG15ICRodHRwZFBhdGggPSAiL3Vzci9zYmluL2h0dHBkIjsKKyAgICByZXR1cm4gaWYg
JGlzSHR0cGRPcGVuOworICAgIG1rZGlyICRpRXhwbG9kZXJUZXN0RGlyZWN0b3J5OworICAgIG15
ICRodHRwZFBhdGggPSBnZXRIVFRQRFBhdGgoKTsKKyAgICBteSAkd2Via2l0RGlyZWN0b3J5ID0g
Z2V0Y3dkKCk7CisgICAgbXkgJHRlc3REaXJlY3RvcnkgPSAkd2Via2l0RGlyZWN0b3J5IC4gIi9M
YXlvdXRUZXN0cyI7CisgICAgbXkgJGlFeHBsb2RlckRpcmVjdG9yeSA9ICR3ZWJraXREaXJlY3Rv
cnkgLiAiL1dlYktpdFRvb2xzL2lFeHBsb2RlciI7CiAgICAgbXkgJGh0dHBkQ29uZmlnID0gIiR0
ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25mIjsKICAgICAkaHR0cGRDb25maWcgPSAi
JHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTItaHR0cGQuY29uZiIgaWYgYCRodHRwZFBh
dGggLXZgID1+IG18QXBhY2hlLzJ8OwogICAgIG15ICRkb2N1bWVudFJvb3QgPSAiJGlFeHBsb2Rl
ckRpcmVjdG9yeS9odGRvY3MiOwpAQCAtMTM4LDM2ICsxMjEsMTggQEAgc3ViIG9wZW5IVFRQRElm
TmVlZGVkKCkKICAgICBteSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9j
b25mL3dlYmtpdC1odHRwZC5wZW0iOwogICAgIG15ICRsaXN0ZW4gPSAiMTI3LjAuMC4xOiRodHRw
ZFBvcnQiOwogCi0gICAgb3BlbjIoXCpIVFRQRElOLCBcKkhUVFBET1VULCAkaHR0cGRQYXRoLCAK
KworICAgIG15IEBhcmdzID0gKAogICAgICAgICAiLWYiLCAiJGh0dHBkQ29uZmlnIiwKICAgICAg
ICAgIi1DIiwgIkRvY3VtZW50Um9vdCBcIiRkb2N1bWVudFJvb3RcIiIsCiAgICAgICAgICItQyIs
ICJMaXN0ZW4gJGxpc3RlbiIsCiAgICAgICAgICItYyIsICJUeXBlc0NvbmZpZyBcIiR0eXBlc0Nv
bmZpZ1wiIiwKLSAgICAgICAgIi1jIiwgIkN1c3RvbUxvZyBcIi90bXAvV2ViS2l0L2FjY2Vzc19s
b2cudHh0XCIgY29tbW9uIiwKLSAgICAgICAgIi1jIiwgIkVycm9yTG9nIFwiL3RtcC9XZWJLaXQv
ZXJyb3JfbG9nLnR4dFwiIiwKKyAgICAgICAgIi1jIiwgIkN1c3RvbUxvZyBcIiRpRXhwbG9kZXJU
ZXN0RGlyZWN0b3J5L2FjY2Vzc19sb2cudHh0XCIgY29tbW9uIiwKKyAgICAgICAgIi1jIiwgIkVy
cm9yTG9nIFwiJGlFeHBsb2RlclRlc3REaXJlY3RvcnkvZXJyb3JfbG9nLnR4dFwiIiwKICAgICAg
ICAgIi1jIiwgIlNTTENlcnRpZmljYXRlRmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIiwKICAgICAg
ICAgIyBBcGFjaGUgd291bGRuJ3QgcnVuIENHSXMgd2l0aCBwZXJtaXNzaW9ucz09NzAwIG90aGVy
d2lzZQotICAgICAgICAiLWMiLCAiVXNlciBcIiMkPFwiIik7Ci0KLSAgICBteSAkcmV0cnlDb3Vu
dCA9IDIwOwotICAgIHdoaWxlIChzeXN0ZW0oIi91c3IvYmluL2N1cmwgLXEgLS1zaWxlbnQgLS1z
dGRlcnIgLSAtLW91dHB1dCAiIC4gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpIC4gIiAkbGlzdGVuIikg
JiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgc2xlZXAgMTsKLSAgICAgICAgLS0kcmV0cnlDb3Vu
dDsKLSAgICB9Ci0gICAgCi0gICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8g
c3RhcnQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICAKLSAgICAkaHR0cGRPcGVuID0gMTsKLX0K
LQotc3ViIGNsb3NlSFRUUEQoKQotewotICAgIHJldHVybiBpZiAhJGh0dHBkT3BlbjsKLQotICAg
IGNsb3NlIEhUVFBESU47Ci0gICAgY2xvc2UgSFRUUERPVVQ7Ci0KLSAgICBraWxsIDE1LCBgY2F0
IC90bXAvV2ViS2l0L2h0dHBkLnBpZGAgaWYgLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCI7Cisg
ICAgICAgICItYyIsICJVc2VyIFwiIyQ8XCIiCisgICAgKTsKIAotICAgICRodHRwZE9wZW4gPSAw
OworICAgICRpc0h0dHBkT3BlbiA9IG9wZW5IVFRQRChAYXJncyk7CiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtaHR0cGQgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3J1bi13ZWJraXQtaHR0cGQKaW5kZXggOWE5NzE5MC4uODk4MGY4MCAxMDA3NTUKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LWh0dHBkCisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLXdlYmtpdC1odHRwZApAQCAtMzMsMTEgKzMzLDEzIEBAIHVzZSBzdHJpY3Q7CiB1c2Ug
d2FybmluZ3M7CiAKIHVzZSBDd2Q7Cit1c2UgRmlsZTo6UGF0aDsKIHVzZSBGaWxlOjpCYXNlbmFt
ZTsKIHVzZSBHZXRvcHQ6Okxvbmc7CiB1c2UgRmluZEJpbjsKIAogdXNlIGxpYiAkRmluZEJpbjo6
QmluOwordXNlIHdlYmtpdHBlcmw6Omh0dHBkOwogdXNlIHdlYmtpdGRpcnM7CiAKICMgQXJndW1l
bnQgaGFuZGxpbmcKQEAgLTYyLDM5ICs2NCw3IEBAIGlmICghJHJlc3VsdCB8fCBAQVJHViB8fCAk
c2hvd0hlbHApIHsKIHNldENvbmZpZ3VyYXRpb24oKTsKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVj
dERpcigpOwogY2hkaXJXZWJLaXQoKTsKLQotbWtkaXIgIi90bXAvV2ViS2l0IjsKLQotaWYgKC1m
ICIvdG1wL1dlYktpdC9odHRwZC5waWQiKSB7Ci0gICAgbXkgJG9sZFBpZCA9IGBjYXQgL3RtcC9X
ZWJLaXQvaHR0cGQucGlkYDsKLSAgICBjaG9tcCAkb2xkUGlkOwotICAgIGlmICgwICE9IGtpbGwg
MCwgJG9sZFBpZCkgewotICAgICAgICBwcmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1bm5pbmc6
IHBpZCAkb2xkUGlkLCBraWxsaW5nLi4uXG4iOwotICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwot
ICAgICAgICAKLSAgICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKLSAgICAgICAgd2hpbGUgKCgw
ICE9IGtpbGwgMCwgJG9sZFBpZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgIHNsZWVw
IDE7Ci0gICAgICAgICAgICAtLSRyZXRyeUNvdW50OwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJl
dHJ5Q291bnQ7Ci0gICAgfQotfQotCi1teSAkdGVzdERpcmVjdG9yeSA9IGdldGN3ZCgpIC4gIi9M
YXlvdXRUZXN0cyI7Ci1teSAkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rv
cnkgLiAiL2Zhc3QvanMvcmVzb3VyY2VzIjsKLW15ICRodHRwZFBhdGggPSAiL3Vzci9zYmluL2h0
dHBkIjsKLSRodHRwZFBhdGggPSAiL3Vzci9zYmluL2FwYWNoZTIiIGlmIGlzRGViaWFuQmFzZWQo
KTsKLW15ICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvaHR0cGQuY29u
ZiI7Ci0kaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2N5Z3dpbi1odHRw
ZC5jb25mIiBpZiBpc0N5Z3dpbigpOwotJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0
dHAvY29uZi9hcGFjaGUyLWh0dHBkLmNvbmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBtfEFwYWNo
ZS8yfDsKLSRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1k
ZWJpYW4taHR0cGQuY29uZiIgaWYgaXNEZWJpYW5CYXNlZCgpOwotJGh0dHBkQ29uZmlnID0gIiR0
ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiIgaWYgaXNGZWRvcmFCYXNl
ZCgpOwotbXkgJGRvY3VtZW50Um9vdCA9ICIkdGVzdERpcmVjdG9yeS9odHRwL3Rlc3RzIjsKLW15
ICR0eXBlc0NvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvbWltZS50eXBlcyI7Ci1t
eSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtpdC1odHRw
ZC5wZW0iOwotCitteSAkdGVzdERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoZ2V0Y3dk
KCksICJMYXlvdXRUZXN0cyIpOwogbXkgJGxpc3RlbiA9ICIxMjcuMC4wLjE6JGh0dHBkUG9ydCI7
CiAkbGlzdGVuID0gIiRodHRwZFBvcnQiIGlmICgkYWxsSW50ZXJmYWNlcyk7CiAKQEAgLTEwMywx
OSArNzMsMTMgQEAgaWYgKCRhbGxJbnRlcmZhY2VzKSB7CiB9IGVsc2UgewogICAgIHByaW50ICJT
dGFydGluZyBodHRwZCBvbiA8aHR0cDovLyRsaXN0ZW4vPi4uLlxuIjsKIH0KK3dhaXRGb3JVc2Vy
SW50ZXJydXB0KCk7CiBwcmludCAiUHJlc3MgQ3RybCtDIHRvIHN0b3AgaXQuXG5cbiI7CiAKIG15
IEBhcmdzID0gKAotICAgICItZiIsICIkaHR0cGRDb25maWciLAotICAgICItQyIsICJEb2N1bWVu
dFJvb3QgXCIkZG9jdW1lbnRSb290XCIiLAotICAgICMgU2V0dXAgYSBsaW5rIHRvIHdoZXJlIHRo
ZSBqcyB0ZXN0IHRlbXBsYXRlcyBhcmUgc3RvcmVkLCB1c2UgLWMgc28gdGhhdCBtb2RfYWxpYXMg
d2lsbCBhbHJlYWR5IGJlIGxhb2RlZC4KLSAgICAiLWMiLCAiQWxpYXMgL2pzLXRlc3QtcmVzb3Vy
Y2VzIFwiJGpzVGVzdFJlc291cmNlc0RpcmVjdG9yeVwiIiwKICAgICAiLUMiLCAiTGlzdGVuICRs
aXN0ZW4iLAotICAgICItYyIsICJUeXBlc0NvbmZpZyBcIiR0eXBlc0NvbmZpZ1wiIiwKICAgICAi
LWMiLCAiQ3VzdG9tTG9nIHwvdXNyL2Jpbi90ZWUgY29tbW9uIiwKICAgICAiLWMiLCAiRXJyb3JM
b2cgfC91c3IvYmluL3RlZSIsCi0gICAgIyBBcGFjaGUgd291bGRuJ3QgcnVuIENHSXMgd2l0aCBw
ZXJtaXNzaW9ucz09NzAwIG90aGVyd2lzZS4KLSAgICAiLWMiLCAiVXNlciBcIiMkPFwiIiwKICAg
ICAjIFJ1biBpbiBzaW5nbGUtcHJvY2VzcyBtb2RlLCBkbyBub3QgZGV0YWNoIGZyb20gdGhlIGNv
bnRyb2xsaW5nIHRlcm1pbmFsLgogICAgICItWCIsCiAgICAgIyBEaXNhYmxlIEtlZXAtQWxpdmUg
c3VwcG9ydC4gTWFrZXMgdGVzdGluZyBpbiBtdWx0aXBsZSBicm93c2VycyBlYXNpZXIgKG5vIG5l
ZWQgdG8gd2FpdApAQCAtMTIzLDkgKzg3LDYgQEAgbXkgQGFyZ3MgPSAoCiAgICAgIi1jIiwgIktl
ZXBBbGl2ZSAwIgogKTsKIAotIyBGSVhNRTogRW5hYmxlIHRoaXMgb24gV2luZG93cyBvbmNlIDxy
ZGFyOi8vcHJvYmxlbS81MzQ1OTg1PiBpcyBmaXhlZAotcHVzaChAYXJncywgIi1jIiwgIlNTTENl
cnRpZmljYXRlRmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5sZXNzIGlzQ3lnd2luKCk7Ci0K
LXN5c3RlbSgkaHR0cGRQYXRoLCBAYXJncyk7Ci0KLXVubGluayAiL3RtcC9XZWJLaXQvaHR0cGQu
cGlkIjsKK215IEBkZWZhdWx0QXJncyA9IGdldERlZmF1bHRDb25maWdGb3JUZXN0RGlyZWN0b3J5
KCR0ZXN0RGlyZWN0b3J5KTsKK0BhcmdzID0gKEBkZWZhdWx0QXJncywgQGFyZ3MpOworb3BlbkhU
VFBEKEBhcmdzKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10
ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCAzOWVkNTAx
Li5kMWUwY2M3IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVz
dHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC02Nyw2ICs2
Nyw3IEBAIHVzZSBUaW1lOjpIaVJlcyBxdyh0aW1lIHVzbGVlcCk7CiB1c2UgTGlzdDo6VXRpbCAn
c2h1ZmZsZSc7CiAKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRwZXJsOjpodHRw
ZDsKIHVzZSB3ZWJraXRkaXJzOwogdXNlIFZDU1V0aWxzOwogdXNlIFBPU0lYOwpAQCAtNzUsOCAr
NzYsOCBAQCBzdWIgYnVpbGRQbGF0Zm9ybVJlc3VsdEhpZXJhcmNoeSgpOwogc3ViIGJ1aWxkUGxh
dGZvcm1UZXN0SGllcmFyY2h5KEApOwogc3ViIGNsb3NlQ3lncGF0aHMoKTsKIHN1YiBjbG9zZUR1
bXBUb29sKCk7Ci1zdWIgY2xvc2VIVFRQRCgpOwogc3ViIGNsb3NlV2ViU29ja2V0U2VydmVyKCk7
CitzdWIgY29uZmlndXJlQW5kT3BlbkhUVFBESWZOZWVkZWQoKTsKIHN1YiBjb3VudEFuZFByaW50
TGVha3MoJCQkKTsKIHN1YiBjb3VudEZpbmlzaGVkVGVzdCgkJCQkKTsKIHN1YiBkZWxldGVFeHBl
Y3RlZEFuZEFjdHVhbFJlc3VsdHMoJCk7CkBAIC05MSw3ICs5Miw2IEBAIHN1YiByZXNvbHZlQW5k
TWFrZVRlc3RSZXN1bHRzRGlyZWN0b3J5KCk7CiBzdWIgbnVtZXJpY2NtcCgkJCk7CiBzdWIgb3Bl
bkRpZmZUb29sKCk7CiBzdWIgb3BlbkR1bXBUb29sKCk7Ci1zdWIgb3BlbkhUVFBESWZOZWVkZWQo
KTsKIHN1YiBwYXJzZUxlYWtzYW5kUHJpbnRVbmlxdWVMZWFrcygpOwogc3ViIG9wZW5XZWJTb2Nr
ZXRTZXJ2ZXJJZk5lZWRlZCgpOwogc3ViIHBhdGhjbXAoJCQpOwpAQCAtMTQzLDcgKzE0Myw4IEBA
IG15ICRzaG93SGVscCA9IDA7CiBteSAkc3RyaXBFZGl0aW5nQ2FsbGJhY2tzID0gaXNDeWd3aW4o
KTsKIG15ICR0ZXN0SFRUUCA9IDE7CiBteSAkdGVzdE1lZGlhID0gMTsKLW15ICR0ZXN0UmVzdWx0
c0RpcmVjdG9yeSA9ICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMiOworbXkgJHRtcERpciA9ICIv
dG1wIjsKK215ICR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRt
cERpciwgImxheW91dC10ZXN0LXJlc3VsdHMiKTsKIG15ICR0ZXN0c1BlckR1bXBUb29sID0gMTAw
MDsKIG15ICR0aHJlYWRlZCA9IDA7CiAjIER1bXBSZW5kZXJUcmVlIGhhcyBhbiBpbnRlcm5hbCB0
aW1lb3V0IG9mIDE1IHNlY29uZHMsIHNvIHRoaXMgbXVzdCBiZSA+IDE1LgpAQCAtMzgzLDcgKzM4
NCw4IEBAIG15IEBwbGF0Zm9ybVRlc3RIaWVyYXJjaHkgPSBidWlsZFBsYXRmb3JtVGVzdEhpZXJh
cmNoeShAcGxhdGZvcm1SZXN1bHRIaWVyYXJjaHkpCiAKICRleHBlY3RlZERpcmVjdG9yeSA9ICRF
TlZ7IldlYktpdEV4cGVjdGVkVGVzdFJlc3VsdHNEaXJlY3RvcnkifSBpZiAkRU5WeyJXZWJLaXRF
eHBlY3RlZFRlc3RSZXN1bHRzRGlyZWN0b3J5In07CiAKLW15ICR0ZXN0UmVzdWx0cyA9IGNhdGZp
bGUoJHRlc3RSZXN1bHRzRGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIik7CiskdGVzdFJlc3VsdHNE
aXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCR0ZXN0UmVzdWx0c0RpcmVjdG9yeSk7Citt
eSAkdGVzdFJlc3VsdHMgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0ZXN0UmVzdWx0c0RpcmVjdG9y
eSwgInJlc3VsdHMuaHRtbCIpOwogCiBwcmludCAiUnVubmluZyB0ZXN0cyBmcm9tICR0ZXN0RGly
ZWN0b3J5XG4iOwogaWYgKCRwaXhlbFRlc3RzKSB7CkBAIC02MDUsNyArNjA3LDcgQEAgZm9yIG15
ICR0ZXN0IChAdGVzdHMpIHsKICAgICB9CiAKICAgICBpZiAoJHRlc3QgPX4gL15odHRwXC8vKSB7
Ci0gICAgICAgIG9wZW5IVFRQRElmTmVlZGVkKCk7CisgICAgICAgIGNvbmZpZ3VyZUFuZE9wZW5I
VFRQRElmTmVlZGVkKCk7CiAgICAgICAgIGlmICgkdGVzdCAhfiAvXmh0dHBcL3Rlc3RzXC9sb2Nh
bFwvLyAmJiAkdGVzdCAhfiAvXmh0dHBcL3Rlc3RzXC9zc2xcLy8gJiYgJHRlc3QgIX4gL15odHRw
XC90ZXN0c1wvd21sXC8vICYmICR0ZXN0ICF+IC9eaHR0cFwvdGVzdHNcL21lZGlhXC8vKSB7CiAg
ICAgICAgICAgICBteSAkcGF0aCA9IGNhbm9ucGF0aCgkdGVzdCk7CiAgICAgICAgICAgICAkcGF0
aCA9fiBzL15odHRwXC90ZXN0c1wvLy87CkBAIC05NDUsNyArOTQ3LDcgQEAgcHJpbnRmICJcbiUw
LjJmcyB0b3RhbCB0ZXN0aW5nIHRpbWVcbiIsICh0aW1lIC0gJG92ZXJhbGxTdGFydFRpbWUpIC4g
IiI7CiAKICEkaXNEdW1wVG9vbE9wZW4gfHwgZGllICJGYWlsZWQgdG8gY2xvc2UgJGR1bXBUb29s
TmFtZS5cbiI7CiAKLWNsb3NlSFRUUEQoKTsKKyRpc0h0dHBkT3BlbiA9IGNsb3NlSFRUUEQoKTsK
IGNsb3NlV2ViU29ja2V0U2VydmVyKCk7CiAKICMgQmVjYXVzZSBtdWx0aXBsZSBpbnN0YW5jZXMg
b2YgdGhpcyBzY3JpcHQgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5IHdlIGNhbm5vdCAKQEAgLTEz
NDUsOTUgKzEzNDcsMjEgQEAgc3ViIGR1bXBUb29sRGlkQ3Jhc2goKQogICAgIHJldHVybiBEdW1w
UmVuZGVyVHJlZVN1cHBvcnQ6OnByb2Nlc3NJc0NyYXNoaW5nKCRkdW1wVG9vbFBJRCk7CiB9CiAK
LXN1YiBvcGVuSFRUUERJZk5lZWRlZCgpCitzdWIgY29uZmlndXJlQW5kT3BlbkhUVFBESWZOZWVk
ZWQoKQogewogICAgIHJldHVybiBpZiAkaXNIdHRwZE9wZW47Ci0KLSAgICBta2RpciAiL3RtcC9X
ZWJLaXQiOwotICAgIAotICAgIGlmICgtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIikgewotICAg
ICAgICBteSAkb2xkUGlkID0gYGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgOwotICAgICAgICBj
aG9tcCAkb2xkUGlkOwotICAgICAgICBpZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsKLSAgICAg
ICAgICAgIHByaW50ICJcbmh0dHBkIGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtp
bGxpbmcuLi5cbiI7Ci0gICAgICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwotICAgICAgICAgICAgd2hpbGUgKCgw
ICE9IGtpbGwgMCwgJG9sZFBpZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgICAgICBz
bGVlcCAxOwotICAgICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBk
IHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAg
ICBteSAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCI7Ci0gICAgbXkgJGh0dHBkQ29uZmln
OwotICAgIGlmIChpc0N5Z3dpbigpKSB7Ci0gICAgICAgIG15ICR3aW5kb3dzQ29uZkRpcmVjdG9y
eSA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvIjsKLSAgICAgICAgdW5sZXNzICgteCAiL3Vz
ci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIikgewotICAgICAgICAgICAgY29weSgiJHdpbmRvd3ND
b25mRGlyZWN0b3J5L2xpYnBocDQuZGxsIiwgIi91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIp
OwotICAgICAgICAgICAgY2htb2QoMDc1NSwgIi91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIp
OwotICAgICAgICB9Ci0gICAgICAgICRodHRwZENvbmZpZyA9ICIkd2luZG93c0NvbmZEaXJlY3Rv
cnkvY3lnd2luLWh0dHBkLmNvbmYiOwotICAgIH0gZWxzaWYgKGlzRGViaWFuQmFzZWQoKSkgewot
ICAgICAgICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9hcGFjaGUyIjsKLSAgICAgICAgJGh0dHBk
Q29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9hcGFjaGUyLWRlYmlhbi1odHRwZC5j
b25mIjsKLSAgICB9IGVsc2lmIChpc0ZlZG9yYUJhc2VkKCkpIHsKLSAgICAgICAgJGh0dHBkUGF0
aCA9ICIvdXNyL3NiaW4vaHR0cGQiOwotICAgICAgICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJl
Y3RvcnkvaHR0cC9jb25mL2ZlZG9yYS1odHRwZC5jb25mIjsKLSAgICB9IGVsc2UgewotICAgICAg
ICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2h0dHBkLmNvbmYiOwot
ICAgICAgICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTIt
aHR0cGQuY29uZiIgaWYgYCRodHRwZFBhdGggLXZgID1+IG18QXBhY2hlLzJ8OwotICAgIH0KLSAg
ICBteSAkZG9jdW1lbnRSb290ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvdGVzdHMiOwotICAgIG15
ICRqc1Rlc3RSZXNvdXJjZXNEaXJlY3RvcnkgPSAkdGVzdERpcmVjdG9yeSAuICIvZmFzdC9qcy9y
ZXNvdXJjZXMiOwotICAgIG15ICR0eXBlc0NvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2Nv
bmYvbWltZS50eXBlcyI7Ci0gICAgbXkgJGxpc3RlbiA9ICIxMjcuMC4wLjE6JGh0dHBkUG9ydCI7
CiAgICAgbXkgJGFic1Rlc3RSZXN1bHRzRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZE1ha2VUZXN0UmVz
dWx0c0RpcmVjdG9yeSgpOwotICAgIG15ICRzc2xDZXJ0aWZpY2F0ZSA9ICIkdGVzdERpcmVjdG9y
eS9odHRwL2NvbmYvd2Via2l0LWh0dHBkLnBlbSI7Ci0KKyAgICBteSAkbGlzdGVuID0gIjEyNy4w
LjAuMTokaHR0cGRQb3J0IjsKICAgICBteSBAYXJncyA9ICgKLSAgICAgICAgIi1mIiwgIiRodHRw
ZENvbmZpZyIsCi0gICAgICAgICItQyIsICJEb2N1bWVudFJvb3QgXCIkZG9jdW1lbnRSb290XCIi
LAotICAgICAgICAjIFNldHVwIGEgbGluayB0byB3aGVyZSB0aGUganMgdGVzdCB0ZW1wbGF0ZXMg
YXJlIHN0b3JlZCwgdXNlIC1jIHNvIHRoYXQgbW9kX2FsaWFzIHdpbGwgYWxyZWFkeSBiZSBsYW9k
ZWQuCi0gICAgICAgICItYyIsICJBbGlhcyAvanMtdGVzdC1yZXNvdXJjZXMgXCIkanNUZXN0UmVz
b3VyY2VzRGlyZWN0b3J5XCIiLAotICAgICAgICAiLUMiLCAiTGlzdGVuICRsaXN0ZW4iLAotICAg
ICAgICAiLWMiLCAiVHlwZXNDb25maWcgXCIkdHlwZXNDb25maWdcIiIsCiAgICAgICAgICItYyIs
ICJDdXN0b21Mb2cgXCIkYWJzVGVzdFJlc3VsdHNEaXJlY3RvcnkvYWNjZXNzX2xvZy50eHRcIiBj
b21tb24iLAogICAgICAgICAiLWMiLCAiRXJyb3JMb2cgXCIkYWJzVGVzdFJlc3VsdHNEaXJlY3Rv
cnkvZXJyb3JfbG9nLnR4dFwiIiwKLSAgICAgICAgIyBBcGFjaGUgd291bGRuJ3QgcnVuIENHSXMg
d2l0aCBwZXJtaXNzaW9ucz09NzAwIG90aGVyd2lzZQotICAgICAgICAiLWMiLCAiVXNlciBcIiMk
PFwiIgorICAgICAgICAiLUMiLCAiTGlzdGVuICRsaXN0ZW4iCiAgICAgKTsKIAotICAgICMgRklY
TUU6IEVuYWJsZSB0aGlzIG9uIFdpbmRvd3Mgb25jZSA8cmRhcjovL3Byb2JsZW0vNTM0NTk4NT4g
aXMgZml4ZWQKLSAgICAjIFRoZSB2ZXJzaW9uIG9mIEFwYWNoZSB3ZSB1c2Ugd2l0aCBDeWd3aW4g
ZG9lcyBub3Qgc3VwcG9ydCBTU0wKLSAgICBwdXNoKEBhcmdzLCAiLWMiLCAiU1NMQ2VydGlmaWNh
dGVGaWxlIFwiJHNzbENlcnRpZmljYXRlXCIiKSB1bmxlc3MgaXNDeWd3aW4oKTsKLQotICAgIG9w
ZW4yKFwqSFRUUERJTiwgXCpIVFRQRE9VVCwgJGh0dHBkUGF0aCwgQGFyZ3MpOwotCi0gICAgbXkg
JHJldHJ5Q291bnQgPSAyMDsKLSAgICB3aGlsZSAoc3lzdGVtKCIvdXNyL2Jpbi9jdXJsIC1xIC0t
c2lsZW50IC0tc3RkZXJyIC0gLS1vdXRwdXQgIiAuIEZpbGU6OlNwZWMtPmRldm51bGwoKSAuICIg
JGxpc3RlbiIpICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAgIHNsZWVwIDE7Ci0gICAgICAgIC0t
JHJldHJ5Q291bnQ7Ci0gICAgfQotICAgIAotICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9y
IGh0dHBkIHRvIHN0YXJ0IiB1bmxlc3MgJHJldHJ5Q291bnQ7Ci0gICAgCi0gICAgJGlzSHR0cGRP
cGVuID0gMTsKLX0KLQotc3ViIGNsb3NlSFRUUEQoKQotewotICAgIHJldHVybiBpZiAhJGlzSHR0
cGRPcGVuOwotCi0gICAgY2xvc2UgSFRUUERJTjsKLSAgICBjbG9zZSBIVFRQRE9VVDsKLQotICAg
IGtpbGwgMTUsIGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQucGlkYCBpZiAtZiAiL3RtcC9XZWJLaXQv
aHR0cGQucGlkIjsKKyAgICBteSBAZGVmYXVsdEFyZ3MgPSBnZXREZWZhdWx0Q29uZmlnRm9yVGVz
dERpcmVjdG9yeSgkdGVzdERpcmVjdG9yeSk7CisgICAgQGFyZ3MgPSAoQGRlZmF1bHRBcmdzLCBA
YXJncyk7CiAKLSAgICAkaXNIdHRwZE9wZW4gPSAwOworICAgICRpc0h0dHBkT3BlbiA9IG9wZW5I
VFRQRChAYXJncyk7CiB9CiAKIHN1YiBvcGVuV2ViU29ja2V0U2VydmVySWZOZWVkZWQoKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA0MmE3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvaHR0cGQucG0KQEAgLTAsMCArMSwyMDQgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3Au
Y29tKQorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQW5kcmFzIEJlY3NpIChhYmVjc2lAaW5mLnUtc3pl
Z2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
IyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IyBNb2R1bGUgdG8gc2hhcmUgY29kZSB0byBzdGFydCBhbmQgc3RvcCB0aGUgQXBhY2hlIGRhZW1v
bi4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEZpbGU6OlBhdGg7Cit1c2Ug
RmlsZTo6U3BlYzsKK3VzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7Cit1c2UgSVBDOjpPcGVuMjsK
KwordXNlIHdlYmtpdGRpcnM7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAg
b3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsK
KyAgICRWRVJTSU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7
CisgICBARVhQT1JUICAgICAgPSBxdygmZ2V0SFRUUERQYXRoICZnZXREZWZhdWx0Q29uZmlnRm9y
VGVzdERpcmVjdG9yeSAmb3BlbkhUVFBEICZjbG9zZUhUVFBEICZnZXRIVFRQRFBpZCAmd2FpdEZv
clVzZXJJbnRlcnJ1cHQpOworICAgJUVYUE9SVF9UQUdTID0gKCApOworICAgQEVYUE9SVF9PSyAg
ID0gKCk7Cit9CisKK215ICR0bXBEaXIgPSAiL3RtcCI7CitteSAkaHR0cGRQYXRoOworbXkgJGh0
dHBkUGlkRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdG1wRGlyLCAiV2ViS2l0Iik7CitteSAk
aHR0cGRQaWRGaWxlID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5w
aWQiKTsKK215ICRodHRwZFBpZDsKK215ICRzdGFuZGFsb25lID0gMDsKKworJFNJR3snSU5UJ30g
PSAnY2xlYW51cCc7CiskU0lHeydURVJNJ30gPSAnY2xlYW51cCc7CisKK3N1YiBnZXRIVFRQRFBh
dGgKK3sKKyAgICBpZiAoaXNEZWJpYW5CYXNlZCgpKSB7CisgICAgICAgICRodHRwZFBhdGggPSAi
L3Vzci9zYmluL2FwYWNoZTIiOworICAgIH0gZWxzZSB7CisgICAgICAgICRodHRwZFBhdGggPSAi
L3Vzci9zYmluL2h0dHBkIjsKKyAgICB9CisgICAgcmV0dXJuICRodHRwZFBhdGg7Cit9CisKK3N1
YiBnZXREZWZhdWx0Q29uZmlnRm9yVGVzdERpcmVjdG9yeQoreworICAgIG15ICgkdGVzdERpcmVj
dG9yeSkgPSBAXzsKKyAgICBkaWUgIk5vIHRlc3QgZGlyZWN0b3J5IGhhcyBiZWVuIHNwZWNpZmll
ZC4iIHVubGVzcyAoJHRlc3REaXJlY3RvcnkpOworCisgICAgbXkgJGh0dHBkQ29uZmlnOworICAg
IGdldEhUVFBEUGF0aCgpOworICAgIGlmIChpc0N5Z3dpbigpKSB7CisgICAgICAgIG15ICR3aW5k
b3dzQ29uZkRpcmVjdG9yeSA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvIjsKKyAgICAgICAg
dW5sZXNzICgteCAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIikgeworICAgICAgICAgICAg
Y29weSgiJHdpbmRvd3NDb25mRGlyZWN0b3J5L2xpYnBocDQuZGxsIiwgIi91c3IvbGliL2FwYWNo
ZS9saWJwaHA0LmRsbCIpOworICAgICAgICAgICAgY2htb2QoMDc1NSwgIi91c3IvbGliL2FwYWNo
ZS9saWJwaHA0LmRsbCIpOworICAgICAgICB9CisgICAgICAgICRodHRwZENvbmZpZyA9ICIkd2lu
ZG93c0NvbmZEaXJlY3RvcnkvY3lnd2luLWh0dHBkLmNvbmYiOworICAgIH0gZWxzaWYgKGlzRGVi
aWFuQmFzZWQoKSkgeworICAgICAgICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0
cC9jb25mL2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYiOworICAgIH0gZWxzaWYgKGlzRmVkb3Jh
QmFzZWQoKSkgeworICAgICAgICAkaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9j
b25mL2ZlZG9yYS1odHRwZC5jb25mIjsKKyAgICB9IGVsc2UgeworICAgICAgICAkaHR0cGRDb25m
aWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2h0dHBkLmNvbmYiOworICAgICAgICAkaHR0
cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTItaHR0cGQuY29uZiIg
aWYgYCRodHRwZFBhdGggLXZgID1+IG18QXBhY2hlLzJ8OworICAgIH0KKworICAgIG15ICRkb2N1
bWVudFJvb3QgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC90ZXN0cyI7CisgICAgbXkgJGpzVGVzdFJl
c291cmNlc0RpcmVjdG9yeSA9ICR0ZXN0RGlyZWN0b3J5IC4gIi9mYXN0L2pzL3Jlc291cmNlcyI7
CisgICAgbXkgJHR5cGVzQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9taW1lLnR5
cGVzIjsKKyAgICBteSAkaHR0cGRMb2NrRmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGh0dHBk
UGlkRGlyLCAiaHR0cGQubG9jayIpOworICAgIG15ICRodHRwZFNjb3JlQm9hcmRGaWxlID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5zY29yZWJvYXJkIik7CisKKyAg
ICBteSBAaHR0cGRBcmdzID0gKAorICAgICAgICAiLWYiLCAiJGh0dHBkQ29uZmlnIiwKKyAgICAg
ICAgIi1DIiwgIkRvY3VtZW50Um9vdCBcIiRkb2N1bWVudFJvb3RcIiIsCisgICAgICAgICMgU2V0
dXAgYSBsaW5rIHRvIHdoZXJlIHRoZSBqcyB0ZXN0IHRlbXBsYXRlcyBhcmUgc3RvcmVkLCB1c2Ug
LWMgc28gdGhhdCBtb2RfYWxpYXMgd2lsbCBhbHJlYWR5IGJlIGxvYWRlZC4KKyAgICAgICAgIi1j
IiwgIkFsaWFzIC9qcy10ZXN0LXJlc291cmNlcyBcIiRqc1Rlc3RSZXNvdXJjZXNEaXJlY3Rvcnlc
IiIsCisgICAgICAgICItYyIsICJUeXBlc0NvbmZpZyBcIiR0eXBlc0NvbmZpZ1wiIiwKKyAgICAg
ICAgIyBBcGFjaGUgd291bGRuJ3QgcnVuIENHSXMgd2l0aCBwZXJtaXNzaW9ucz09NzAwIG90aGVy
d2lzZQorICAgICAgICAiLWMiLCAiVXNlciBcIiMkPFwiIiwKKyAgICAgICAgIi1jIiwgIkxvY2tG
aWxlIFwiJGh0dHBkTG9ja0ZpbGVcIiIsCisgICAgICAgICItYyIsICJQaWRGaWxlIFwiJGh0dHBk
UGlkRmlsZVwiIiwKKyAgICAgICAgIi1jIiwgIlNjb3JlQm9hcmRGaWxlIFwiJGh0dHBkU2NvcmVC
b2FyZEZpbGVcIiIsCisgICAgKTsKKworICAgICMgRklYTUU6IEVuYWJsZSB0aGlzIG9uIFdpbmRv
d3Mgb25jZSA8cmRhcjovL3Byb2JsZW0vNTM0NTk4NT4gaXMgZml4ZWQKKyAgICAjIFRoZSB2ZXJz
aW9uIG9mIEFwYWNoZSB3ZSB1c2Ugd2l0aCBDeWd3aW4gZG9lcyBub3Qgc3VwcG9ydCBTU0wKKyAg
ICBteSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtpdC1o
dHRwZC5wZW0iOworICAgIHB1c2goQGh0dHBkQXJncywgIi1jIiwgIlNTTENlcnRpZmljYXRlRmls
ZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5sZXNzIGlzQ3lnd2luKCk7CisKKyAgICByZXR1cm4g
QGh0dHBkQXJnczsKKworfQorCitzdWIgb3BlbkhUVFBEKEApCit7CisgICAgbXkgKEBhcmdzKSA9
IEBfOworICAgIGRpZSAiTm8gSFRUUEQgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBzcGVjaWZpZWQi
IHVubGVzcyAoQGFyZ3MpOworICAgIG1rZGlyKCRodHRwZFBpZERpciwgMDc1NSk7CisgICAgZGll
ICJObyB3cml0ZSBwZXJtaXNzaW9ucyB0byAkaHR0cGRQaWREaXIiIHVubGVzcyAoLXcgJGh0dHBk
UGlkRGlyKTsKKworICAgIGlmICgtZiAkaHR0cGRQaWRGaWxlKSB7CisgICAgICAgIG9wZW4gKFBJ
REZJTEUsICRodHRwZFBpZEZpbGUpOworICAgICAgICBteSAkb2xkUGlkID0gPFBJREZJTEU+Owor
ICAgICAgICBjaG9tcCAkb2xkUGlkOworICAgICAgICBjbG9zZSBQSURGSUxFOworICAgICAgICBp
ZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsKKyAgICAgICAgICAgIHByaW50ICJcbmh0dHBkIGlz
IGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQaWQsIGtpbGxpbmcuLi5cbiI7CisgICAgICAgICAg
ICBraWxsIDE1LCAkb2xkUGlkOworCisgICAgICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwor
ICAgICAgICAgICAgd2hpbGUgKChraWxsKDAsICRvbGRQaWQpICE9IDApICYmICRyZXRyeUNvdW50
KSB7CisgICAgICAgICAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgICAgICAgICAtLSRyZXRyeUNv
dW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5n
IGZvciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJldHJ5Q291bnQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAkaHR0cGRQYXRoID0gIi91c3Ivc2Jpbi9odHRwZCIgdW5sZXNzICgkaHR0cGRQYXRo
KTsKKworICAgIG9wZW4yKFwqSFRUUERJTiwgXCpIVFRQRE9VVCwgJGh0dHBkUGF0aCwgQGFyZ3Mp
OworCisgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKKyAgICB3aGlsZSAoIS1mICRodHRwZFBpZEZp
bGUgJiYgJHJldHJ5Q291bnQpIHsKKyAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgLS0kcmV0cnlD
b3VudDsKKyAgICB9CisKKyAgICBpZiAoISRyZXRyeUNvdW50KSB7CisgICAgICAgIHJtZGlyICRo
dHRwZFBpZERpcjsKKyAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8g
c3RhcnQiOworICAgIH0KKworICAgICRodHRwZFBpZCA9IDxQSURGSUxFPiBpZiBvcGVuKFBJREZJ
TEUsICRodHRwZFBpZEZpbGUpOworICAgIGNob21wICRodHRwZFBpZCBpZiAkaHR0cGRQaWQ7Cisg
ICAgY2xvc2UgUElERklMRTsKKworICAgIHdhaXRwaWQoJGh0dHBkUGlkLCAwKSBpZiAoJHN0YW5k
YWxvbmUgJiYgJGh0dHBkUGlkKTsKKworICAgIHJldHVybiAxOworfQorCitzdWIgY2xvc2VIVFRQ
RAoreworICAgIGNsb3NlIEhUVFBESU47CisgICAgY2xvc2UgSFRUUERPVVQ7CisKKyAgICBpZiAo
JGh0dHBkUGlkKSB7CisgICAgICAgIGtpbGwgMTUsICRodHRwZFBpZDsKKyAgICAgICAgbXkgJHJl
dHJ5Q291bnQgPSAyMDsKKyAgICAgICAgd2hpbGUgKC1mICRodHRwZFBpZEZpbGUgJiYgJHJldHJ5
Q291bnQpIHsKKyAgICAgICAgICAgIHNsZWVwIDE7CisgICAgICAgICAgICAtLSRyZXRyeUNvdW50
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEkcmV0cnlDb3VudCkgeworICAgICAgICAgICAg
cHJpbnQgU1RERVJSICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gdGVybWluYXRlIVxu
IjsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorICAgIHJtZGlyICRo
dHRwZFBpZERpcjsKKyAgICByZXR1cm4gMDsKK30KKworc3ViIHdhaXRGb3JVc2VySW50ZXJydXB0
Cit7CisgICAgJHN0YW5kYWxvbmUgPSAxOworfQorCitzdWIgY2xlYW51cAoreworICAgIGNsb3Nl
SFRUUEQoKTsKKyAgICBwcmludCAiXG4iOworICAgIGV4aXQoMSk7Cit9Cg==
</data>
<flag name="commit-queue"
          id="29369"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47051</attachid>
            <date>2010-01-20 11:45:30 -0800</date>
            <delta_ts>2010-01-22 07:09:17 -0800</delta_ts>
            <desc>update2</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22737</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5NTUzMDFkLi40ZWFjZGFkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDEt
MjAgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBFeHRyYWN0IEFwYWNoZSBo
YW5kbGluZyB0byBodHRwZC5wbSBtb2R1bGUgYW5kIHVzZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb25h
bGl0eQorICAgICAgICBpbiBzY3JpcHRzIHdoZXJlIEFwYWNoZSBpcyBuZWVkZWQuCisgICAgICAg
IFRoZSBtb2R1bGUgaHR0cGQucG0gc3RvcmVzIHRoZSBQSUQgb2YgQXBhY2hlIGluIGEgdmFyaWFi
bGUgYW5kIGNsZWFucyB1cAorICAgICAgICB0aGUgUElEIGRpcmVjdG9yeSBhZnRlciBBcGFjaGUg
cHJvcGVybHkgc2h1dCBkb3duLiBDYXRjaGluZyBJTlQgYW5kIFRFUk0KKyAgICAgICAgc2lnbmFs
cyBhbGxvd3MgdGhlIHNjcmlwdHMgdG8gY2xvc2UgQXBhY2hlIGFuZCBjbGVhbiB1cCBpdHMgUElE
IGRpcmVjdG9yeQorICAgICAgICBldmVuIGlmIHRoZSB0ZXN0aW5nIHdhcyBpbnRlcnJ1cHRlZC4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTMK
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9odHRwZC5wbTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy9ydW4taWV4cGxvZGVyLXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMvcnVuLXdl
YmtpdC1odHRwZDoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6CisKIDIwMTAt
MDEtMjAgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9ydW4taWV4cGxvZGVyLXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4t
aWV4cGxvZGVyLXRlc3RzCmluZGV4IGVkNWVjZDYuLjFiMzk3NmYgMTAwNzU1Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvcnVuLWlleHBsb2Rlci10ZXN0cworKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3J1bi1pZXhwbG9kZXItdGVzdHMKQEAgLTM4LDE2ICszOCwxNyBAQCB1c2UgR2V0b3B0OjpM
b25nOwogdXNlIElQQzo6T3BlbjI7CiAKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJr
aXRwZXJsOjpodHRwZDsKIHVzZSB3ZWJraXRkaXJzOwogCi1zdWIgb3BlbkhUVFBESWZOZWVkZWQo
KTsKLXN1YiBjbG9zZUhUVFBEKCk7CitzdWIgY29uZmlndXJlQW5kT3BlbkhUVFBESWZOZWVkZWQo
KTsKIHN1YiBydW5TYWZhcmlXaXRoSUV4cGxvZGVyKCk7CiAKICMgQXJndW1lbnQgaGFuZGxpbmcK
IG15ICRndWFyZE1hbGxvYyA9ICcnOwogbXkgJGh0dHBkUG9ydCA9IDgwMDA7CiBteSAkZG93bmxv
YWRUZXN0OworbXkgJGlFeHBsb2RlclRlc3REaXJlY3RvcnkgPSAiL3RtcC9pRXhwbG9kZXJUZXN0
IjsKIAogR2V0T3B0aW9ucygKICAgICAnZ3VhcmQtbWFsbG9jfGcnID0+IFwkZ3VhcmRNYWxsb2Ms
CkBAIC02Myw4ICs2NCw4IEBAIGNoZGlyV2ViS2l0KCk7CiAKIGNoZWNrRnJhbWV3b3JrcygpOwog
Ci1teSAkaHR0cGRPcGVuID0gMDsKLW9wZW5IVFRQRElmTmVlZGVkKCk7CitteSAkaXNIdHRwZE9w
ZW4gPSAwOworY29uZmlndXJlQW5kT3BlbkhUVFBESWZOZWVkZWQoKTsKIAogaWYgKCRkb3dubG9h
ZFRlc3QpIHsKICAgICBzeXN0ZW0gIi91c3IvYmluL2N1cmwgLW8gfi9EZXNrdG9wL2lleHBsb2Rl
ciRkb3dubG9hZFRlc3QuaHRtbCBcImh0dHA6Ly8xMjcuMC4wLjE6JGh0dHBkUG9ydC9pZXhwbG9k
ZXIuY2dpP2xvb2t1cD0xJnRlc3Q9JGRvd25sb2FkVGVzdFwiIjsKQEAgLTcyLDExICs3MywxMSBA
QCBpZiAoJGRvd25sb2FkVGVzdCkgewogfSBlbHNlIHsKICAgICBydW5TYWZhcmlXaXRoSUV4cGxv
ZGVyKCk7CiAgICAgcHJpbnQgIkxhc3QgZ2VuZXJhdGVkIHRlc3RzOlxuIjsKLSAgICBzeXN0ZW0g
ImdyZXAgJ2lleHBsb2Rlci5jZ2knIC90bXAvV2ViS2l0L2FjY2Vzc19sb2cudHh0IHwgdGFpbCAt
biAtNSB8IGF3ayAtRidbID0mXFw/XScgJ3tpZiAoXCQ4ID09IFwibG9va3VwXCIpIHByaW50IFwk
MTE7IGVsc2UgcHJpbnQgXCQ5fSciOworICAgIHN5c3RlbSAiZ3JlcCAnaWV4cGxvZGVyLmNnaScg
JGlFeHBsb2RlclRlc3REaXJlY3RvcnkvYWNjZXNzX2xvZy50eHQgfCB0YWlsIC1uIC01IHwgYXdr
IC1GJ1sgPSZcXD9dJyAne2lmIChcJDggPT0gXCJsb29rdXBcIikgcHJpbnQgXCQxMTsgZWxzZSBw
cmludCBcJDl9JyI7CiB9CiAKLWNsb3NlSFRUUEQoKTsKLQorcm10cmVlICRpRXhwbG9kZXJUZXN0
RGlyZWN0b3J5OworJGlzSHR0cGRPcGVuID0gIWNsb3NlSFRUUEQoKTsKIAogc3ViIHJ1blNhZmFy
aVdpdGhJRXhwbG9kZXIoKQogewpAQCAtODcsNyArODgsNyBAQCBzdWIgcnVuU2FmYXJpV2l0aElF
eHBsb2RlcigpCiAgICAgICAgICRyZWRpcmVjdFRvID0gImh0dHA6Ly8xMjcuMC4wLjE6JGh0dHBk
UG9ydC9pbmRleC5odG1sIjsKICAgICB9CiAKLSAgICBvcGVuIFJFRElSRUNUX0hUTUwsICI+Iiwg
Ii90bXAvV2ViS2l0L3JlZGlyZWN0Lmh0bWwiIG9yIGRpZTsKKyAgICBvcGVuIFJFRElSRUNUX0hU
TUwsICI+IiwgIiRpRXhwbG9kZXJUZXN0RGlyZWN0b3J5L3JlZGlyZWN0Lmh0bWwiIG9yIGRpZTsK
ICAgICBwcmludCBSRURJUkVDVF9IVE1MICI8aHRtbD5cbiI7CiAgICAgcHJpbnQgUkVESVJFQ1Rf
SFRNTCAiICAgIDxoZWFkPlxuIjsKICAgICBwcmludCBSRURJUkVDVF9IVE1MICIgICAgICAgIDxt
ZXRhIGh0dHAtZXF1aXY9XCJyZWZyZXNoXCIgY29udGVudD1cIjE7VVJMPSRyZWRpcmVjdFRvXCIg
Lz5cbiI7CkBAIC0xMDIsMzUgKzEwMywxNyBAQCBzdWIgcnVuU2FmYXJpV2l0aElFeHBsb2Rlcigp
CiAgICAgCiAgICAgbG9jYWwgJUVOVjsKICAgICAkRU5We0RZTERfSU5TRVJUX0xJQlJBUklFU30g
PSAiL3Vzci9saWIvbGliZ21hbGxvYy5keWxpYiIgaWYgJGd1YXJkTWFsbG9jOwotICAgIHN5c3Rl
bSAiV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tc2FmYXJpIiwgIi1OU09wZW4iLCAiL3RtcC9XZWJL
aXQvcmVkaXJlY3QuaHRtbCI7CisgICAgc3lzdGVtICJXZWJLaXRUb29scy9TY3JpcHRzL3J1bi1z
YWZhcmkiLCAiLU5TT3BlbiIsICIkaUV4cGxvZGVyVGVzdERpcmVjdG9yeS9yZWRpcmVjdC5odG1s
IjsKIH0KIAotc3ViIG9wZW5IVFRQRElmTmVlZGVkKCkKK3N1YiBjb25maWd1cmVBbmRPcGVuSFRU
UERJZk5lZWRlZCgpCiB7Ci0gICAgcmV0dXJuIGlmICRodHRwZE9wZW47Ci0KLSAgICBta2RpciAi
L3RtcC9XZWJLaXQiOwotICAgIAotICAgIGlmICgtZiAiL3RtcC9XZWJLaXQvaHR0cGQucGlkIikg
ewotICAgICAgICBteSAkb2xkUGlkID0gYGNhdCAvdG1wL1dlYktpdC9odHRwZC5waWRgOwotICAg
ICAgICBjaG9tcCAkb2xkUGlkOwotICAgICAgICBpZiAoMCAhPSBraWxsIDAsICRvbGRQaWQpIHsK
LSAgICAgICAgICAgIHByaW50ICJcbmh0dHBkIGlzIGFscmVhZHkgcnVubmluZzogcGlkICRvbGRQ
aWQsIGtpbGxpbmcuLi5cbiI7Ci0gICAgICAgICAgICBraWxsIDE1LCAkb2xkUGlkOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwotICAgICAgICAgICAgd2hp
bGUgKCgwICE9IGtpbGwgMCwgJG9sZFBpZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAg
ICAgICBzbGVlcCAxOwotICAgICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9y
IGh0dHBkIHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICBteSAkdGVzdERpcmVjdG9yeSA9IGdldGN3ZCgpIC4gIi9MYXlvdXRUZXN0cyI7Ci0g
ICAgbXkgJGlFeHBsb2RlckRpcmVjdG9yeSA9IGdldGN3ZCgpIC4gIi9XZWJLaXRUb29scy9pRXhw
bG9kZXIiOwotICAgIG15ICRodHRwZFBhdGggPSAiL3Vzci9zYmluL2h0dHBkIjsKKyAgICByZXR1
cm4gaWYgJGlzSHR0cGRPcGVuOworICAgIG1rZGlyICRpRXhwbG9kZXJUZXN0RGlyZWN0b3J5Owor
ICAgIG15ICRodHRwZFBhdGggPSBnZXRIVFRQRFBhdGgoKTsKKyAgICBteSAkd2Via2l0RGlyZWN0
b3J5ID0gZ2V0Y3dkKCk7CisgICAgbXkgJHRlc3REaXJlY3RvcnkgPSAkd2Via2l0RGlyZWN0b3J5
IC4gIi9MYXlvdXRUZXN0cyI7CisgICAgbXkgJGlFeHBsb2RlckRpcmVjdG9yeSA9ICR3ZWJraXRE
aXJlY3RvcnkgLiAiL1dlYktpdFRvb2xzL2lFeHBsb2RlciI7CiAgICAgbXkgJGh0dHBkQ29uZmln
ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9odHRwZC5jb25mIjsKICAgICAkaHR0cGRDb25m
aWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2FwYWNoZTItaHR0cGQuY29uZiIgaWYgYCRo
dHRwZFBhdGggLXZgID1+IG18QXBhY2hlLzJ8OwogICAgIG15ICRkb2N1bWVudFJvb3QgPSAiJGlF
eHBsb2RlckRpcmVjdG9yeS9odGRvY3MiOwpAQCAtMTM4LDM2ICsxMjEsMTggQEAgc3ViIG9wZW5I
VFRQRElmTmVlZGVkKCkKICAgICBteSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3Rvcnkv
aHR0cC9jb25mL3dlYmtpdC1odHRwZC5wZW0iOwogICAgIG15ICRsaXN0ZW4gPSAiMTI3LjAuMC4x
OiRodHRwZFBvcnQiOwogCi0gICAgb3BlbjIoXCpIVFRQRElOLCBcKkhUVFBET1VULCAkaHR0cGRQ
YXRoLCAKKworICAgIG15IEBhcmdzID0gKAogICAgICAgICAiLWYiLCAiJGh0dHBkQ29uZmlnIiwK
ICAgICAgICAgIi1DIiwgIkRvY3VtZW50Um9vdCBcIiRkb2N1bWVudFJvb3RcIiIsCiAgICAgICAg
ICItQyIsICJMaXN0ZW4gJGxpc3RlbiIsCiAgICAgICAgICItYyIsICJUeXBlc0NvbmZpZyBcIiR0
eXBlc0NvbmZpZ1wiIiwKLSAgICAgICAgIi1jIiwgIkN1c3RvbUxvZyBcIi90bXAvV2ViS2l0L2Fj
Y2Vzc19sb2cudHh0XCIgY29tbW9uIiwKLSAgICAgICAgIi1jIiwgIkVycm9yTG9nIFwiL3RtcC9X
ZWJLaXQvZXJyb3JfbG9nLnR4dFwiIiwKKyAgICAgICAgIi1jIiwgIkN1c3RvbUxvZyBcIiRpRXhw
bG9kZXJUZXN0RGlyZWN0b3J5L2FjY2Vzc19sb2cudHh0XCIgY29tbW9uIiwKKyAgICAgICAgIi1j
IiwgIkVycm9yTG9nIFwiJGlFeHBsb2RlclRlc3REaXJlY3RvcnkvZXJyb3JfbG9nLnR4dFwiIiwK
ICAgICAgICAgIi1jIiwgIlNTTENlcnRpZmljYXRlRmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIiwK
ICAgICAgICAgIyBBcGFjaGUgd291bGRuJ3QgcnVuIENHSXMgd2l0aCBwZXJtaXNzaW9ucz09NzAw
IG90aGVyd2lzZQotICAgICAgICAiLWMiLCAiVXNlciBcIiMkPFwiIik7Ci0KLSAgICBteSAkcmV0
cnlDb3VudCA9IDIwOwotICAgIHdoaWxlIChzeXN0ZW0oIi91c3IvYmluL2N1cmwgLXEgLS1zaWxl
bnQgLS1zdGRlcnIgLSAtLW91dHB1dCAiIC4gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpIC4gIiAkbGlz
dGVuIikgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgc2xlZXAgMTsKLSAgICAgICAgLS0kcmV0
cnlDb3VudDsKLSAgICB9Ci0gICAgCi0gICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0
cGQgdG8gc3RhcnQiIHVubGVzcyAkcmV0cnlDb3VudDsKLSAgICAKLSAgICAkaHR0cGRPcGVuID0g
MTsKLX0KLQotc3ViIGNsb3NlSFRUUEQoKQotewotICAgIHJldHVybiBpZiAhJGh0dHBkT3BlbjsK
LQotICAgIGNsb3NlIEhUVFBESU47Ci0gICAgY2xvc2UgSFRUUERPVVQ7Ci0KLSAgICBraWxsIDE1
LCBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBpZGAgaWYgLWYgIi90bXAvV2ViS2l0L2h0dHBkLnBp
ZCI7CisgICAgICAgICItYyIsICJVc2VyIFwiIyQ8XCIiCisgICAgKTsKIAotICAgICRodHRwZE9w
ZW4gPSAwOworICAgICRpc0h0dHBkT3BlbiA9IG9wZW5IVFRQRChAYXJncyk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtaHR0cGQgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3J1bi13ZWJraXQtaHR0cGQKaW5kZXggOWE5NzE5MC4uMDE4ZjY0YyAxMDA3NTUKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LWh0dHBkCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvcnVuLXdlYmtpdC1odHRwZApAQCAtMzMsMTEgKzMzLDEzIEBAIHVzZSBzdHJpY3Q7
CiB1c2Ugd2FybmluZ3M7CiAKIHVzZSBDd2Q7Cit1c2UgRmlsZTo6UGF0aDsKIHVzZSBGaWxlOjpC
YXNlbmFtZTsKIHVzZSBHZXRvcHQ6Okxvbmc7CiB1c2UgRmluZEJpbjsKIAogdXNlIGxpYiAkRmlu
ZEJpbjo6QmluOwordXNlIHdlYmtpdHBlcmw6Omh0dHBkOwogdXNlIHdlYmtpdGRpcnM7CiAKICMg
QXJndW1lbnQgaGFuZGxpbmcKQEAgLTYyLDM5ICs2NCw3IEBAIGlmICghJHJlc3VsdCB8fCBAQVJH
ViB8fCAkc2hvd0hlbHApIHsKIHNldENvbmZpZ3VyYXRpb24oKTsKIG15ICRwcm9kdWN0RGlyID0g
cHJvZHVjdERpcigpOwogY2hkaXJXZWJLaXQoKTsKLQotbWtkaXIgIi90bXAvV2ViS2l0IjsKLQot
aWYgKC1mICIvdG1wL1dlYktpdC9odHRwZC5waWQiKSB7Ci0gICAgbXkgJG9sZFBpZCA9IGBjYXQg
L3RtcC9XZWJLaXQvaHR0cGQucGlkYDsKLSAgICBjaG9tcCAkb2xkUGlkOwotICAgIGlmICgwICE9
IGtpbGwgMCwgJG9sZFBpZCkgewotICAgICAgICBwcmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1
bm5pbmc6IHBpZCAkb2xkUGlkLCBraWxsaW5nLi4uXG4iOwotICAgICAgICBraWxsIDE1LCAkb2xk
UGlkOwotICAgICAgICAKLSAgICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKLSAgICAgICAgd2hp
bGUgKCgwICE9IGtpbGwgMCwgJG9sZFBpZCkgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAg
IHNsZWVwIDE7Ci0gICAgICAgICAgICAtLSRyZXRyeUNvdW50OwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBxdWl0IiB1bmxl
c3MgJHJldHJ5Q291bnQ7Ci0gICAgfQotfQotCi1teSAkdGVzdERpcmVjdG9yeSA9IGdldGN3ZCgp
IC4gIi9MYXlvdXRUZXN0cyI7Ci1teSAkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5ID0gJHRlc3RE
aXJlY3RvcnkgLiAiL2Zhc3QvanMvcmVzb3VyY2VzIjsKLW15ICRodHRwZFBhdGggPSAiL3Vzci9z
YmluL2h0dHBkIjsKLSRodHRwZFBhdGggPSAiL3Vzci9zYmluL2FwYWNoZTIiIGlmIGlzRGViaWFu
QmFzZWQoKTsKLW15ICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvaHR0
cGQuY29uZiI7Ci0kaHR0cGRDb25maWcgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL2N5Z3dp
bi1odHRwZC5jb25mIiBpZiBpc0N5Z3dpbigpOwotJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0
b3J5L2h0dHAvY29uZi9hcGFjaGUyLWh0dHBkLmNvbmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBt
fEFwYWNoZS8yfDsKLSRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBh
Y2hlMi1kZWJpYW4taHR0cGQuY29uZiIgaWYgaXNEZWJpYW5CYXNlZCgpOwotJGh0dHBkQ29uZmln
ID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiIgaWYgaXNGZWRv
cmFCYXNlZCgpOwotbXkgJGRvY3VtZW50Um9vdCA9ICIkdGVzdERpcmVjdG9yeS9odHRwL3Rlc3Rz
IjsKLW15ICR0eXBlc0NvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvbWltZS50eXBl
cyI7Ci1teSAkc3NsQ2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtp
dC1odHRwZC5wZW0iOwotCitteSAkdGVzdERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUo
Z2V0Y3dkKCksICJMYXlvdXRUZXN0cyIpOwogbXkgJGxpc3RlbiA9ICIxMjcuMC4wLjE6JGh0dHBk
UG9ydCI7CiAkbGlzdGVuID0gIiRodHRwZFBvcnQiIGlmICgkYWxsSW50ZXJmYWNlcyk7CiAKQEAg
LTEwMywxOSArNzMsMTMgQEAgaWYgKCRhbGxJbnRlcmZhY2VzKSB7CiB9IGVsc2UgewogICAgIHBy
aW50ICJTdGFydGluZyBodHRwZCBvbiA8aHR0cDovLyRsaXN0ZW4vPi4uLlxuIjsKIH0KK3NldFNo
b3VsZFdhaXRGb3JVc2VySW50ZXJydXB0KCk7CiBwcmludCAiUHJlc3MgQ3RybCtDIHRvIHN0b3Ag
aXQuXG5cbiI7CiAKIG15IEBhcmdzID0gKAotICAgICItZiIsICIkaHR0cGRDb25maWciLAotICAg
ICItQyIsICJEb2N1bWVudFJvb3QgXCIkZG9jdW1lbnRSb290XCIiLAotICAgICMgU2V0dXAgYSBs
aW5rIHRvIHdoZXJlIHRoZSBqcyB0ZXN0IHRlbXBsYXRlcyBhcmUgc3RvcmVkLCB1c2UgLWMgc28g
dGhhdCBtb2RfYWxpYXMgd2lsbCBhbHJlYWR5IGJlIGxhb2RlZC4KLSAgICAiLWMiLCAiQWxpYXMg
L2pzLXRlc3QtcmVzb3VyY2VzIFwiJGpzVGVzdFJlc291cmNlc0RpcmVjdG9yeVwiIiwKICAgICAi
LUMiLCAiTGlzdGVuICRsaXN0ZW4iLAotICAgICItYyIsICJUeXBlc0NvbmZpZyBcIiR0eXBlc0Nv
bmZpZ1wiIiwKICAgICAiLWMiLCAiQ3VzdG9tTG9nIHwvdXNyL2Jpbi90ZWUgY29tbW9uIiwKICAg
ICAiLWMiLCAiRXJyb3JMb2cgfC91c3IvYmluL3RlZSIsCi0gICAgIyBBcGFjaGUgd291bGRuJ3Qg
cnVuIENHSXMgd2l0aCBwZXJtaXNzaW9ucz09NzAwIG90aGVyd2lzZS4KLSAgICAiLWMiLCAiVXNl
ciBcIiMkPFwiIiwKICAgICAjIFJ1biBpbiBzaW5nbGUtcHJvY2VzcyBtb2RlLCBkbyBub3QgZGV0
YWNoIGZyb20gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsLgogICAgICItWCIsCiAgICAgIyBEaXNh
YmxlIEtlZXAtQWxpdmUgc3VwcG9ydC4gTWFrZXMgdGVzdGluZyBpbiBtdWx0aXBsZSBicm93c2Vy
cyBlYXNpZXIgKG5vIG5lZWQgdG8gd2FpdApAQCAtMTIzLDkgKzg3LDYgQEAgbXkgQGFyZ3MgPSAo
CiAgICAgIi1jIiwgIktlZXBBbGl2ZSAwIgogKTsKIAotIyBGSVhNRTogRW5hYmxlIHRoaXMgb24g
V2luZG93cyBvbmNlIDxyZGFyOi8vcHJvYmxlbS81MzQ1OTg1PiBpcyBmaXhlZAotcHVzaChAYXJn
cywgIi1jIiwgIlNTTENlcnRpZmljYXRlRmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5sZXNz
IGlzQ3lnd2luKCk7Ci0KLXN5c3RlbSgkaHR0cGRQYXRoLCBAYXJncyk7Ci0KLXVubGluayAiL3Rt
cC9XZWJLaXQvaHR0cGQucGlkIjsKK215IEBkZWZhdWx0QXJncyA9IGdldERlZmF1bHRDb25maWdG
b3JUZXN0RGlyZWN0b3J5KCR0ZXN0RGlyZWN0b3J5KTsKK0BhcmdzID0gKEBkZWZhdWx0QXJncywg
QGFyZ3MpOworb3BlbkhUVFBEKEBhcmdzKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLXdlYmtpdC10ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cwppbmRleCAzOWVkNTAxLi5iZTJmODQ3IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3J1bi13ZWJraXQtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRl
c3RzCkBAIC02Nyw2ICs2Nyw3IEBAIHVzZSBUaW1lOjpIaVJlcyBxdyh0aW1lIHVzbGVlcCk7CiB1
c2UgTGlzdDo6VXRpbCAnc2h1ZmZsZSc7CiAKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3
ZWJraXRwZXJsOjpodHRwZDsKIHVzZSB3ZWJraXRkaXJzOwogdXNlIFZDU1V0aWxzOwogdXNlIFBP
U0lYOwpAQCAtNzUsOCArNzYsOCBAQCBzdWIgYnVpbGRQbGF0Zm9ybVJlc3VsdEhpZXJhcmNoeSgp
Owogc3ViIGJ1aWxkUGxhdGZvcm1UZXN0SGllcmFyY2h5KEApOwogc3ViIGNsb3NlQ3lncGF0aHMo
KTsKIHN1YiBjbG9zZUR1bXBUb29sKCk7Ci1zdWIgY2xvc2VIVFRQRCgpOwogc3ViIGNsb3NlV2Vi
U29ja2V0U2VydmVyKCk7CitzdWIgY29uZmlndXJlQW5kT3BlbkhUVFBESWZOZWVkZWQoKTsKIHN1
YiBjb3VudEFuZFByaW50TGVha3MoJCQkKTsKIHN1YiBjb3VudEZpbmlzaGVkVGVzdCgkJCQkKTsK
IHN1YiBkZWxldGVFeHBlY3RlZEFuZEFjdHVhbFJlc3VsdHMoJCk7CkBAIC05MSw3ICs5Miw2IEBA
IHN1YiByZXNvbHZlQW5kTWFrZVRlc3RSZXN1bHRzRGlyZWN0b3J5KCk7CiBzdWIgbnVtZXJpY2Nt
cCgkJCk7CiBzdWIgb3BlbkRpZmZUb29sKCk7CiBzdWIgb3BlbkR1bXBUb29sKCk7Ci1zdWIgb3Bl
bkhUVFBESWZOZWVkZWQoKTsKIHN1YiBwYXJzZUxlYWtzYW5kUHJpbnRVbmlxdWVMZWFrcygpOwog
c3ViIG9wZW5XZWJTb2NrZXRTZXJ2ZXJJZk5lZWRlZCgpOwogc3ViIHBhdGhjbXAoJCQpOwpAQCAt
MTQzLDcgKzE0Myw4IEBAIG15ICRzaG93SGVscCA9IDA7CiBteSAkc3RyaXBFZGl0aW5nQ2FsbGJh
Y2tzID0gaXNDeWd3aW4oKTsKIG15ICR0ZXN0SFRUUCA9IDE7CiBteSAkdGVzdE1lZGlhID0gMTsK
LW15ICR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9ICIvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMiOwor
bXkgJHRtcERpciA9ICIvdG1wIjsKK215ICR0ZXN0UmVzdWx0c0RpcmVjdG9yeSA9IEZpbGU6OlNw
ZWMtPmNhdGZpbGUoJHRtcERpciwgImxheW91dC10ZXN0LXJlc3VsdHMiKTsKIG15ICR0ZXN0c1Bl
ckR1bXBUb29sID0gMTAwMDsKIG15ICR0aHJlYWRlZCA9IDA7CiAjIER1bXBSZW5kZXJUcmVlIGhh
cyBhbiBpbnRlcm5hbCB0aW1lb3V0IG9mIDE1IHNlY29uZHMsIHNvIHRoaXMgbXVzdCBiZSA+IDE1
LgpAQCAtMzgzLDcgKzM4NCw4IEBAIG15IEBwbGF0Zm9ybVRlc3RIaWVyYXJjaHkgPSBidWlsZFBs
YXRmb3JtVGVzdEhpZXJhcmNoeShAcGxhdGZvcm1SZXN1bHRIaWVyYXJjaHkpCiAKICRleHBlY3Rl
ZERpcmVjdG9yeSA9ICRFTlZ7IldlYktpdEV4cGVjdGVkVGVzdFJlc3VsdHNEaXJlY3RvcnkifSBp
ZiAkRU5WeyJXZWJLaXRFeHBlY3RlZFRlc3RSZXN1bHRzRGlyZWN0b3J5In07CiAKLW15ICR0ZXN0
UmVzdWx0cyA9IGNhdGZpbGUoJHRlc3RSZXN1bHRzRGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIik7
CiskdGVzdFJlc3VsdHNEaXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCR0ZXN0UmVzdWx0
c0RpcmVjdG9yeSk7CitteSAkdGVzdFJlc3VsdHMgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0ZXN0
UmVzdWx0c0RpcmVjdG9yeSwgInJlc3VsdHMuaHRtbCIpOwogCiBwcmludCAiUnVubmluZyB0ZXN0
cyBmcm9tICR0ZXN0RGlyZWN0b3J5XG4iOwogaWYgKCRwaXhlbFRlc3RzKSB7CkBAIC02MDUsNyAr
NjA3LDcgQEAgZm9yIG15ICR0ZXN0IChAdGVzdHMpIHsKICAgICB9CiAKICAgICBpZiAoJHRlc3Qg
PX4gL15odHRwXC8vKSB7Ci0gICAgICAgIG9wZW5IVFRQRElmTmVlZGVkKCk7CisgICAgICAgIGNv
bmZpZ3VyZUFuZE9wZW5IVFRQRElmTmVlZGVkKCk7CiAgICAgICAgIGlmICgkdGVzdCAhfiAvXmh0
dHBcL3Rlc3RzXC9sb2NhbFwvLyAmJiAkdGVzdCAhfiAvXmh0dHBcL3Rlc3RzXC9zc2xcLy8gJiYg
JHRlc3QgIX4gL15odHRwXC90ZXN0c1wvd21sXC8vICYmICR0ZXN0ICF+IC9eaHR0cFwvdGVzdHNc
L21lZGlhXC8vKSB7CiAgICAgICAgICAgICBteSAkcGF0aCA9IGNhbm9ucGF0aCgkdGVzdCk7CiAg
ICAgICAgICAgICAkcGF0aCA9fiBzL15odHRwXC90ZXN0c1wvLy87CkBAIC05NDUsNyArOTQ3LDcg
QEAgcHJpbnRmICJcbiUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRpbWVcbiIsICh0aW1lIC0gJG92ZXJh
bGxTdGFydFRpbWUpIC4gIiI7CiAKICEkaXNEdW1wVG9vbE9wZW4gfHwgZGllICJGYWlsZWQgdG8g
Y2xvc2UgJGR1bXBUb29sTmFtZS5cbiI7CiAKLWNsb3NlSFRUUEQoKTsKKyRpc0h0dHBkT3BlbiA9
ICFjbG9zZUhUVFBEKCk7CiBjbG9zZVdlYlNvY2tldFNlcnZlcigpOwogCiAjIEJlY2F1c2UgbXVs
dGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgc2NyaXB0IGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseSB3
ZSBjYW5ub3QgCkBAIC0xMzQ1LDk1ICsxMzQ3LDIxIEBAIHN1YiBkdW1wVG9vbERpZENyYXNoKCkK
ICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpwcm9jZXNzSXNDcmFzaGluZygkZHVt
cFRvb2xQSUQpOwogfQogCi1zdWIgb3BlbkhUVFBESWZOZWVkZWQoKQorc3ViIGNvbmZpZ3VyZUFu
ZE9wZW5IVFRQRElmTmVlZGVkKCkKIHsKICAgICByZXR1cm4gaWYgJGlzSHR0cGRPcGVuOwotCi0g
ICAgbWtkaXIgIi90bXAvV2ViS2l0IjsKLSAgICAKLSAgICBpZiAoLWYgIi90bXAvV2ViS2l0L2h0
dHBkLnBpZCIpIHsKLSAgICAgICAgbXkgJG9sZFBpZCA9IGBjYXQgL3RtcC9XZWJLaXQvaHR0cGQu
cGlkYDsKLSAgICAgICAgY2hvbXAgJG9sZFBpZDsKLSAgICAgICAgaWYgKDAgIT0ga2lsbCAwLCAk
b2xkUGlkKSB7Ci0gICAgICAgICAgICBwcmludCAiXG5odHRwZCBpcyBhbHJlYWR5IHJ1bm5pbmc6
IHBpZCAkb2xkUGlkLCBraWxsaW5nLi4uXG4iOwotICAgICAgICAgICAga2lsbCAxNSwgJG9sZFBp
ZDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKLSAgICAg
ICAgICAgIHdoaWxlICgoMCAhPSBraWxsIDAsICRvbGRQaWQpICYmICRyZXRyeUNvdW50KSB7Ci0g
ICAgICAgICAgICAgICAgc2xlZXAgMTsKLSAgICAgICAgICAgICAgICAtLSRyZXRyeUNvdW50Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBkaWUgIlRpbWVkIG91dCB3
YWl0aW5nIGZvciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJldHJ5Q291bnQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgbXkgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vaHR0cGQiOwotICAg
IG15ICRodHRwZENvbmZpZzsKLSAgICBpZiAoaXNDeWd3aW4oKSkgewotICAgICAgICBteSAkd2lu
ZG93c0NvbmZEaXJlY3RvcnkgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mLyI7Ci0gICAgICAg
IHVubGVzcyAoLXggIi91c3IvbGliL2FwYWNoZS9saWJwaHA0LmRsbCIpIHsKLSAgICAgICAgICAg
IGNvcHkoIiR3aW5kb3dzQ29uZkRpcmVjdG9yeS9saWJwaHA0LmRsbCIsICIvdXNyL2xpYi9hcGFj
aGUvbGlicGhwNC5kbGwiKTsKLSAgICAgICAgICAgIGNobW9kKDA3NTUsICIvdXNyL2xpYi9hcGFj
aGUvbGlicGhwNC5kbGwiKTsKLSAgICAgICAgfQotICAgICAgICAkaHR0cGRDb25maWcgPSAiJHdp
bmRvd3NDb25mRGlyZWN0b3J5L2N5Z3dpbi1odHRwZC5jb25mIjsKLSAgICB9IGVsc2lmIChpc0Rl
YmlhbkJhc2VkKCkpIHsKLSAgICAgICAgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vYXBhY2hlMiI7
Ci0gICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hl
Mi1kZWJpYW4taHR0cGQuY29uZiI7Ci0gICAgfSBlbHNpZiAoaXNGZWRvcmFCYXNlZCgpKSB7Ci0g
ICAgICAgICRodHRwZFBhdGggPSAiL3Vzci9zYmluL2h0dHBkIjsKLSAgICAgICAgJGh0dHBkQ29u
ZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQuY29uZiI7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29u
Zi9odHRwZC5jb25mIjsKLSAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR0ZXN0RGlyZWN0b3J5L2h0
dHAvY29uZi9hcGFjaGUyLWh0dHBkLmNvbmYiIGlmIGAkaHR0cGRQYXRoIC12YCA9fiBtfEFwYWNo
ZS8yfDsKLSAgICB9Ci0gICAgbXkgJGRvY3VtZW50Um9vdCA9ICIkdGVzdERpcmVjdG9yeS9odHRw
L3Rlc3RzIjsKLSAgICBteSAkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5ID0gJHRlc3REaXJlY3Rv
cnkgLiAiL2Zhc3QvanMvcmVzb3VyY2VzIjsKLSAgICBteSAkdHlwZXNDb25maWcgPSAiJHRlc3RE
aXJlY3RvcnkvaHR0cC9jb25mL21pbWUudHlwZXMiOwotICAgIG15ICRsaXN0ZW4gPSAiMTI3LjAu
MC4xOiRodHRwZFBvcnQiOwogICAgIG15ICRhYnNUZXN0UmVzdWx0c0RpcmVjdG9yeSA9IHJlc29s
dmVBbmRNYWtlVGVzdFJlc3VsdHNEaXJlY3RvcnkoKTsKLSAgICBteSAkc3NsQ2VydGlmaWNhdGUg
PSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtpdC1odHRwZC5wZW0iOwotCisgICAgbXkg
JGxpc3RlbiA9ICIxMjcuMC4wLjE6JGh0dHBkUG9ydCI7CiAgICAgbXkgQGFyZ3MgPSAoCi0gICAg
ICAgICItZiIsICIkaHR0cGRDb25maWciLAotICAgICAgICAiLUMiLCAiRG9jdW1lbnRSb290IFwi
JGRvY3VtZW50Um9vdFwiIiwKLSAgICAgICAgIyBTZXR1cCBhIGxpbmsgdG8gd2hlcmUgdGhlIGpz
IHRlc3QgdGVtcGxhdGVzIGFyZSBzdG9yZWQsIHVzZSAtYyBzbyB0aGF0IG1vZF9hbGlhcyB3aWxs
IGFscmVhZHkgYmUgbGFvZGVkLgotICAgICAgICAiLWMiLCAiQWxpYXMgL2pzLXRlc3QtcmVzb3Vy
Y2VzIFwiJGpzVGVzdFJlc291cmNlc0RpcmVjdG9yeVwiIiwKLSAgICAgICAgIi1DIiwgIkxpc3Rl
biAkbGlzdGVuIiwKLSAgICAgICAgIi1jIiwgIlR5cGVzQ29uZmlnIFwiJHR5cGVzQ29uZmlnXCIi
LAogICAgICAgICAiLWMiLCAiQ3VzdG9tTG9nIFwiJGFic1Rlc3RSZXN1bHRzRGlyZWN0b3J5L2Fj
Y2Vzc19sb2cudHh0XCIgY29tbW9uIiwKICAgICAgICAgIi1jIiwgIkVycm9yTG9nIFwiJGFic1Rl
c3RSZXN1bHRzRGlyZWN0b3J5L2Vycm9yX2xvZy50eHRcIiIsCi0gICAgICAgICMgQXBhY2hlIHdv
dWxkbid0IHJ1biBDR0lzIHdpdGggcGVybWlzc2lvbnM9PTcwMCBvdGhlcndpc2UKLSAgICAgICAg
Ii1jIiwgIlVzZXIgXCIjJDxcIiIKKyAgICAgICAgIi1DIiwgIkxpc3RlbiAkbGlzdGVuIgogICAg
ICk7CiAKLSAgICAjIEZJWE1FOiBFbmFibGUgdGhpcyBvbiBXaW5kb3dzIG9uY2UgPHJkYXI6Ly9w
cm9ibGVtLzUzNDU5ODU+IGlzIGZpeGVkCi0gICAgIyBUaGUgdmVyc2lvbiBvZiBBcGFjaGUgd2Ug
dXNlIHdpdGggQ3lnd2luIGRvZXMgbm90IHN1cHBvcnQgU1NMCi0gICAgcHVzaChAYXJncywgIi1j
IiwgIlNTTENlcnRpZmljYXRlRmlsZSBcIiRzc2xDZXJ0aWZpY2F0ZVwiIikgdW5sZXNzIGlzQ3ln
d2luKCk7Ci0KLSAgICBvcGVuMihcKkhUVFBESU4sIFwqSFRUUERPVVQsICRodHRwZFBhdGgsIEBh
cmdzKTsKLQotICAgIG15ICRyZXRyeUNvdW50ID0gMjA7Ci0gICAgd2hpbGUgKHN5c3RlbSgiL3Vz
ci9iaW4vY3VybCAtcSAtLXNpbGVudCAtLXN0ZGVyciAtIC0tb3V0cHV0ICIgLiBGaWxlOjpTcGVj
LT5kZXZudWxsKCkgLiAiICRsaXN0ZW4iKSAmJiAkcmV0cnlDb3VudCkgewotICAgICAgICBzbGVl
cCAxOwotICAgICAgICAtLSRyZXRyeUNvdW50OwotICAgIH0KLSAgICAKLSAgICBkaWUgIlRpbWVk
IG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBzdGFydCIgdW5sZXNzICRyZXRyeUNvdW50OwotICAg
IAotICAgICRpc0h0dHBkT3BlbiA9IDE7Ci19Ci0KLXN1YiBjbG9zZUhUVFBEKCkKLXsKLSAgICBy
ZXR1cm4gaWYgISRpc0h0dHBkT3BlbjsKLQotICAgIGNsb3NlIEhUVFBESU47Ci0gICAgY2xvc2Ug
SFRUUERPVVQ7Ci0KLSAgICBraWxsIDE1LCBgY2F0IC90bXAvV2ViS2l0L2h0dHBkLnBpZGAgaWYg
LWYgIi90bXAvV2ViS2l0L2h0dHBkLnBpZCI7CisgICAgbXkgQGRlZmF1bHRBcmdzID0gZ2V0RGVm
YXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkoJHRlc3REaXJlY3RvcnkpOworICAgIEBhcmdzID0g
KEBkZWZhdWx0QXJncywgQGFyZ3MpOwogCi0gICAgJGlzSHR0cGRPcGVuID0gMDsKKyAgICAkaXNI
dHRwZE9wZW4gPSBvcGVuSFRUUEQoQGFyZ3MpOwogfQogCiBzdWIgb3BlbldlYlNvY2tldFNlcnZl
cklmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9o
dHRwZC5wbSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9odHRwZC5wbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjVkMjViCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCkBAIC0wLDAgKzEsMjA0IEBA
CisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQKKyMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3Vy
eWFrb3YgKGFwQG55cG9wLmNvbSkKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFuZHJhcyBCZWNzaSAo
YWJlY3NpQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMg
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgTW9kdWxlIHRvIHNoYXJlIGNvZGUgdG8gc3RhcnQgYW5kIHN0b3Ag
dGhlIEFwYWNoZSBkYWVtb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBG
aWxlOjpQYXRoOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgRmlsZTo6U3BlYzo6RnVuY3Rpb25zOwor
dXNlIElQQzo6T3BlbjI7CisKK3VzZSB3ZWJraXRkaXJzOworCitCRUdJTiB7CisgICB1c2UgRXhw
b3J0ZXIgICAoKTsKKyAgIG91ciAoJFZFUlNJT04sIEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ss
ICVFWFBPUlRfVEFHUyk7CisgICAkVkVSU0lPTiAgICAgPSAxLjAwOworICAgQElTQSAgICAgICAg
ID0gcXcoRXhwb3J0ZXIpOworICAgQEVYUE9SVCAgICAgID0gcXcoJmdldEhUVFBEUGF0aCAmZ2V0
RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkgJm9wZW5IVFRQRCAmY2xvc2VIVFRQRCAmZ2V0
SFRUUERQaWQgJnNldFNob3VsZFdhaXRGb3JVc2VySW50ZXJydXB0KTsKKyAgICVFWFBPUlRfVEFH
UyA9ICggKTsKKyAgIEBFWFBPUlRfT0sgICA9ICgpOworfQorCitteSAkdG1wRGlyID0gIi90bXAi
OworbXkgJGh0dHBkUGF0aDsKK215ICRodHRwZFBpZERpciA9IEZpbGU6OlNwZWMtPmNhdGZpbGUo
JHRtcERpciwgIldlYktpdCIpOworbXkgJGh0dHBkUGlkRmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZp
bGUoJGh0dHBkUGlkRGlyLCAiaHR0cGQucGlkIik7CitteSAkaHR0cGRQaWQ7CitteSAkd2FpdEZv
clVzZXJJbnRlcnJ1cHQgPSAwOworCiskU0lHeydJTlQnfSA9ICdjbGVhbnVwJzsKKyRTSUd7J1RF
Uk0nfSA9ICdjbGVhbnVwJzsKKworc3ViIGdldEhUVFBEUGF0aAoreworICAgIGlmIChpc0RlYmlh
bkJhc2VkKCkpIHsKKyAgICAgICAgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vYXBhY2hlMiI7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgJGh0dHBkUGF0aCA9ICIvdXNyL3NiaW4vaHR0cGQiOworICAg
IH0KKyAgICByZXR1cm4gJGh0dHBkUGF0aDsKK30KKworc3ViIGdldERlZmF1bHRDb25maWdGb3JU
ZXN0RGlyZWN0b3J5Cit7CisgICAgbXkgKCR0ZXN0RGlyZWN0b3J5KSA9IEBfOworICAgIGRpZSAi
Tm8gdGVzdCBkaXJlY3RvcnkgaGFzIGJlZW4gc3BlY2lmaWVkLiIgdW5sZXNzICgkdGVzdERpcmVj
dG9yeSk7CisKKyAgICBteSAkaHR0cGRDb25maWc7CisgICAgZ2V0SFRUUERQYXRoKCk7CisgICAg
aWYgKGlzQ3lnd2luKCkpIHsKKyAgICAgICAgbXkgJHdpbmRvd3NDb25mRGlyZWN0b3J5ID0gIiR0
ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi8iOworICAgICAgICB1bmxlc3MgKC14ICIvdXNyL2xpYi9h
cGFjaGUvbGlicGhwNC5kbGwiKSB7CisgICAgICAgICAgICBjb3B5KCIkd2luZG93c0NvbmZEaXJl
Y3RvcnkvbGlicGhwNC5kbGwiLCAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIik7CisgICAg
ICAgICAgICBjaG1vZCgwNzU1LCAiL3Vzci9saWIvYXBhY2hlL2xpYnBocDQuZGxsIik7CisgICAg
ICAgIH0KKyAgICAgICAgJGh0dHBkQ29uZmlnID0gIiR3aW5kb3dzQ29uZkRpcmVjdG9yeS9jeWd3
aW4taHR0cGQuY29uZiI7CisgICAgfSBlbHNpZiAoaXNEZWJpYW5CYXNlZCgpKSB7CisgICAgICAg
ICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvYXBhY2hlMi1kZWJpYW4t
aHR0cGQuY29uZiI7CisgICAgfSBlbHNpZiAoaXNGZWRvcmFCYXNlZCgpKSB7CisgICAgICAgICRo
dHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvZmVkb3JhLWh0dHBkLmNvbmYi
OworICAgIH0gZWxzZSB7CisgICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVjdG9yeS9o
dHRwL2NvbmYvaHR0cGQuY29uZiI7CisgICAgICAgICRodHRwZENvbmZpZyA9ICIkdGVzdERpcmVj
dG9yeS9odHRwL2NvbmYvYXBhY2hlMi1odHRwZC5jb25mIiBpZiBgJGh0dHBkUGF0aCAtdmAgPX4g
bXxBcGFjaGUvMnw7CisgICAgfQorCisgICAgbXkgJGRvY3VtZW50Um9vdCA9ICIkdGVzdERpcmVj
dG9yeS9odHRwL3Rlc3RzIjsKKyAgICBteSAkanNUZXN0UmVzb3VyY2VzRGlyZWN0b3J5ID0gJHRl
c3REaXJlY3RvcnkgLiAiL2Zhc3QvanMvcmVzb3VyY2VzIjsKKyAgICBteSAkdHlwZXNDb25maWcg
PSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL21pbWUudHlwZXMiOworICAgIG15ICRodHRwZExv
Y2tGaWxlID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5sb2NrIik7
CisgICAgbXkgJGh0dHBkU2NvcmVCb2FyZEZpbGUgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRodHRw
ZFBpZERpciwgImh0dHBkLnNjb3JlYm9hcmQiKTsKKworICAgIG15IEBodHRwZEFyZ3MgPSAoCisg
ICAgICAgICItZiIsICIkaHR0cGRDb25maWciLAorICAgICAgICAiLUMiLCAiRG9jdW1lbnRSb290
IFwiJGRvY3VtZW50Um9vdFwiIiwKKyAgICAgICAgIyBTZXR1cCBhIGxpbmsgdG8gd2hlcmUgdGhl
IGpzIHRlc3QgdGVtcGxhdGVzIGFyZSBzdG9yZWQsIHVzZSAtYyBzbyB0aGF0IG1vZF9hbGlhcyB3
aWxsIGFscmVhZHkgYmUgbG9hZGVkLgorICAgICAgICAiLWMiLCAiQWxpYXMgL2pzLXRlc3QtcmVz
b3VyY2VzIFwiJGpzVGVzdFJlc291cmNlc0RpcmVjdG9yeVwiIiwKKyAgICAgICAgIi1jIiwgIlR5
cGVzQ29uZmlnIFwiJHR5cGVzQ29uZmlnXCIiLAorICAgICAgICAjIEFwYWNoZSB3b3VsZG4ndCBy
dW4gQ0dJcyB3aXRoIHBlcm1pc3Npb25zPT03MDAgb3RoZXJ3aXNlCisgICAgICAgICItYyIsICJV
c2VyIFwiIyQ8XCIiLAorICAgICAgICAiLWMiLCAiTG9ja0ZpbGUgXCIkaHR0cGRMb2NrRmlsZVwi
IiwKKyAgICAgICAgIi1jIiwgIlBpZEZpbGUgXCIkaHR0cGRQaWRGaWxlXCIiLAorICAgICAgICAi
LWMiLCAiU2NvcmVCb2FyZEZpbGUgXCIkaHR0cGRTY29yZUJvYXJkRmlsZVwiIiwKKyAgICApOwor
CisgICAgIyBGSVhNRTogRW5hYmxlIHRoaXMgb24gV2luZG93cyBvbmNlIDxyZGFyOi8vcHJvYmxl
bS81MzQ1OTg1PiBpcyBmaXhlZAorICAgICMgVGhlIHZlcnNpb24gb2YgQXBhY2hlIHdlIHVzZSB3
aXRoIEN5Z3dpbiBkb2VzIG5vdCBzdXBwb3J0IFNTTAorICAgIG15ICRzc2xDZXJ0aWZpY2F0ZSA9
ICIkdGVzdERpcmVjdG9yeS9odHRwL2NvbmYvd2Via2l0LWh0dHBkLnBlbSI7CisgICAgcHVzaChA
aHR0cGRBcmdzLCAiLWMiLCAiU1NMQ2VydGlmaWNhdGVGaWxlIFwiJHNzbENlcnRpZmljYXRlXCIi
KSB1bmxlc3MgaXNDeWd3aW4oKTsKKworICAgIHJldHVybiBAaHR0cGRBcmdzOworCit9CisKK3N1
YiBvcGVuSFRUUEQoQCkKK3sKKyAgICBteSAoQGFyZ3MpID0gQF87CisgICAgZGllICJObyBIVFRQ
RCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHNwZWNpZmllZCIgdW5sZXNzIChAYXJncyk7CisgICAg
bWtkaXIoJGh0dHBkUGlkRGlyLCAwNzU1KTsKKyAgICBkaWUgIk5vIHdyaXRlIHBlcm1pc3Npb25z
IHRvICRodHRwZFBpZERpciIgdW5sZXNzICgtdyAkaHR0cGRQaWREaXIpOworCisgICAgaWYgKC1m
ICRodHRwZFBpZEZpbGUpIHsKKyAgICAgICAgb3BlbiAoUElERklMRSwgJGh0dHBkUGlkRmlsZSk7
CisgICAgICAgIG15ICRvbGRQaWQgPSA8UElERklMRT47CisgICAgICAgIGNob21wICRvbGRQaWQ7
CisgICAgICAgIGNsb3NlIFBJREZJTEU7CisgICAgICAgIGlmICgwICE9IGtpbGwgMCwgJG9sZFBp
ZCkgeworICAgICAgICAgICAgcHJpbnQgIlxuaHR0cGQgaXMgYWxyZWFkeSBydW5uaW5nOiBwaWQg
JG9sZFBpZCwga2lsbGluZy4uLlxuIjsKKyAgICAgICAgICAgIGtpbGwgMTUsICRvbGRQaWQ7CisK
KyAgICAgICAgICAgIG15ICRyZXRyeUNvdW50ID0gMjA7CisgICAgICAgICAgICB3aGlsZSAoKGtp
bGwoMCwgJG9sZFBpZCkgIT0gMCkgJiYgJHJldHJ5Q291bnQpIHsKKyAgICAgICAgICAgICAgICBz
bGVlcCAxOworICAgICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHF1aXQiIHVu
bGVzcyAkcmV0cnlDb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgICRodHRwZFBhdGggPSAi
L3Vzci9zYmluL2h0dHBkIiB1bmxlc3MgKCRodHRwZFBhdGgpOworCisgICAgb3BlbjIoXCpIVFRQ
RElOLCBcKkhUVFBET1VULCAkaHR0cGRQYXRoLCBAYXJncyk7CisKKyAgICBteSAkcmV0cnlDb3Vu
dCA9IDIwOworICAgIHdoaWxlICghLWYgJGh0dHBkUGlkRmlsZSAmJiAkcmV0cnlDb3VudCkgewor
ICAgICAgICBzbGVlcCAxOworICAgICAgICAtLSRyZXRyeUNvdW50OworICAgIH0KKworICAgIGlm
ICghJHJldHJ5Q291bnQpIHsKKyAgICAgICAgcm10cmVlICRodHRwZFBpZERpcjsKKyAgICAgICAg
ZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gc3RhcnQiOworICAgIH0KKworICAg
ICRodHRwZFBpZCA9IDxQSURGSUxFPiBpZiBvcGVuKFBJREZJTEUsICRodHRwZFBpZEZpbGUpOwor
ICAgIGNob21wICRodHRwZFBpZCBpZiAkaHR0cGRQaWQ7CisgICAgY2xvc2UgUElERklMRTsKKwor
ICAgIHdhaXRwaWQoJGh0dHBkUGlkLCAwKSBpZiAoJHdhaXRGb3JVc2VySW50ZXJydXB0ICYmICRo
dHRwZFBpZCk7CisKKyAgICByZXR1cm4gMTsKK30KKworc3ViIGNsb3NlSFRUUEQKK3sKKyAgICBj
bG9zZSBIVFRQRElOOworICAgIGNsb3NlIEhUVFBET1VUOworCisgICAgaWYgKCRodHRwZFBpZCkg
eworICAgICAgICBraWxsIDE1LCAkaHR0cGRQaWQ7CisgICAgICAgIG15ICRyZXRyeUNvdW50ID0g
MjA7CisgICAgICAgIHdoaWxlICgtZiAkaHR0cGRQaWRGaWxlICYmICRyZXRyeUNvdW50KSB7Cisg
ICAgICAgICAgICBzbGVlcCAxOworICAgICAgICAgICAgLS0kcmV0cnlDb3VudDsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghJHJldHJ5Q291bnQpIHsKKyAgICAgICAgICAgIHByaW50IFNUREVS
UiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHRlcm1pbmF0ZSFcbiI7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBybWRpciAkaHR0cGRQaWREaXI7
CisgICAgcmV0dXJuIDE7Cit9CisKK3N1YiBzZXRTaG91bGRXYWl0Rm9yVXNlckludGVycnVwdAor
eworICAgICR3YWl0Rm9yVXNlckludGVycnVwdCA9IDE7Cit9CisKK3N1YiBjbGVhbnVwCit7Cisg
ICAgY2xvc2VIVFRQRCgpOworICAgIHByaW50ICJcbiI7CisgICAgZXhpdCgxKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47202</attachid>
            <date>2010-01-22 07:09:17 -0800</date>
            <delta_ts>2010-01-27 15:08:48 -0800</delta_ts>
            <desc>Implement a locking and scheduling mechanism for http testing sessions</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>7117</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5MmQ0NDlkLi42YzAwZmIzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEt
MjIgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGEgbG9ja2luZyBh
bmQgc2NoZWR1bGluZyBtZWNoYW5pc20gZm9yIGh0dHAgdGVzdGluZyBzZXNzaW9ucyB0byBiZSBh
YmxlCisgICAgICAgIHRvIHJ1biBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgcnVuLXdlYmtpdC10ZXN0
cyBwYXJhbGxlbC4KKyAgICAgICAgU2V0dGluZyBXRUJLSVRfV0FJVF9GT1JfSFRUUEQ9MSBlbnZp
cm9ubWVudCB2YXJpYWJsZSBlbmFibGVzIHRoZSBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTMKKworICAgICAgICAqIFNjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG06
CisKIDIwMTAtMDEtMjEgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29t
PgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgNTM2MTUgYXMgaXQgY2F1c2VzIHR3
bwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IGJiNGZiMzQuLjgyZjUzMjQg
MTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cworKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTE1NCw2ICsxNTQsNyBAQCBt
eSAkdHJlYXRTa2lwcGVkID0gImRlZmF1bHQiOwogbXkgJHVzZVJlbW90ZUxpbmtzVG9UZXN0cyA9
IDA7CiBteSAkdXNlVmFsZ3JpbmQgPSAwOwogbXkgJHZlcmJvc2UgPSAwOworbXkgJHNob3VsZFdh
aXRGb3JIVFRQRCA9ICgkRU5WeyJXRUJLSVRfV0FJVF9GT1JfSFRUUEQifSk/MTowOwogCiBteSBA
bGVha3NGaWxlbmFtZXM7CiAKQEAgLTk0Myw3ICs5NDQsMTMgQEAgZm9yIG15ICR0ZXN0IChAdGVz
dHMpIHsKICAgICAgICAgfQogICAgIH0KIH0KLXByaW50ZiAiXG4lMC4yZnMgdG90YWwgdGVzdGlu
ZyB0aW1lXG4iLCAodGltZSAtICRvdmVyYWxsU3RhcnRUaW1lKSAuICIiOworbXkgJHRvdGFsVGVz
dGluZ1RpbWUgPSB0aW1lIC0gJG92ZXJhbGxTdGFydFRpbWU7CitpZiAoZ2V0V2FpdFRpbWUoKSA+
IDAuNSkgeworICAgIG15ICRub3JtYWxpemVkVGVzdGluZ1RpbWUgPSAkdG90YWxUZXN0aW5nVGlt
ZSAtIGdldFdhaXRUaW1lKCk7CisgICAgcHJpbnRmICJcbiUwLjJmcyBIVFRQRCB3YWl0aW5nIHRp
bWVcbiIsIGdldFdhaXRUaW1lKCkgLiAiIjsKKyAgICBwcmludGYgIiUwLjJmcyBub3JtYWxpemVk
IHRlc3RpbmcgdGltZSIsICRub3JtYWxpemVkVGVzdGluZ1RpbWUgLiAiIjsKK30KK3ByaW50ZiAi
XG4lMC4yZnMgdG90YWwgdGVzdGluZyB0aW1lXG4iLCAkdG90YWxUZXN0aW5nVGltZSAuICIiOwog
CiAhJGlzRHVtcFRvb2xPcGVuIHx8IGRpZSAiRmFpbGVkIHRvIGNsb3NlICRkdW1wVG9vbE5hbWUu
XG4iOwogCkBAIC0xMzYxLDYgKzEzNjgsNyBAQCBzdWIgY29uZmlndXJlQW5kT3BlbkhUVFBESWZO
ZWVkZWQoKQogICAgIG15IEBkZWZhdWx0QXJncyA9IGdldERlZmF1bHRDb25maWdGb3JUZXN0RGly
ZWN0b3J5KCR0ZXN0RGlyZWN0b3J5KTsKICAgICBAYXJncyA9IChAZGVmYXVsdEFyZ3MsIEBhcmdz
KTsKIAorICAgIHdhaXRGb3JIVFRQRExvY2soKSBpZiAkc2hvdWxkV2FpdEZvckhUVFBEOwogICAg
ICRpc0h0dHBkT3BlbiA9IG9wZW5IVFRQRChAYXJncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9odHRwZC5wbSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9odHRwZC5wbQppbmRleCA4YjVkMjViLi4xNzQ3MzUyIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG0KKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCkBAIC0zNCw2ICszNCw3IEBAIHVzZSB3YXJuaW5n
czsKIHVzZSBGaWxlOjpQYXRoOwogdXNlIEZpbGU6OlNwZWM7CiB1c2UgRmlsZTo6U3BlYzo6RnVu
Y3Rpb25zOwordXNlIEZjbnRsICc6ZmxvY2snOwogdXNlIElQQzo6T3BlbjI7CiAKIHVzZSB3ZWJr
aXRkaXJzOwpAQCAtNDMsMjAgKzQ0LDI1IEBAIEJFR0lOIHsKICAgIG91ciAoJFZFUlNJT04sIEBJ
U0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRfVEFHUyk7CiAgICAkVkVSU0lPTiAgICAg
PSAxLjAwOwogICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOwotICAgQEVYUE9SVCAgICAg
ID0gcXcoJmdldEhUVFBEUGF0aCAmZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkgJm9w
ZW5IVFRQRCAmY2xvc2VIVFRQRCAmZ2V0SFRUUERQaWQgJnNldFNob3VsZFdhaXRGb3JVc2VySW50
ZXJydXB0KTsKKyAgIEBFWFBPUlQgICAgICA9IHF3KCZnZXRIVFRQRFBhdGggJmdldERlZmF1bHRD
b25maWdGb3JUZXN0RGlyZWN0b3J5ICZvcGVuSFRUUEQgJmNsb3NlSFRUUEQgJmdldEhUVFBEUGlk
ICZzZXRTaG91bGRXYWl0Rm9yVXNlckludGVycnVwdCAmd2FpdEZvckhUVFBETG9jayAmZ2V0V2Fp
dFRpbWUpOwogICAgJUVYUE9SVF9UQUdTID0gKCApOwogICAgQEVYUE9SVF9PSyAgID0gKCk7CiB9
CiAKIG15ICR0bXBEaXIgPSAiL3RtcCI7CitteSAkaHR0cGRMb2NrUHJlZml4ID0gIldlYktpdEh0
dHBkLmxvY2suIjsKK215ICRteUxvY2tGaWxlOworbXkgJGV4Y2x1c2l2ZUxvY2sgPSBGaWxlOjpT
cGVjLT5jYXRmaWxlKCR0bXBEaXIsICJXZWJLaXQubG9jayIpOwogbXkgJGh0dHBkUGF0aDsKIG15
ICRodHRwZFBpZERpciA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcERpciwgIldlYktpdCIpOwog
bXkgJGh0dHBkUGlkRmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGh0dHBkUGlkRGlyLCAiaHR0
cGQucGlkIik7CiBteSAkaHR0cGRQaWQ7CiBteSAkd2FpdEZvclVzZXJJbnRlcnJ1cHQgPSAwOwor
bXkgJHdhaXRCZWdpblRpbWU7CitteSAkd2FpdEVuZFRpbWU7CiAKLSRTSUd7J0lOVCd9ID0gJ2Ns
ZWFudXAnOwotJFNJR3snVEVSTSd9ID0gJ2NsZWFudXAnOworJFNJR3snSU5UJ30gPSAnaGFuZGxl
SW50ZXJydXB0JzsKKyRTSUd7J1RFUk0nfSA9ICdoYW5kbGVJbnRlcnJ1cHQnOwogCiBzdWIgZ2V0
SFRUUERQYXRoCiB7CkBAIC0xNDEsNyArMTQ3LDEwIEBAIHN1YiBvcGVuSFRUUEQoQCkKICAgICAg
ICAgICAgICAgICAtLSRyZXRyeUNvdW50OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBk
aWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJldHJ5Q291
bnQ7CisgICAgICAgICAgICBpZiAoISRyZXRyeUNvdW50KSB7CisgICAgICAgICAgICAgICAgY2xl
YW51cCgpOworICAgICAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBk
IHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTU2LDcgKzE2NSw3IEBAIHN1YiBvcGVuSFRUUEQoQCkKICAgICB9CiAKICAg
ICBpZiAoISRyZXRyeUNvdW50KSB7Ci0gICAgICAgIHJtdHJlZSAkaHR0cGRQaWREaXI7CisgICAg
ICAgIGNsZWFudXAoKTsKICAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQg
dG8gc3RhcnQiOwogICAgIH0KIApAQCAtMTc0LDIwICsxODMsMTkgQEAgc3ViIGNsb3NlSFRUUEQK
ICAgICBjbG9zZSBIVFRQRElOOwogICAgIGNsb3NlIEhUVFBET1VUOwogCisgICAgbXkgJHJldHJ5
Q291bnQgPSAyMDsKICAgICBpZiAoJGh0dHBkUGlkKSB7CiAgICAgICAgIGtpbGwgMTUsICRodHRw
ZFBpZDsKLSAgICAgICAgbXkgJHJldHJ5Q291bnQgPSAyMDsKICAgICAgICAgd2hpbGUgKC1mICRo
dHRwZFBpZEZpbGUgJiYgJHJldHJ5Q291bnQpIHsKICAgICAgICAgICAgIHNsZWVwIDE7CiAgICAg
ICAgICAgICAtLSRyZXRyeUNvdW50OwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCEkcmV0cnlD
b3VudCkgewotICAgICAgICAgICAgcHJpbnQgU1RERVJSICJUaW1lZCBvdXQgd2FpdGluZyBmb3Ig
aHR0cGQgdG8gdGVybWluYXRlIVxuIjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
CiAgICAgfQotICAgIHJtZGlyICRodHRwZFBpZERpcjsKKyAgICBjbGVhbnVwKCk7CisgICAgaWYg
KCEkcmV0cnlDb3VudCkgeworICAgICAgICBwcmludCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5n
IGZvciBodHRwZCB0byB0ZXJtaW5hdGUhXG4iOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAg
ICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE5Niw5ICsyMDQsOTUgQEAgc3ViIHNldFNob3VsZFdhaXRG
b3JVc2VySW50ZXJydXB0CiAgICAgJHdhaXRGb3JVc2VySW50ZXJydXB0ID0gMTsKIH0KIAotc3Vi
IGNsZWFudXAKK3N1YiBoYW5kbGVJbnRlcnJ1cHQKIHsKICAgICBjbG9zZUhUVFBEKCk7CiAgICAg
cHJpbnQgIlxuIjsKICAgICBleGl0KDEpOwogfQorCitzdWIgY2xlYW51cAoreworICAgIHJtZGly
ICRodHRwZFBpZERpcjsKKyAgICB1bmxpbmsgJGV4Y2x1c2l2ZUxvY2s7CisgICAgdW5saW5rICRt
eUxvY2tGaWxlIGlmICRteUxvY2tGaWxlOworfQorCitzdWIgZmlsdGVyTnVtYmVyCit7CisgICAg
bXkgKCRsb2NrRmlsZSkgPSBAXzsKKyAgICBteSAkbnVtYmVyID0gLTE7CisgICAgJG51bWJlciA9
IHN1YnN0cigkbG9ja0ZpbGUsIGxlbmd0aCgkaHR0cGRMb2NrUHJlZml4KSkgIGlmICRsb2NrRmls
ZTsKKyAgICByZXR1cm4gJG51bWJlcjsKK30KKworc3ViIGdldExvY2tGaWxlcworeworICAgIG9w
ZW5kaXIgKFRNUERJUiwgJHRtcERpcik7CisgICAgbXkgQGxvY2tGaWxlcyA9IGdyZXAge20vXiRo
dHRwZExvY2tQcmVmaXhcZCskL30gcmVhZGRpciBUTVBESVI7CisgICAgQGxvY2tGaWxlcyA9IHNv
cnQgeyBmaWx0ZXJOdW1iZXIoJGEpIDw9PiBmaWx0ZXJOdW1iZXIoJGIpIH0gQGxvY2tGaWxlczsK
KyAgICBjbG9zZWRpciBUTVBESVI7CisgICAgcmV0dXJuIEBsb2NrRmlsZXM7Cit9CisKK3N1YiBn
ZXROZXh0QXZhaWxhYmxlTG9ja051bWJlcgoreworICAgIG15IEBsb2NrRmlsZXMgPSBnZXRMb2Nr
RmlsZXMoKTsKKyAgICBteSAkbnVtYmVyID0gLTE7CisgICAgJG51bWJlciA9IGZpbHRlck51bWJl
cigkbG9ja0ZpbGVzWy0xXSkgaWYgQGxvY2tGaWxlczsKKyAgICArKyRudW1iZXI7CisgICAgcmV0
dXJuICRudW1iZXI7Cit9CisKK3N1YiBnZXRSdW5uaW5nTG9ja051bWJlcgoreworICAgIG15IEBs
b2NrRmlsZXMgPSBnZXRMb2NrRmlsZXMoKTsKKyAgICBteSAkbnVtYmVyID0gMDsKKyAgICAkbnVt
YmVyID0gZmlsdGVyTnVtYmVyKCRsb2NrRmlsZXNbMF0pIGlmIEBsb2NrRmlsZXM7CisgICAgcmV0
dXJuICRudW1iZXI7Cit9CisKK3N1YiB3YWl0Rm9ySFRUUERMb2NrCit7CisgICAgJHdhaXRCZWdp
blRpbWUgPSB0aW1lOworICAgIGlmIChzY2hlZHVsZUh0dHBUZXN0aW5nKCkgPiAxKSB7CisgICAg
ICAgIG15ICRjdXJyZW50TG9ja0ZpbGUgPSBjYXRmaWxlKCR0bXBEaXIsICIkaHR0cGRMb2NrUHJl
Zml4Ii5nZXRSdW5uaW5nTG9ja051bWJlcigpKTsKKyAgICAgICAgbXkgJGN1cnJlbnRMb2NrUGlk
ID0gPExPQ0tGSUxFPiBpZiAoLWYgJGN1cnJlbnRMb2NrRmlsZSAmJiBvcGVuKExPQ0tGSUxFLCAi
PCRjdXJyZW50TG9ja0ZpbGUiKSk7CisgICAgICAgIGlmICgkY3VycmVudExvY2tQaWQpIHsKKyAg
ICAgICAgICAgIHdoaWxlKCRjdXJyZW50TG9ja1BpZCAmJiAkY3VycmVudExvY2tQaWQgIT0gJCQp
IHsKKyAgICAgICAgICAgICAgICAkY3VycmVudExvY2tGaWxlID0gY2F0ZmlsZSgkdG1wRGlyLCAi
JGh0dHBkTG9ja1ByZWZpeCIuZ2V0UnVubmluZ0xvY2tOdW1iZXIoKSk7CisgICAgICAgICAgICAg
ICAgaWYgKCRjdXJyZW50TG9ja0ZpbGUgZXEgJG15TG9ja0ZpbGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgJGN1cnJlbnRMb2NrUGlkID0gPExPQ0tGSUxFPiBpZiBvcGVuKExPQ0tGSUxFLCAiPCRj
dXJyZW50TG9ja0ZpbGUiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRjdXJyZW50TG9ja1Bp
ZCAhPSAkJCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJcbiMjI1Nv
bWJvZHkgZGlkIGEgbmFzdHkgdGhpbmc6IG5vdCBteSBwaWQgaXMgaW4gbXkgbG9ja2ZpbGUuIyMj
XG4iCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBzbGVlcCAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICAkd2FpdEVuZFRpbWUgPSB0aW1lOworfQorCitzdWIg
c2NoZWR1bGVIdHRwVGVzdGluZworeworICAgIHdoaWxlICghKG9wZW4oRVhMT0NLLCAiPiRleGNs
dXNpdmVMb2NrIikgJiYgZmxvY2soRVhMT0NLLCBMT0NLX0VYfExPQ0tfTkIpKSkge30KKyAgICAk
bXlMb2NrRmlsZSA9IGNhdGZpbGUoJHRtcERpciwgIiRodHRwZExvY2tQcmVmaXgiLmdldE5leHRB
dmFpbGFibGVMb2NrTnVtYmVyKCkpOworICAgIG9wZW4oTE9DS0ZJTEUsICI+JG15TG9ja0ZpbGUi
KTsKKyAgICBwcmludCBMT0NLRklMRSAiJCQiOworICAgIHByaW50IEVYTE9DSyAiJCQiOworICAg
IGNsb3NlKExPQ0tGSUxFKTsKKyAgICBjbG9zZShFWExPQ0spOworICAgIHVubGluayAkZXhjbHVz
aXZlTG9jazsKKyAgICByZXR1cm4gc2NhbGFyIGdldExvY2tGaWxlcygpOworfQorCitzdWIgZ2V0
V2FpdFRpbWUKK3sKKyAgICBteSAkd2FpdFRpbWUgPSAwOworICAgIGlmICgkd2FpdEJlZ2luVGlt
ZSAmJiAkd2FpdEVuZFRpbWUpIHsKKyAgICAgICAgJHdhaXRUaW1lID0gJHdhaXRFbmRUaW1lIC0g
JHdhaXRCZWdpblRpbWU7CisgICAgfQorICAgIHJldHVybiAkd2FpdFRpbWU7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47565</attachid>
            <date>2010-01-27 15:08:48 -0800</date>
            <delta_ts>2010-01-28 07:17:07 -0800</delta_ts>
            <desc>Rebase and update the changelog and fix a comment typo</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>7219</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjMTc2Mzg3Li41YzU1MmYwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEt
MjcgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGEgbG9ja2luZyBh
bmQgc2NoZWR1bGluZyBtZWNoYW5pc20gZm9yIGh0dHAgdGVzdGluZyBzZXNzaW9ucyB0byBiZSBh
YmxlCisgICAgICAgIHRvIHJ1biBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgcnVuLXdlYmtpdC10ZXN0
cyBwYXJhbGxlbCBvbiB0aGUgc2FtZSBtYWNoaW5lLgorICAgICAgICBFeHBvcnRpbmcgV0VCS0lU
X1dBSVRfRk9SX0hUVFBEPTEgZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIHRlc3RpbmcgZW5h
YmxlcyB0aGlzIGZlYXR1cmUKKyAgICAgICAgb3RoZXJ3aXNlIHRoaXMgcGF0Y2ggaGFzIG5vIGVm
ZmVjdCBvbiB0aGUgdGVzdGluZyB3aGF0c29ldmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTMKKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdl
YmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG06CisKIDIw
MTAtMDEtMjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJ1YmJlcnN0YW1wZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3J1bi13ZWJraXQtdGVzdHMKaW5kZXggYmI0ZmIzNC4uODJmNTMyNCAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvcnVuLXdlYmtpdC10ZXN0cwpAQCAtMTU0LDYgKzE1NCw3IEBAIG15ICR0cmVhdFNraXBw
ZWQgPSAiZGVmYXVsdCI7CiBteSAkdXNlUmVtb3RlTGlua3NUb1Rlc3RzID0gMDsKIG15ICR1c2VW
YWxncmluZCA9IDA7CiBteSAkdmVyYm9zZSA9IDA7CitteSAkc2hvdWxkV2FpdEZvckhUVFBEID0g
KCRFTlZ7IldFQktJVF9XQUlUX0ZPUl9IVFRQRCJ9KT8xOjA7CiAKIG15IEBsZWFrc0ZpbGVuYW1l
czsKIApAQCAtOTQzLDcgKzk0NCwxMyBAQCBmb3IgbXkgJHRlc3QgKEB0ZXN0cykgewogICAgICAg
ICB9CiAgICAgfQogfQotcHJpbnRmICJcbiUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRpbWVcbiIsICh0
aW1lIC0gJG92ZXJhbGxTdGFydFRpbWUpIC4gIiI7CitteSAkdG90YWxUZXN0aW5nVGltZSA9IHRp
bWUgLSAkb3ZlcmFsbFN0YXJ0VGltZTsKK2lmIChnZXRXYWl0VGltZSgpID4gMC41KSB7CisgICAg
bXkgJG5vcm1hbGl6ZWRUZXN0aW5nVGltZSA9ICR0b3RhbFRlc3RpbmdUaW1lIC0gZ2V0V2FpdFRp
bWUoKTsKKyAgICBwcmludGYgIlxuJTAuMmZzIEhUVFBEIHdhaXRpbmcgdGltZVxuIiwgZ2V0V2Fp
dFRpbWUoKSAuICIiOworICAgIHByaW50ZiAiJTAuMmZzIG5vcm1hbGl6ZWQgdGVzdGluZyB0aW1l
IiwgJG5vcm1hbGl6ZWRUZXN0aW5nVGltZSAuICIiOworfQorcHJpbnRmICJcbiUwLjJmcyB0b3Rh
bCB0ZXN0aW5nIHRpbWVcbiIsICR0b3RhbFRlc3RpbmdUaW1lIC4gIiI7CiAKICEkaXNEdW1wVG9v
bE9wZW4gfHwgZGllICJGYWlsZWQgdG8gY2xvc2UgJGR1bXBUb29sTmFtZS5cbiI7CiAKQEAgLTEz
NjEsNiArMTM2OCw3IEBAIHN1YiBjb25maWd1cmVBbmRPcGVuSFRUUERJZk5lZWRlZCgpCiAgICAg
bXkgQGRlZmF1bHRBcmdzID0gZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkoJHRlc3RE
aXJlY3RvcnkpOwogICAgIEBhcmdzID0gKEBkZWZhdWx0QXJncywgQGFyZ3MpOwogCisgICAgd2Fp
dEZvckhUVFBETG9jaygpIGlmICRzaG91bGRXYWl0Rm9ySFRUUEQ7CiAgICAgJGlzSHR0cGRPcGVu
ID0gb3BlbkhUVFBEKEBhcmdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL2h0dHBkLnBtIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0
dHBkLnBtCmluZGV4IDhiNWQyNWIuLjVjOTQ0YmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9odHRwZC5wbQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvaHR0cGQucG0KQEAgLTM0LDYgKzM0LDcgQEAgdXNlIHdhcm5pbmdzOwogdXNlIEZpbGU6
OlBhdGg7CiB1c2UgRmlsZTo6U3BlYzsKIHVzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7Cit1c2Ug
RmNudGwgJzpmbG9jayc7CiB1c2UgSVBDOjpPcGVuMjsKIAogdXNlIHdlYmtpdGRpcnM7CkBAIC00
MywyMCArNDQsMjUgQEAgQkVHSU4gewogICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwg
QEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICBA
SVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7Ci0gICBARVhQT1JUICAgICAgPSBxdygmZ2V0SFRU
UERQYXRoICZnZXREZWZhdWx0Q29uZmlnRm9yVGVzdERpcmVjdG9yeSAmb3BlbkhUVFBEICZjbG9z
ZUhUVFBEICZnZXRIVFRQRFBpZCAmc2V0U2hvdWxkV2FpdEZvclVzZXJJbnRlcnJ1cHQpOworICAg
QEVYUE9SVCAgICAgID0gcXcoJmdldEhUVFBEUGF0aCAmZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3RE
aXJlY3RvcnkgJm9wZW5IVFRQRCAmY2xvc2VIVFRQRCAmZ2V0SFRUUERQaWQgJnNldFNob3VsZFdh
aXRGb3JVc2VySW50ZXJydXB0ICZ3YWl0Rm9ySFRUUERMb2NrICZnZXRXYWl0VGltZSk7CiAgICAl
RVhQT1JUX1RBR1MgPSAoICk7CiAgICBARVhQT1JUX09LICAgPSAoKTsKIH0KIAogbXkgJHRtcERp
ciA9ICIvdG1wIjsKK215ICRodHRwZExvY2tQcmVmaXggPSAiV2ViS2l0SHR0cGQubG9jay4iOwor
bXkgJG15TG9ja0ZpbGU7CitteSAkZXhjbHVzaXZlTG9jayA9IEZpbGU6OlNwZWMtPmNhdGZpbGUo
JHRtcERpciwgIldlYktpdC5sb2NrIik7CiBteSAkaHR0cGRQYXRoOwogbXkgJGh0dHBkUGlkRGly
ID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdG1wRGlyLCAiV2ViS2l0Iik7CiBteSAkaHR0cGRQaWRG
aWxlID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5waWQiKTsKIG15
ICRodHRwZFBpZDsKIG15ICR3YWl0Rm9yVXNlckludGVycnVwdCA9IDA7CitteSAkd2FpdEJlZ2lu
VGltZTsKK215ICR3YWl0RW5kVGltZTsKIAotJFNJR3snSU5UJ30gPSAnY2xlYW51cCc7Ci0kU0lH
eydURVJNJ30gPSAnY2xlYW51cCc7CiskU0lHeydJTlQnfSA9ICdoYW5kbGVJbnRlcnJ1cHQnOwor
JFNJR3snVEVSTSd9ID0gJ2hhbmRsZUludGVycnVwdCc7CiAKIHN1YiBnZXRIVFRQRFBhdGgKIHsK
QEAgLTE0MSw3ICsxNDcsMTAgQEAgc3ViIG9wZW5IVFRQRChAKQogICAgICAgICAgICAgICAgIC0t
JHJldHJ5Q291bnQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0
IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKKyAgICAgICAg
ICAgIGlmICghJHJldHJ5Q291bnQpIHsKKyAgICAgICAgICAgICAgICBjbGVhbnVwKCk7CisgICAg
ICAgICAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gcXVpdCIgdW5s
ZXNzICRyZXRyeUNvdW50OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0x
NTYsNyArMTY1LDcgQEAgc3ViIG9wZW5IVFRQRChAKQogICAgIH0KIAogICAgIGlmICghJHJldHJ5
Q291bnQpIHsKLSAgICAgICAgcm10cmVlICRodHRwZFBpZERpcjsKKyAgICAgICAgY2xlYW51cCgp
OwogICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBzdGFydCI7CiAg
ICAgfQogCkBAIC0xNzQsMjAgKzE4MywxOSBAQCBzdWIgY2xvc2VIVFRQRAogICAgIGNsb3NlIEhU
VFBESU47CiAgICAgY2xvc2UgSFRUUERPVVQ7CiAKKyAgICBteSAkcmV0cnlDb3VudCA9IDIwOwog
ICAgIGlmICgkaHR0cGRQaWQpIHsKICAgICAgICAga2lsbCAxNSwgJGh0dHBkUGlkOwotICAgICAg
ICBteSAkcmV0cnlDb3VudCA9IDIwOwogICAgICAgICB3aGlsZSAoLWYgJGh0dHBkUGlkRmlsZSAm
JiAkcmV0cnlDb3VudCkgewogICAgICAgICAgICAgc2xlZXAgMTsKICAgICAgICAgICAgIC0tJHJl
dHJ5Q291bnQ7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoISRyZXRyeUNvdW50KSB7Ci0gICAg
ICAgICAgICBwcmludCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byB0ZXJt
aW5hdGUhXG4iOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KICAgICB9Ci0gICAg
cm1kaXIgJGh0dHBkUGlkRGlyOworICAgIGNsZWFudXAoKTsKKyAgICBpZiAoISRyZXRyeUNvdW50
KSB7CisgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRv
IHRlcm1pbmF0ZSFcbiI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gMTsK
IH0KIApAQCAtMTk2LDkgKzIwNCw5NSBAQCBzdWIgc2V0U2hvdWxkV2FpdEZvclVzZXJJbnRlcnJ1
cHQKICAgICAkd2FpdEZvclVzZXJJbnRlcnJ1cHQgPSAxOwogfQogCi1zdWIgY2xlYW51cAorc3Vi
IGhhbmRsZUludGVycnVwdAogewogICAgIGNsb3NlSFRUUEQoKTsKICAgICBwcmludCAiXG4iOwog
ICAgIGV4aXQoMSk7CiB9CisKK3N1YiBjbGVhbnVwCit7CisgICAgcm1kaXIgJGh0dHBkUGlkRGly
OworICAgIHVubGluayAkZXhjbHVzaXZlTG9jazsKKyAgICB1bmxpbmsgJG15TG9ja0ZpbGUgaWYg
JG15TG9ja0ZpbGU7Cit9CisKK3N1YiBmaWx0ZXJOdW1iZXIKK3sKKyAgICBteSAoJGxvY2tGaWxl
KSA9IEBfOworICAgIG15ICRudW1iZXIgPSAtMTsKKyAgICAkbnVtYmVyID0gc3Vic3RyKCRsb2Nr
RmlsZSwgbGVuZ3RoKCRodHRwZExvY2tQcmVmaXgpKSAgaWYgJGxvY2tGaWxlOworICAgIHJldHVy
biAkbnVtYmVyOworfQorCitzdWIgZ2V0TG9ja0ZpbGVzCit7CisgICAgb3BlbmRpciAoVE1QRElS
LCAkdG1wRGlyKTsKKyAgICBteSBAbG9ja0ZpbGVzID0gZ3JlcCB7bS9eJGh0dHBkTG9ja1ByZWZp
eFxkKyQvfSByZWFkZGlyIFRNUERJUjsKKyAgICBAbG9ja0ZpbGVzID0gc29ydCB7IGZpbHRlck51
bWJlcigkYSkgPD0+IGZpbHRlck51bWJlcigkYikgfSBAbG9ja0ZpbGVzOworICAgIGNsb3NlZGly
IFRNUERJUjsKKyAgICByZXR1cm4gQGxvY2tGaWxlczsKK30KKworc3ViIGdldE5leHRBdmFpbGFi
bGVMb2NrTnVtYmVyCit7CisgICAgbXkgQGxvY2tGaWxlcyA9IGdldExvY2tGaWxlcygpOworICAg
IG15ICRudW1iZXIgPSAtMTsKKyAgICAkbnVtYmVyID0gZmlsdGVyTnVtYmVyKCRsb2NrRmlsZXNb
LTFdKSBpZiBAbG9ja0ZpbGVzOworICAgICsrJG51bWJlcjsKKyAgICByZXR1cm4gJG51bWJlcjsK
K30KKworc3ViIGdldFJ1bm5pbmdMb2NrTnVtYmVyCit7CisgICAgbXkgQGxvY2tGaWxlcyA9IGdl
dExvY2tGaWxlcygpOworICAgIG15ICRudW1iZXIgPSAwOworICAgICRudW1iZXIgPSBmaWx0ZXJO
dW1iZXIoJGxvY2tGaWxlc1swXSkgaWYgQGxvY2tGaWxlczsKKyAgICByZXR1cm4gJG51bWJlcjsK
K30KKworc3ViIHdhaXRGb3JIVFRQRExvY2sKK3sKKyAgICAkd2FpdEJlZ2luVGltZSA9IHRpbWU7
CisgICAgaWYgKHNjaGVkdWxlSHR0cFRlc3RpbmcoKSA+IDEpIHsKKyAgICAgICAgbXkgJGN1cnJl
bnRMb2NrRmlsZSA9IGNhdGZpbGUoJHRtcERpciwgIiRodHRwZExvY2tQcmVmaXgiLmdldFJ1bm5p
bmdMb2NrTnVtYmVyKCkpOworICAgICAgICBteSAkY3VycmVudExvY2tQaWQgPSA8TE9DS0ZJTEU+
IGlmICgtZiAkY3VycmVudExvY2tGaWxlICYmIG9wZW4oTE9DS0ZJTEUsICI8JGN1cnJlbnRMb2Nr
RmlsZSIpKTsKKyAgICAgICAgaWYgKCRjdXJyZW50TG9ja1BpZCkgeworICAgICAgICAgICAgd2hp
bGUoJGN1cnJlbnRMb2NrUGlkICYmICRjdXJyZW50TG9ja1BpZCAhPSAkJCkgeworICAgICAgICAg
ICAgICAgICRjdXJyZW50TG9ja0ZpbGUgPSBjYXRmaWxlKCR0bXBEaXIsICIkaHR0cGRMb2NrUHJl
Zml4Ii5nZXRSdW5uaW5nTG9ja051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBpZiAoJGN1cnJl
bnRMb2NrRmlsZSBlcSAkbXlMb2NrRmlsZSkgeworICAgICAgICAgICAgICAgICAgICAkY3VycmVu
dExvY2tQaWQgPSA8TE9DS0ZJTEU+IGlmIG9wZW4oTE9DS0ZJTEUsICI8JGN1cnJlbnRMb2NrRmls
ZSIpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnRMb2NrUGlkICE9ICQkKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIlxuIyMjU29tZWJvZHkgZGlkIGEg
bmFzdHkgdGhpbmc6IG5vdCBteSBwaWQgaXMgaW4gbXkgbG9ja2ZpbGUuIyMjXG4iCisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBzbGVlcCAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICAkd2FpdEVuZFRpbWUgPSB0aW1lOworfQorCitzdWIgc2NoZWR1bGVIdHRw
VGVzdGluZworeworICAgIHdoaWxlICghKG9wZW4oRVhMT0NLLCAiPiRleGNsdXNpdmVMb2NrIikg
JiYgZmxvY2soRVhMT0NLLCBMT0NLX0VYfExPQ0tfTkIpKSkge30KKyAgICAkbXlMb2NrRmlsZSA9
IGNhdGZpbGUoJHRtcERpciwgIiRodHRwZExvY2tQcmVmaXgiLmdldE5leHRBdmFpbGFibGVMb2Nr
TnVtYmVyKCkpOworICAgIG9wZW4oTE9DS0ZJTEUsICI+JG15TG9ja0ZpbGUiKTsKKyAgICBwcmlu
dCBMT0NLRklMRSAiJCQiOworICAgIHByaW50IEVYTE9DSyAiJCQiOworICAgIGNsb3NlKExPQ0tG
SUxFKTsKKyAgICBjbG9zZShFWExPQ0spOworICAgIHVubGluayAkZXhjbHVzaXZlTG9jazsKKyAg
ICByZXR1cm4gc2NhbGFyIGdldExvY2tGaWxlcygpOworfQorCitzdWIgZ2V0V2FpdFRpbWUKK3sK
KyAgICBteSAkd2FpdFRpbWUgPSAwOworICAgIGlmICgkd2FpdEJlZ2luVGltZSAmJiAkd2FpdEVu
ZFRpbWUpIHsKKyAgICAgICAgJHdhaXRUaW1lID0gJHdhaXRFbmRUaW1lIC0gJHdhaXRCZWdpblRp
bWU7CisgICAgfQorICAgIHJldHVybiAkd2FpdFRpbWU7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47618</attachid>
            <date>2010-01-28 07:17:07 -0800</date>
            <delta_ts>2010-01-29 16:22:34 -0800</delta_ts>
            <desc>Style fixes and simlifications as discussed on IRC</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>7175</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzNTJiNzk2Li42N2QxNmJmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEt
MjggIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGEgbG9ja2luZyBh
bmQgc2NoZWR1bGluZyBtZWNoYW5pc20gZm9yIGh0dHAgdGVzdGluZyBzZXNzaW9ucyB0byBiZSBh
YmxlCisgICAgICAgIHRvIHJ1biBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgcnVuLXdlYmtpdC10ZXN0
cyBwYXJhbGxlbCBvbiB0aGUgc2FtZSBtYWNoaW5lLgorICAgICAgICBFeHBvcnRpbmcgV0VCS0lU
X1dBSVRfRk9SX0hUVFBEPTEgZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIHRlc3RpbmcgZW5h
YmxlcyB0aGlzIGZlYXR1cmUKKyAgICAgICAgb3RoZXJ3aXNlIHRoaXMgcGF0Y2ggaGFzIG5vIGVm
ZmVjdCBvbiB0aGUgdGVzdGluZyB3aGF0c29ldmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTMKKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdl
YmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG06CisKIDIw
MTAtMDEtMjggIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMKaW5kZXggYmI0ZmIzNC4uODJmNTMyNCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdl
YmtpdC10ZXN0cwpAQCAtMTU0LDYgKzE1NCw3IEBAIG15ICR0cmVhdFNraXBwZWQgPSAiZGVmYXVs
dCI7CiBteSAkdXNlUmVtb3RlTGlua3NUb1Rlc3RzID0gMDsKIG15ICR1c2VWYWxncmluZCA9IDA7
CiBteSAkdmVyYm9zZSA9IDA7CitteSAkc2hvdWxkV2FpdEZvckhUVFBEID0gKCRFTlZ7IldFQktJ
VF9XQUlUX0ZPUl9IVFRQRCJ9KT8xOjA7CiAKIG15IEBsZWFrc0ZpbGVuYW1lczsKIApAQCAtOTQz
LDcgKzk0NCwxMyBAQCBmb3IgbXkgJHRlc3QgKEB0ZXN0cykgewogICAgICAgICB9CiAgICAgfQog
fQotcHJpbnRmICJcbiUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRpbWVcbiIsICh0aW1lIC0gJG92ZXJh
bGxTdGFydFRpbWUpIC4gIiI7CitteSAkdG90YWxUZXN0aW5nVGltZSA9IHRpbWUgLSAkb3ZlcmFs
bFN0YXJ0VGltZTsKK2lmIChnZXRXYWl0VGltZSgpID4gMC41KSB7CisgICAgbXkgJG5vcm1hbGl6
ZWRUZXN0aW5nVGltZSA9ICR0b3RhbFRlc3RpbmdUaW1lIC0gZ2V0V2FpdFRpbWUoKTsKKyAgICBw
cmludGYgIlxuJTAuMmZzIEhUVFBEIHdhaXRpbmcgdGltZVxuIiwgZ2V0V2FpdFRpbWUoKSAuICIi
OworICAgIHByaW50ZiAiJTAuMmZzIG5vcm1hbGl6ZWQgdGVzdGluZyB0aW1lIiwgJG5vcm1hbGl6
ZWRUZXN0aW5nVGltZSAuICIiOworfQorcHJpbnRmICJcbiUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRp
bWVcbiIsICR0b3RhbFRlc3RpbmdUaW1lIC4gIiI7CiAKICEkaXNEdW1wVG9vbE9wZW4gfHwgZGll
ICJGYWlsZWQgdG8gY2xvc2UgJGR1bXBUb29sTmFtZS5cbiI7CiAKQEAgLTEzNjEsNiArMTM2OCw3
IEBAIHN1YiBjb25maWd1cmVBbmRPcGVuSFRUUERJZk5lZWRlZCgpCiAgICAgbXkgQGRlZmF1bHRB
cmdzID0gZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkoJHRlc3REaXJlY3RvcnkpOwog
ICAgIEBhcmdzID0gKEBkZWZhdWx0QXJncywgQGFyZ3MpOwogCisgICAgd2FpdEZvckhUVFBETG9j
aygpIGlmICRzaG91bGRXYWl0Rm9ySFRUUEQ7CiAgICAgJGlzSHR0cGRPcGVuID0gb3BlbkhUVFBE
KEBhcmdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L2h0dHBkLnBtIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCmluZGV4
IDhiNWQyNWIuLjMzYzFmOTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9odHRwZC5wbQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQu
cG0KQEAgLTM0LDYgKzM0LDcgQEAgdXNlIHdhcm5pbmdzOwogdXNlIEZpbGU6OlBhdGg7CiB1c2Ug
RmlsZTo6U3BlYzsKIHVzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7Cit1c2UgRmNudGwgJzpmbG9j
ayc7CiB1c2UgSVBDOjpPcGVuMjsKIAogdXNlIHdlYmtpdGRpcnM7CkBAIC00MywyMCArNDQsMjUg
QEAgQkVHSU4gewogICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywg
JUVYUE9SVF9UQUdTKTsKICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICBASVNBICAgICAgICAg
PSBxdyhFeHBvcnRlcik7Ci0gICBARVhQT1JUICAgICAgPSBxdygmZ2V0SFRUUERQYXRoICZnZXRE
ZWZhdWx0Q29uZmlnRm9yVGVzdERpcmVjdG9yeSAmb3BlbkhUVFBEICZjbG9zZUhUVFBEICZnZXRI
VFRQRFBpZCAmc2V0U2hvdWxkV2FpdEZvclVzZXJJbnRlcnJ1cHQpOworICAgQEVYUE9SVCAgICAg
ID0gcXcoJmdldEhUVFBEUGF0aCAmZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkgJm9w
ZW5IVFRQRCAmY2xvc2VIVFRQRCAmZ2V0SFRUUERQaWQgJnNldFNob3VsZFdhaXRGb3JVc2VySW50
ZXJydXB0ICZ3YWl0Rm9ySFRUUERMb2NrICZnZXRXYWl0VGltZSk7CiAgICAlRVhQT1JUX1RBR1Mg
PSAoICk7CiAgICBARVhQT1JUX09LICAgPSAoKTsKIH0KIAogbXkgJHRtcERpciA9ICIvdG1wIjsK
K215ICRodHRwZExvY2tQcmVmaXggPSAiV2ViS2l0SHR0cGQubG9jay4iOworbXkgJG15TG9ja0Zp
bGU7CitteSAkZXhjbHVzaXZlTG9jayA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcERpciwgIldl
YktpdC5sb2NrIik7CiBteSAkaHR0cGRQYXRoOwogbXkgJGh0dHBkUGlkRGlyID0gRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZSgkdG1wRGlyLCAiV2ViS2l0Iik7CiBteSAkaHR0cGRQaWRGaWxlID0gRmlsZTo6
U3BlYy0+Y2F0ZmlsZSgkaHR0cGRQaWREaXIsICJodHRwZC5waWQiKTsKIG15ICRodHRwZFBpZDsK
IG15ICR3YWl0Rm9yVXNlckludGVycnVwdCA9IDA7CitteSAkd2FpdEJlZ2luVGltZTsKK215ICR3
YWl0RW5kVGltZTsKIAotJFNJR3snSU5UJ30gPSAnY2xlYW51cCc7Ci0kU0lHeydURVJNJ30gPSAn
Y2xlYW51cCc7CiskU0lHeydJTlQnfSA9ICdoYW5kbGVJbnRlcnJ1cHQnOworJFNJR3snVEVSTSd9
ID0gJ2hhbmRsZUludGVycnVwdCc7CiAKIHN1YiBnZXRIVFRQRFBhdGgKIHsKQEAgLTE0MSw3ICsx
NDcsMTAgQEAgc3ViIG9wZW5IVFRQRChAKQogICAgICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9y
IGh0dHBkIHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKKyAgICAgICAgICAgIGlmICghJHJl
dHJ5Q291bnQpIHsKKyAgICAgICAgICAgICAgICBjbGVhbnVwKCk7CisgICAgICAgICAgICAgICAg
ZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gcXVpdCIgdW5sZXNzICRyZXRyeUNv
dW50OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTYsNyArMTY1LDcg
QEAgc3ViIG9wZW5IVFRQRChAKQogICAgIH0KIAogICAgIGlmICghJHJldHJ5Q291bnQpIHsKLSAg
ICAgICAgcm10cmVlICRodHRwZFBpZERpcjsKKyAgICAgICAgY2xlYW51cCgpOwogICAgICAgICBk
aWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byBzdGFydCI7CiAgICAgfQogCkBAIC0x
NzQsMjAgKzE4MywxOSBAQCBzdWIgY2xvc2VIVFRQRAogICAgIGNsb3NlIEhUVFBESU47CiAgICAg
Y2xvc2UgSFRUUERPVVQ7CiAKKyAgICBteSAkcmV0cnlDb3VudCA9IDIwOwogICAgIGlmICgkaHR0
cGRQaWQpIHsKICAgICAgICAga2lsbCAxNSwgJGh0dHBkUGlkOwotICAgICAgICBteSAkcmV0cnlD
b3VudCA9IDIwOwogICAgICAgICB3aGlsZSAoLWYgJGh0dHBkUGlkRmlsZSAmJiAkcmV0cnlDb3Vu
dCkgewogICAgICAgICAgICAgc2xlZXAgMTsKICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7CiAg
ICAgICAgIH0KLQotICAgICAgICBpZiAoISRyZXRyeUNvdW50KSB7Ci0gICAgICAgICAgICBwcmlu
dCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byB0ZXJtaW5hdGUhXG4iOwot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KICAgICB9Ci0gICAgcm1kaXIgJGh0dHBk
UGlkRGlyOworICAgIGNsZWFudXAoKTsKKyAgICBpZiAoISRyZXRyeUNvdW50KSB7CisgICAgICAg
IHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHRlcm1pbmF0ZSFc
biI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTk2
LDkgKzIwNCw5NSBAQCBzdWIgc2V0U2hvdWxkV2FpdEZvclVzZXJJbnRlcnJ1cHQKICAgICAkd2Fp
dEZvclVzZXJJbnRlcnJ1cHQgPSAxOwogfQogCi1zdWIgY2xlYW51cAorc3ViIGhhbmRsZUludGVy
cnVwdAogewogICAgIGNsb3NlSFRUUEQoKTsKICAgICBwcmludCAiXG4iOwogICAgIGV4aXQoMSk7
CiB9CisKK3N1YiBjbGVhbnVwCit7CisgICAgcm1kaXIgJGh0dHBkUGlkRGlyOworICAgIHVubGlu
ayAkZXhjbHVzaXZlTG9jazsKKyAgICB1bmxpbmsgJG15TG9ja0ZpbGUgaWYgJG15TG9ja0ZpbGU7
Cit9CisKK3N1YiBmaWx0ZXJOdW1iZXIKK3sKKyAgICBteSAoJGxvY2tGaWxlKSA9IEBfOworICAg
IG15ICRudW1iZXIgPSAtMTsKKyAgICAkbnVtYmVyID0gc3Vic3RyKCRsb2NrRmlsZSwgbGVuZ3Ro
KCRodHRwZExvY2tQcmVmaXgpKSBpZiAkbG9ja0ZpbGU7CisgICAgcmV0dXJuICRudW1iZXI7Cit9
CisKK3N1YiBnZXRMb2NrRmlsZXMKK3sKKyAgICBvcGVuZGlyIChUTVBESVIsICR0bXBEaXIpOwor
ICAgIG15IEBsb2NrRmlsZXMgPSBncmVwIHttL14kaHR0cGRMb2NrUHJlZml4XGQrJC99IHJlYWRk
aXIgVE1QRElSOworICAgIEBsb2NrRmlsZXMgPSBzb3J0IHsgZmlsdGVyTnVtYmVyKCRhKSA8PT4g
ZmlsdGVyTnVtYmVyKCRiKSB9IEBsb2NrRmlsZXM7CisgICAgY2xvc2VkaXIgVE1QRElSOworICAg
IHJldHVybiBAbG9ja0ZpbGVzOworfQorCitzdWIgZ2V0TmV4dEF2YWlsYWJsZUxvY2tOdW1iZXIK
K3sKKyAgICBteSBAbG9ja0ZpbGVzID0gZ2V0TG9ja0ZpbGVzKCk7CisgICAgbXkgJG51bWJlciA9
IC0xOworICAgICRudW1iZXIgPSBmaWx0ZXJOdW1iZXIoJGxvY2tGaWxlc1stMV0pIGlmIEBsb2Nr
RmlsZXM7CisgICAgKyskbnVtYmVyOworICAgIHJldHVybiAkbnVtYmVyOworfQorCitzdWIgZ2V0
UnVubmluZ0xvY2tOdW1iZXIKK3sKKyAgICBteSBAbG9ja0ZpbGVzID0gZ2V0TG9ja0ZpbGVzKCk7
CisgICAgbXkgJG51bWJlciA9IDA7CisgICAgJG51bWJlciA9IGZpbHRlck51bWJlcigkbG9ja0Zp
bGVzWzBdKSBpZiBAbG9ja0ZpbGVzOworICAgIHJldHVybiAkbnVtYmVyOworfQorCitzdWIgd2Fp
dEZvckhUVFBETG9jaworeworICAgICR3YWl0QmVnaW5UaW1lID0gdGltZTsKKyAgICBpZiAoc2No
ZWR1bGVIdHRwVGVzdGluZygpID4gMSkgeworICAgICAgICBteSAkY3VycmVudExvY2tGaWxlID0g
Y2F0ZmlsZSgkdG1wRGlyLCAiJGh0dHBkTG9ja1ByZWZpeCIuZ2V0UnVubmluZ0xvY2tOdW1iZXIo
KSk7CisgICAgICAgIG15ICRjdXJyZW50TG9ja1BpZCA9IDxMT0NLRklMRT4gaWYgKC1mICRjdXJy
ZW50TG9ja0ZpbGUgJiYgb3BlbihMT0NLRklMRSwgIjwkY3VycmVudExvY2tGaWxlIikpOworICAg
ICAgICAjIENoZWNrIHRoZSBsb2NrZmlsZXMgcGVyaW9kaWNhbGx5IHdoZXRoZXIgd2UgY2FuIHJ1
biB0aGUgaHR0cCB0ZXN0cworICAgICAgICB3aGlsZSgkY3VycmVudExvY2tQaWQgJiYgJGN1cnJl
bnRMb2NrUGlkICE9ICQkKSB7CisgICAgICAgICAgICAkY3VycmVudExvY2tGaWxlID0gY2F0Zmls
ZSgkdG1wRGlyLCAiJGh0dHBkTG9ja1ByZWZpeCIuZ2V0UnVubmluZ0xvY2tOdW1iZXIoKSk7Cisg
ICAgICAgICAgICBpZiAoJGN1cnJlbnRMb2NrRmlsZSBlcSAkbXlMb2NrRmlsZSkgeworICAgICAg
ICAgICAgICAgICRjdXJyZW50TG9ja1BpZCA9IDxMT0NLRklMRT4gaWYgb3BlbihMT0NLRklMRSwg
IjwkY3VycmVudExvY2tGaWxlIik7CisgICAgICAgICAgICAgICAgaWYgKCRjdXJyZW50TG9ja1Bp
ZCAhPSAkJCkgeworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIlxuUElEIG1pc21h
dGNoLlxuIjsKKyAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsZWVwIDE7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgJHdhaXRFbmRUaW1lID0gdGltZTsKK30KKworc3Vi
IHNjaGVkdWxlSHR0cFRlc3RpbmcKK3sKKyAgICB3aGlsZSAoIShvcGVuKEVYTE9DSywgIj4kZXhj
bHVzaXZlTG9jayIpICYmIGZsb2NrKEVYTE9DSywgTE9DS19FWHxMT0NLX05CKSkpIHt9CisgICAg
JG15TG9ja0ZpbGUgPSBjYXRmaWxlKCR0bXBEaXIsICIkaHR0cGRMb2NrUHJlZml4Ii5nZXROZXh0
QXZhaWxhYmxlTG9ja051bWJlcigpKTsKKyAgICBvcGVuKExPQ0tGSUxFLCAiPiRteUxvY2tGaWxl
Iik7CisgICAgcHJpbnQgTE9DS0ZJTEUgIiQkIjsKKyAgICBwcmludCBFWExPQ0sgIiQkIjsKKyAg
ICBjbG9zZShMT0NLRklMRSk7CisgICAgY2xvc2UoRVhMT0NLKTsKKyAgICB1bmxpbmsgJGV4Y2x1
c2l2ZUxvY2s7CisgICAgcmV0dXJuIHNjYWxhciBnZXRMb2NrRmlsZXMoKTsKK30KKworc3ViIGdl
dFdhaXRUaW1lCit7CisgICAgbXkgJHdhaXRUaW1lID0gMDsKKyAgICBpZiAoJHdhaXRCZWdpblRp
bWUgJiYgJHdhaXRFbmRUaW1lKSB7CisgICAgICAgICR3YWl0VGltZSA9ICR3YWl0RW5kVGltZSAt
ICR3YWl0QmVnaW5UaW1lOworICAgIH0KKyAgICByZXR1cm4gJHdhaXRUaW1lOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47742</attachid>
            <date>2010-01-29 16:22:34 -0800</date>
            <delta_ts>2010-01-30 06:51:26 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>7046</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU0MDc5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEtMjkgIEFuZHJhcyBCZWNzaSAgPGFi
ZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IGEgbG9ja2luZyBhbmQgc2NoZWR1bGluZyBtZWNoYW5p
c20gZm9yIGh0dHAgdGVzdGluZyBzZXNzaW9ucyB0byBiZSBhYmxlCisgICAgICAgIHRvIHJ1biBt
dWx0aXBsZSBpbnN0YW5jZXMgb2YgcnVuLXdlYmtpdC10ZXN0cyBwYXJhbGxlbCBvbiB0aGUgc2Ft
ZSBtYWNoaW5lLgorICAgICAgICBFeHBvcnRpbmcgV0VCS0lUX1dBSVRfRk9SX0hUVFBEPTEgZW52
aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIHRlc3RpbmcgZW5hYmxlcyB0aGlzIGZlYXR1cmUKKyAg
ICAgICAgb3RoZXJ3aXNlIHRoaXMgcGF0Y2ggaGFzIG5vIGVmZmVjdCBvbiB0aGUgdGVzdGluZyB3
aGF0c29ldmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzMxNTMKKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czoKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG06CisKIDIwMTAtMDEtMjggIEpvbiBIb25leWN1
dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBNU0FBOiBDcmFzaCB3aGVuIHBv
c3RpbmcgYSBub3RpZmljYXRpb24gZm9yIGEgZGV0YWNoZWQgb2JqZWN0CkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCShyZXZpc2lvbiA1NDA3NCkKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9odHRwZC5wbQkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogdXNlIEZpbGU6OlBhdGg7CiB1c2UgRmlsZTo6U3BlYzsKIHVzZSBGaWxlOjpT
cGVjOjpGdW5jdGlvbnM7Cit1c2UgRmNudGwgJzpmbG9jayc7CiB1c2UgSVBDOjpPcGVuMjsKIAog
dXNlIHdlYmtpdGRpcnM7CkBAIC00MywyMCArNDQsMjUgQEAKICAgIG91ciAoJFZFUlNJT04sIEBJ
U0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRfVEFHUyk7CiAgICAkVkVSU0lPTiAgICAg
PSAxLjAwOwogICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOwotICAgQEVYUE9SVCAgICAg
ID0gcXcoJmdldEhUVFBEUGF0aCAmZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkgJm9w
ZW5IVFRQRCAmY2xvc2VIVFRQRCAmZ2V0SFRUUERQaWQgJnNldFNob3VsZFdhaXRGb3JVc2VySW50
ZXJydXB0KTsKKyAgIEBFWFBPUlQgICAgICA9IHF3KCZnZXRIVFRQRFBhdGggJmdldERlZmF1bHRD
b25maWdGb3JUZXN0RGlyZWN0b3J5ICZvcGVuSFRUUEQgJmNsb3NlSFRUUEQgJmdldEhUVFBEUGlk
ICZzZXRTaG91bGRXYWl0Rm9yVXNlckludGVycnVwdCAmd2FpdEZvckhUVFBETG9jayAmZ2V0V2Fp
dFRpbWUpOwogICAgJUVYUE9SVF9UQUdTID0gKCApOwogICAgQEVYUE9SVF9PSyAgID0gKCk7CiB9
CiAKIG15ICR0bXBEaXIgPSAiL3RtcCI7CitteSAkaHR0cGRMb2NrUHJlZml4ID0gIldlYktpdEh0
dHBkLmxvY2suIjsKK215ICRteUxvY2tGaWxlOworbXkgJGV4Y2x1c2l2ZUxvY2tGaWxlID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZSgkdG1wRGlyLCAiV2ViS2l0LmxvY2siKTsKIG15ICRodHRwZFBhdGg7
CiBteSAkaHR0cGRQaWREaXIgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0bXBEaXIsICJXZWJLaXQi
KTsKIG15ICRodHRwZFBpZEZpbGUgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRodHRwZFBpZERpciwg
Imh0dHBkLnBpZCIpOwogbXkgJGh0dHBkUGlkOwogbXkgJHdhaXRGb3JVc2VySW50ZXJydXB0ID0g
MDsKK215ICR3YWl0QmVnaW5UaW1lOworbXkgJHdhaXRFbmRUaW1lOwogCi0kU0lHeydJTlQnfSA9
ICdjbGVhbnVwJzsKLSRTSUd7J1RFUk0nfSA9ICdjbGVhbnVwJzsKKyRTSUd7J0lOVCd9ID0gJ2hh
bmRsZUludGVycnVwdCc7CiskU0lHeydURVJNJ30gPSAnaGFuZGxlSW50ZXJydXB0JzsKIAogc3Vi
IGdldEhUVFBEUGF0aAogewpAQCAtMTQxLDcgKzE0NywxMCBAQAogICAgICAgICAgICAgICAgIC0t
JHJldHJ5Q291bnQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0
IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHF1aXQiIHVubGVzcyAkcmV0cnlDb3VudDsKKyAgICAgICAg
ICAgIGlmICghJHJldHJ5Q291bnQpIHsKKyAgICAgICAgICAgICAgICBjbGVhblVwKCk7CisgICAg
ICAgICAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgaHR0cGQgdG8gcXVpdCI7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1Niw3ICsxNjUsNyBAQAogICAg
IH0KIAogICAgIGlmICghJHJldHJ5Q291bnQpIHsKLSAgICAgICAgcm10cmVlICRodHRwZFBpZERp
cjsKKyAgICAgICAgY2xlYW5VcCgpOwogICAgICAgICBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZv
ciBodHRwZCB0byBzdGFydCI7CiAgICAgfQogCkBAIC0xNzQsMjAgKzE4MywxOSBAQAogICAgIGNs
b3NlIEhUVFBESU47CiAgICAgY2xvc2UgSFRUUERPVVQ7CiAKKyAgICBteSAkcmV0cnlDb3VudCA9
IDIwOwogICAgIGlmICgkaHR0cGRQaWQpIHsKICAgICAgICAga2lsbCAxNSwgJGh0dHBkUGlkOwot
ICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwogICAgICAgICB3aGlsZSAoLWYgJGh0dHBkUGlk
RmlsZSAmJiAkcmV0cnlDb3VudCkgewogICAgICAgICAgICAgc2xlZXAgMTsKICAgICAgICAgICAg
IC0tJHJldHJ5Q291bnQ7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoISRyZXRyeUNvdW50KSB7
Ci0gICAgICAgICAgICBwcmludCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0
byB0ZXJtaW5hdGUhXG4iOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KICAgICB9
Ci0gICAgcm1kaXIgJGh0dHBkUGlkRGlyOworICAgIGNsZWFuVXAoKTsKKyAgICBpZiAoISRyZXRy
eUNvdW50KSB7CisgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0
dHBkIHRvIHRlcm1pbmF0ZSFcbiI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1
cm4gMTsKIH0KIApAQCAtMTk2LDkgKzIwNCw5MSBAQAogICAgICR3YWl0Rm9yVXNlckludGVycnVw
dCA9IDE7CiB9CiAKLXN1YiBjbGVhbnVwCitzdWIgaGFuZGxlSW50ZXJydXB0CiB7CiAgICAgY2xv
c2VIVFRQRCgpOwogICAgIHByaW50ICJcbiI7CiAgICAgZXhpdCgxKTsKIH0KKworc3ViIGNsZWFu
VXAKK3sKKyAgICBybWRpciAkaHR0cGRQaWREaXI7CisgICAgdW5saW5rICRleGNsdXNpdmVMb2Nr
RmlsZTsKKyAgICB1bmxpbmsgJG15TG9ja0ZpbGUgaWYgJG15TG9ja0ZpbGU7Cit9CisKK3N1YiBm
aWx0ZXJOdW1iZXIKK3sKKyAgICBteSAoJGxvY2tGaWxlKSA9IEBfOworICAgIHJldHVybiAtMSB1
bmxlc3MgJGxvY2tGaWxlOworICAgIHJldHVybiBzdWJzdHIoJGxvY2tGaWxlLCBsZW5ndGgoJGh0
dHBkTG9ja1ByZWZpeCkpOworfQorCitzdWIgZ2V0TG9ja0ZpbGVzCit7CisgICAgb3BlbmRpcihU
TVBESVIsICR0bXBEaXIpIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gIiAuICR0bXBEaXIgLiAiLiI7
CisgICAgbXkgQGxvY2tGaWxlcyA9IGdyZXAge20vXiRodHRwZExvY2tQcmVmaXhcZCskL30gcmVh
ZGRpciBUTVBESVI7CisgICAgQGxvY2tGaWxlcyA9IHNvcnQgeyBmaWx0ZXJOdW1iZXIoJGEpIDw9
PiBmaWx0ZXJOdW1iZXIoJGIpIH0gQGxvY2tGaWxlczsKKyAgICBjbG9zZWRpciBUTVBESVI7Cisg
ICAgcmV0dXJuIEBsb2NrRmlsZXM7Cit9CisKK3N1YiBnZXROZXh0QXZhaWxhYmxlTG9ja051bWJl
cgoreworICAgIG15IEBsb2NrRmlsZXMgPSBnZXRMb2NrRmlsZXMoKTsKKyAgICByZXR1cm4gMCB1
bmxlc3MgQGxvY2tGaWxlczsKKyAgICByZXR1cm4gZmlsdGVyTnVtYmVyKCRsb2NrRmlsZXNbLTFd
KSArIDE7Cit9CisKK3N1YiBnZXRSdW5uaW5nTG9ja051bWJlcgoreworICAgIG15IEBsb2NrRmls
ZXMgPSBnZXRMb2NrRmlsZXMoKTsKKyAgICByZXR1cm4gMCB1bmxlc3MgQGxvY2tGaWxlczsKKyAg
ICByZXR1cm4gZmlsdGVyTnVtYmVyKCRsb2NrRmlsZXNbMF0pOworfQorCitzdWIgd2FpdEZvckhU
VFBETG9jaworeworICAgICR3YWl0QmVnaW5UaW1lID0gdGltZTsKKyAgICBpZiAoc2NoZWR1bGVI
dHRwVGVzdGluZygpID4gMSkgeworICAgICAgICBteSAkY3VycmVudExvY2tGaWxlID0gRmlsZTo6
U3BlYy0+Y2F0ZmlsZSgkdG1wRGlyLCAiJGh0dHBkTG9ja1ByZWZpeCIuZ2V0UnVubmluZ0xvY2tO
dW1iZXIoKSk7CisgICAgICAgIG15ICRjdXJyZW50TG9ja1BpZCA9IDxMT0NLRklMRT4gaWYgKC1m
ICRjdXJyZW50TG9ja0ZpbGUgJiYgb3BlbihMT0NLRklMRSwgIjwkY3VycmVudExvY2tGaWxlIikp
OworICAgICAgICAjIENoZWNrIHRoZSBsb2NrZmlsZXMgcGVyaW9kaWNhbGx5CisgICAgICAgIHdo
aWxlKCRjdXJyZW50TG9ja1BpZCAmJiAkY3VycmVudExvY2tQaWQgIT0gJCQpIHsKKyAgICAgICAg
ICAgICRjdXJyZW50TG9ja0ZpbGUgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0bXBEaXIsICIkaHR0
cGRMb2NrUHJlZml4Ii5nZXRSdW5uaW5nTG9ja051bWJlcigpKTsKKyAgICAgICAgICAgIGlmICgk
Y3VycmVudExvY2tGaWxlIGVxICRteUxvY2tGaWxlKSB7CisgICAgICAgICAgICAgICAgJGN1cnJl
bnRMb2NrUGlkID0gPExPQ0tGSUxFPiBpZiBvcGVuKExPQ0tGSUxFLCAiPCRjdXJyZW50TG9ja0Zp
bGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnRMb2NrUGlkICE9ICQkKSB7CisgICAg
ICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiXG5QSUQgbWlzbWF0Y2guXG4iOworICAgICAg
ICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICAkd2FpdEVuZFRpbWUgPSB0aW1lOworfQorCitzdWIgc2NoZWR1bGVIdHRwVGVz
dGluZworeworICAgIHdoaWxlICghKG9wZW4oRVhMT0NLLCAiPiRleGNsdXNpdmVMb2NrRmlsZSIp
ICYmIGZsb2NrKEVYTE9DSywgTE9DS19FWHxMT0NLX05CKSkpIHt9CisgICAgJG15TG9ja0ZpbGUg
PSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0bXBEaXIsICIkaHR0cGRMb2NrUHJlZml4Ii5nZXROZXh0
QXZhaWxhYmxlTG9ja051bWJlcigpKTsKKyAgICBvcGVuKExPQ0tGSUxFLCAiPiRteUxvY2tGaWxl
Iik7CisgICAgcHJpbnQgTE9DS0ZJTEUgIiQkIjsKKyAgICBwcmludCBFWExPQ0sgIiQkIjsKKyAg
ICBjbG9zZShMT0NLRklMRSk7CisgICAgY2xvc2UoRVhMT0NLKTsKKyAgICB1bmxpbmsgJGV4Y2x1
c2l2ZUxvY2tGaWxlOworICAgIHJldHVybiBzY2FsYXIgZ2V0TG9ja0ZpbGVzKCk7Cit9CisKK3N1
YiBnZXRXYWl0VGltZQoreworICAgIG15ICR3YWl0VGltZSA9IDA7CisgICAgaWYgKCR3YWl0QmVn
aW5UaW1lICYmICR3YWl0RW5kVGltZSkgeworICAgICAgICAkd2FpdFRpbWUgPSAkd2FpdEVuZFRp
bWUgLSAkd2FpdEJlZ2luVGltZTsKKyAgICB9CisgICAgcmV0dXJuICR3YWl0VGltZTsKK30KSW5k
ZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHJldmlzaW9uIDU0MDc0KQorKysg
V2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTQsNiArMTU0LDcgQEAKIG15ICR1c2VSZW1vdGVMaW5rc1RvVGVzdHMgPSAwOwogbXkgJHVzZVZh
bGdyaW5kID0gMDsKIG15ICR2ZXJib3NlID0gMDsKK215ICRzaG91bGRXYWl0Rm9ySFRUUEQgPSAk
RU5WeyJXRUJLSVRfV0FJVF9GT1JfSFRUUEQifTsKIAogbXkgQGxlYWtzRmlsZW5hbWVzOwogCkBA
IC05NDMsNyArOTQ0LDE0IEBACiAgICAgICAgIH0KICAgICB9CiB9Ci1wcmludGYgIlxuJTAuMmZz
IHRvdGFsIHRlc3RpbmcgdGltZVxuIiwgKHRpbWUgLSAkb3ZlcmFsbFN0YXJ0VGltZSkgLiAiIjsK
K215ICR0b3RhbFRlc3RpbmdUaW1lID0gdGltZSAtICRvdmVyYWxsU3RhcnRUaW1lOworbXkgJHdh
aXRUaW1lID0gZ2V0V2FpdFRpbWUoKTsKK2lmICgkd2FpdFRpbWUgPiAwLjEpIHsKKyAgICBteSAk
bm9ybWFsaXplZFRlc3RpbmdUaW1lID0gJHRvdGFsVGVzdGluZ1RpbWUgLSAkd2FpdFRpbWU7Cisg
ICAgcHJpbnRmICJcbiUwLjJmcyBIVFRQRCB3YWl0aW5nIHRpbWVcbiIsICR3YWl0VGltZSAuICIi
OworICAgIHByaW50ZiAiJTAuMmZzIG5vcm1hbGl6ZWQgdGVzdGluZyB0aW1lIiwgJG5vcm1hbGl6
ZWRUZXN0aW5nVGltZSAuICIiOworfQorcHJpbnRmICJcbiUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRp
bWVcbiIsICR0b3RhbFRlc3RpbmdUaW1lIC4gIiI7CiAKICEkaXNEdW1wVG9vbE9wZW4gfHwgZGll
ICJGYWlsZWQgdG8gY2xvc2UgJGR1bXBUb29sTmFtZS5cbiI7CiAKQEAgLTEzNjEsNiArMTM2OSw3
IEBACiAgICAgbXkgQGRlZmF1bHRBcmdzID0gZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3Rv
cnkoJHRlc3REaXJlY3RvcnkpOwogICAgIEBhcmdzID0gKEBkZWZhdWx0QXJncywgQGFyZ3MpOwog
CisgICAgd2FpdEZvckhUVFBETG9jaygpIGlmICRzaG91bGRXYWl0Rm9ySFRUUEQ7CiAgICAgJGlz
SHR0cGRPcGVuID0gb3BlbkhUVFBEKEBhcmdzKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47768</attachid>
            <date>2010-01-30 06:51:26 -0800</date>
            <delta_ts>2010-02-04 06:35:22 -0800</delta_ts>
            <desc>Rebased patch after r54084</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>7005</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9odHRwZC5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG0JKHJldmlzaW9uIDU0
MDg3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiB1c2UgRmlsZTo6UGF0aDsKIHVzZSBGaWxlOjpTcGVj
OwogdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9uczsKK3VzZSBGY250bCAnOmZsb2NrJzsKIHVzZSBJ
UEM6Ok9wZW4yOwogCiB1c2Ugd2Via2l0ZGlyczsKQEAgLTQzLDIwICs0NCwyNSBAQAogICAgb3Vy
ICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKICAg
ICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7Ci0g
ICBARVhQT1JUICAgICAgPSBxdygmZ2V0SFRUUERQYXRoICZnZXREZWZhdWx0Q29uZmlnRm9yVGVz
dERpcmVjdG9yeSAmb3BlbkhUVFBEICZjbG9zZUhUVFBEICZnZXRIVFRQRFBpZCAmc2V0U2hvdWxk
V2FpdEZvclVzZXJJbnRlcnJ1cHQpOworICAgQEVYUE9SVCAgICAgID0gcXcoJmdldEhUVFBEUGF0
aCAmZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkgJm9wZW5IVFRQRCAmY2xvc2VIVFRQ
RCAmc2V0U2hvdWxkV2FpdEZvclVzZXJJbnRlcnJ1cHQgJndhaXRGb3JIVFRQRExvY2sgJmdldFdh
aXRUaW1lKTsKICAgICVFWFBPUlRfVEFHUyA9ICggKTsKICAgIEBFWFBPUlRfT0sgICA9ICgpOwog
fQogCiBteSAkdG1wRGlyID0gIi90bXAiOworbXkgJGh0dHBkTG9ja1ByZWZpeCA9ICJXZWJLaXRI
dHRwZC5sb2NrLiI7CitteSAkbXlMb2NrRmlsZTsKK215ICRleGNsdXNpdmVMb2NrRmlsZSA9IEZp
bGU6OlNwZWMtPmNhdGZpbGUoJHRtcERpciwgIldlYktpdC5sb2NrIik7CiBteSAkaHR0cGRQYXRo
OwogbXkgJGh0dHBkUGlkRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdG1wRGlyLCAiV2ViS2l0
Iik7CiBteSAkaHR0cGRQaWRGaWxlID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkaHR0cGRQaWREaXIs
ICJodHRwZC5waWQiKTsKIG15ICRodHRwZFBpZDsKIG15ICR3YWl0Rm9yVXNlckludGVycnVwdCA9
IDA7CitteSAkd2FpdEJlZ2luVGltZTsKK215ICR3YWl0RW5kVGltZTsKIAotJFNJR3snSU5UJ30g
PSAnY2xlYW51cCc7Ci0kU0lHeydURVJNJ30gPSAnY2xlYW51cCc7CiskU0lHeydJTlQnfSA9ICdo
YW5kbGVJbnRlcnJ1cHQnOworJFNJR3snVEVSTSd9ID0gJ2hhbmRsZUludGVycnVwdCc7CiAKIHN1
YiBnZXRIVFRQRFBhdGgKIHsKQEAgLTE0MSw3ICsxNDcsMTAgQEAKICAgICAgICAgICAgICAgICAt
LSRyZXRyeUNvdW50OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBkaWUgIlRpbWVkIG91
dCB3YWl0aW5nIGZvciBodHRwZCB0byBxdWl0IiB1bmxlc3MgJHJldHJ5Q291bnQ7CisgICAgICAg
ICAgICBpZiAoISRyZXRyeUNvdW50KSB7CisgICAgICAgICAgICAgICAgY2xlYW5VcCgpOworICAg
ICAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHF1aXQiOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTYsNyArMTY1LDcgQEAKICAg
ICB9CiAKICAgICBpZiAoISRyZXRyeUNvdW50KSB7Ci0gICAgICAgIHJtdHJlZSAkaHR0cGRQaWRE
aXI7CisgICAgICAgIGNsZWFuVXAoKTsKICAgICAgICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBm
b3IgaHR0cGQgdG8gc3RhcnQiOwogICAgIH0KIApAQCAtMTcyLDIwICsxODEsMTkgQEAKIHN1YiBj
bG9zZUhUVFBECiB7CiAgICAgY2xvc2UgSFRUUERJTjsKKyAgICBteSAkcmV0cnlDb3VudCA9IDIw
OwogICAgIGlmICgkaHR0cGRQaWQpIHsKICAgICAgICAga2lsbCAxNSwgJGh0dHBkUGlkOwotICAg
ICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwogICAgICAgICB3aGlsZSAoLWYgJGh0dHBkUGlkRmls
ZSAmJiAkcmV0cnlDb3VudCkgewogICAgICAgICAgICAgc2xlZXAgMTsKICAgICAgICAgICAgIC0t
JHJldHJ5Q291bnQ7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoISRyZXRyeUNvdW50KSB7Ci0g
ICAgICAgICAgICBwcmludCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRwZCB0byB0
ZXJtaW5hdGUhXG4iOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KICAgICB9Ci0g
ICAgcm1kaXIgJGh0dHBkUGlkRGlyOworICAgIGNsZWFuVXAoKTsKKyAgICBpZiAoISRyZXRyeUNv
dW50KSB7CisgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBk
IHRvIHRlcm1pbmF0ZSFcbiI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4g
MTsKIH0KIApAQCAtMTk0LDkgKzIwMiw5MSBAQAogICAgICR3YWl0Rm9yVXNlckludGVycnVwdCA9
IDE7CiB9CiAKLXN1YiBjbGVhbnVwCitzdWIgaGFuZGxlSW50ZXJydXB0CiB7CiAgICAgY2xvc2VI
VFRQRCgpOwogICAgIHByaW50ICJcbiI7CiAgICAgZXhpdCgxKTsKIH0KKworc3ViIGNsZWFuVXAK
K3sKKyAgICBybWRpciAkaHR0cGRQaWREaXI7CisgICAgdW5saW5rICRleGNsdXNpdmVMb2NrRmls
ZTsKKyAgICB1bmxpbmsgJG15TG9ja0ZpbGUgaWYgJG15TG9ja0ZpbGU7Cit9CisKK3N1YiBmaWx0
ZXJOdW1iZXIKK3sKKyAgICBteSAoJGxvY2tGaWxlKSA9IEBfOworICAgIHJldHVybiAtMSB1bmxl
c3MgJGxvY2tGaWxlOworICAgIHJldHVybiBzdWJzdHIoJGxvY2tGaWxlLCBsZW5ndGgoJGh0dHBk
TG9ja1ByZWZpeCkpOworfQorCitzdWIgZ2V0TG9ja0ZpbGVzCit7CisgICAgb3BlbmRpcihUTVBE
SVIsICR0bXBEaXIpIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gIiAuICR0bXBEaXIgLiAiLiI7Cisg
ICAgbXkgQGxvY2tGaWxlcyA9IGdyZXAge20vXiRodHRwZExvY2tQcmVmaXhcZCskL30gcmVhZGRp
ciBUTVBESVI7CisgICAgQGxvY2tGaWxlcyA9IHNvcnQgeyBmaWx0ZXJOdW1iZXIoJGEpIDw9PiBm
aWx0ZXJOdW1iZXIoJGIpIH0gQGxvY2tGaWxlczsKKyAgICBjbG9zZWRpciBUTVBESVI7CisgICAg
cmV0dXJuIEBsb2NrRmlsZXM7Cit9CisKK3N1YiBnZXROZXh0QXZhaWxhYmxlTG9ja051bWJlcgor
eworICAgIG15IEBsb2NrRmlsZXMgPSBnZXRMb2NrRmlsZXMoKTsKKyAgICByZXR1cm4gMCB1bmxl
c3MgQGxvY2tGaWxlczsKKyAgICByZXR1cm4gZmlsdGVyTnVtYmVyKCRsb2NrRmlsZXNbLTFdKSAr
IDE7Cit9CisKK3N1YiBnZXRSdW5uaW5nTG9ja051bWJlcgoreworICAgIG15IEBsb2NrRmlsZXMg
PSBnZXRMb2NrRmlsZXMoKTsKKyAgICByZXR1cm4gMCB1bmxlc3MgQGxvY2tGaWxlczsKKyAgICBy
ZXR1cm4gZmlsdGVyTnVtYmVyKCRsb2NrRmlsZXNbMF0pOworfQorCitzdWIgd2FpdEZvckhUVFBE
TG9jaworeworICAgICR3YWl0QmVnaW5UaW1lID0gdGltZTsKKyAgICBpZiAoc2NoZWR1bGVIdHRw
VGVzdGluZygpID4gMSkgeworICAgICAgICBteSAkY3VycmVudExvY2tGaWxlID0gRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZSgkdG1wRGlyLCAiJGh0dHBkTG9ja1ByZWZpeCIuZ2V0UnVubmluZ0xvY2tOdW1i
ZXIoKSk7CisgICAgICAgIG15ICRjdXJyZW50TG9ja1BpZCA9IDxMT0NLRklMRT4gaWYgKC1mICRj
dXJyZW50TG9ja0ZpbGUgJiYgb3BlbihMT0NLRklMRSwgIjwkY3VycmVudExvY2tGaWxlIikpOwor
ICAgICAgICAjIFdhaXQgdW50aWwgd2UgYXJlIGFsbG93ZWQgdG8gcnVuIHRoZSBodHRwIHRlc3Rz
CisgICAgICAgIHdoaWxlKCRjdXJyZW50TG9ja1BpZCAmJiAkY3VycmVudExvY2tQaWQgIT0gJCQp
IHsKKyAgICAgICAgICAgICRjdXJyZW50TG9ja0ZpbGUgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0
bXBEaXIsICIkaHR0cGRMb2NrUHJlZml4Ii5nZXRSdW5uaW5nTG9ja051bWJlcigpKTsKKyAgICAg
ICAgICAgIGlmICgkY3VycmVudExvY2tGaWxlIGVxICRteUxvY2tGaWxlKSB7CisgICAgICAgICAg
ICAgICAgJGN1cnJlbnRMb2NrUGlkID0gPExPQ0tGSUxFPiBpZiBvcGVuKExPQ0tGSUxFLCAiPCRj
dXJyZW50TG9ja0ZpbGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnRMb2NrUGlkICE9
ICQkKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiXG5QSUQgbWlzbWF0Y2gu
XG4iOworICAgICAgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICAkd2FpdEVuZFRpbWUgPSB0aW1lOworfQorCitzdWIgc2No
ZWR1bGVIdHRwVGVzdGluZworeworICAgIHdoaWxlICghKG9wZW4oRVhMT0NLLCAiPiRleGNsdXNp
dmVMb2NrRmlsZSIpICYmIGZsb2NrKEVYTE9DSywgTE9DS19FWHxMT0NLX05CKSkpIHt9CisgICAg
JG15TG9ja0ZpbGUgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0bXBEaXIsICIkaHR0cGRMb2NrUHJl
Zml4Ii5nZXROZXh0QXZhaWxhYmxlTG9ja051bWJlcigpKTsKKyAgICBvcGVuKExPQ0tGSUxFLCAi
PiRteUxvY2tGaWxlIik7CisgICAgcHJpbnQgTE9DS0ZJTEUgIiQkIjsKKyAgICBwcmludCBFWExP
Q0sgIiQkIjsKKyAgICBjbG9zZShMT0NLRklMRSk7CisgICAgY2xvc2UoRVhMT0NLKTsKKyAgICB1
bmxpbmsgJGV4Y2x1c2l2ZUxvY2tGaWxlOworICAgIHJldHVybiBzY2FsYXIgZ2V0TG9ja0ZpbGVz
KCk7Cit9CisKK3N1YiBnZXRXYWl0VGltZQoreworICAgIG15ICR3YWl0VGltZSA9IDA7CisgICAg
aWYgKCR3YWl0QmVnaW5UaW1lICYmICR3YWl0RW5kVGltZSkgeworICAgICAgICAkd2FpdFRpbWUg
PSAkd2FpdEVuZFRpbWUgLSAkd2FpdEJlZ2luVGltZTsKKyAgICB9CisgICAgcmV0dXJuICR3YWl0
VGltZTsKK30KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHJldmlzaW9u
IDU0MDg3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAKIG15ICR1c2VSZW1vdGVMaW5rc1RvVGVzdHMgPSAw
OwogbXkgJHVzZVZhbGdyaW5kID0gMDsKIG15ICR2ZXJib3NlID0gMDsKK215ICRzaG91bGRXYWl0
Rm9ySFRUUEQgPSAkRU5WeyJXRUJLSVRfV0FJVF9GT1JfSFRUUEQifTsKIAogbXkgQGxlYWtzRmls
ZW5hbWVzOwogCkBAIC05NDMsNyArOTQ0LDE0IEBACiAgICAgICAgIH0KICAgICB9CiB9Ci1wcmlu
dGYgIlxuJTAuMmZzIHRvdGFsIHRlc3RpbmcgdGltZVxuIiwgKHRpbWUgLSAkb3ZlcmFsbFN0YXJ0
VGltZSkgLiAiIjsKK215ICR0b3RhbFRlc3RpbmdUaW1lID0gdGltZSAtICRvdmVyYWxsU3RhcnRU
aW1lOworbXkgJHdhaXRUaW1lID0gZ2V0V2FpdFRpbWUoKTsKK2lmICgkd2FpdFRpbWUgPiAwLjEp
IHsKKyAgICBteSAkbm9ybWFsaXplZFRlc3RpbmdUaW1lID0gJHRvdGFsVGVzdGluZ1RpbWUgLSAk
d2FpdFRpbWU7CisgICAgcHJpbnRmICJcbiUwLjJmcyBIVFRQRCB3YWl0aW5nIHRpbWVcbiIsICR3
YWl0VGltZSAuICIiOworICAgIHByaW50ZiAiJTAuMmZzIG5vcm1hbGl6ZWQgdGVzdGluZyB0aW1l
IiwgJG5vcm1hbGl6ZWRUZXN0aW5nVGltZSAuICIiOworfQorcHJpbnRmICJcbiUwLjJmcyB0b3Rh
bCB0ZXN0aW5nIHRpbWVcbiIsICR0b3RhbFRlc3RpbmdUaW1lIC4gIiI7CiAKICEkaXNEdW1wVG9v
bE9wZW4gfHwgZGllICJGYWlsZWQgdG8gY2xvc2UgJGR1bXBUb29sTmFtZS5cbiI7CiAKQEAgLTEz
NjEsNiArMTM2OSw3IEBACiAgICAgbXkgQGRlZmF1bHRBcmdzID0gZ2V0RGVmYXVsdENvbmZpZ0Zv
clRlc3REaXJlY3RvcnkoJHRlc3REaXJlY3RvcnkpOwogICAgIEBhcmdzID0gKEBkZWZhdWx0QXJn
cywgQGFyZ3MpOwogCisgICAgd2FpdEZvckhUVFBETG9jaygpIGlmICRzaG91bGRXYWl0Rm9ySFRU
UEQ7CiAgICAgJGlzSHR0cGRPcGVuID0gb3BlbkhUVFBEKEBhcmdzKTsKIH0KIApJbmRleDogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gNTQwODcpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMS0zMCAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQGluZi51
LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgYSBsb2NraW5nIGFuZCBzY2hlZHVsaW5nIG1lY2hhbmlzbSBmb3IgaHR0
cCB0ZXN0aW5nIHNlc3Npb25zIHRvIGJlIGFibGUKKyAgICAgICAgdG8gcnVuIG11bHRpcGxlIGlu
c3RhbmNlcyBvZiBydW4td2Via2l0LXRlc3RzIHBhcmFsbGVsIG9uIHRoZSBzYW1lIG1hY2hpbmUu
CisgICAgICAgIEV4cG9ydGluZyBXRUJLSVRfV0FJVF9GT1JfSFRUUEQ9MSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBiZWZvcmUgdGVzdGluZyBlbmFibGVzIHRoaXMgZmVhdHVyZQorICAgICAgICBvdGhl
cndpc2UgdGhpcyBwYXRjaCBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0ZXN0aW5nIHdoYXRzb2V2ZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE1Mwor
CisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cGVybC9odHRwZC5wbToKKwogMjAxMC0wMS0yOSAgRGlyayBQcmFua2UgIDxkcHJhbmtl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
</data>
<flag name="review"
          id="30300"
          type_id="1"
          status="-"
          setter="vestbo"
    />
    <flag name="commit-queue"
          id="30301"
          type_id="3"
          status="-"
          setter="vestbo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48137</attachid>
            <date>2010-02-04 06:35:22 -0800</date>
            <delta_ts>2010-02-04 06:54:25 -0800</delta_ts>
            <desc>Updated naming scheme and changelog as discussed</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>9721</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU0MzQwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMDQgIEFuZHJhcyBCZWNzaSAgPGFi
ZWNzaUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KKworICAgICAgICBJbXBsZW1lbnQgYSBsb2NraW5nIGFuZCBzY2hlZHVsaW5nIG1lY2hh
bmlzbSBmb3IgaHR0cCB0ZXN0aW5nIHNlc3Npb25zIHRvIGJlIGFibGUKKyAgICAgICAgdG8gcnVu
IG11bHRpcGxlIGluc3RhbmNlcyBvZiBydW4td2Via2l0LXRlc3RzIHBhcmFsbGVsIG9uIHRoZSBz
YW1lIG1hY2hpbmUuCisgICAgICAgIElmIGEgdGVzdCBzZXNzaW9uIHdhbnRzIHRvIHJ1biBodHRw
IHRlc3RzIGFuZCB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgdGhlIHBlbmRpbmcKKyAgICAgICAg
c2Vzc2lvbnMgY3JlYXRlIGxvY2tmaWxlcyB3aXRoIHNlcXVlbnRpYWwgbG9jayBudW1iZXJzLiBU
aGVzZSBsb2NrcyBhcmUgdXNlZCB0byBzY2hlZHVsZQorICAgICAgICB0aGUgcnVubmluZyB0ZXN0
IHNlc3Npb25zIGluIGZpcnN0IGNvbWUgZmlyc3Qgc2VydmVkIG9yZGVyLiBBbiBleGNsdXNpdmUg
bG9jayBlbnN1cmVzCisgICAgICAgIHRoYXQgdGhlIGxvY2sgbnVtYmVycyBhcmUgc2VxdWVudGlh
bCB0byBhdm9pZCBkZWFkbG9ja3MgYW5kIHN0YXJ2YXRpb24uCisgICAgICAgIEJlY2F1c2UgdGhl
IGJ1aWxkYm90IG1hc3RlciBzcGVjaWZpZXMgdGhlIGZsYWdzIHVzZWQgYnkgc2xhdmVzIHdlIG5l
ZWQgYW4gZW52aXJvbm1lbnQKKyAgICAgICAgdmFyaWFibGUgdG9vIHRvIGJlIGFibGUgdG8gdXNl
IHRoZSBmZWF0dXJlIHBlci1zbGF2ZS4KKyAgICAgICAgRXhwb3J0aW5nIFdFQktJVF9XQUlUX0ZP
Ul9IVFRQRD0xIGJlZm9yZSB0ZXN0aW5nIG9yIHVzaW5nIHRoZSAtLXdhaXQtZm9yLWh0dHBkCisg
ICAgICAgIGZsYWcgZW5hYmxlcyB0aGlzIGZlYXR1cmUsIG90aGVyd2lzZSB0aGlzIHBhdGNoIGhh
cyBubyBlZmZlY3Qgb24gdGhlIHRlc3Rpbmcgd2hhdHNvZXZlci4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTMKKworICAgICAgICAqIFNjcmlw
dHMvcnVuLXdlYmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQu
cG06CisKIDIwMTAtMDEtMjIgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwkocmV2aXNpb24gNTQzNDApCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsx
NTMsOCBAQCBteSAkdG9sZXJhbmNlID0gMDsKIG15ICR0cmVhdFNraXBwZWQgPSAiZGVmYXVsdCI7
CiBteSAkdXNlUmVtb3RlTGlua3NUb1Rlc3RzID0gMDsKIG15ICR1c2VWYWxncmluZCA9IDA7Ci1t
eSAkdmVyYm9zZSA9IDA7CitteSAkdmVyYm9zZSA9IDA7IAorbXkgJHNob3VsZFdhaXRGb3JIVFRQ
RCA9IDA7CiAKIG15IEBsZWFrc0ZpbGVuYW1lczsKIApAQCAtMjI0LDYgKzIyNSw3IEBAIFVzYWdl
OiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFt0ZXN0ZGlyfHQKICAgLS1leGl0LWFmdGVyLW4tZmFp
bHVyZXMgTiAgICAgICBFeGl0IGFmdGVyIHRoZSBmaXJzdCBOIGZhaWx1cmVzIGluc3RlYWQgb2Yg
cnVubmluZyBhbGwgdGVzdHMKICAgLWh8LS1oZWxwICAgICAgICAgICAgICAgICAgICAgICBTaG93
IHRoaXMgaGVscCBtZXNzYWdlCiAgIC0tW25vLV1odHRwICAgICAgICAgICAgICAgICAgICAgUnVu
IChvciBkbyBub3QgcnVuKSBodHRwIHRlc3RzIChkZWZhdWx0OiAkaHR0cERlZmF1bHQpCisgIC0t
d2FpdC1mb3ItaHR0cGQgICAgICAgICAgICAgICAgV2FpdCBmb3IgaHR0cGQgaWYgc29tZSBvdGhl
ciB0ZXN0IHNlc3Npb24gaXMgdXNpbmcgaXQgYWxyZWFkeSAoc2FtZSBhcyBXRUJLSVRfV0FJVF9G
T1JfSFRUUEQ9MSkuIChkZWZhdWx0OiAkc2hvdWxkV2FpdEZvckhUVFBEKSAKICAgLWl8LS1pZ25v
cmUtdGVzdHMgICAgICAgICAgICAgICBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3Rvcmll
cyBvciB0ZXN0cyB0byBpZ25vcmUKICAgLS1pdGVyYXRpb25zIG4gICAgICAgICAgICAgICAgICBO
dW1iZXIgb2YgdGltZXMgdG8gcnVuIHRoZSBzZXQgb2YgdGVzdHMgKGUuZy4gQUJDQUJDQUJDKQog
ICAtLVtuby1dbGF1bmNoLXNhZmFyaSAgICAgICAgICAgIExhdW5jaCAob3IgZG8gbm90IGxhdW5j
aCkgU2FmYXJpIHRvIGRpc3BsYXkgdGVzdCByZXN1bHRzIChkZWZhdWx0OiAkbGF1bmNoU2FmYXJp
RGVmYXVsdCkKQEAgLTI2Nyw2ICsyNjksNyBAQCBteSAkZ2V0T3B0aW9uc1Jlc3VsdCA9IEdldE9w
dGlvbnMoCiAgICAgJ2d1YXJkLW1hbGxvY3xnJyA9PiBcJGd1YXJkTWFsbG9jLAogICAgICdoZWxw
fGgnID0+IFwkc2hvd0hlbHAsCiAgICAgJ2h0dHAhJyA9PiBcJHRlc3RIVFRQLAorICAgICd3YWl0
LWZvci1odHRwZCcgPT4gXCRzaG91bGRXYWl0Rm9ySFRUUEQsCiAgICAgJ2lnbm9yZS1tZXRyaWNz
IScgPT4gXCRpZ25vcmVNZXRyaWNzLAogICAgICdpZ25vcmUtdGVzdHN8aT1zJyA9PiBcJGlnbm9y
ZVRlc3RzLAogICAgICdpdGVyYXRpb25zPWknID0+IFwkaXRlcmF0aW9ucywKQEAgLTMwOCw2ICsz
MTEsOCBAQCBteSAkc2tpcHBlZE9ubHkgPSAkdHJlYXRTa2lwcGVkIGVxICJvbmx5CiAKIG15ICRj
b25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbigpOwogCisjIFdlIG5lZWQgYW4gZW52aXJvbm1l
bnQgdmFyaWFibGUgdG8gYmUgYWJsZSB0byBlbmFibGUgdGhlIGZlYXR1cmUgcGVyLXNsYXZlCisk
c2hvdWxkV2FpdEZvckhUVFBEID0gJEVOVnsiV0VCS0lUX1dBSVRfRk9SX0hUVFBEIn0gdW5sZXNz
ICgkc2hvdWxkV2FpdEZvckhUVFBEKTsKICR2ZXJib3NlID0gMSBpZiAkdGVzdHNQZXJEdW1wVG9v
bCA9PSAxOwogCiBpZiAoJHNob3VsZENoZWNrTGVha3MgJiYgJHRlc3RzUGVyRHVtcFRvb2wgPiAx
MDAwKSB7CkBAIC05NDMsNyArOTQ4LDE0IEBAIGZvciBteSAkdGVzdCAoQHRlc3RzKSB7CiAgICAg
ICAgIH0KICAgICB9CiB9Ci1wcmludGYgIlxuJTAuMmZzIHRvdGFsIHRlc3RpbmcgdGltZVxuIiwg
KHRpbWUgLSAkb3ZlcmFsbFN0YXJ0VGltZSkgLiAiIjsKK215ICR0b3RhbFRlc3RpbmdUaW1lID0g
dGltZSAtICRvdmVyYWxsU3RhcnRUaW1lOworbXkgJHdhaXRUaW1lID0gZ2V0V2FpdFRpbWUoKTsK
K2lmICgkd2FpdFRpbWUgPiAwLjEpIHsKKyAgICBteSAkbm9ybWFsaXplZFRlc3RpbmdUaW1lID0g
JHRvdGFsVGVzdGluZ1RpbWUgLSAkd2FpdFRpbWU7CisgICAgcHJpbnRmICJcbiUwLjJmcyBIVFRQ
RCB3YWl0aW5nIHRpbWVcbiIsICR3YWl0VGltZSAuICIiOworICAgIHByaW50ZiAiJTAuMmZzIG5v
cm1hbGl6ZWQgdGVzdGluZyB0aW1lIiwgJG5vcm1hbGl6ZWRUZXN0aW5nVGltZSAuICIiOworfQor
cHJpbnRmICJcbiUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRpbWVcbiIsICR0b3RhbFRlc3RpbmdUaW1l
IC4gIiI7CiAKICEkaXNEdW1wVG9vbE9wZW4gfHwgZGllICJGYWlsZWQgdG8gY2xvc2UgJGR1bXBU
b29sTmFtZS5cbiI7CiAKQEAgLTEzNjAsNiArMTM3Miw3IEBAIHN1YiBjb25maWd1cmVBbmRPcGVu
SFRUUERJZk5lZWRlZCgpCiAgICAgbXkgQGRlZmF1bHRBcmdzID0gZ2V0RGVmYXVsdENvbmZpZ0Zv
clRlc3REaXJlY3RvcnkoJHRlc3REaXJlY3RvcnkpOwogICAgIEBhcmdzID0gKEBkZWZhdWx0QXJn
cywgQGFyZ3MpOwogCisgICAgd2FpdEZvckhUVFBETG9jaygpIGlmICRzaG91bGRXYWl0Rm9ySFRU
UEQ7CiAgICAgJGlzSHR0cGRPcGVuID0gb3BlbkhUVFBEKEBhcmdzKTsKIH0KIApJbmRleDogV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2h0dHBkLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9odHRwZC5wbQkocmV2aXNpb24gNTQzNDApCisrKyBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvaHR0cGQucG0JKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAgdXNlIHdhcm5pbmdzOwogdXNlIEZpbGU6OlBhdGg7CiB1c2UgRmlsZTo6
U3BlYzsKIHVzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7Cit1c2UgRmNudGwgJzpmbG9jayc7CiB1
c2UgSVBDOjpPcGVuMjsKIAogdXNlIHdlYmtpdGRpcnM7CkBAIC00MywyMCArNDQsMjUgQEAgQkVH
SU4gewogICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9S
VF9UQUdTKTsKICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICBASVNBICAgICAgICAgPSBxdyhF
eHBvcnRlcik7Ci0gICBARVhQT1JUICAgICAgPSBxdygmZ2V0SFRUUERQYXRoICZnZXREZWZhdWx0
Q29uZmlnRm9yVGVzdERpcmVjdG9yeSAmb3BlbkhUVFBEICZjbG9zZUhUVFBEICZnZXRIVFRQRFBp
ZCAmc2V0U2hvdWxkV2FpdEZvclVzZXJJbnRlcnJ1cHQpOworICAgQEVYUE9SVCAgICAgID0gcXco
JmdldEhUVFBEUGF0aCAmZ2V0RGVmYXVsdENvbmZpZ0ZvclRlc3REaXJlY3RvcnkgJm9wZW5IVFRQ
RCAmY2xvc2VIVFRQRCAmc2V0U2hvdWxkV2FpdEZvclVzZXJJbnRlcnJ1cHQgJndhaXRGb3JIVFRQ
RExvY2sgJmdldFdhaXRUaW1lKTsKICAgICVFWFBPUlRfVEFHUyA9ICggKTsKICAgIEBFWFBPUlRf
T0sgICA9ICgpOwogfQogCiBteSAkdG1wRGlyID0gIi90bXAiOworbXkgJGh0dHBkTG9ja1ByZWZp
eCA9ICJXZWJLaXRIdHRwZC5sb2NrLiI7CitteSAkbXlMb2NrRmlsZTsKK215ICRleGNsdXNpdmVM
b2NrRmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcERpciwgIldlYktpdC5sb2NrIik7CiBt
eSAkaHR0cGRQYXRoOwogbXkgJGh0dHBkUGlkRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdG1w
RGlyLCAiV2ViS2l0Iik7CiBteSAkaHR0cGRQaWRGaWxlID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgk
aHR0cGRQaWREaXIsICJodHRwZC5waWQiKTsKIG15ICRodHRwZFBpZDsKIG15ICR3YWl0Rm9yVXNl
ckludGVycnVwdCA9IDA7CitteSAkd2FpdEJlZ2luVGltZTsKK215ICR3YWl0RW5kVGltZTsKIAot
JFNJR3snSU5UJ30gPSAnY2xlYW51cCc7Ci0kU0lHeydURVJNJ30gPSAnY2xlYW51cCc7CiskU0lH
eydJTlQnfSA9ICdoYW5kbGVJbnRlcnJ1cHQnOworJFNJR3snVEVSTSd9ID0gJ2hhbmRsZUludGVy
cnVwdCc7CiAKIHN1YiBnZXRIVFRQRFBhdGgKIHsKQEAgLTE0MSw3ICsxNDcsMTAgQEAgc3ViIG9w
ZW5IVFRQRChAKQogICAgICAgICAgICAgICAgIC0tJHJldHJ5Q291bnQ7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRvIHF1aXQi
IHVubGVzcyAkcmV0cnlDb3VudDsKKyAgICAgICAgICAgIGlmICghJHJldHJ5Q291bnQpIHsKKyAg
ICAgICAgICAgICAgICBjbGVhblVwKCk7CisgICAgICAgICAgICAgICAgZGllICJUaW1lZCBvdXQg
d2FpdGluZyBmb3IgaHR0cGQgdG8gcXVpdCI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTE1Niw3ICsxNjUsNyBAQCBzdWIgb3BlbkhUVFBEKEApCiAgICAgfQogCiAgICAg
aWYgKCEkcmV0cnlDb3VudCkgewotICAgICAgICBybXRyZWUgJGh0dHBkUGlkRGlyOworICAgICAg
ICBjbGVhblVwKCk7CiAgICAgICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGh0dHBkIHRv
IHN0YXJ0IjsKICAgICB9CiAKQEAgLTE3MiwyMCArMTgxLDE5IEBAIHN1YiBvcGVuSFRUUEQoQCkK
IHN1YiBjbG9zZUhUVFBECiB7CiAgICAgY2xvc2UgSFRUUERJTjsKKyAgICBteSAkcmV0cnlDb3Vu
dCA9IDIwOwogICAgIGlmICgkaHR0cGRQaWQpIHsKICAgICAgICAga2lsbCAxNSwgJGh0dHBkUGlk
OwotICAgICAgICBteSAkcmV0cnlDb3VudCA9IDIwOwogICAgICAgICB3aGlsZSAoLWYgJGh0dHBk
UGlkRmlsZSAmJiAkcmV0cnlDb3VudCkgewogICAgICAgICAgICAgc2xlZXAgMTsKICAgICAgICAg
ICAgIC0tJHJldHJ5Q291bnQ7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoISRyZXRyeUNvdW50
KSB7Ci0gICAgICAgICAgICBwcmludCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBodHRw
ZCB0byB0ZXJtaW5hdGUhXG4iOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KICAg
ICB9Ci0gICAgcm1kaXIgJGh0dHBkUGlkRGlyOworICAgIGNsZWFuVXAoKTsKKyAgICBpZiAoISRy
ZXRyeUNvdW50KSB7CisgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9y
IGh0dHBkIHRvIHRlcm1pbmF0ZSFcbiI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBy
ZXR1cm4gMTsKIH0KIApAQCAtMTk0LDkgKzIwMiw5NCBAQCBzdWIgc2V0U2hvdWxkV2FpdEZvclVz
ZXJJbnRlcnJ1cHQKICAgICAkd2FpdEZvclVzZXJJbnRlcnJ1cHQgPSAxOwogfQogCi1zdWIgY2xl
YW51cAorc3ViIGhhbmRsZUludGVycnVwdAogewogICAgIGNsb3NlSFRUUEQoKTsKICAgICBwcmlu
dCAiXG4iOwogICAgIGV4aXQoMSk7CiB9CisKK3N1YiBjbGVhblVwCit7CisgICAgcm1kaXIgJGh0
dHBkUGlkRGlyOworICAgIHVubGluayAkZXhjbHVzaXZlTG9ja0ZpbGU7CisgICAgdW5saW5rICRt
eUxvY2tGaWxlIGlmICRteUxvY2tGaWxlOworfQorCitzdWIgZXh0cmFjdExvY2tOdW1iZXIKK3sK
KyAgICBteSAoJGxvY2tGaWxlKSA9IEBfOworICAgIHJldHVybiAtMSB1bmxlc3MgJGxvY2tGaWxl
OworICAgIHJldHVybiBzdWJzdHIoJGxvY2tGaWxlLCBsZW5ndGgoJGh0dHBkTG9ja1ByZWZpeCkp
OworfQorCitzdWIgZ2V0TG9ja0ZpbGVzCit7CisgICAgb3BlbmRpcihUTVBESVIsICR0bXBEaXIp
IG9yIGRpZSAiQ291bGQgbm90IG9wZW4gIiAuICR0bXBEaXIgLiAiLiI7CisgICAgbXkgQGxvY2tG
aWxlcyA9IGdyZXAge20vXiRodHRwZExvY2tQcmVmaXhcZCskL30gcmVhZGRpcihUTVBESVIpOwor
ICAgIEBsb2NrRmlsZXMgPSBzb3J0IHsgZXh0cmFjdExvY2tOdW1iZXIoJGEpIDw9PiBleHRyYWN0
TG9ja051bWJlcigkYikgfSBAbG9ja0ZpbGVzOworICAgIGNsb3NlZGlyKFRNUERJUik7CisgICAg
cmV0dXJuIEBsb2NrRmlsZXM7Cit9CisKK3N1YiBnZXROZXh0QXZhaWxhYmxlTG9ja051bWJlcgor
eworICAgIG15IEBsb2NrRmlsZXMgPSBnZXRMb2NrRmlsZXMoKTsKKyAgICByZXR1cm4gMCB1bmxl
c3MgQGxvY2tGaWxlczsKKyAgICByZXR1cm4gZXh0cmFjdExvY2tOdW1iZXIoJGxvY2tGaWxlc1st
MV0pICsgMTsKK30KKworc3ViIGdldExvY2tOdW1iZXJGb3JDdXJyZW50UnVubmluZworeworICAg
IG15IEBsb2NrRmlsZXMgPSBnZXRMb2NrRmlsZXMoKTsKKyAgICByZXR1cm4gMCB1bmxlc3MgQGxv
Y2tGaWxlczsKKyAgICByZXR1cm4gZXh0cmFjdExvY2tOdW1iZXIoJGxvY2tGaWxlc1swXSk7Cit9
CisKK3N1YiB3YWl0Rm9ySFRUUERMb2NrCit7CisgICAgJHdhaXRCZWdpblRpbWUgPSB0aW1lOwor
ICAgIHNjaGVkdWxlSHR0cFRlc3RpbmcoKTsKKyAgICAjIElmIHdlIGFyZSB0aGUgb25seSBvbmUg
d2FpdGluZyBmb3IgQXBhY2hlIGp1c3QgcnVuIHRoZSB0ZXN0cyB3aXRob3V0IGFueSBmdXJ0aGVy
IGNoZWNraW5nCisgICAgaWYgKHNjYWxhciBnZXRMb2NrRmlsZXMoKSA+IDEpIHsKKyAgICAgICAg
bXkgJGN1cnJlbnRMb2NrRmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcERpciwgIiRodHRw
ZExvY2tQcmVmaXgiIC4gZ2V0TG9ja051bWJlckZvckN1cnJlbnRSdW5uaW5nKCkpOworICAgICAg
ICBteSAkY3VycmVudExvY2tQaWQgPSA8U0NIRURVTEVSX0xPQ0s+IGlmICgtZiAkY3VycmVudExv
Y2tGaWxlICYmIG9wZW4oU0NIRURVTEVSX0xPQ0ssICI8JGN1cnJlbnRMb2NrRmlsZSIpKTsKKyAg
ICAgICAgIyBXYWl0IHVudGlsIHdlIGFyZSBhbGxvd2VkIHRvIHJ1biB0aGUgaHR0cCB0ZXN0cwor
ICAgICAgICB3aGlsZSAoJGN1cnJlbnRMb2NrUGlkICYmICRjdXJyZW50TG9ja1BpZCAhPSAkJCkg
eworICAgICAgICAgICAgJGN1cnJlbnRMb2NrRmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRt
cERpciwgIiRodHRwZExvY2tQcmVmaXgiIC4gZ2V0TG9ja051bWJlckZvckN1cnJlbnRSdW5uaW5n
KCkpOworICAgICAgICAgICAgaWYgKCRjdXJyZW50TG9ja0ZpbGUgZXEgJG15TG9ja0ZpbGUpIHsK
KyAgICAgICAgICAgICAgICAkY3VycmVudExvY2tQaWQgPSA8U0NIRURVTEVSX0xPQ0s+IGlmIG9w
ZW4oU0NIRURVTEVSX0xPQ0ssICI8JGN1cnJlbnRMb2NrRmlsZSIpOworICAgICAgICAgICAgICAg
IGlmICgkY3VycmVudExvY2tQaWQgIT0gJCQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQg
U1RERVJSICJcblBJRCBtaXNtYXRjaC5cbiI7CisgICAgICAgICAgICAgICAgICAgIGxhc3Q7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
bGVlcCAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgICR3YWl0RW5kVGlt
ZSA9IHRpbWU7Cit9CisKK3N1YiBzY2hlZHVsZUh0dHBUZXN0aW5nCit7CisgICAgIyBXZSBuZWVk
IGFuIGV4Y2x1c2l2ZSBsb2NrIGZpbGUgdG8gYXZvaWQgZGVhZGxvY2tzIGFuZCBzdGFydmF0aW9u
IGFuZCBlbnN1cmUgdGhhdCB0aGUgc2NoZWR1bGVyIGxvY2sgbnVtYmVycyBhcmUgc2VxdWVudGlh
bC4KKyAgICAjIFRoZSBzY2hlZHVsZXIgbG9ja3MgYXJlIHVzZWQgdG8gc2NoZWR1bGUgdGhlIHJ1
bm5pbmcgdGVzdCBzZXNzaW9ucyBpbiBmaXJzdCBjb21lIGZpcnN0IHNlcnZlZCBvcmRlci4KKyAg
ICB3aGlsZSAoIShvcGVuKFNFUVVFTlRJQUxfR1VBUkRfTE9DSywgIj4kZXhjbHVzaXZlTG9ja0Zp
bGUiKSAmJiBmbG9jayhTRVFVRU5USUFMX0dVQVJEX0xPQ0ssIExPQ0tfRVh8TE9DS19OQikpKSB7
fQorICAgICRteUxvY2tGaWxlID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdG1wRGlyLCAiJGh0dHBk
TG9ja1ByZWZpeCIgLiBnZXROZXh0QXZhaWxhYmxlTG9ja051bWJlcigpKTsKKyAgICBvcGVuKFND
SEVEVUxFUl9MT0NLLCAiPiRteUxvY2tGaWxlIik7CisgICAgcHJpbnQgU0NIRURVTEVSX0xPQ0sg
IiQkIjsKKyAgICBwcmludCBTRVFVRU5USUFMX0dVQVJEX0xPQ0sgIiQkIjsKKyAgICBjbG9zZShT
Q0hFRFVMRVJfTE9DSyk7CisgICAgY2xvc2UoU0VRVUVOVElBTF9HVUFSRF9MT0NLKTsKKyAgICB1
bmxpbmsgJGV4Y2x1c2l2ZUxvY2tGaWxlOworfQorCitzdWIgZ2V0V2FpdFRpbWUKK3sKKyAgICBt
eSAkd2FpdFRpbWUgPSAwOworICAgIGlmICgkd2FpdEJlZ2luVGltZSAmJiAkd2FpdEVuZFRpbWUp
IHsKKyAgICAgICAgJHdhaXRUaW1lID0gJHdhaXRFbmRUaW1lIC0gJHdhaXRCZWdpblRpbWU7Cisg
ICAgfQorICAgIHJldHVybiAkd2FpdFRpbWU7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>