<?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>36063</bug_id>
          
          <creation_ts>2010-03-12 10:18:59 -0800</creation_ts>
          <short_desc>Upload test result json files to app engine server</short_desc>
          <delta_ts>2010-05-08 12:37:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Wang">victorw</reporter>
          <assigned_to name="Victor Wang">victorw</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>nsylvain</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>199118</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-12 10:18:59 -0800</bug_when>
    <thetext>Update run_webkit_test.py to upload generated JSON files to app engine server. This is for Chromium flakiness dashboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199125</commentid>
    <comment_count>1</comment_count>
      <attachid>50608</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-12 10:31:59 -0800</bug_when>
    <thetext>Created attachment 50608
Proposed patch

Hi Ojan / Nicolas,

Could you take a look at the patch? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199335</commentid>
    <comment_count>2</comment_count>
      <attachid>50608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-13 01:53:32 -0800</bug_when>
    <thetext>Comment on attachment 50608
Proposed patch

Please use Mechanize to upload files to AppEngine instead of rolling your own HTTP client.  You can find examples in webkitpy/statusserver.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199938</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-15 17:51:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 50608 [details])
&gt; Please use Mechanize to upload files to AppEngine instead of rolling your own
&gt; HTTP client.  You can find examples in webkitpy/statusserver.py

I believe this will make the script not work with Python 2.4 any more, which runs into concerns raised here:

https://bugs.webkit.org/show_bug.cgi?id=35584#c20

I&apos;ll try to re-post to webkit-dev tonight asking for clarification on whether we need to maintain 2.4 compatibility for scripts like this.  It would be good for everyone to be on the same page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201528</commentid>
    <comment_count>4</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-18 13:41:34 -0700</bug_when>
    <thetext>Chromium webkit test still requires python 2.4, how about use the current implementations for now and move to mechanize once chromium webkit test is ready for higher python version? I can file another bug to track the migration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201541</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-18 13:54:43 -0700</bug_when>
    <thetext>I don&apos;t think we should be writing our own HTTP client code.  Plenty of libraries exist for that.  Are there really none that work in Python 2.4?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201912</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-19 10:17:58 -0700</bug_when>
    <thetext>Frabjous day!

On Fri, Mar 19, 2010 at 9:57 AM, Chris Jerdonek &lt;cjerdonek@webkit.org&gt; wrote:
&gt; Mechanize (and ClientForm on which it depends) does work with Python 2.4:
&gt;
&gt; http://wwwsearch.sourceforge.net/mechanize/
&gt;
&gt; (See the section on compatibility.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201915</commentid>
    <comment_count>7</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-19 10:28:35 -0700</bug_when>
    <thetext>I did check the same page yesterday. The issue with mechanize is we are using autoinstall to bind it, and looks to me autoinstall.py is not compatible with python 2.4.

(In reply to comment #6)
&gt; Frabjous day!
&gt; 
&gt; On Fri, Mar 19, 2010 at 9:57 AM, Chris Jerdonek &lt;cjerdonek@webkit.org&gt; wrote:
&gt; &gt; Mechanize (and ClientForm on which it depends) does work with Python 2.4:
&gt; &gt;
&gt; &gt; http://wwwsearch.sourceforge.net/mechanize/
&gt; &gt;
&gt; &gt; (See the section on compatibility.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201924</commentid>
    <comment_count>8</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-19 10:41:32 -0700</bug_when>
    <thetext>I also tried another thirdparty library but got an issue with multiple file uploads with AE and I am still investigating what&apos;s wrong. Maybe we should make autoinstall.py compatible with 2.4?

(In reply to comment #7)
&gt; I did check the same page yesterday. The issue with mechanize is we are using
&gt; autoinstall to bind it, and looks to me autoinstall.py is not compatible with
&gt; python 2.4.
&gt; 
&gt; (In reply to comment #6)
&gt; &gt; Frabjous day!
&gt; &gt; 
&gt; &gt; On Fri, Mar 19, 2010 at 9:57 AM, Chris Jerdonek &lt;cjerdonek@webkit.org&gt; wrote:
&gt; &gt; &gt; Mechanize (and ClientForm on which it depends) does work with Python 2.4:
&gt; &gt; &gt;
&gt; &gt; &gt; http://wwwsearch.sourceforge.net/mechanize/
&gt; &gt; &gt;
&gt; &gt; &gt; (See the section on compatibility.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201925</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-19 10:43:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I did check the same page yesterday. The issue with mechanize is we are using
&gt; autoinstall to bind it, and looks to me autoinstall.py is not compatible with
&gt; python 2.4.

I submitted a patch to get autoinstall.py and the rest of webkitpy working with Python 2.4, but it was rejected as WONTFIX:

https://bugs.webkit.org/show_bug.cgi?id=35584

I&apos;d be happy to resubmit all or part of that patch within the next few days.  Alternatively, you can grab whatever you need from that patch to get this patch working.  From my recollection, the changes to autoinstall itself are minimal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201930</commentid>
    <comment_count>10</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-19 10:50:50 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; I did check the same page yesterday. The issue with mechanize is we are using
&gt; &gt; autoinstall to bind it, and looks to me autoinstall.py is not compatible with
&gt; &gt; python 2.4.
&gt; 
&gt; I submitted a patch to get autoinstall.py and the rest of webkitpy working with
&gt; Python 2.4, but it was rejected as WONTFIX:
&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=35584
&gt; 
&gt; I&apos;d be happy to resubmit all or part of that patch within the next few days. 
&gt; Alternatively, you can grab whatever you need from that patch to get this patch
&gt; working.  From my recollection, the changes to autoinstall itself are minimal.

This sounds good to me. I will grab your change in autoinstall.py. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201935</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-19 11:00:27 -0700</bug_when>
    <thetext>Look(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; I did check the same page yesterday. The issue with mechanize is we are using
&gt; &gt; &gt; autoinstall to bind it, and looks to me autoinstall.py is not compatible with
&gt; &gt; &gt; python 2.4.
&gt; &gt; 
&gt; &gt; I submitted a patch to get autoinstall.py and the rest of webkitpy working with
&gt; &gt; Python 2.4, but it was rejected as WONTFIX:
&gt; &gt; 
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=35584
&gt; &gt; 
&gt; &gt; I&apos;d be happy to resubmit all or part of that patch within the next few days. 
&gt; &gt; Alternatively, you can grab whatever you need from that patch to get this patch
&gt; &gt; working.  From my recollection, the changes to autoinstall itself are minimal.
&gt; 
&gt; This sounds good to me. I will grab your change in autoinstall.py. Thanks!

It sounds like the Chromium bots should be entirely on python 2.5+ by Monday. Lets just wait a couple days instead of adding more code. In the meantime, you can get a patch up and reviewed that works for python 2.5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203266</commentid>
    <comment_count>12</comment_count>
      <attachid>51464</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-23 15:47:00 -0700</bug_when>
    <thetext>Created attachment 51464
Proposed patch

Attached is a new patch that uses mechanize.Browser to upload files.
This patch imports mechanize.Browser through autoinstall.py, which requires python 2.5 for now, so this patch CANNOT be committed until all chromium bots and chromium run_webkit_test shell scripts are upgraded. I will track the chromium status and commit when it is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204782</commentid>
    <comment_count>13</comment_count>
      <attachid>51464</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-26 14:28:20 -0700</bug_when>
    <thetext>Comment on attachment 51464
Proposed patch

Looks good.  I&apos;m concerned about lack of testing, but I&apos;m not sure how you&apos;d test this all.

WebKit would like to use this sort of infrastructure as soon as it&apos;s ready.  I have code in webkit-patch to produce .json files from historical results.html files from http://build.webkit.org/results  Once the test results server is ready to actually process those .json files I&apos;m happy to wire up things to upload them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204823</commentid>
    <comment_count>14</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-26 15:15:13 -0700</bug_when>
    <thetext>Thanks Eric!
test results server has been up and serving the chromium webkit test flakiness dashboard since last week. The app is also ready to host json files and serve them. Feel free to play with it and let me know your feedback. I will also start feed some real files to see how stable it is.

If you like, I could add you to the admin account for this AE. Here are the servers:
http://test-results-test.appspot.com/
TEST server: http://test-results-test.appspot.com/

(In reply to comment #13)
&gt; (From update of attachment 51464 [details])
&gt; Looks good.  I&apos;m concerned about lack of testing, but I&apos;m not sure how you&apos;d
&gt; test this all.
&gt; 
&gt; WebKit would like to use this sort of infrastructure as soon as it&apos;s ready.  I
&gt; have code in webkit-patch to produce .json files from historical results.html
&gt; files from http://build.webkit.org/results  Once the test results server is
&gt; ready to actually process those .json files I&apos;m happy to wire up things to
&gt; upload them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207216</commentid>
    <comment_count>15</comment_count>
      <attachid>52304</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-04-01 09:55:47 -0700</bug_when>
    <thetext>Created attachment 52304
Minor update to work with new autoinstall.py

A new version of autoinstall.py landed, update this patch to import the right package.

Still cannot land this patch as chromium bots are not ready on python 25 yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207890</commentid>
    <comment_count>16</comment_count>
      <attachid>52304</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 09:47:56 -0700</bug_when>
    <thetext>Comment on attachment 52304
Minor update to work with new autoinstall.py

Our experience with AppEngine is that you need to re-try writes because AppEngine sometimes responds with 500 errors.  If you look in the webkitpy.common.net package, you&apos;ll find a NetworkTransaction class that can help with this.  You can look at example code to see how it works.  In any case, that&apos;s a refinement we can do in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209470</commentid>
    <comment_count>17</comment_count>
      <attachid>51464</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 23:43:47 -0700</bug_when>
    <thetext>Comment on attachment 51464
Proposed patch

Cleared Eric Seidel&apos;s review+ from obsolete attachment 51464 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219275</commentid>
    <comment_count>18</comment_count>
      <attachid>54756</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-04-29 16:53:05 -0700</bug_when>
    <thetext>Created attachment 54756
update proposed patch

-. Merge with latest code for preparing patch landing (Chromium bots are ready for python 2.5+).
-. Simplify the upload code as the AE replaces blobstore with multiple datastore entries for file storage. Blobstore is good for large file but not suitable for incremental merging / updating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219967</commentid>
    <comment_count>19</comment_count>
      <attachid>52304</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-02 19:17:24 -0700</bug_when>
    <thetext>Comment on attachment 52304
Minor update to work with new autoinstall.py

Cleared Adam Barth&apos;s review+ from obsolete attachment 52304 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220661</commentid>
    <comment_count>20</comment_count>
      <attachid>54756</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-04 10:51:08 -0700</bug_when>
    <thetext>Comment on attachment 54756
update proposed patch

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:47
 +              self.browser.add_file(open(path, &quot;rb&quot;), &quot;text/plain&quot;, filename,
I don&apos;t think this complies with our new unicode overloads.  Also, I think it leaks a file handle.

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:63
 +    + LF
Is this correct?

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:56
 +              self._upload_files(params, files)
Did you look at networktransaction?  Our experience has been that we need to retry writes to AppEngine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220662</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-04 10:51:35 -0700</bug_when>
    <thetext>Eric, can you look at the unicodeness of this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220740</commentid>
    <comment_count>22</comment_count>
      <attachid>54756</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-04 13:40:25 -0700</bug_when>
    <thetext>Comment on attachment 54756
update proposed patch

WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1044
 +          for file in json_files:
This is simpler as:
files = [(file, os.path.join(self._options.results_directory, file)) for file in json_files]

WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1054
 +              uploader.upload(attrs, files, 120)
The files array being an array of name/path pairs seems slightly strange.  Why not just paths?

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:38
 +          self.browser = Browser()
Shouldn&apos;t this be self._browser?

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:37
 +          self.url = &quot;http://%s&quot; % host
self._url?

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:46
 +          for (filename, path) in files:
You can always get the name from os.path.basename(path) instead of having to pass it separately here.

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:47
 +              self.browser.add_file(open(path, &quot;rb&quot;), &quot;text/plain&quot;, filename,
To address Adam&apos;s question, yes this is unicode-safe.  ClientForm (used by Mechanize), excepts a file-like object returning str (byte array) objects.  So this is fine.  Are we sure they&apos;re text/plane though?  Do we need to give a more sophisticated mime type including the encoding?  JSON is always utf-8 iirc.

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:41
 +          self.browser.open(self.url + &quot;/testfile/uploadform&quot;)
%s is always better than +

r- for nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220827</commentid>
    <comment_count>23</comment_count>
      <attachid>55060</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-05-04 15:35:58 -0700</bug_when>
    <thetext>Created attachment 55060
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220832</commentid>
    <comment_count>24</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-05-04 15:39:54 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 54756 [details])
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:47
&gt;  +              self.browser.add_file(open(path, &quot;rb&quot;), &quot;text/plain&quot;, filename,
&gt; I don&apos;t think this complies with our new unicode overloads.  Also, I think it
&gt; leaks a file handle.
Fixed the file handle issue. See Eric&apos;s comments for unicode...

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:63
&gt;  +    + LF
&gt; Is this correct?
I thought we should set svn:eol style for these python files and this should be same as other python files in the same dir, maybe I miss something?

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:56
&gt;  +              self._upload_files(params, files)
&gt; Did you look at networktransaction?  Our experience has been that we need to
&gt; retry writes to AppEngine.
Done, with a shorter timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220833</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-04 15:40:01 -0700</bug_when>
    <thetext>Attachment 55060 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:36:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:70:  blank line at end of file  [pep8/W391] [5]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220837</commentid>
    <comment_count>26</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-05-04 15:44:14 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 54756 [details])
&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1044
&gt;  +          for file in json_files:
&gt; This is simpler as:
&gt; files = [(file, os.path.join(self._options.results_directory, file)) for file
&gt; in json_files]
done

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1054
&gt;  +              uploader.upload(attrs, files, 120)
&gt; The files array being an array of name/path pairs seems slightly strange.  Why
&gt; not just paths?
I think we should allow the uploader to have filename uploaded to AE different from the actual filename in local machine. In this case, they are the same, but think they could be different. For example, local file could be FileXyz.json, where Xyz could be a build number or time, but when uploading it to AE, we may just want to name it File.json.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:38
&gt;  +          self.browser = Browser()
&gt; Shouldn&apos;t this be self._browser?
done

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:37
&gt;  +          self.url = &quot;http://%s&quot; % host
&gt; self._url?
done

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:46
&gt;  +          for (filename, path) in files:
&gt; You can always get the name from os.path.basename(path) instead of having to
&gt; pass it separately here.
see comment above.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:47
&gt;  +              self.browser.add_file(open(path, &quot;rb&quot;), &quot;text/plain&quot;, filename,
&gt; To address Adam&apos;s question, yes this is unicode-safe.  ClientForm (used by
&gt; Mechanize), excepts a file-like object returning str (byte array) objects.  So
&gt; this is fine.  Are we sure they&apos;re text/plane though?  Do we need to give a
&gt; more sophisticated mime type including the encoding?  JSON is always utf-8
&gt; iirc.
done

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:41
&gt;  +          self.browser.open(self.url + &quot;/testfile/uploadform&quot;)
&gt; %s is always better than +
done

&gt; 
&gt; r- for nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220840</commentid>
    <comment_count>27</comment_count>
      <attachid>55065</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-05-04 15:50:33 -0700</bug_when>
    <thetext>Created attachment 55065
Fix styles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222748</commentid>
    <comment_count>28</comment_count>
      <attachid>55065</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-07 18:38:12 -0700</bug_when>
    <thetext>Comment on attachment 55065
Fix styles

Great!  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222930</commentid>
    <comment_count>29</comment_count>
      <attachid>55065</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-08 12:36:53 -0700</bug_when>
    <thetext>Comment on attachment 55065
Fix styles

Clearing flags on attachment: 55065

Committed r59036: &lt;http://trac.webkit.org/changeset/59036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222931</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-08 12:37:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50608</attachid>
            <date>2010-03-12 10:31:59 -0800</date>
            <delta_ts>2010-03-23 15:47:00 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>upload_json.patch</filename>
            <type>text/plain</type>
            <size>9870</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1OTExKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMTIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXTogVXBsb2FkIHRlc3QgcmVzdWx0cyBqc29uIGZpbGVzIHRv
IGFwcCBlbmdpbmUgc2VydmVyCisgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuX3dlYmtpdF90
ZXN0cy5weSB0byB1cGxvYWQgZ2VuZXJhdGVkCisgICAgICAgIEpTT04gZmlsZXMgdG8gYXBwIGVu
Z2luZSBzZXJ2ZXIuIFRoZXNlIEpTT04gZmlsZXMgd2lsbCBiZSB1c2VkCisgICAgICAgIGJ5IGNo
cm9taXVtIGxheW91dCB0ZXN0IGZhbGtpbmVzcyBkYXNoYm9hcmQuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYzCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBs
b2FkZXIucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDMtMTIgIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgQnVpbGQgZml4
IChmb3IgRVdTKS4gTWFrZSBzdXJlIHRoZSBuZXcgY29kZSBidWlsZHMgb24gb2xkZXIgc291cC4K
SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkocmV2aXNpb24gNTU4NjcpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMiArNjAsMTMgQEAgaW1wb3J0IHRyYWNlYmFjawogCiBp
bXBvcnQgc2ltcGxlanNvbgogCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVj
dGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19n
ZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1ldGVyZWRfc3RyZWFtCitmcm9t
IGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSBsYXlvdXRfcGFj
a2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9zaGVsbF90aHJlYWQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmlsZXMKK2Zy
b20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191cGxvYWRlcgorZnJvbSBsYXlv
dXRfcGFja2FnZSBpbXBvcnQgdGVzdF9zaGVsbF90aHJlYWQKIGZyb20gdGVzdF90eXBlcyBpbXBv
cnQgZnV6enlfaW1hZ2VfZGlmZgogZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBpbWFnZV9kaWZmCiBm
cm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCkBAIC02NzgsNyArNjc5LDEwIEBA
IGNsYXNzIFRlc3RSdW5uZXI6CiAKICAgICAgICAgIyBXcml0ZSB0aGUgc2FtZSBkYXRhIHRvIGxv
ZyBmaWxlcy4KICAgICAgICAgc2VsZi5fd3JpdGVfanNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3Vs
dHMsIHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlk
dWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlk
dWFsX3Rlc3RfdGltaW5ncykKKworICAgICAgICAjIFVwbG9hZCBnZW5lcmF0ZWQganNvbiBmaWxl
cyB0byBhcHBlbmdpbmUgc2VydmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgIHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVzKCkKIAogICAgICAgICAjIFdyaXRlIHRoZSBzdW1t
YXJ5IHRvIGRpc2sgKHJlc3VsdHMuaHRtbCkgYW5kIG1heWJlIG9wZW4gdGhlCiAgICAgICAgICMg
dGVzdF9zaGVsbCB0byB0aGlzIGZpbGUuCkBAIC04NTYsNyArODYwLDcgQEAgY2xhc3MgVGVzdFJ1
bm5lcjoKICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIAogICAgIGRlZiBfd3JpdGVfanNvbl9maWxl
cyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6CiAgICAgICAgICIiIldyaXRlcyB0aGUg
cmVzdWx0cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNPTiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCiAg
ICAgICAgIGRpci4KIApAQCAtODk4LDYgKzkwMiwzNSBAQCBjbGFzcyBUZXN0UnVubmVyOgogCiAg
ICAgICAgIF9sb2cuZGVidWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNPTiBmaWxlcy4iKQogCisgICAg
ZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlv
bnMudXBsb2FkX2pzb25fZmlsZXM6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBfbG9n
LmRlYnVnKCJVcGxvYWRpbmcgSlNPTiBmaWxlcyBmb3IgYnVpbGRlcjogJXMiLAorICAgICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMuYnVpbGRlcl9uYW1lKQorCisgICAgICAgIHBhcmFtcyA9
IFsoJ2J1aWxkZXInLCBzZWxmLl9vcHRpb25zLmJ1aWxkZXJfbmFtZSldCisgICAgICAgIGpzb25f
ZmlsZXMgPSBbInJlc3VsdHMuanNvbiIsICJleHBlY3RhdGlvbnMuanNvbiJdCisKKyAgICAgICAg
ZmlsZXMgPSBbXQorICAgICAgICBmb3IgZmlsZSBpbiBqc29uX2ZpbGVzOgorICAgICAgICAgICAg
ZmlsZXMuYXBwZW5kKChmaWxlLCBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgZmlsZSkpKQorCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICMgU2V0IGEgdXBsb2FkaW5nIHRpbWVvdXQgaW4gY2FzZSBhcHBlbmdpbmUgc2VydmVy
IGhhdmluZyBwcm9ibGVtLgorICAgICAgICAgICAgIyAxMjAgc2Vjb25kcyBhcmUgbW9yZSB0aGFu
IGVub3VnaCB0byB1cGxvYWQgdGVzdCByZXN1bHRzLgorICAgICAgICAgICAgZXJyb3IgPSB0ZXN0
X3Jlc3VsdHNfdXBsb2FkZXIudXBsb2FkKAorICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
anNvbl9maWxlc19zZXJ2ZXIsIHBhcmFtcywgZmlsZXMsIDEyMCkKKyAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiwgZXJyOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIHVwbG9hZCBq
c29uIGZpbGVzOiAlcyIsIHN0cihlcnIpKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
aWYgZXJyb3I6CisgICAgICAgICAgICBfbG9nLmVycm9yKGVycm9yKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygiSlNPTiBmaWxlcyB1cGxvYWRlZC4iKQorCiAgICAgZGVm
IF9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUoc2VsZiwgd3JpdGUsIHJlc3VsdF9zdW1t
YXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBl
LCByZXN1bHRfdHlwZV9zdHIpOgogICAgICAgICAiIiJQcmludCB0aGUgbnVtYmVyIG9mIHRoZSB0
ZXN0cyBpbiBhIGdpdmVuIHJlc3VsdCBjbGFzcy4KQEAgLTE2MzcsNiArMTY3MCwxNCBAQCBkZWYg
cGFyc2VfYXJncyhhcmdzPU5vbmUpOgogICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwg
Ii0tY2hyb21pdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJ1c2UgdGhlIENocm9taXVtIHBvcnQiKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigi
IiwgIi0tdXBsb2FkLWpzb24tZmlsZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSJVcGxvYWQganNvbiBmaWxlcyB0byBhcHBlbmdpbmUgc2VydmVyLiIpCisg
ICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1qc29uLWZpbGVzLXNlcnZlciIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9InRlc3QtcmVzdWx0cy5hcHBzcG90
LmNvbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ikhvc3Qgb2YgdGhlIGFw
cGVuZ2luZSBzZXJ2ZXIgdGhhdCBzdG9yZXMgZ2VuZXJhdGVkICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAianNvbiByZXN1bHRzLiIpCisKICAgICByZXR1cm4gb3B0aW9uX3Bh
cnNlci5wYXJzZV9hcmdzKGFyZ3MpCiAKIGlmICdfX21haW5fXycgPT0gX19uYW1lX186CkluZGV4
OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3Vw
bG9hZGVyLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEyNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGh0dHBsaWIKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgbWltZXR5
cGVzCitpbXBvcnQgc29ja2V0CitpbXBvcnQgdXJsbGliCitpbXBvcnQgdXJscGFyc2UKKworQk9V
TkRBUlkgPSAiQ2hyb21pdW1XZWJLaXRGb3JtQm91bmRhcnlWTDNxWWxBbUFPR0dGSEJZIgorCitk
ZWYgZ2V0X2NvbnRlbnRfdHlwZShmaWxlbmFtZSk6CisgICAgcmV0dXJuIG1pbWV0eXBlcy5ndWVz
c190eXBlKGZpbGVuYW1lKVswXSBvciAidGV4dC9wbGFpbiIKKworZGVmIGdlbmVyYXRlX2JvZHko
cGFyYW1zLCBmaWxlcyk6CisgICAgbGluZXMgPSBbXQorICAgIGZvciAobmFtZSwgZGF0YSkgaW4g
cGFyYW1zOgorICAgICAgICBsaW5lcy5hcHBlbmQoIi0tIiArIEJPVU5EQVJZKQorICAgICAgICBs
aW5lcy5hcHBlbmQoIkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiVzXCIi
ICUgbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5hcHBlbmQo
c3RyKGRhdGEpKQorCisgICAgZm9yIChmaWxlbmFtZSwgcGF0aCkgaW4gZmlsZXM6CisgICAgICAg
IGRhdGEgPSBvcGVuKHBhdGgsICJyYiIpLnJlYWQoKQorICAgICAgICBsaW5lcy5hcHBlbmQoIi0t
IiArIEJPVU5EQVJZKQorICAgICAgICBsaW5lcy5hcHBlbmQoIkNvbnRlbnQtRGlzcG9zaXRpb246
IGZvcm0tZGF0YTsgbmFtZT1cImZpbGVcIjsgIgorICAgICAgICAgICAgICAgICAgICAgImZpbGVu
YW1lPVwiJXNcIiIgJSBmaWxlbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCJDb250ZW50LVR5
cGU6ICIgKyBnZXRfY29udGVudF90eXBlKGZpbGVuYW1lKSkKKyAgICAgICAgbGluZXMuYXBwZW5k
KCIiKQorICAgICAgICBsaW5lcy5hcHBlbmQoZGF0YSkKKworICAgIGxpbmVzLmFwcGVuZCgiLS0i
ICsgQk9VTkRBUlkgKyAiLS0iKQorICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICByZXR1cm4gIlxu
Ii5qb2luKGxpbmVzKQorCitkZWYgZ2VuZXJhdGVfaGVhZGVyKGJvZHkpOgorICAgIHJldHVybiB7
ImNvbnRlbnQtdHlwZSI6ICJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iICsgQk9VTkRB
UlksCisgICAgICAgICAgICAiY29udGVudC1sZW5ndGgiOiBzdHIobGVuKGJvZHkpKX0KKworZGVm
IGdldF91cGxvYWRfdXJsKGhvc3QpOgorICAgIGNvbm4gPSBodHRwbGliLkhUVFBDb25uZWN0aW9u
KGhvc3QpCisgICAgdHJ5OgorICAgICAgICBjb25uLnJlcXVlc3QoIkdFVCIsICIvZ2V0dXBsb2Fk
dXJsIikKKyAgICAgICAgcmVzcG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKCkKKyAgICAgICAgaWYg
cmVzcG9uc2U6CisgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVhZCgpCisgICAgZmluYWxs
eToKKyAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICByZXR1cm4gTm9uZQorCitkZWYgdXBsb2Fk
X2ZpbGVzKHVwbG9hZF91cmwsIHBhcmFtcywgZmlsZXMpOgorICAgIGJvZHkgPSBnZW5lcmF0ZV9i
b2R5KHBhcmFtcywgZmlsZXMpCisgICAgaGVhZGVyID0gZ2VuZXJhdGVfaGVhZGVyKGJvZHkpCisK
KyAgICBwYXJzZWRfdXJsID0gdXJscGFyc2UudXJscGFyc2UodXBsb2FkX3VybCkKKyAgICBjb25u
ID0gaHR0cGxpYi5IVFRQQ29ubmVjdGlvbihwYXJzZWRfdXJsWzFdKQorCisgICAgdHJ5OgorICAg
ICAgICBjb25uLnJlcXVlc3QoIlBPU1QiLCBwYXJzZWRfdXJsWzJdLCBib2R5LCBoZWFkZXIpCisg
ICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpCisgICAgZmluYWxseToKKyAgICAg
ICAgY29ubi5jbG9zZSgpCisKKyAgICAjIGJsb2JzdG9yZSB1cGxvYWQgaGFuZGxlciBvbmx5IGFs
bG93cyByZWRpcmVjdCB3aGVuIHVwbG9hZCBlbmRzLgorICAgICMgR2V0IHRoZSB1cGxvYWQgc3Rh
dHVzIGZyb20gdGhlIHJlZGlyZWN0IHVybC4KKyAgICBpZiBub3QgcmVzcG9uc2Uuc3RhdHVzIGlu
IChodHRwbGliLk1PVkVEX1BFUk1BTkVOVExZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGh0dHBsaWIuRk9VTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cGxp
Yi5TRUVfT1RIRVIpOgorICAgICAgICByZXR1cm4gKCJJbmNvcnJlY3QgdXBsb2FkIHJlc3BvbnNl
OiAlZC4iICUgcmVzcG9uc2Uuc3RhdHVzKQorCisgICAgc3RhdHVzX3VybCA9IHJlc3BvbnNlLmdl
dGhlYWRlcigibG9jYXRpb24iKQorICAgIGlmIG5vdCBzdGF0dXNfdXJsOgorICAgICAgICByZXR1
cm4gKCJJbmNvcnJlY3QgdXBsb2FkIHJlc3BvbnNlOiBubyByZWRpcmVjdCB1cmwgZm91bmQuIikK
KworICAgIHBhcnNlZF91cmwgPSB1cmxwYXJzZS51cmxwYXJzZShzdGF0dXNfdXJsKQorICAgIGlm
IChwYXJzZWRfdXJsWzJdID09ICIvdXBsb2Fkc3VjY2VzcyIpOiAKKyAgICAgICAgIyBVcGxvYWQg
ZG9uZSwgbm8gZXJyb3IKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGlmIChwYXJzZWRfdXJs
WzJdID09ICIvdXBsb2FkZmFpbCIpOgorICAgICAgICByZXR1cm4gdXJsbGliLnVucXVvdGUocGFy
c2VkX3VybFs0XS5yZXBsYWNlKCImIiwgIlxuIikpCisKKyAgICByZXR1cm4gKCJJbmNycmVjdCB1
cGxvYWQgcmVzcG9uc2U6IHJlZGlyZWN0IHVybDogJXMuIiAlIHN0YXR1c191cmwpCisKK2RlZiB1
cGxvYWQoaG9zdCwgcGFyYW1zLCBmaWxlcywgdGltZW91dCk6CisgICAgb3JpZ190aW1lb3V0ID0g
c29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkKKyAgICB0cnk6CisgICAgICAgIHNvY2tldC5zZXRk
ZWZhdWx0dGltZW91dCh0aW1lb3V0KQorCisgICAgICAgIHVwbG9hZF91cmwgPSBnZXRfdXBsb2Fk
X3VybChob3N0KQorICAgICAgICBpZiBub3QgdXBsb2FkX3VybDoKKyAgICAgICAgICAgIHJldHVy
biAiRmFpbGVkIHRvIGdldCB1cGxvYWQgdXJsLiIKKworICAgICAgICByZXR1cm4gdXBsb2FkX2Zp
bGVzKHVwbG9hZF91cmwsIHBhcmFtcywgZmlsZXMpCisgICAgZmluYWxseToKKyAgICAgICAgc29j
a2V0LnNldGRlZmF1bHR0aW1lb3V0KG9yaWdfdGltZW91dCkKClByb3BlcnR5IGNoYW5nZXMgb246
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfcmVzdWx0c191cGxvYWRlci5weQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoK
</data>
<flag name="review"
          id="33775"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51464</attachid>
            <date>2010-03-23 15:47:00 -0700</date>
            <delta_ts>2010-04-06 23:43:47 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>test-results.patch</filename>
            <type>text/plain</type>
            <size>8720</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1OTExKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMtMTIgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXTogVXBsb2FkIHRlc3QgcmVzdWx0cyBqc29uIGZpbGVzIHRv
IGFwcCBlbmdpbmUgc2VydmVyCisgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuX3dlYmtpdF90
ZXN0cy5weSB0byB1cGxvYWQgZ2VuZXJhdGVkCisgICAgICAgIEpTT04gZmlsZXMgdG8gYXBwIGVu
Z2luZSBzZXJ2ZXIuIFRoZXNlIEpTT04gZmlsZXMgd2lsbCBiZSB1c2VkCisgICAgICAgIGJ5IGNo
cm9taXVtIGxheW91dCB0ZXN0IGZhbGtpbmVzcyBkYXNoYm9hcmQuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYzCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBs
b2FkZXIucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDMtMTIgIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgQnVpbGQgZml4
IChmb3IgRVdTKS4gTWFrZSBzdXJlIHRoZSBuZXcgY29kZSBidWlsZHMgb24gb2xkZXIgc291cC4K
SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkocmV2aXNpb24gNTY0MjIpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC02MCwxNiArNjAsMTcgQEAgaW1wb3J0IHRyYWNlYmFjawogCiBp
bXBvcnQgc2ltcGxlanNvbgogCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVj
dGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19n
ZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1ldGVyZWRfc3RyZWFtCitmcm9t
IGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSBsYXlvdXRfcGFj
a2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9zaGVsbF90aHJlYWQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmlsZXMKK2Zy
b20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191cGxvYWRlcgorZnJvbSBsYXlv
dXRfcGFja2FnZSBpbXBvcnQgdGVzdF9zaGVsbF90aHJlYWQKIGZyb20gdGVzdF90eXBlcyBpbXBv
cnQgZnV6enlfaW1hZ2VfZGlmZgogZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBpbWFnZV9kaWZmCi1m
cm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCiBmcm9tIHRlc3RfdHlwZXMgaW1w
b3J0IHRleHRfZGlmZgorZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCB0ZXN0X3R5cGVfYmFzZQogCiBp
bXBvcnQgcG9ydAogCkBAIC02ODIsNiArNjgzLDkgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAg
ICAgc2VsZi5fd3JpdGVfanNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1t
YXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cykKIAorICAgICAgICAjIFVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcyB0byBhcHBlbmdpbmUg
c2VydmVyLgorICAgICAgICBzZWxmLl91cGxvYWRfanNvbl9maWxlcygpCisKICAgICAgICAgIyBX
cml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwpIGFuZCBtYXliZSBvcGVuIHRo
ZQogICAgICAgICAjIHRlc3Rfc2hlbGwgdG8gdGhpcyBmaWxlLgogICAgICAgICB3cm90ZV9yZXN1
bHRzID0gc2VsZi5fd3JpdGVfcmVzdWx0c19odG1sX2ZpbGUocmVzdWx0X3N1bW1hcnkpCkBAIC05
MDAsNiArOTA0LDM4IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAKICAgICAgICAgX2xvZy5kZWJ1Zygi
RmluaXNoZWQgd3JpdGluZyBKU09OIGZpbGVzLiIpCiAKKyAgICBkZWYgX3VwbG9hZF9qc29uX2Zp
bGVzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy51cGxvYWRfanNvbl9maWxl
czoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIF9sb2cuZGVidWcoIlVwbG9hZGluZyBK
U09OIGZpbGVzIGZvciBidWlsZGVyOiAlcyIsCisgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5idWlsZGVyX25hbWUpCisKKyAgICAgICAgYXR0cnMgPSBbKCdidWlsZGVyJywgc2VsZi5f
b3B0aW9ucy5idWlsZGVyX25hbWUpXQorICAgICAgICBqc29uX2ZpbGVzID0gWyJleHBlY3RhdGlv
bnMuanNvbiIsICJyZXN1bHRzLmpzb24iXQorCisgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAg
Zm9yIGZpbGUgaW4ganNvbl9maWxlczoKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4o
c2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgZmlsZSkKKyAgICAgICAgICAgIF9sb2cu
ZGVidWcoIkpTT04gZmlsZSB0byB1cGxvYWQ6ICVzIiwgcGF0aCkKKyAgICAgICAgICAgIGZpbGVz
LmFwcGVuZCgoZmlsZSwgcGF0aCkpCisKKyAgICAgICAgdXBsb2FkZXIgPSB0ZXN0X3Jlc3VsdHNf
dXBsb2FkZXIuVGVzdFJlc3VsdHNVcGxvYWRlcigKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
anNvbl9maWxlc19zZXJ2ZXIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgU2V0IHVwbG9h
ZGluZyB0aW1lb3V0IGluIGNhc2UgYXBwZW5naW5lIHNlcnZlciBpcyBoYXZpbmcgcHJvYmxlbS4K
KyAgICAgICAgICAgICMgMTIwIHNlY29uZHMgYXJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gdXBsb2Fk
IHRlc3QgcmVzdWx0cy4KKyAgICAgICAgICAgIGVycm9yID0gdXBsb2FkZXIudXBsb2FkKGF0dHJz
LCBmaWxlcywgMTIwKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlcnI6CisgICAgICAgICAg
ICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gdXBsb2FkIGpzb24gZmlsZXM6IHNlcnZlcjogJXMsICVz
IiwKKyAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuanNvbl9maWxlc19zZXJ2ZXIsIHN0cihl
cnIpKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgZXJyb3I6CisgICAgICAgICAg
ICBfbG9nLmVycm9yKGVycm9yKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiSlNPTiBmaWxlcyB1cGxvYWRlZC4iKQorCiAgICAgZGVmIF9wcmludF9leHBlY3RlZF9yZXN1
bHRzX29mX3R5cGUoc2VsZiwgd3JpdGUsIHJlc3VsdF9zdW1tYXJ5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlLCByZXN1bHRfdHlwZV9zdHIpOgog
ICAgICAgICAiIiJQcmludCB0aGUgbnVtYmVyIG9mIHRoZSB0ZXN0cyBpbiBhIGdpdmVuIHJlc3Vs
dCBjbGFzcy4KQEAgLTE2NDAsNiArMTY3NiwxNCBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUp
OgogICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tY2hyb21pdW0iLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ1c2UgdGhlIENocm9taXVtIHBv
cnQiKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXBsb2FkLWpzb24tZmls
ZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJVcGxvYWQg
anNvbiBmaWxlcyB0byBhcHBlbmdpbmUgc2VydmVyLiIpCisgICAgb3B0aW9uX3BhcnNlci5hZGRf
b3B0aW9uKCIiLCAiLS1qc29uLWZpbGVzLXNlcnZlciIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9InRlc3QtcmVzdWx0cy5hcHBzcG90LmNvbSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9KCJIb3N0IG9mIHRoZSBhcHBlbmdpbmUgc2VydmVyIHRoYXQg
c3RvcmVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRlZCBq
c29uIHJlc3VsdHMuIikpCisKICAgICByZXR1cm4gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKGFy
Z3MpCiAKIGlmICdfX21haW5fXycgPT0gX19uYW1lX186CkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBs
b2FkZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5CShyZXZpc2lv
biAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
c29ja2V0CitpbXBvcnQgdXJscGFyc2UKKworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9p
bnN0YWxsZWQgaW1wb3J0IEJyb3dzZXIKKworY2xhc3MgVGVzdFJlc3VsdHNVcGxvYWRlcjoKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCk6CisgICAgICAgIHNlbGYudXJsID0gImh0dHA6Ly8l
cyIgJSBob3N0CisgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQorCisgICAgZGVmIF91
cGxvYWRfZmlsZXMoc2VsZiwgYXR0cnMsIGZpbGVzKToKKyAgICAgICAgc2VsZi5icm93c2VyLm9w
ZW4oc2VsZi51cmwgKyAiL3Rlc3RmaWxlL3VwbG9hZGZvcm0iKQorICAgICAgICBzZWxmLmJyb3dz
ZXIuc2VsZWN0X2Zvcm0oInRlc3RfcmVzdWx0X3VwbG9hZCIpCisgICAgICAgIGZvciAobmFtZSwg
ZGF0YSkgaW4gYXR0cnM6CisgICAgICAgICAgICBzZWxmLmJyb3dzZXJbbmFtZV0gPSBzdHIoZGF0
YSkKKworICAgICAgICBpID0gMAorICAgICAgICBmb3IgKGZpbGVuYW1lLCBwYXRoKSBpbiBmaWxl
czoKKyAgICAgICAgICAgIGlkID0gTm9uZQorICAgICAgICAgICAgaWYgaSA+IDA6CisgICAgICAg
ICAgICAgICAgIyBCbG9ic3RvcmUgVXBsb2FkRGlzcGF0Y2hlciBkb2VzIG5vdCBoYW5kbGUKKyAg
ICAgICAgICAgICAgICAjIG9uZS1jb250cm9sLXdpdGgtbXVsdGlwbGUtZmlsZXMgY29ycmVjdGx5
LCBoYXZpbmcgc2VwYXJhdGUKKyAgICAgICAgICAgICAgICAjIGNvbnRyb2wgZm9yIGVhY2ggZmls
ZSBmb3IgYmxvYnN0b3JlIHVwbG9hZGluZy4KKyAgICAgICAgICAgICAgICBpZCA9ICJmaWxlX2Nv
bnRyb2xfaWRfJWQiICUgaQorICAgICAgICAgICAgICAgIHNlbGYuYnJvd3Nlci5uZXdfY29udHJv
bCgiZmlsZSIsICJmaWxlIiwgeyJpZCI6IGlkfSkKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c2VsZi5icm93c2VyLmFkZF9maWxlKG9wZW4ocGF0aCwgInJiIiksICJ0ZXh0L3BsYWluIiwgZmls
ZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiLCBpZCkKKyAg
ICAgICAgICAgIGkgPSBpICsgMQorCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5icm93c2VyLnN1
Ym1pdCgpCisgICAgICAgIGlmIG5vdCByZXNwb25zZToKKyAgICAgICAgICAgIHJldHVybiAoInVw
bG9hZCBmYWlsZWQsIGludmFsaWQgcmVzcG9uc2UuIikKKworICAgICAgICAjIGJsb2JzdG9yZSB1
cGxvYWQgaGFuZGxlciBvbmx5IGFsbG93cyByZWRpcmVjdCB3aGVuIHVwbG9hZCBlbmRzLgorICAg
ICAgICAjIENoZWNrIHdoZXRoZXIgYSByZWRpcmVjdCB3YXMgZm9sbG93ZWQKKyAgICAgICAgcmVk
aXJlY3RfdXJsID0gcmVzcG9uc2UuZ2V0dXJsKCkKKyAgICAgICAgaWYgbm90IHJlZGlyZWN0X3Vy
bDoKKyAgICAgICAgICAgIHJldHVybiAoIkluY29ycmVjdCB1cGxvYWQgcmVzcG9uc2U6IG5vIHJl
ZGlyZWN0IHVybCBmb3VuZC4iKQorCisgICAgICAgIHBhcnNlZF91cmwgPSB1cmxwYXJzZS51cmxw
YXJzZShyZWRpcmVjdF91cmwpCisgICAgICAgIGlmIChwYXJzZWRfdXJsWzJdID09ICIvdXBsb2Fk
c3VjY2VzcyIpOiAKKyAgICAgICAgICAgICMgVXBsb2FkIGRvbmUsIG5vIGVycm9yCisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiAoIkludmFsaWQgdXBsb2FkIHJlc3Bv
bnNlOiAlcy4iICUgcmVkaXJlY3RfdXJsKQorCisgICAgZGVmIHVwbG9hZChzZWxmLCBwYXJhbXMs
IGZpbGVzLCB0aW1lb3V0KToKKyAgICAgICAgb3JpZ190aW1lb3V0ID0gc29ja2V0LmdldGRlZmF1
bHR0aW1lb3V0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0
aW1lb3V0KHRpbWVvdXQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdXBsb2FkX2ZpbGVzKHBh
cmFtcywgZmlsZXMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzb2NrZXQuc2V0ZGVm
YXVsdHRpbWVvdXQob3JpZ190aW1lb3V0KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1
bHRzX3VwbG9hZGVyLnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52304</attachid>
            <date>2010-04-01 09:55:47 -0700</date>
            <delta_ts>2010-05-02 19:17:24 -0700</delta_ts>
            <desc>Minor update to work with new autoinstall.py</desc>
            <filename>test_results_uploader.patch</filename>
            <type>text/plain</type>
            <size>9497</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2OTE2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMDEgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXTogVXBsb2FkIHRlc3QgcmVzdWx0cyBqc29uIGZpbGVzIHRv
IGFwcCBlbmdpbmUgc2VydmVyCisgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuX3dlYmtpdF90
ZXN0cy5weSB0byB1cGxvYWQgZ2VuZXJhdGVkCisgICAgICAgIEpTT04gZmlsZXMgdG8gYXBwIGVu
Z2luZSBzZXJ2ZXIuIFRoZXNlIEpTT04gZmlsZXMgd2lsbCBiZSB1c2VkCisgICAgICAgIGJ5IGNo
cm9taXVtIGxheW91dCB0ZXN0IGZhbGtpbmVzcyBkYXNoYm9hcmQuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYzCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBs
b2FkZXIucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDQtMDEgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRz
a3kuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDU2OTE2KQorKysg
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weQkod29ya2luZyBjb3B5KQpAQCAtNjAsMTYgKzYwLDE3IEBAIGltcG9ydCB0cmFjZWJhY2sK
IAogaW1wb3J0IHNpbXBsZWpzb24KIAotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9l
eHBlY3RhdGlvbnMKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fbGF5b3V0X3Jlc3Vs
dHNfZ2VuZXJhdG9yCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBtZXRlcmVkX3N0cmVhbQor
ZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gbGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmFpbHVyZXMKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0
IHRlc3Rfc2hlbGxfdGhyZWFkCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZpbGVz
Citmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHNfdXBsb2FkZXIKK2Zyb20g
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3Rfc2hlbGxfdGhyZWFkCiBmcm9tIHRlc3RfdHlwZXMg
aW1wb3J0IGZ1enp5X2ltYWdlX2RpZmYKIGZyb20gdGVzdF90eXBlcyBpbXBvcnQgaW1hZ2VfZGlm
ZgotZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCB0ZXN0X3R5cGVfYmFzZQogZnJvbSB0ZXN0X3R5cGVz
IGltcG9ydCB0ZXh0X2RpZmYKK2Zyb20gdGVzdF90eXBlcyBpbXBvcnQgdGVzdF90eXBlX2Jhc2UK
IAogaW1wb3J0IHBvcnQKIApAQCAtMzY1LDcgKzM2Niw2IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAg
ICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZSh3cml0ZSwgcmVzdWx0
X3N1bW1hcnksCiAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQLCAic2tpcHBlZCIp
CiAKLQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZvcmNlOgogICAgICAgICAgICAgd3JpdGUo
J1J1bm5pbmcgYWxsIHRlc3RzLCBpbmNsdWRpbmcgc2tpcHMgKC0tZm9yY2UpJykKICAgICAgICAg
ZWxzZToKQEAgLTY4Miw2ICs2ODIsOSBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBzZWxm
Ll93cml0ZV9qc29uX2ZpbGVzKHVuZXhwZWN0ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQogCisg
ICAgICAgICMgVXBsb2FkIGdlbmVyYXRlZCBKU09OIGZpbGVzIHRvIGFwcGVuZ2luZSBzZXJ2ZXIu
CisgICAgICAgIHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVzKCkKKwogICAgICAgICAjIFdyaXRlIHRo
ZSBzdW1tYXJ5IHRvIGRpc2sgKHJlc3VsdHMuaHRtbCkgYW5kIG1heWJlIG9wZW4gdGhlCiAgICAg
ICAgICMgdGVzdF9zaGVsbCB0byB0aGlzIGZpbGUuCiAgICAgICAgIHdyb3RlX3Jlc3VsdHMgPSBz
ZWxmLl93cml0ZV9yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRfc3VtbWFyeSkKQEAgLTY5OCw3ICs3
MDEsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
ICAgICh0ZXN0LCBmYWlsX2xpc3QpID0gc2VsZi5fcmVzdWx0X3F1ZXVlLmdldF9ub3dhaXQoKQog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfZmFpbHVyZXMuZGV0ZXJtaW5lX3Jlc3VsdF90
eXBlKGZhaWxfbGlzdCkKLSAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0
aW9ucy5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCh0ZXN0LCAKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCh0
ZXN0LAogICAgICAgICAgICAgICAgICAgICByZXN1bHQsIHNlbGYuX29wdGlvbnMubm9fcGl4ZWxf
dGVzdHMpCiAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHRlc3QsIGZhaWxfbGlz
dCwgcmVzdWx0LCBleHBlY3RlZCkKICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFVEFJTEVEX1BS
T0dSRVNTIGluIHNlbGYuX29wdGlvbnMubG9nIGFuZApAQCAtOTAwLDYgKzkwMywzOCBAQCBjbGFz
cyBUZXN0UnVubmVyOgogCiAgICAgICAgIF9sb2cuZGVidWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNP
TiBmaWxlcy4iKQogCisgICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmKToKKyAgICAgICAg
aWYgbm90IHNlbGYuX29wdGlvbnMudXBsb2FkX2pzb25fZmlsZXM6CisgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICBfbG9nLmRlYnVnKCJVcGxvYWRpbmcgSlNPTiBmaWxlcyBmb3IgYnVpbGRl
cjogJXMiLAorICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuYnVpbGRlcl9uYW1lKQor
CisgICAgICAgIGF0dHJzID0gWygnYnVpbGRlcicsIHNlbGYuX29wdGlvbnMuYnVpbGRlcl9uYW1l
KV0KKyAgICAgICAganNvbl9maWxlcyA9IFsiZXhwZWN0YXRpb25zLmpzb24iLCAicmVzdWx0cy5q
c29uIl0KKworICAgICAgICBmaWxlcyA9IFtdCisgICAgICAgIGZvciBmaWxlIGluIGpzb25fZmls
ZXM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0
c19kaXJlY3RvcnksIGZpbGUpCisgICAgICAgICAgICBfbG9nLmRlYnVnKCJKU09OIGZpbGUgdG8g
dXBsb2FkOiAlcyIsIHBhdGgpCisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoKGZpbGUsIHBhdGgp
KQorCisgICAgICAgIHVwbG9hZGVyID0gdGVzdF9yZXN1bHRzX3VwbG9hZGVyLlRlc3RSZXN1bHRz
VXBsb2FkZXIoCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmpzb25fZmlsZXNfc2VydmVyKQor
ICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFNldCB1cGxvYWRpbmcgdGltZW91dCBpbiBjYXNl
IGFwcGVuZ2luZSBzZXJ2ZXIgaXMgaGF2aW5nIHByb2JsZW0uCisgICAgICAgICAgICAjIDEyMCBz
ZWNvbmRzIGFyZSBtb3JlIHRoYW4gZW5vdWdoIHRvIHVwbG9hZCB0ZXN0IHJlc3VsdHMuCisgICAg
ICAgICAgICBlcnJvciA9IHVwbG9hZGVyLnVwbG9hZChhdHRycywgZmlsZXMsIDEyMCkKKyAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXJyOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVk
IHRvIHVwbG9hZCBqc29uIGZpbGVzOiBzZXJ2ZXI6ICVzLCAlcyIsCisgICAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLmpzb25fZmlsZXNfc2VydmVyLCBzdHIoZXJyKSkKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIGlmIGVycm9yOgorICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIkpTT04gZmlsZXMgdXBsb2Fk
ZWQuIikKKwogICAgIGRlZiBfcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYsIHdy
aXRlLCByZXN1bHRfc3VtbWFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3RyKToKICAgICAgICAgIiIiUHJpbnQgdGhl
IG51bWJlciBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiByZXN1bHQgY2xhc3MuCkBAIC0xNjQwLDYg
KzE2NzUsMTQgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICBvcHRpb25fcGFyc2Vy
LmFkZF9vcHRpb24oIiIsICItLWNocm9taXVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0idXNlIHRoZSBDaHJvbWl1bSBwb3J0IikKKyAgICBvcHRpb25fcGFy
c2VyLmFkZF9vcHRpb24oIiIsICItLXVwbG9hZC1qc29uLWZpbGVzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iVXBsb2FkIGpzb24gZmlsZXMgdG8gYXBwZW5n
aW5lIHNlcnZlci4iKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tanNvbi1m
aWxlcy1zZXJ2ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJ0ZXN0
LXJlc3VsdHMuYXBwc3BvdC5jb20iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSgiSG9zdCBvZiB0aGUgYXBwZW5naW5lIHNlcnZlciB0aGF0IHN0b3JlcyAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0ZWQganNvbiByZXN1bHRzLiIpKQorCiAg
ICAgcmV0dXJuIG9wdGlvbl9wYXJzZXIucGFyc2VfYXJncyhhcmdzKQogCiBpZiAnX19tYWluX18n
ID09IF9fbmFtZV9fOgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcmVzdWx0c191cGxvYWRlci5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0
c191cGxvYWRlci5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHNvY2tldAoraW1wb3J0IHVybHBh
cnNlCisKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBp
bXBvcnQgQnJvd3NlcgorCisKK2NsYXNzIFRlc3RSZXN1bHRzVXBsb2FkZXI6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGhvc3QpOgorICAgICAgICBzZWxmLnVybCA9ICJodHRwOi8vJXMiICUgaG9z
dAorICAgICAgICBzZWxmLmJyb3dzZXIgPSBCcm93c2VyKCkKKworICAgIGRlZiBfdXBsb2FkX2Zp
bGVzKHNlbGYsIGF0dHJzLCBmaWxlcyk6CisgICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKHNlbGYu
dXJsICsgIi90ZXN0ZmlsZS91cGxvYWRmb3JtIikKKyAgICAgICAgc2VsZi5icm93c2VyLnNlbGVj
dF9mb3JtKCJ0ZXN0X3Jlc3VsdF91cGxvYWQiKQorICAgICAgICBmb3IgKG5hbWUsIGRhdGEpIGlu
IGF0dHJzOgorICAgICAgICAgICAgc2VsZi5icm93c2VyW25hbWVdID0gc3RyKGRhdGEpCisKKyAg
ICAgICAgaSA9IDAKKyAgICAgICAgZm9yIChmaWxlbmFtZSwgcGF0aCkgaW4gZmlsZXM6CisgICAg
ICAgICAgICBpZCA9IE5vbmUKKyAgICAgICAgICAgIGlmIGkgPiAwOgorICAgICAgICAgICAgICAg
ICMgQmxvYnN0b3JlIFVwbG9hZERpc3BhdGNoZXIgZG9lcyBub3QgaGFuZGxlCisgICAgICAgICAg
ICAgICAgIyBvbmUtY29udHJvbC13aXRoLW11bHRpcGxlLWZpbGVzIGNvcnJlY3RseSwgaGF2aW5n
IHNlcGFyYXRlCisgICAgICAgICAgICAgICAgIyBjb250cm9sIGZvciBlYWNoIGZpbGUgZm9yIGJs
b2JzdG9yZSB1cGxvYWRpbmcuCisgICAgICAgICAgICAgICAgaWQgPSAiZmlsZV9jb250cm9sX2lk
XyVkIiAlIGkKKyAgICAgICAgICAgICAgICBzZWxmLmJyb3dzZXIubmV3X2NvbnRyb2woImZpbGUi
LCAiZmlsZSIsIHsiaWQiOiBpZH0pCisKKyAgICAgICAgICAgIHNlbGYuYnJvd3Nlci5hZGRfZmls
ZShvcGVuKHBhdGgsICJyYiIpLCAidGV4dC9wbGFpbiIsIGZpbGVuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJmaWxlIiwgaWQpCisgICAgICAgICAgICBpID0gaSArIDEK
KworICAgICAgICByZXNwb25zZSA9IHNlbGYuYnJvd3Nlci5zdWJtaXQoKQorICAgICAgICBpZiBu
b3QgcmVzcG9uc2U6CisgICAgICAgICAgICByZXR1cm4gKCJ1cGxvYWQgZmFpbGVkLCBpbnZhbGlk
IHJlc3BvbnNlLiIpCisKKyAgICAgICAgIyBibG9ic3RvcmUgdXBsb2FkIGhhbmRsZXIgb25seSBh
bGxvd3MgcmVkaXJlY3Qgd2hlbiB1cGxvYWQgZW5kcy4KKyAgICAgICAgIyBDaGVjayB3aGV0aGVy
IGEgcmVkaXJlY3Qgd2FzIGZvbGxvd2VkCisgICAgICAgIHJlZGlyZWN0X3VybCA9IHJlc3BvbnNl
LmdldHVybCgpCisgICAgICAgIGlmIG5vdCByZWRpcmVjdF91cmw6CisgICAgICAgICAgICByZXR1
cm4gKCJJbmNvcnJlY3QgdXBsb2FkIHJlc3BvbnNlOiBubyByZWRpcmVjdCB1cmwgZm91bmQuIikK
KworICAgICAgICBwYXJzZWRfdXJsID0gdXJscGFyc2UudXJscGFyc2UocmVkaXJlY3RfdXJsKQor
ICAgICAgICBpZiAocGFyc2VkX3VybFsyXSA9PSAiL3VwbG9hZHN1Y2Nlc3MiKToKKyAgICAgICAg
ICAgICMgVXBsb2FkIGRvbmUsIG5vIGVycm9yCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisg
ICAgICAgIHJldHVybiAoIkludmFsaWQgdXBsb2FkIHJlc3BvbnNlOiAlcy4iICUgcmVkaXJlY3Rf
dXJsKQorCisgICAgZGVmIHVwbG9hZChzZWxmLCBwYXJhbXMsIGZpbGVzLCB0aW1lb3V0KToKKyAg
ICAgICAgb3JpZ190aW1lb3V0ID0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXQpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fdXBsb2FkX2ZpbGVzKHBhcmFtcywgZmlsZXMpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQob3JpZ190aW1l
b3V0KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54756</attachid>
            <date>2010-04-29 16:53:05 -0700</date>
            <delta_ts>2010-05-04 15:35:58 -0700</delta_ts>
            <desc>update proposed patch</desc>
            <filename>test_results_uploader.patch</filename>
            <type>text/plain</type>
            <size>7477</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4NTQ3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMjkgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXTogVXBsb2FkIHRlc3QgcmVzdWx0cyBqc29uIGZpbGVzIHRv
IGFwcCBlbmdpbmUgc2VydmVyCisgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuX3dlYmtpdF90
ZXN0cy5weSB0byB1cGxvYWQgZ2VuZXJhdGVkCisgICAgICAgIEpTT04gZmlsZXMgdG8gYXBwIGVu
Z2luZSBzZXJ2ZXIuIFRoZXNlIEpTT04gZmlsZXMgd2lsbCBiZSB1c2VkCisgICAgICAgIGJ5IGNo
cm9taXVtIGxheW91dCB0ZXN0IGZhbGtpbmVzcyBkYXNoYm9hcmQuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYzCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBs
b2FkZXIucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDQtMjggIE9qYW4gVmFmYWkgIDxvamFuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weQkocmV2aXNpb24gNTg1NDYpCisrKyBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC02MSwxNyArNjEsMTkgQEAgaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwogaW1w
b3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB1cmxsaWIyCiAKLWZyb20gbGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitmcm9tIGxheW91dF9wYWNrYWdlIGlt
cG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQg
anNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0
IG1ldGVyZWRfc3RyZWFtCitmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0
aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSBsYXlv
dXRfcGFja2FnZSBpbXBvcnQgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQKIGZyb20gbGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IHRlc3RfZmlsZXMKK2Zyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3Rf
cmVzdWx0c191cGxvYWRlcgogZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBmdXp6eV9pbWFnZV9kaWZm
CiBmcm9tIHRlc3RfdHlwZXMgaW1wb3J0IGltYWdlX2RpZmYKLWZyb20gdGVzdF90eXBlcyBpbXBv
cnQgdGVzdF90eXBlX2Jhc2UKIGZyb20gdGVzdF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCitmcm9t
IHRlc3RfdHlwZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS50aGlyZHBh
cnR5IGltcG9ydCBzaW1wbGVqc29uCkBAIC03NjcsNiArNzY5LDkgQEAgY2xhc3MgVGVzdFJ1bm5l
cjoKICAgICAgICAgc2VsZi5fd3JpdGVfanNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3VsdHMsIHJl
c3VsdF9zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rl
c3RfdGltaW5ncykKIAorICAgICAgICAjIFVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcyB0byBh
cHBlbmdpbmUgc2VydmVyLgorICAgICAgICBzZWxmLl91cGxvYWRfanNvbl9maWxlcygpCisKICAg
ICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwpIGFuZCBkaXNw
bGF5IGl0IGlmIHJlcXVlc3RlZC4KICAgICAgICAgd3JvdGVfcmVzdWx0cyA9IHNlbGYuX3dyaXRl
X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdF9zdW1tYXJ5KQogICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnNob3dfcmVzdWx0cyBhbmQgd3JvdGVfcmVzdWx0czoKQEAgLTEwMjUsNiArMTAzMCwzNiBA
QCBjbGFzcyBUZXN0UnVubmVyOgogCiAgICAgICAgIF9sb2cuZGVidWcoIkZpbmlzaGVkIHdyaXRp
bmcgSlNPTiBmaWxlcy4iKQogCisgICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmKToKKyAg
ICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlcjoKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIF9sb2cuZGVidWcoIlVwbG9hZGluZyBKU09OIGZpbGVzIGZv
ciBidWlsZGVyOiAlcyIsCisgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5idWlsZGVy
X25hbWUpCisKKyAgICAgICAgYXR0cnMgPSBbKCdidWlsZGVyJywgc2VsZi5fb3B0aW9ucy5idWls
ZGVyX25hbWUpXQorICAgICAgICBqc29uX2ZpbGVzID0gWyJleHBlY3RhdGlvbnMuanNvbiIsICJy
ZXN1bHRzLmpzb24iXQorCisgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAgZm9yIGZpbGUgaW4g
anNvbl9maWxlczoKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeSwgZmlsZSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIkpTT04g
ZmlsZSB0byB1cGxvYWQ6ICVzIiwgcGF0aCkKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZCgoZmls
ZSwgcGF0aCkpCisKKyAgICAgICAgdXBsb2FkZXIgPSB0ZXN0X3Jlc3VsdHNfdXBsb2FkZXIuVGVz
dFJlc3VsdHNVcGxvYWRlcigKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudGVzdF9yZXN1bHRz
X3NlcnZlcikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBTZXQgdXBsb2FkaW5nIHRpbWVv
dXQgaW4gY2FzZSBhcHBlbmdpbmUgc2VydmVyIGlzIGhhdmluZyBwcm9ibGVtLgorICAgICAgICAg
ICAgIyAxMjAgc2Vjb25kcyBhcmUgbW9yZSB0aGFuIGVub3VnaCB0byB1cGxvYWQgdGVzdCByZXN1
bHRzLgorICAgICAgICAgICAgdXBsb2FkZXIudXBsb2FkKGF0dHJzLCBmaWxlcywgMTIwKQorICAg
ICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGVycjoKKyAgICAgICAgICAgIF9sb2cuZXJy
b3IoIlVwbG9hZCBmYWlsZWQ6IGNvZGU6ICVkLCByZWFzb246ICVzIiAlCisgICAgICAgICAgICAg
ICAgKGVyci5jb2RlLCBlcnIubXNnKSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXJyOgor
ICAgICAgICAgICAgX2xvZy5lcnJvcigiVXBsb2FkIGZhaWxlZDogJXMiICUgZXJyKQorCisgICAg
ICAgIF9sb2cuZGVidWcoIkpTT04gZmlsZXMgdXBsb2FkZWQuIikKKwogICAgIGRlZiBfcHJpbnRf
ZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYsIHdyaXRlLCByZXN1bHRfc3VtbWFyeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSwgcmVzdWx0
X3R5cGVfc3RyKToKICAgICAgICAgIiIiUHJpbnQgdGhlIG51bWJlciBvZiB0aGUgdGVzdHMgaW4g
YSBnaXZlbiByZXN1bHQgY2xhc3MuCkBAIC0xODg3LDYgKzE5MjIsOSBAQCBkZWYgcGFyc2VfYXJn
cyhhcmdzPU5vbmUpOgogICAgICAgICAgICAgICAgICAgIndlYmtpdC1yZWwuIikpLAogICAgICAg
ICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1idWlsZC1udW1iZXIiLCBkZWZhdWx0PSJEVU1NWV9C
VUlMRF9OVU1CRVIiLAogICAgICAgICAgICAgaGVscD0oIlRoZSBidWlsZCBudW1iZXIgb2YgdGhl
IGJ1aWxkZXIgcnVubmluZyB0aGlzIHNjcmlwdC4iKSksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vf
b3B0aW9uKCItLXRlc3QtcmVzdWx0cy1zZXJ2ZXIiLCBkZWZhdWx0PSIiLAorICAgICAgICAgICAg
aGVscD0oIklmIHNwZWNpZmllZCwgdXBsb2FkIHJlc3VsdHMganNvbiBmaWxlcyB0byB0aGlzIGFw
cGVuZ2luZSAiCisgICAgICAgICAgICAgICAgICAic2VydmVyLiIpKSwKICAgICBdCiAKICAgICBv
cHRpb25fbGlzdCA9IChjb25maWd1cmF0aW9uX29wdGlvbnMgKyBsb2dnaW5nX29wdGlvbnMgKwpJ
bmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0
c191cGxvYWRlci5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0c191cGxvYWRlci5weQko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IHNvY2tldAorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHku
YXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKKworCitjbGFzcyBUZXN0UmVz
dWx0c1VwbG9hZGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0KToKKyAgICAgICAgc2Vs
Zi51cmwgPSAiaHR0cDovLyVzIiAlIGhvc3QKKyAgICAgICAgc2VsZi5icm93c2VyID0gQnJvd3Nl
cigpCisKKyAgICBkZWYgX3VwbG9hZF9maWxlcyhzZWxmLCBhdHRycywgZmlsZXMpOgorICAgICAg
ICBzZWxmLmJyb3dzZXIub3BlbihzZWxmLnVybCArICIvdGVzdGZpbGUvdXBsb2FkZm9ybSIpCisg
ICAgICAgIHNlbGYuYnJvd3Nlci5zZWxlY3RfZm9ybSgidGVzdF9yZXN1bHRfdXBsb2FkIikKKyAg
ICAgICAgZm9yIChuYW1lLCBkYXRhKSBpbiBhdHRyczoKKyAgICAgICAgICAgIHNlbGYuYnJvd3Nl
cltuYW1lXSA9IHN0cihkYXRhKQorCisgICAgICAgIGZvciAoZmlsZW5hbWUsIHBhdGgpIGluIGZp
bGVzOgorICAgICAgICAgICAgc2VsZi5icm93c2VyLmFkZF9maWxlKG9wZW4ocGF0aCwgInJiIiks
ICJ0ZXh0L3BsYWluIiwgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZpbGUiKQorCisgICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQoKQorCisgICAgZGVmIHVw
bG9hZChzZWxmLCBwYXJhbXMsIGZpbGVzLCB0aW1lb3V0KToKKyAgICAgICAgb3JpZ190aW1lb3V0
ID0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
c29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLl91cGxv
YWRfZmlsZXMocGFyYW1zLCBmaWxlcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNv
Y2tldC5zZXRkZWZhdWx0dGltZW91dChvcmlnX3RpbWVvdXQpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCg==
</data>
<flag name="review"
          id="38786"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55060</attachid>
            <date>2010-05-04 15:35:58 -0700</date>
            <delta_ts>2010-05-04 15:50:33 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>test_results_uploader.patch</filename>
            <type>text/plain</type>
            <size>7733</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4NzgxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDUtMDQgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXTogVXBsb2FkIHRlc3QgcmVzdWx0cyBqc29uIGZpbGVzIHRv
IGFwcCBlbmdpbmUgc2VydmVyCisgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuX3dlYmtpdF90
ZXN0cy5weSB0byB1cGxvYWQgZ2VuZXJhdGVkCisgICAgICAgIEpTT04gZmlsZXMgdG8gYXBwIGVu
Z2luZSBzZXJ2ZXIuIFRoZXNlIEpTT04gZmlsZXMgd2lsbCBiZSB1c2VkCisgICAgICAgIGJ5IGNo
cm9taXVtIGxheW91dCB0ZXN0IGZhbGtpbmVzcyBkYXNoYm9hcmQuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYzCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBs
b2FkZXIucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDUtMDQgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgZmluZCBjb21tYW5kIGluIGV4dHJh
Y3QtbG9jYWxpemFibGUtc3RyaW5ncyBzbyBza2lwCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkJKHJldmlzaW9uIDU4NzgxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAtNjIsMTYg
KzYyLDE3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiAKLWZy
b20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitmcm9tIGxheW91dF9w
YWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogZnJvbSBsYXlvdXRfcGFja2Fn
ZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHByaW50aW5nCitmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVj
dGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSBs
YXlvdXRfcGFja2FnZSBpbXBvcnQgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQKIGZyb20gbGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmlsZXMKK2Zyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRl
c3RfcmVzdWx0c191cGxvYWRlcgogZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBmdXp6eV9pbWFnZV9k
aWZmCiBmcm9tIHRlc3RfdHlwZXMgaW1wb3J0IGltYWdlX2RpZmYKLWZyb20gdGVzdF90eXBlcyBp
bXBvcnQgdGVzdF90eXBlX2Jhc2UKIGZyb20gdGVzdF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCitm
cm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5IGltcG9ydCBzaW1wbGVqc29uCkBAIC03OTAsNiArNzkxLDkgQEAgY2xhc3MgVGVzdFJ1
bm5lcjoKICAgICAgICAgc2VsZi5fd3JpdGVfanNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3VsdHMs
IHJlc3VsdF9zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFs
X3Rlc3RfdGltaW5ncykKIAorICAgICAgICAjIFVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcyB0
byBhcHBlbmdpbmUgc2VydmVyLgorICAgICAgICBzZWxmLl91cGxvYWRfanNvbl9maWxlcygpCisK
ICAgICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwpIGFuZCBk
aXNwbGF5IGl0IGlmIHJlcXVlc3RlZC4KICAgICAgICAgd3JvdGVfcmVzdWx0cyA9IHNlbGYuX3dy
aXRlX3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdF9zdW1tYXJ5KQogICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLnNob3dfcmVzdWx0cyBhbmQgd3JvdGVfcmVzdWx0czoKQEAgLTg3OCw2ICs4ODIsMzEg
QEAgY2xhc3MgVGVzdFJ1bm5lcjoKIAogICAgICAgICBfbG9nLmRlYnVnKCJGaW5pc2hlZCB3cml0
aW5nIEpTT04gZmlsZXMuIikKIAorICAgIGRlZiBfdXBsb2FkX2pzb25fZmlsZXMoc2VsZik6Cisg
ICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXI6CisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICBfbG9nLmluZm8oIlVwbG9hZGluZyBKU09OIGZpbGVzIGZv
ciBidWlsZGVyOiAlcyIsCisgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5idWlsZGVy
X25hbWUpCisKKyAgICAgICAgYXR0cnMgPSBbKCdidWlsZGVyJywgc2VsZi5fb3B0aW9ucy5idWls
ZGVyX25hbWUpXQorICAgICAgICBqc29uX2ZpbGVzID0gWyJleHBlY3RhdGlvbnMuanNvbiIsICJy
ZXN1bHRzLmpzb24iXQorCisgICAgICAgIGZpbGVzID0gWyhmaWxlLCBvcy5wYXRoLmpvaW4oc2Vs
Zi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgZmlsZSkpCisgICAgICAgICAgICBmb3IgZmls
ZSBpbiBqc29uX2ZpbGVzXQorCisgICAgICAgIHVwbG9hZGVyID0gdGVzdF9yZXN1bHRzX3VwbG9h
ZGVyLlRlc3RSZXN1bHRzVXBsb2FkZXIoCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRlc3Rf
cmVzdWx0c19zZXJ2ZXIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgU2V0IHVwbG9hZGlu
ZyB0aW1lb3V0IGluIGNhc2UgYXBwZW5naW5lIHNlcnZlciBpcyBoYXZpbmcgcHJvYmxlbS4KKyAg
ICAgICAgICAgICMgMTIwIHNlY29uZHMgYXJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gdXBsb2FkIHRl
c3QgcmVzdWx0cy4KKyAgICAgICAgICAgIHVwbG9hZGVyLnVwbG9hZChhdHRycywgZmlsZXMsIDEy
MCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXJyOgorICAgICAgICAgICAgX2xvZy5lcnJv
cigiVXBsb2FkIGZhaWxlZDogJXMiICUgZXJyKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgX2xvZy5pbmZvKCJKU09OIGZpbGVzIHVwbG9hZGVkLiIpCisKICAgICBkZWYgX3ByaW50X2V4
cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCByZXN1bHRfc3VtbWFyeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3Ry
KToKICAgICAgICAgIiIiUHJpbnQgdGhlIG51bWJlciBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiBy
ZXN1bHQgY2xhc3MuCkBAIC0xNjA0LDYgKzE2MzMsOSBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5v
bmUpOgogICAgICAgICAgICAgICAgICAgIndlYmtpdC1yZWwuIikpLAogICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1idWlsZC1udW1iZXIiLCBkZWZhdWx0PSJEVU1NWV9CVUlMRF9OVU1C
RVIiLAogICAgICAgICAgICAgaGVscD0oIlRoZSBidWlsZCBudW1iZXIgb2YgdGhlIGJ1aWxkZXIg
cnVubmluZyB0aGlzIHNjcmlwdC4iKSksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCIt
LXRlc3QtcmVzdWx0cy1zZXJ2ZXIiLCBkZWZhdWx0PSIiLAorICAgICAgICAgICAgaGVscD0oIklm
IHNwZWNpZmllZCwgdXBsb2FkIHJlc3VsdHMganNvbiBmaWxlcyB0byB0aGlzIGFwcGVuZ2luZSAi
CisgICAgICAgICAgICAgICAgICAic2VydmVyLiIpKSwKICAgICBdCiAKICAgICBvcHRpb25fbGlz
dCA9IChjb25maWd1cmF0aW9uX29wdGlvbnMgKyBwcmludF9vcHRpb25zICsKSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
cmVzdWx0c191cGxvYWRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIu
cHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIucHkJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBtaW1ldHlwZXMKK2ltcG9ydCBzb2NrZXQKKworZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0Lm5ldHdvcmt0cmFuc2FjdGlvbiBpbXBvcnQgTmV0d29ya1RyYW5zYWN0aW9uCitmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dz
ZXIKKworZGVmIGdldF9taW1lX3R5cGUoZmlsZW5hbWUpOgorICAgIHJldHVybiBtaW1ldHlwZXMu
Z3Vlc3NfdHlwZShmaWxlbmFtZSlbMF0gb3IgInRleHQvcGxhaW4iCisKK2NsYXNzIFRlc3RSZXN1
bHRzVXBsb2FkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QpOgorICAgICAgICBzZWxm
Ll9ob3N0ID0gaG9zdAorICAgICAgICBzZWxmLl9icm93c2VyID0gQnJvd3NlcigpCisKKyAgICBk
ZWYgX3VwbG9hZF9maWxlcyhzZWxmLCBhdHRycywgZmlsZV9vYmpzKToKKyAgICAgICAgc2VsZi5f
YnJvd3Nlci5vcGVuKCJodHRwOi8vJXMvdGVzdGZpbGUvdXBsb2FkZm9ybSIgJSBzZWxmLl9ob3N0
KQorICAgICAgICBzZWxmLl9icm93c2VyLnNlbGVjdF9mb3JtKCJ0ZXN0X3Jlc3VsdF91cGxvYWQi
KQorICAgICAgICBmb3IgKG5hbWUsIGRhdGEpIGluIGF0dHJzOgorICAgICAgICAgICAgc2VsZi5f
YnJvd3NlcltuYW1lXSA9IHN0cihkYXRhKQorCisgICAgICAgIGZvciAoZmlsZW5hbWUsIGhhbmRs
ZSkgaW4gZmlsZV9vYmpzOgorICAgICAgICAgICAgc2VsZi5fYnJvd3Nlci5hZGRfZmlsZShoYW5k
bGUsIGdldF9taW1lX3R5cGUoZmlsZW5hbWUpLCBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAi
ZmlsZSIpCisKKyAgICAgICAgc2VsZi5fYnJvd3Nlci5zdWJtaXQoKQorCisgICAgZGVmIHVwbG9h
ZChzZWxmLCBwYXJhbXMsIGZpbGVzLCB0aW1lb3V0X3NlY29uZHMpOgorICAgICAgICBvcmlnX3Rp
bWVvdXQgPSBzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKQorICAgICAgICBmaWxlX29ianMgPSBb
XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlX29ianMgPSBbKGZpbGVuYW1lLCBvcGVu
KHBhdGgsICJyYiIpKSBmb3IgKGZpbGVuYW1lLCBwYXRoKQorICAgICAgICAgICAgICAgIGluIGZp
bGVzXQorCisgICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodGltZW91dF9zZWNv
bmRzKQorICAgICAgICAgICAgTmV0d29ya1RyYW5zYWN0aW9uKHRpbWVvdXRfc2Vjb25kcz10aW1l
b3V0X3NlY29uZHMpLnJ1bigKKyAgICAgICAgICAgICAgICBsYW1iZGE6IHNlbGYuX3VwbG9hZF9m
aWxlcyhwYXJhbXMsIGZpbGVfb2JqcykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz
b2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQob3JpZ190aW1lb3V0KQorICAgICAgICAgICAgZm9yIChm
aWxlbmFtZSwgaGFuZGxlKSBpbiBmaWxlX29ianM6CisgICAgICAgICAgICAgICAgaGFuZGxlLmNs
b3NlKCkKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55065</attachid>
            <date>2010-05-04 15:50:33 -0700</date>
            <delta_ts>2010-05-08 12:36:52 -0700</delta_ts>
            <desc>Fix styles</desc>
            <filename>test_results_uploader.patch</filename>
            <type>text/plain</type>
            <size>7735</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4NzgxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDUtMDQgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXTogVXBsb2FkIHRlc3QgcmVzdWx0cyBqc29uIGZpbGVzIHRv
IGFwcCBlbmdpbmUgc2VydmVyCisgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuX3dlYmtpdF90
ZXN0cy5weSB0byB1cGxvYWQgZ2VuZXJhdGVkCisgICAgICAgIEpTT04gZmlsZXMgdG8gYXBwIGVu
Z2luZSBzZXJ2ZXIuIFRoZXNlIEpTT04gZmlsZXMgd2lsbCBiZSB1c2VkCisgICAgICAgIGJ5IGNo
cm9taXVtIGxheW91dCB0ZXN0IGZhbGtpbmVzcyBkYXNoYm9hcmQuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYzCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBs
b2FkZXIucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDUtMDQgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgZmluZCBjb21tYW5kIGluIGV4dHJh
Y3QtbG9jYWxpemFibGUtc3RyaW5ncyBzbyBza2lwCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkJKHJldmlzaW9uIDU4NzgxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAtNjIsMTYg
KzYyLDE3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiAKLWZy
b20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitmcm9tIGxheW91dF9w
YWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogZnJvbSBsYXlvdXRfcGFja2Fn
ZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHByaW50aW5nCitmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVj
dGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSBs
YXlvdXRfcGFja2FnZSBpbXBvcnQgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQKIGZyb20gbGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmlsZXMKK2Zyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRl
c3RfcmVzdWx0c191cGxvYWRlcgogZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBmdXp6eV9pbWFnZV9k
aWZmCiBmcm9tIHRlc3RfdHlwZXMgaW1wb3J0IGltYWdlX2RpZmYKLWZyb20gdGVzdF90eXBlcyBp
bXBvcnQgdGVzdF90eXBlX2Jhc2UKIGZyb20gdGVzdF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCitm
cm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5IGltcG9ydCBzaW1wbGVqc29uCkBAIC03OTAsNiArNzkxLDkgQEAgY2xhc3MgVGVzdFJ1
bm5lcjoKICAgICAgICAgc2VsZi5fd3JpdGVfanNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3VsdHMs
IHJlc3VsdF9zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFs
X3Rlc3RfdGltaW5ncykKIAorICAgICAgICAjIFVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcyB0
byBhcHBlbmdpbmUgc2VydmVyLgorICAgICAgICBzZWxmLl91cGxvYWRfanNvbl9maWxlcygpCisK
ICAgICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwpIGFuZCBk
aXNwbGF5IGl0IGlmIHJlcXVlc3RlZC4KICAgICAgICAgd3JvdGVfcmVzdWx0cyA9IHNlbGYuX3dy
aXRlX3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdF9zdW1tYXJ5KQogICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLnNob3dfcmVzdWx0cyBhbmQgd3JvdGVfcmVzdWx0czoKQEAgLTg3OCw2ICs4ODIsMzEg
QEAgY2xhc3MgVGVzdFJ1bm5lcjoKIAogICAgICAgICBfbG9nLmRlYnVnKCJGaW5pc2hlZCB3cml0
aW5nIEpTT04gZmlsZXMuIikKIAorICAgIGRlZiBfdXBsb2FkX2pzb25fZmlsZXMoc2VsZik6Cisg
ICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXI6CisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICBfbG9nLmluZm8oIlVwbG9hZGluZyBKU09OIGZpbGVzIGZv
ciBidWlsZGVyOiAlcyIsCisgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5idWlsZGVy
X25hbWUpCisKKyAgICAgICAgYXR0cnMgPSBbKCdidWlsZGVyJywgc2VsZi5fb3B0aW9ucy5idWls
ZGVyX25hbWUpXQorICAgICAgICBqc29uX2ZpbGVzID0gWyJleHBlY3RhdGlvbnMuanNvbiIsICJy
ZXN1bHRzLmpzb24iXQorCisgICAgICAgIGZpbGVzID0gWyhmaWxlLCBvcy5wYXRoLmpvaW4oc2Vs
Zi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgZmlsZSkpCisgICAgICAgICAgICBmb3IgZmls
ZSBpbiBqc29uX2ZpbGVzXQorCisgICAgICAgIHVwbG9hZGVyID0gdGVzdF9yZXN1bHRzX3VwbG9h
ZGVyLlRlc3RSZXN1bHRzVXBsb2FkZXIoCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRlc3Rf
cmVzdWx0c19zZXJ2ZXIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgU2V0IHVwbG9hZGlu
ZyB0aW1lb3V0IGluIGNhc2UgYXBwZW5naW5lIHNlcnZlciBpcyBoYXZpbmcgcHJvYmxlbS4KKyAg
ICAgICAgICAgICMgMTIwIHNlY29uZHMgYXJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gdXBsb2FkIHRl
c3QgcmVzdWx0cy4KKyAgICAgICAgICAgIHVwbG9hZGVyLnVwbG9hZChhdHRycywgZmlsZXMsIDEy
MCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXJyOgorICAgICAgICAgICAgX2xvZy5lcnJv
cigiVXBsb2FkIGZhaWxlZDogJXMiICUgZXJyKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgX2xvZy5pbmZvKCJKU09OIGZpbGVzIHVwbG9hZGVkLiIpCisKICAgICBkZWYgX3ByaW50X2V4
cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCByZXN1bHRfc3VtbWFyeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3Ry
KToKICAgICAgICAgIiIiUHJpbnQgdGhlIG51bWJlciBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiBy
ZXN1bHQgY2xhc3MuCkBAIC0xNjA0LDYgKzE2MzMsOSBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5v
bmUpOgogICAgICAgICAgICAgICAgICAgIndlYmtpdC1yZWwuIikpLAogICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1idWlsZC1udW1iZXIiLCBkZWZhdWx0PSJEVU1NWV9CVUlMRF9OVU1C
RVIiLAogICAgICAgICAgICAgaGVscD0oIlRoZSBidWlsZCBudW1iZXIgb2YgdGhlIGJ1aWxkZXIg
cnVubmluZyB0aGlzIHNjcmlwdC4iKSksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCIt
LXRlc3QtcmVzdWx0cy1zZXJ2ZXIiLCBkZWZhdWx0PSIiLAorICAgICAgICAgICAgaGVscD0oIklm
IHNwZWNpZmllZCwgdXBsb2FkIHJlc3VsdHMganNvbiBmaWxlcyB0byB0aGlzIGFwcGVuZ2luZSAi
CisgICAgICAgICAgICAgICAgICAic2VydmVyLiIpKSwKICAgICBdCiAKICAgICBvcHRpb25fbGlz
dCA9IChjb25maWd1cmF0aW9uX29wdGlvbnMgKyBwcmludF9vcHRpb25zICsKSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
cmVzdWx0c191cGxvYWRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIu
cHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIucHkJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBtaW1ldHlwZXMKK2ltcG9ydCBzb2NrZXQKKworZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0Lm5ldHdvcmt0cmFuc2FjdGlvbiBpbXBvcnQgTmV0d29ya1RyYW5zYWN0aW9uCitmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dz
ZXIKKworCitkZWYgZ2V0X21pbWVfdHlwZShmaWxlbmFtZSk6CisgICAgcmV0dXJuIG1pbWV0eXBl
cy5ndWVzc190eXBlKGZpbGVuYW1lKVswXSBvciAidGV4dC9wbGFpbiIKKworCitjbGFzcyBUZXN0
UmVzdWx0c1VwbG9hZGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0KToKKyAgICAgICAg
c2VsZi5faG9zdCA9IGhvc3QKKyAgICAgICAgc2VsZi5fYnJvd3NlciA9IEJyb3dzZXIoKQorCisg
ICAgZGVmIF91cGxvYWRfZmlsZXMoc2VsZiwgYXR0cnMsIGZpbGVfb2Jqcyk6CisgICAgICAgIHNl
bGYuX2Jyb3dzZXIub3BlbigiaHR0cDovLyVzL3Rlc3RmaWxlL3VwbG9hZGZvcm0iICUgc2VsZi5f
aG9zdCkKKyAgICAgICAgc2VsZi5fYnJvd3Nlci5zZWxlY3RfZm9ybSgidGVzdF9yZXN1bHRfdXBs
b2FkIikKKyAgICAgICAgZm9yIChuYW1lLCBkYXRhKSBpbiBhdHRyczoKKyAgICAgICAgICAgIHNl
bGYuX2Jyb3dzZXJbbmFtZV0gPSBzdHIoZGF0YSkKKworICAgICAgICBmb3IgKGZpbGVuYW1lLCBo
YW5kbGUpIGluIGZpbGVfb2JqczoKKyAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXIuYWRkX2ZpbGUo
aGFuZGxlLCBnZXRfbWltZV90eXBlKGZpbGVuYW1lKSwgZmlsZW5hbWUsCisgICAgICAgICAgICAg
ICAgImZpbGUiKQorCisgICAgICAgIHNlbGYuX2Jyb3dzZXIuc3VibWl0KCkKKworICAgIGRlZiB1
cGxvYWQoc2VsZiwgcGFyYW1zLCBmaWxlcywgdGltZW91dF9zZWNvbmRzKToKKyAgICAgICAgb3Jp
Z190aW1lb3V0ID0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkKKyAgICAgICAgZmlsZV9vYmpz
ID0gW10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZV9vYmpzID0gWyhmaWxlbmFtZSwg
b3BlbihwYXRoLCAicmIiKSkgZm9yIChmaWxlbmFtZSwgcGF0aCkKKyAgICAgICAgICAgICAgICBp
biBmaWxlc10KKworICAgICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXRf
c2Vjb25kcykKKyAgICAgICAgICAgIE5ldHdvcmtUcmFuc2FjdGlvbih0aW1lb3V0X3NlY29uZHM9
dGltZW91dF9zZWNvbmRzKS5ydW4oCisgICAgICAgICAgICAgICAgbGFtYmRhOiBzZWxmLl91cGxv
YWRfZmlsZXMocGFyYW1zLCBmaWxlX29ianMpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KG9yaWdfdGltZW91dCkKKyAgICAgICAgICAgIGZv
ciAoZmlsZW5hbWUsIGhhbmRsZSkgaW4gZmlsZV9vYmpzOgorICAgICAgICAgICAgICAgIGhhbmRs
ZS5jbG9zZSgpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIucHkK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>