<?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>59570</bug_id>
          
          <creation_ts>2011-04-26 18:39:46 -0700</creation_ts>
          <short_desc>new-run-webkit-tests is flaky on mac</short_desc>
          <delta_ts>2012-06-08 16:09:06 -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>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>64491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>aroben</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>jennb</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>393251</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-26 18:39:46 -0700</bug_when>
    <thetext>I have a patch that bundles up all flaky tests to run at the end.

Seems to fail the http tests, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393252</commentid>
    <comment_count>1</comment_count>
      <attachid>91206</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-26 18:40:29 -0700</bug_when>
    <thetext>Created attachment 91206
patch

Here&apos;s the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393263</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-26 18:51:01 -0700</bug_when>
    <thetext>when you say &quot;seems to fail the http tests&quot;, you mean that running with this patch failed on the http tests, right?

without this patch, do the http tests run okay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393264</commentid>
    <comment_count>3</comment_count>
      <attachid>91209</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-26 18:56:42 -0700</bug_when>
    <thetext>Created attachment 91209
patch

Now with http tests fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393265</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-26 18:58:56 -0700</bug_when>
    <thetext>&gt; when you say &quot;seems to fail the http tests&quot;, you mean that running with this patch failed on the http tests, right?

Yes.

&gt; without this patch, do the http tests run okay?

Yes.

Should be fixed in the latest patch. It was a bad rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394051</commentid>
    <comment_count>5</comment_count>
      <attachid>91396</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-27 18:23:56 -0700</bug_when>
    <thetext>Created attachment 91396
patch

Updated to retry more reliably and serialize Java and a few more things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394075</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-27 18:37:04 -0700</bug_when>
    <thetext>how well do the tests work when you run w/o this patch? If we retry the failures, does everything pass for you on the second run?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394189</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-27 21:50:28 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; how well do the tests work when you run w/o this patch? If we retry the failures, does everything pass for you on the second run?

Without this patch, running with 16-32 parallel instances, I got ~10 failures per run, and the failures didn&apos;t necessarily pass on retry. The failures seemed to change unpredictably between runs. (At least, there were enough failures with enough variety that I couldn&apos;t suss out a pattern.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394191</commentid>
    <comment_count>8</comment_count>
      <attachid>91425</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-27 21:53:10 -0700</bug_when>
    <thetext>Created attachment 91425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394195</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-27 21:58:18 -0700</bug_when>
    <thetext>I&apos;m not super-familiar with this code, and I&apos;ve never programmed in Python  before, but I think this patch is worth an r?. On my SnowLeopard Mac Pro, it makes new-run-webkit-tests basically as reliable as run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394207</commentid>
    <comment_count>10</comment_count>
      <attachid>91425</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-27 22:16:15 -0700</bug_when>
    <thetext>Comment on attachment 91425
Patch

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

Given what you responded to, I&apos;m okay with adding a concept like this to the test harness in order to make tests more reliable, but we wouldn&apos;t want to land this patch as is. I&apos;ve got some specific comments below, but unless you really want to learn the code better and hack on this yourself, you can leave this for a day or two and I&apos;ll be happy to implement it.


&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:72
&gt; +_locked_tests = [

We definitely wouldn&apos;t want to hard-code the list of tests and directories into this file, which is generic code shared across all of the implementations. One possibility would be to add methods on the Port objects (e.g. webkitpy/layout_tests/port/webkit.py) to return lists of files and directories that needed to be serialized.

However, it&apos;s probably better to pull this out of code altogether and use the test_expectations.txt file to track this. I think the right way to go would be to add a SERIAL modifier (or some similar name), just like we have modifiers to indicate that tests can be SLOW.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:103
&gt; +    # These tests rely on filesystem state, so they can&apos;t run in parallel.

This is almost certainly not true in general. It isn&apos;t for the chromium ports, at least. There may be some tests that have state, but not all of them, and you would lose a lot of parallelism by enforcing this this broadly.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:-595
&gt; -            int(self._options.child_processes) &gt; 1 and not self._options.experimental_fully_parallel)

By itself, I think the idea of running all of the retried tests serially makes sense. There should rarely be many of them. However, it might make sense to indicate this simply by changing the value of options.child_processes to 1 before the retry (or passing the child_processes value in as a parameter instead).

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:696
&gt; +                worker_number = num_workers + 1

This block of code duplicates the above block, and should be refactored into a separate method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394693</commentid>
    <comment_count>11</comment_count>
      <attachid>91425</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-28 13:09:53 -0700</bug_when>
    <thetext>Comment on attachment 91425
Patch

Based on Dirk&apos;s comments, it looks like there are some reasonable things to address before this can be landed,so r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401362</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-05-10 11:14:50 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 91425 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91425&amp;action=review
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:72
&gt; &gt; +_locked_tests = [
&gt; 
&gt; We definitely wouldn&apos;t want to hard-code the list of tests and directories into this file, which is generic code shared across all of the implementations. One possibility would be to add methods on the Port objects (e.g. webkitpy/layout_tests/port/webkit.py) to return lists of files and directories that needed to be serialized.
&gt; 
&gt; However, it&apos;s probably better to pull this out of code altogether and use the test_expectations.txt file to track this. I think the right way to go would be to add a SERIAL modifier (or some similar name), just like we have modifiers to indicate that tests can be SLOW.

I don&apos;t think I agree. In general, the problem here is often with the tests themselves, so the list will want to be shared across ports. That said, it might make sense to put it in port/base.py and that way different ports can add to/override the list in base.py.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:103
&gt; &gt; +    # These tests rely on filesystem state, so they can&apos;t run in parallel.
&gt; 
&gt; This is almost certainly not true in general. It isn&apos;t for the chromium ports, at least. There may be some tests that have state, but not all of them, and you would lose a lot of parallelism by enforcing this this broadly.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:-595
&gt; &gt; -            int(self._options.child_processes) &gt; 1 and not self._options.experimental_fully_parallel)
&gt; 
&gt; By itself, I think the idea of running all of the retried tests serially makes sense. There should rarely be many of them. However, it might make sense to indicate this simply by changing the value of options.child_processes to 1 before the retry (or passing the child_processes value in as a parameter instead).

Have we tried whether just making the retry step serial is sufficient? It would be great if we didn&apos;t need to maintain a list of tests at all. Certainly we could commit that part of this patch and see where that gets us on the NRWT bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401385</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-10 11:46:55 -0700</bug_when>
    <thetext>&gt; Have we tried whether just making the retry step serial is sufficient? It would be great if we didn&apos;t need to maintain a list of tests at all. Certainly we could commit that part of this patch and see where that gets us on the NRWT bot.

I haven&apos;t tried that. Seems like it could work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432383</commentid>
    <comment_count>14</comment_count>
      <attachid>91425</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-05 13:29:54 -0700</bug_when>
    <thetext>Comment on attachment 91425
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:72
&gt;&gt;&gt; +_locked_tests = [
&gt;&gt; 
&gt;&gt; We definitely wouldn&apos;t want to hard-code the list of tests and directories into this file, which is generic code shared across all of the implementations. One possibility would be to add methods on the Port objects (e.g. webkitpy/layout_tests/port/webkit.py) to return lists of files and directories that needed to be serialized.
&gt;&gt; 
&gt;&gt; However, it&apos;s probably better to pull this out of code altogether and use the test_expectations.txt file to track this. I think the right way to go would be to add a SERIAL modifier (or some similar name), just like we have modifiers to indicate that tests can be SLOW.
&gt; 
&gt; I don&apos;t think I agree. In general, the problem here is often with the tests themselves, so the list will want to be shared across ports. That said, it might make sense to put it in port/base.py and that way different ports can add to/override the list in base.py.

I thought we were using test_expectations for this sort of thing?
http://trac.webkit.org/browser/trunk/LayoutTests/platform/mac/test_expectations.txt#L66

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:103
&gt;&gt;&gt; +    # These tests rely on filesystem state, so they can&apos;t run in parallel.
&gt;&gt; 
&gt;&gt; This is almost certainly not true in general. It isn&apos;t for the chromium ports, at least. There may be some tests that have state, but not all of them, and you would lose a lot of parallelism by enforcing this this broadly.
&gt; 
&gt; Have we tried whether just making the retry step serial is sufficient? It would be great if we didn&apos;t need to maintain a list of tests at all. Certainly we could commit that part of this patch and see where that gets us on the NRWT bot.

I believe the current approach is that tests which fail will just be retried (in serial).  That&apos;s not ideal though because then the tests are reported as &quot;flaky&quot; even though we expected them to fail when run in parallel.

I think we should work on encoding this information in the LayoutTests file system, and making DRT more parallel-friendly.

Durring the proposed transition (this week) we&apos;re just running NRWT with a single child process on the bots to avoid these issues.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:114
&gt; +    # Java plug-in seems to malfunction unpredictably when used under parallel load.

Java seems to malfunction in general. :)  the commit-queue has filed several flaky-test bugs about java related tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432386</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-07-05 13:38:01 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 91425 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91425&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:72
&gt; &gt;&gt;&gt; +_locked_tests = [
&gt; &gt;&gt; 
&gt; &gt;&gt; We definitely wouldn&apos;t want to hard-code the list of tests and directories into this file, which is generic code shared across all of the implementations. One possibility would be to add methods on the Port objects (e.g. webkitpy/layout_tests/port/webkit.py) to return lists of files and directories that needed to be serialized.
&gt; &gt;&gt; 
&gt; &gt;&gt; However, it&apos;s probably better to pull this out of code altogether and use the test_expectations.txt file to track this. I think the right way to go would be to add a SERIAL modifier (or some similar name), just like we have modifiers to indicate that tests can be SLOW.
&gt; &gt; 
&gt; &gt; I don&apos;t think I agree. In general, the problem here is often with the tests themselves, so the list will want to be shared across ports. That said, it might make sense to put it in port/base.py and that way different ports can add to/override the list in base.py.
&gt; 
&gt; I thought we were using test_expectations for this sort of thing?
&gt; http://trac.webkit.org/browser/trunk/LayoutTests/platform/mac/test_expectations.txt#L66
&gt; 

We were (or I was, at least). Three problems with this approach ...

1) It is unclear if non-Chromium ports want to use test expectations at all. 

2) It is unclear how to share the knowledge of tests that are generally flaky across ports if each port has its own test_expectations file.

3) Given the current implementation of test_expectations, the best we can do is to mark a test as &quot;PASS FAIL&quot;, which is pretty broad and can cause an awful lot of things to be hidden. 

Per my comment in #10, If we wanted to make things cleaner via the test_expectations.txt route, I think the best approach to tracking this would be to introduce a new modifier like &quot;SERIAL&quot; to complement &quot;SLOW&quot; to indicate that the test should be run serially.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448073</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-08 10:14:44 -0700</bug_when>
    <thetext>I&apos;m not sure what to do with this bug.  I guess we&apos;ll keep it around until we complete the transition of all bots over to parallel NRWT.  We&apos;ll have to solve this sort of issue somehow to do that conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525563</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-21 14:08:08 -0800</bug_when>
    <thetext>ggaren, do you think we can close this now? It seems like retrying the failures is probably good enough?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645112</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-08 16:09:06 -0700</bug_when>
    <thetext>I&apos;m gonna close this; please reopen or file a new bug if you wish for us to do something more.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>91206</attachid>
            <date>2011-04-26 18:40:29 -0700</date>
            <delta_ts>2011-04-26 18:56:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>6778</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L21hbmFnZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQkocmV2aXNpb24gODQ5MzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzOSBAQCBCVUlMREVSX0JBU0VfVVJMID0gImh0
dHA6Ly9idWlsZC5jaHJvbWl1CiAKIFRlc3RFeHBlY3RhdGlvbnNGaWxlID0gdGVzdF9leHBlY3Rh
dGlvbnMuVGVzdEV4cGVjdGF0aW9uc0ZpbGUKIAorX2xvY2tlZF90ZXN0cyA9IFsKKyAgICAjIFRo
ZXNlIHRlc3RzIGNyYXNoIHdpdGggdGhlIGFzc2VydGlvbiBBU1NFUlRJT04gRkFJTEVEOiBmb250
Q2FjaGUoKS0+Z2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbi4KKyAgICAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTU1MgorICAgICJpbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxlLmh0bWwiLAorICAgICJpbnNwZWN0b3Ivc3R5bGVz
L21ldHJpY3MtYm94LXNpemluZy5odG1sIiwKKyAgICAiaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMt
YWRkLWJsYW5rLXByb3BlcnR5Lmh0bWwiLAorICAgICJpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1k
aXNhYmxlLWluaGVyaXRlZC5odG1sIiwKKyAgICAiaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtdXBk
YXRlLWZyb20tanMuaHRtbCIsCisgICAgImluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWRpc2FibGUt
dGhlbi1jaGFuZ2UuaHRtbCIsCisgICAgCisgICAgIyBUaGlzIHRlc3QgaXMgdG9vIHNsb3cgdG8g
cnVuIHVuZGVyIGxvYWQuCisgICAgImZhc3Qvb3ZlcmZsb3cvbG90cy1vZi1zaWJsaW5nLWlubGlu
ZS1ib3hlcy5odG1sIiwKKworICAgICMgVGhlc2UgdGVzdHMgZmFpbCBmb3IgdW5rbm93biByZWFz
b25zIHdoZW4gcnVuIGluIHBhcmFsbGVsLgorICAgICJlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5
LXdvcmQtdmlzdWFsbHkuaHRtbCIsCisgICAgImZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZl
bnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sIiwKKyAgICAiZmFzdC9mb3Jtcy9yZXN0b3JlLXNlbGVj
dGlvbi1hZnRlci1sYXlvdXQuaHRtbCIsCisgICAgImZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1y
ZXN0b3JlZC1mcm9tLWJmY2FjaGUuaHRtbCIsCisgICAgImZhc3QvbG9hZGVyL2xvY2FsLUNTUy1m
cm9tLWxvY2FsLmh0bWwiLAorICAgICJmYXN0L2xvYWRlci9sb2NhbC1KYXZhU2NyaXB0LWZyb20t
bG9jYWwuaHRtbCIsCisgICAgImZhc3QvbG9hZGVyL2xvY2FsLWltYWdlLWZyb20tbG9jYWwuaHRt
bCIsCisgICAgImluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1sYXlvdXQuaHRtbCIsCisgICAg
Imluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbCIsCisg
ICAgImphdmEvbGMzL0phdmFPYmplY3QvSmF2YU9iamVjdFRvRG91YmxlLTAwMS5odG1sIiwKKyAg
ICAianF1ZXJ5L21hbmlwdWxhdGlvbi5odG1sIiwKKyAgICAibG9hZGVyL2dvLWJhY2stdG8tZGlm
ZmVyZW50LXdpbmRvdy1zaXplLmh0bWwiLAorICAgICJtZWRpYS92aWRlby1wcmVsb2FkLmh0bWwi
LAorICAgICJtZWRpYS92aWRlby1wbGF5ZWQtcmVzZXQuaHRtbCIsCisgICAgInN0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTItY3Jl
YXRlLmh0bWwiLAorICAgICJzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0
cmFja2VyL3N0b3JhZ2UtdHJhY2tlci0zLWRlbGV0ZS1hbGwuaHRtbCIsCisgICAgInN0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTUt
ZGVsZXRlLW9uZS5odG1sIiwKKyAgICAic3ZnL1czQy1TVkctMS4xLVNFL3R5cGVzLWRvbS0wMS1i
LnN2ZyIsCitdCiAKIGRlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25z
LCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhw
ZWN0ZWQpOgogICAgICIiIlN1bW1hcml6ZSBhbnkgdW5leHBlY3RlZCByZXN1bHRzIGFzIGEgZGlj
dC4KQEAgLTQ4NCw3ICs1MTcsOCBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICAiIiJSZXR1cm4g
VHJ1ZSBpZiB0aGUgdGVzdCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgogICAgICAgICBydW5uaW5n
IG11bHRpcGxlIGNvcGllcyBvZiBOUldUcy4iIiIKICAgICAgICAgc3BsaXRfcGF0aCA9IHRlc3Rf
ZmlsZS5zcGxpdChzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnNlcCkKLSAgICAgICAgcmV0dXJuICdo
dHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGgKKyAgICAgICAg
c3ViX3BhdGggPSB0ZXN0X2ZpbGVbdGVzdF9maWxlLmZpbmQoc2VsZi5MQVlPVVRfVEVTVFNfRElS
RUNUT1JZKSArIGxlbihzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlkpOl0KKyAgICAgICAgcmV0
dXJuICdodHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGggb3Ig
J2FuaW1hdGlvbnMnIGluIHNwbGl0X3BhdGggb3IgJ3dlYmdsJyBpbiBzcGxpdF9wYXRoIG9yIHN1
Yl9wYXRoIGluIF9sb2NrZWRfdGVzdHM7CiAKICAgICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0
ZXN0X2ZpbGUpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmll
cih0ZXN0X2ZpbGUsCkBAIC01MDEsMTkgKzUzNSwxMyBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAg
ICBSZXR1cm46CiAgICAgICAgICAgICBBIGxpc3Qgb2YgbGlzdHMgb2YgVGVzdElucHV0IG9iamVj
dHMuCiAgICAgICAgICIiIgotICAgICAgICAjIEZJWE1FOiB3aGVuIHdlIGFkZGVkIGh0dHAgbG9j
a2luZywgd2UgY2hhbmdlZCBob3cgdGhpcyB3b3JrcyBzdWNoCi0gICAgICAgICMgdGhhdCB3ZSBh
bHdheXMgbHVtcCBhbGwgb2YgdGhlIEhUVFAgdGhyZWFkcyBpbnRvIGEgc2luZ2xlIHNoYXJkLgot
ICAgICAgICAjIFRoYXQgd2lsbCBzbG93IGRvd24gZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVs
LCBidXQgaXQncyB1bmNsZWFyCi0gICAgICAgICMgd2hhdCB0aGUgYmVzdCBhbHRlcm5hdGl2ZSBp
cyBjb21wbGV0ZWx5IHJldmFtcGluZyBob3cgd2UgdHJhY2sKLSAgICAgICAgIyB3aGVuIHRvIGdy
YWIgdGhlIGxvY2suCi0KICAgICAgICAgdGVzdF9saXN0cyA9IFtdCi0gICAgICAgIHRlc3RzX3Rv
X2h0dHBfbG9jayA9IFtdCisgICAgICAgIHRlc3RzX3RvX2xvY2sgPSBbXQogICAgICAgICBpZiBu
b3QgdXNlX3JlYWxfc2hhcmRzOgogICAgICAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiB0ZXN0X2Zp
bGVzOgogICAgICAgICAgICAgICAgIHRlc3RfaW5wdXQgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dF9m
b3JfZmlsZSh0ZXN0X2ZpbGUpCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJl
c19sb2NrKHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RzX3RvX2h0dHBfbG9j
ay5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9fbG9jay5h
cHBlbmQodGVzdF9pbnB1dCkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
ICAgICB0ZXN0X2xpc3RzLmFwcGVuZCgoIi4iLCBbdGVzdF9pbnB1dF0pKQogICAgICAgICBlbHNl
OgpAQCAtNTIyLDcgKzU1MCw3IEBAIGNsYXNzIE1hbmFnZXI6CiAgICAgICAgICAgICAgICAgZGly
ZWN0b3J5ID0gc2VsZi5fZ2V0X2Rpcl9mb3JfdGVzdF9maWxlKHRlc3RfZmlsZSkKICAgICAgICAg
ICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9m
aWxlKQogICAgICAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2Zp
bGUpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19odHRwX2xvY2suYXBwZW5kKHRlc3Rf
aW5wdXQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RzX3RvX2xvY2suYXBwZW5kKHRlc3RfaW5w
dXQpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgdGVzdHNfYnlf
ZGlyLnNldGRlZmF1bHQoZGlyZWN0b3J5LCBbXSkKICAgICAgICAgICAgICAgICAgICAgdGVzdHNf
YnlfZGlyW2RpcmVjdG9yeV0uYXBwZW5kKHRlc3RfaW5wdXQpCkBAIC01MzcsMTEgKzU2NSw4IEBA
IGNsYXNzIE1hbmFnZXI6CiAgICAgICAgICAgICAgICAgdGVzdF9saXN0cy5hcHBlbmQodGVzdF9s
aXN0X3R1cGxlKQogICAgICAgICAgICAgdGVzdF9saXN0cy5zb3J0KGxhbWJkYSBhLCBiOiBjbXAo
bGVuKGJbMV0pLCBsZW4oYVsxXSkpKQogCi0gICAgICAgICMgUHV0IHRoZSBodHRwIHRlc3RzIGZp
cnN0LiBUaGVyZSBhcmUgb25seSBhIGNvdXBsZSBodW5kcmVkIG9mIHRoZW0sCi0gICAgICAgICMg
YnV0IGVhY2ggaHR0cCB0ZXN0IHRha2VzIGEgdmVyeSBsb25nIHRpbWUgdG8gcnVuLCBzbyBzb3J0
aW5nIGJ5IHRoZQotICAgICAgICAjIG51bWJlciBvZiB0ZXN0cyBkb2Vzbid0IGFjY3VyYXRlbHkg
Y2FwdHVyZSBob3cgbG9uZyB0aGV5IHRha2UgdG8gcnVuLgotICAgICAgICBpZiB0ZXN0c190b19o
dHRwX2xvY2s6Ci0gICAgICAgICAgICB0ZXN0X2xpc3RzLmluc2VydCgwLCAoInRlc3RzX3RvX2h0
dHBfbG9jayIsIHRlc3RzX3RvX2h0dHBfbG9jaykpCisgICAgICAgIGlmIHRlc3RzX3RvX2xvY2s6
CisgICAgICAgICAgICB0ZXN0X2xpc3RzLmluc2VydCgwLCAoInRlc3RzX3RvX2xvY2siLCB0ZXN0
c190b19sb2NrKSkKIAogICAgICAgICByZXR1cm4gdGVzdF9saXN0cwogCkBAIC01OTEsNiArNjE2
LDkgQEAgY2xhc3MgTWFuYWdlcjoKICAgICAgICAgdGVzdF9saXN0cyA9IHNlbGYuX3NoYXJkX3Rl
c3RzKGZpbGVfbGlzdCwKICAgICAgICAgICAgIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nl
c3NlcykgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxs
ZWwpCiAKKyAgICAgICAgbG9ja2VkX3Rlc3RzID0gTm9uZQorICAgICAgICBpZiAodGVzdF9saXN0
c1swXVswXSA9PSAidGVzdHNfdG9fbG9jayIpOgorICAgICAgICAgICAgbG9ja2VkX3Rlc3RzID0g
dGVzdF9saXN0cy5wb3AoMCkKICAgICAgICAgbnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2Vy
cyhsZW4odGVzdF9saXN0cykpCiAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJf
d29ya2VyX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCB3b3JrZXIu
V29ya2VyKQpAQCAtNjI4LDYgKzY1NiwyMSBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICAgICAg
ICAgICMgV2UgbG9vcCB3aXRoIGEgdGltZW91dCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGRldGVj
dCB3ZWRnZWQgdGhyZWFkcy4KICAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucnVu
X21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKIAorICAgICAgICAgICAgaWYgbG9ja2VkX3Rl
c3RzOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGlu
ZyB3b3JrZXIgZm9yIGxvY2tlZCB0ZXN0cyAuLi4nKQorICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgd29ya2VyX251bWJlciA9IG51bV93b3JrZXJzICsgMQorICAgICAgICAgICAgICAgIHdv
cmtlcl9jb25uZWN0aW9uID0gbWFuYWdlcl9jb25uZWN0aW9uLnN0YXJ0X3dvcmtlcih3b3JrZXJf
bnVtYmVyKQorICAgICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3Jr
ZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKKyAgICAgICAgICAgICAgICBzZWxmLl93b3Jr
ZXJfc3RhdGVzW3dvcmtlcl9jb25uZWN0aW9uLm5hbWVdID0gd29ya2VyX3N0YXRlCisKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgdGVzdGluZyAu
Li4iKQorICAgICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3Rl
c3RfbGlzdCcsIGxvY2tlZF90ZXN0c1swXSwgbG9ja2VkX3Rlc3RzWzFdKQorICAgICAgICAgICAg
ICAgIG1hbmFnZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3N0b3AnKQorICAgICAgICAgICAg
ICAgIHdoaWxlIG5vdCBzZWxmLmlzX2RvbmUoKToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBs
b29wIHdpdGggYSB0aW1lb3V0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdlZGdlZCB0
aHJlYWRzLgorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucnVuX21lc3Nh
Z2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKwogICAgICAgICAgICAgaWYgYW55KHdvcmtlcl9zdGF0
ZS53ZWRnZWQgZm9yIHdvcmtlcl9zdGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygp
KToKICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQogICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJ1JlbWFpbmluZyB3b3JrZXJzIGFyZSB3ZWRnZWQsIGJhaWxpbmcgb3V0LicpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91209</attachid>
            <date>2011-04-26 18:56:42 -0700</date>
            <delta_ts>2011-04-27 18:23:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>4701</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L21hbmFnZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQkocmV2aXNpb24gODQ5MzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzOSBAQCBCVUlMREVSX0JBU0VfVVJMID0gImh0
dHA6Ly9idWlsZC5jaHJvbWl1CiAKIFRlc3RFeHBlY3RhdGlvbnNGaWxlID0gdGVzdF9leHBlY3Rh
dGlvbnMuVGVzdEV4cGVjdGF0aW9uc0ZpbGUKIAorX2xvY2tlZF90ZXN0cyA9IFsKKyAgICAjIFRo
ZXNlIHRlc3RzIGNyYXNoIHdpdGggdGhlIGFzc2VydGlvbiBBU1NFUlRJT04gRkFJTEVEOiBmb250
Q2FjaGUoKS0+Z2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbi4KKyAgICAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTU1MgorICAgICJpbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1kaXNhYmxlLXRoZW4tZW5hYmxlLmh0bWwiLAorICAgICJpbnNwZWN0b3Ivc3R5bGVz
L21ldHJpY3MtYm94LXNpemluZy5odG1sIiwKKyAgICAiaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMt
YWRkLWJsYW5rLXByb3BlcnR5Lmh0bWwiLAorICAgICJpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1k
aXNhYmxlLWluaGVyaXRlZC5odG1sIiwKKyAgICAiaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtdXBk
YXRlLWZyb20tanMuaHRtbCIsCisgICAgImluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWRpc2FibGUt
dGhlbi1jaGFuZ2UuaHRtbCIsCisgICAgCisgICAgIyBUaGlzIHRlc3QgaXMgdG9vIHNsb3cgdG8g
cnVuIHVuZGVyIGxvYWQuCisgICAgImZhc3Qvb3ZlcmZsb3cvbG90cy1vZi1zaWJsaW5nLWlubGlu
ZS1ib3hlcy5odG1sIiwKKworICAgICMgVGhlc2UgdGVzdHMgZmFpbCBmb3IgdW5rbm93biByZWFz
b25zIHdoZW4gcnVuIGluIHBhcmFsbGVsLgorICAgICJlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5
LXdvcmQtdmlzdWFsbHkuaHRtbCIsCisgICAgImZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZl
bnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sIiwKKyAgICAiZmFzdC9mb3Jtcy9yZXN0b3JlLXNlbGVj
dGlvbi1hZnRlci1sYXlvdXQuaHRtbCIsCisgICAgImZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1y
ZXN0b3JlZC1mcm9tLWJmY2FjaGUuaHRtbCIsCisgICAgImZhc3QvbG9hZGVyL2xvY2FsLUNTUy1m
cm9tLWxvY2FsLmh0bWwiLAorICAgICJmYXN0L2xvYWRlci9sb2NhbC1KYXZhU2NyaXB0LWZyb20t
bG9jYWwuaHRtbCIsCisgICAgImZhc3QvbG9hZGVyL2xvY2FsLWltYWdlLWZyb20tbG9jYWwuaHRt
bCIsCisgICAgImluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1sYXlvdXQuaHRtbCIsCisgICAg
Imluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbCIsCisg
ICAgImphdmEvbGMzL0phdmFPYmplY3QvSmF2YU9iamVjdFRvRG91YmxlLTAwMS5odG1sIiwKKyAg
ICAianF1ZXJ5L21hbmlwdWxhdGlvbi5odG1sIiwKKyAgICAibG9hZGVyL2dvLWJhY2stdG8tZGlm
ZmVyZW50LXdpbmRvdy1zaXplLmh0bWwiLAorICAgICJtZWRpYS92aWRlby1wcmVsb2FkLmh0bWwi
LAorICAgICJtZWRpYS92aWRlby1wbGF5ZWQtcmVzZXQuaHRtbCIsCisgICAgInN0b3JhZ2UvZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTItY3Jl
YXRlLmh0bWwiLAorICAgICJzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0
cmFja2VyL3N0b3JhZ2UtdHJhY2tlci0zLWRlbGV0ZS1hbGwuaHRtbCIsCisgICAgInN0b3JhZ2Uv
ZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIvc3RvcmFnZS10cmFja2VyLTUt
ZGVsZXRlLW9uZS5odG1sIiwKKyAgICAic3ZnL1czQy1TVkctMS4xLVNFL3R5cGVzLWRvbS0wMS1i
LnN2ZyIsCitdCiAKIGRlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25z
LCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhw
ZWN0ZWQpOgogICAgICIiIlN1bW1hcml6ZSBhbnkgdW5leHBlY3RlZCByZXN1bHRzIGFzIGEgZGlj
dC4KQEAgLTQ4NCw3ICs1MTcsOCBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICAiIiJSZXR1cm4g
VHJ1ZSBpZiB0aGUgdGVzdCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgogICAgICAgICBydW5uaW5n
IG11bHRpcGxlIGNvcGllcyBvZiBOUldUcy4iIiIKICAgICAgICAgc3BsaXRfcGF0aCA9IHRlc3Rf
ZmlsZS5zcGxpdChzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnNlcCkKLSAgICAgICAgcmV0dXJuICdo
dHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGgKKyAgICAgICAg
c3ViX3BhdGggPSB0ZXN0X2ZpbGVbdGVzdF9maWxlLmZpbmQoc2VsZi5MQVlPVVRfVEVTVFNfRElS
RUNUT1JZKSArIGxlbihzZWxmLkxBWU9VVF9URVNUU19ESVJFQ1RPUlkpOl0KKyAgICAgICAgcmV0
dXJuICdodHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGggb3Ig
J2FuaW1hdGlvbnMnIGluIHNwbGl0X3BhdGggb3IgJ3dlYmdsJyBpbiBzcGxpdF9wYXRoIG9yIHN1
Yl9wYXRoIGluIF9sb2NrZWRfdGVzdHM7CiAKICAgICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0
ZXN0X2ZpbGUpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmll
cih0ZXN0X2ZpbGUsCkBAIC01OTEsNiArNjI1LDkgQEAgY2xhc3MgTWFuYWdlcjoKICAgICAgICAg
dGVzdF9saXN0cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKICAgICAgICAgICAgIGlu
dChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9u
cy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwpCiAKKyAgICAgICAgbG9ja2VkX3Rlc3RzID0g
Tm9uZQorICAgICAgICBpZiAodGVzdF9saXN0c1swXVswXSA9PSAidGVzdHNfdG9faHR0cF9sb2Nr
Iik6CisgICAgICAgICAgICBsb2NrZWRfdGVzdHMgPSB0ZXN0X2xpc3RzLnBvcCgwKQogICAgICAg
ICBudW1fd29ya2VycyA9IHNlbGYuX251bV93b3JrZXJzKGxlbih0ZXN0X2xpc3RzKSkKICAgICAg
ICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChzZWxmLl9w
b3J0LCBzZWxmLl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYsIHdvcmtlci5Xb3JrZXIpCkBAIC02MjgsNiArNjY1LDIx
IEBAIGNsYXNzIE1hbmFnZXI6CiAgICAgICAgICAgICAgICAgIyBXZSBsb29wIHdpdGggYSB0aW1l
b3V0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdlZGdlZCB0aHJlYWRzLgogICAgICAg
ICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9
MS4wKQogCisgICAgICAgICAgICBpZiBsb2NrZWRfdGVzdHM6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nIHdvcmtlciBmb3IgbG9ja2VkIHRlc3Rz
IC4uLicpCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB3b3JrZXJfbnVtYmVyID0gbnVt
X3dvcmtlcnMgKyAxCisgICAgICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2Vy
X2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIpCisgICAgICAgICAgICAgICAg
d29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdvcmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0
aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rp
b24ubmFtZV0gPSB3b3JrZXJfc3RhdGUKKworICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdXBkYXRlKCJTdGFydGluZyB0ZXN0aW5nIC4uLiIpCisgICAgICAgICAgICAgICAgbWFu
YWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgndGVzdF9saXN0JywgbG9ja2VkX3Rlc3RzWzBd
LCBsb2NrZWRfdGVzdHNbMV0pCisgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBv
c3RfbWVzc2FnZSgnc3RvcCcpCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfZG9u
ZSgpOgorICAgICAgICAgICAgICAgICAgICAjIFdlIGxvb3Agd2l0aCBhIHRpbWVvdXQgaW4gb3Jk
ZXIgdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2VkZ2VkIHRocmVhZHMuCisgICAgICAgICAgICAgICAg
ICAgIG1hbmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQor
CiAgICAgICAgICAgICBpZiBhbnkod29ya2VyX3N0YXRlLndlZGdlZCBmb3Igd29ya2VyX3N0YXRl
IGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCkpOgogICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCiAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignUmVtYWluaW5nIHdvcmtlcnMg
YXJlIHdlZGdlZCwgYmFpbGluZyBvdXQuJykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91396</attachid>
            <date>2011-04-27 18:23:56 -0700</date>
            <delta_ts>2011-04-27 21:53:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>6584</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IHdlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHdlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2Vy
LnB5CShyZXZpc2lvbiA4NTEyNykKKysrIHdlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9tYW5hZ2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw1MiBAQAogCiBUZXN0
RXhwZWN0YXRpb25zRmlsZSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnNGaWxl
CiAKK19sb2NrZWRfdGVzdHMgPSBbCisgICAgIyBUaGVzZSB0ZXN0cyBjcmFzaCB3aXRoIHRoZSBh
c3NlcnRpb24gQVNTRVJUSU9OIEZBSUxFRDogZm9udENhY2hlKCktPmdlbmVyYXRpb24oKSA9PSBt
X2dlbmVyYXRpb24uCisgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTk1NTIKKyAgICAiaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS10aGVuLWVuYWJs
ZS5odG1sIiwKKyAgICAiaW5zcGVjdG9yL3N0eWxlcy9tZXRyaWNzLWJveC1zaXppbmcuaHRtbCIs
CisgICAgImluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1ibGFuay1wcm9wZXJ0eS5odG1sIiwK
KyAgICAiaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtZGlzYWJsZS1pbmhlcml0ZWQuaHRtbCIsCisg
ICAgImluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXVwZGF0ZS1mcm9tLWpzLmh0bWwiLAorICAgICJp
bnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1kaXNhYmxlLXRoZW4tY2hhbmdlLmh0bWwiLAorICAgIAor
ICAgICMgVGhpcyB0ZXN0IGlzIHRvbyBzbG93IHRvIHJ1biB1bmRlciBsb2FkLgorICAgICJmYXN0
L292ZXJmbG93L2xvdHMtb2Ytc2libGluZy1pbmxpbmUtYm94ZXMuaHRtbCIsCiAKKyAgICAjIFRo
ZXNlIHRlc3RzIGZhaWwgZm9yIHVua25vd24gcmVhc29ucyB3aGVuIHJ1biBpbiBwYXJhbGxlbC4K
KyAgICAiZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5Lmh0bWwiLAorICAg
ICJmYXN0L2V2ZW50cy9wbGF0Zm9ybS13aGVlbGV2ZW50LWluLXNjcm9sbGluZy1kaXYuaHRtbCIs
CisgICAgImZhc3QvZm9ybXMvcmVzdG9yZS1zZWxlY3Rpb24tYWZ0ZXItbGF5b3V0Lmh0bWwiLAor
ICAgICJmYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtcmVzdG9yZWQtZnJvbS1iZmNhY2hlLmh0bWwi
LAorICAgICJmYXN0L2xvYWRlci9sb2NhbC1DU1MtZnJvbS1sb2NhbC5odG1sIiwKKyAgICAiZmFz
dC9sb2FkZXIvbG9jYWwtSmF2YVNjcmlwdC1mcm9tLWxvY2FsLmh0bWwiLAorICAgICJmYXN0L2xv
YWRlci9sb2NhbC1pbWFnZS1mcm9tLWxvY2FsLmh0bWwiLAorICAgICJpbnNwZWN0b3IvdGltZWxp
bmUvdGltZWxpbmUtbGF5b3V0Lmh0bWwiLAorICAgICJpbnNwZWN0b3IvdGltZWxpbmUvdGltZWxp
bmUtcmVjYWxjdWxhdGUtc3R5bGVzLmh0bWwiLAorICAgICJqcXVlcnkvbWFuaXB1bGF0aW9uLmh0
bWwiLAorICAgICJsb2FkZXIvZ28tYmFjay10by1kaWZmZXJlbnQtd2luZG93LXNpemUuaHRtbCIs
CisgICAgIm1lZGlhL3ZpZGVvLXByZWxvYWQuaHRtbCIsCisgICAgIm1lZGlhL3ZpZGVvLXBsYXll
ZC1yZXNldC5odG1sIiwKKyAgICAic3ZnL1czQy1TVkctMS4xLVNFL3R5cGVzLWRvbS0wMS1iLnN2
ZyIsCitdCisKK19sb2NrZWRfZGlyZWN0b3JpZXMgPSBbCisgICAgIyBUaGVzZSB0ZXN0cyByZWx5
IG9uIGZpbGVzeXN0ZW0gc3RhdGUsIHNvIHRoZXkgY2FuJ3QgcnVuIGluIHBhcmFsbGVsLgorICAg
ICdodHRwJywKKyAgICAnd2Vic29ja2V0JywKKyAgICAnbG9jYWxzdG9yYWdlJywKKworICAgICMg
VGhlc2UgdGVzdHMgcmVseSBvbiB1bmRlcmx5aW5nIENQVSB0aW1pbmcsIHNvIHRoZXkgY2FuJ3Qg
cnVuIHdoZW4gdGhlIENQVSBpcyB1bmRlciBoZWF2eSBsb2FkLgorICAgICdhbmltYXRpb25zJywK
KworICAgICMgT3BlbkdMIDxjYW52YXM+IGNvbnRleHQgc2VlbXMgdG8gZmFpbCB0byBpbml0aWFs
aXplIHdoZW4gdXNlZCB1bmRlciBoZWF2eSBsb2FkLgorICAgICd3ZWJnbCcsCisgICAgCisgICAg
IyBKYXZhIHBsdWctaW4gc2VlbXMgdG8gbWFsZnVuY3Rpb24gdW5wcmVkaWN0YWJseSB3aGVuIHVz
ZWQgdW5kZXIgcGFyYWxsZWwgbG9hZC4KKyAgICAnamF2YScsCitdCisKIGRlZiBzdW1tYXJpemVf
cmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3Vt
bWFyeSwgdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQpOgogICAgICIiIlN1bW1hcml6ZSBm
YWlsaW5nIHJlc3VsdHMgYXMgYSBkaWN0LgogCkBAIC00ODYsOSArNTMxLDE0IEBACiAgICAgZGVm
IF90ZXN0X3JlcXVpcmVzX2xvY2soc2VsZiwgdGVzdF9maWxlKToKICAgICAgICAgIiIiUmV0dXJu
IFRydWUgaWYgdGhlIHRlc3QgbmVlZHMgdG8gYmUgbG9ja2VkIHdoZW4KICAgICAgICAgcnVubmlu
ZyBtdWx0aXBsZSBjb3BpZXMgb2YgTlJXVHMuIiIiCi0gICAgICAgIHNwbGl0X3BhdGggPSB0ZXN0
X2ZpbGUuc3BsaXQoc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5zZXApCi0gICAgICAgIHJldHVybiAn
aHR0cCcgaW4gc3BsaXRfcGF0aCBvciAnd2Vic29ja2V0JyBpbiBzcGxpdF9wYXRoCisgICAgICAg
IHNwbGl0X2ZpbGUgPSB0ZXN0X2ZpbGUuc3BsaXQoc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5zZXAp
CisgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gX2xvY2tlZF9kaXJlY3RvcmllczoKKyAgICAgICAg
ICAgIGlmIGRpcmVjdG9yeSBpbiBzcGxpdF9maWxlOgorICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCiAKKyAgICAgICAgdGVzdCA9IHRlc3RfZmlsZVt0ZXN0X2ZpbGUuZmluZChzZWxmLkxBWU9V
VF9URVNUU19ESVJFQ1RPUlkpICsgbGVuKHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6XQor
ICAgICAgICByZXR1cm4gdGVzdCBpbiBfbG9ja2VkX3Rlc3RzOworCiAgICAgZGVmIF90ZXN0X2lz
X3Nsb3coc2VsZiwgdGVzdF9maWxlKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9u
cy5oYXNfbW9kaWZpZXIodGVzdF9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9XKQpAQCAtNTY1LDcgKzYxNSw3
IEBACiAgICAgICAgICAgICAgICAgKG51bV93b3JrZXJzLCBkcml2ZXJfbmFtZSwgbnVtX3NoYXJk
cykpCiAgICAgICAgIHJldHVybiBudW1fd29ya2VycwogCi0gICAgZGVmIF9ydW5fdGVzdHMoc2Vs
ZiwgZmlsZV9saXN0LCByZXN1bHRfc3VtbWFyeSk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwg
ZmlsZV9saXN0LCByZXN1bHRfc3VtbWFyeSwgaXNfcmV0cnkpOgogICAgICAgICAiIiJSdW5zIHRo
ZSB0ZXN0cyBpbiB0aGUgZmlsZV9saXN0LgogCiAgICAgICAgIFJldHVybjogQSB0dXBsZSAoaW50
ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKQEAgLTU5MSw4
ICs2NDEsMTcgQEAKICAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBbXQogCiAgICAgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAuLi4nKQotICAgICAgICB0ZXN0
X2xpc3RzID0gc2VsZi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LAotICAgICAgICAgICAgaW50KHNl
bGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmV4
cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKKyAgICAgICAgbG9ja2VkX3Rlc3RzID0gTm9uZQor
ICAgICAgICBpZiBpc19yZXRyeToKKyAgICAgICAgICAgIHRlc3RfbGlzdCA9IFtdCisgICAgICAg
ICAgICBmb3IgdGVzdF9maWxlIGluIGZpbGVfbGlzdDoKKyAgICAgICAgICAgICAgICB0ZXN0X2xp
c3QuYXBwZW5kKHNlbGYuX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRlc3RfZmlsZSkpCisgICAg
ICAgICAgICB0ZXN0X2xpc3RzID0gWygidGVzdHNfdG9fcmV0cnkiLCB0ZXN0X2xpc3QpXTsKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RfbGlzdHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhm
aWxlX2xpc3QsCisgICAgICAgICAgICAgICAgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vz
c2VzKSA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxl
bCkKKyAgICAgICAgICAgIGlmICh0ZXN0X2xpc3RzWzBdWzBdID09ICJ0ZXN0c190b19odHRwX2xv
Y2siKToKKyAgICAgICAgICAgICAgICBsb2NrZWRfdGVzdHMgPSB0ZXN0X2xpc3RzLnBvcCgwKQog
CiAgICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtlcnMobGVuKHRlc3RfbGlzdHMp
KQogICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuZ2V0
KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCkBAIC02MzEsNiArNjkwLDIxIEBACiAgICAgICAg
ICAgICAgICAgIyBXZSBsb29wIHdpdGggYSB0aW1lb3V0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8g
ZGV0ZWN0IHdlZGdlZCB0aHJlYWRzLgogICAgICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlv
bi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQogCisgICAgICAgICAgICBpZiBsb2Nr
ZWRfdGVzdHM6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0
YXJ0aW5nIHdvcmtlciBmb3IgbG9ja2VkIHRlc3RzIC4uLicpCisgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICB3b3JrZXJfbnVtYmVyID0gbnVtX3dvcmtlcnMgKyAxCisgICAgICAgICAgICAg
ICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdv
cmtlcl9udW1iZXIpCisgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRl
KHdvcmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYu
X3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24ubmFtZV0gPSB3b3JrZXJfc3RhdGUKKwor
ICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFydGluZyB0ZXN0
aW5nIC4uLiIpCisgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2Fn
ZSgndGVzdF9saXN0JywgbG9ja2VkX3Rlc3RzWzBdLCBsb2NrZWRfdGVzdHNbMV0pCisgICAgICAg
ICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisgICAgICAg
ICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfZG9uZSgpOgorICAgICAgICAgICAgICAgICAgICAj
IFdlIGxvb3Agd2l0aCBhIHRpbWVvdXQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2Vk
Z2VkIHRocmVhZHMuCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5ydW5f
bWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQorCiAgICAgICAgICAgICBpZiBhbnkod29ya2Vy
X3N0YXRlLndlZGdlZCBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFs
dWVzKCkpOgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCiAgICAgICAgICAgICAgICAg
X2xvZy5lcnJvcignUmVtYWluaW5nIHdvcmtlcnMgYXJlIHdlZGdlZCwgYmFpbGluZyBvdXQuJykK
QEAgLTc0Myw3ICs4MTcsNyBAQAogCiAgICAgICAgIGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRl
cnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgXAogICAgICAgICAgICAgaW5k
aXZpZHVhbF90ZXN0X3RpbWluZ3MgPSAoCi0gICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoc2Vs
Zi5fdGVzdF9maWxlc19saXN0LCByZXN1bHRfc3VtbWFyeSkpCisgICAgICAgICAgICBzZWxmLl9y
dW5fdGVzdHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCByZXN1bHRfc3VtbWFyeSwgRmFsc2UpKQog
CiAgICAgICAgICMgV2UgZXhjbHVkZSB0aGUgY3Jhc2hlcyBmcm9tIHRoZSBsaXN0IG9mIHJlc3Vs
dHMgdG8gcmV0cnksIGJlY2F1c2UKICAgICAgICAgIyB3ZSB3YW50IHRvIHRyZWF0IGV2ZW4gYSBw
b3RlbnRpYWxseSBmbGFreSBjcmFzaCBhcyBhbiBlcnJvci4KQEAgLTc1Nyw3ICs4MzEsNyBAQAog
ICAgICAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSBUcnVlCiAgICAgICAgICAgICByZXRyeV9zdW1t
YXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlvbnMsIGZhaWx1cmVzLmtleXMoKSkK
ICAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgaWdub3JlIHRoZSByZXR1
cm4gdmFsdWUgaGVyZS4KLSAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJlcy5rZXlz
KCksIHJldHJ5X3N1bW1hcnkpCisgICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoZmFpbHVyZXMu
a2V5cygpLCByZXRyeV9zdW1tYXJ5LCBUcnVlKQogICAgICAgICAgICAgZmFpbHVyZXMgPSBzZWxm
Ll9nZXRfZmFpbHVyZXMocmV0cnlfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzPVRydWUpCiAKICAg
ICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91425</attachid>
            <date>2011-04-27 21:53:10 -0700</date>
            <delta_ts>2011-07-05 13:29:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59570-20110427215309.patch</filename>
            <type>text/plain</type>
            <size>7973</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg1MTQ3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTEtMDQtMjcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBuZXctcnVu
LXdlYmtpdC10ZXN0cyBpcyBmbGFreSBvbiBtYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NTcwCisgICAgICAgIAorICAgICAgICBBIGZldyBjaGFu
Z2VzIHRoYXQgbWFrZQorICAgICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMgLS1jaGlsZC1w
cm9jZXNzZXM9MTYgLS1leHBlcmltZW50YWwtZnVsbHktcGFyYWxsZWwKKyAgICAgICAgcHJldHR5
IHJlbGlhYmxlIGZvciBtZSBvbiBTbm93TGVvcGFyZDoKKworICAgICAgICAqIEFkZGVkIF9sb2Nr
ZWRfdGVzdHMgYW5kIF9sb2NrZWRfZGlyZWN0b3JpZXMgbGlzdHMuIE1vc3Qgb2YgdGhlc2UgYXJl
CisgICAgICAgIHRlc3RzIG9yIHNldHMgb2YgdGVzdHMga25vd24gdG8gZmFpbCBmb3Igc29tZSBy
ZWFzb24gd2hlbiBydW4gaW4gcGFyYWxsZWwuCisgICAgICAgIFNvbWUgYXJlIHRlc3RzIGZvciB3
aGljaCB3ZSBkb24ndCBrbm93IHRoZSBmYWlsdXJlIHJlYXNvbi4gSG9wZWZ1bGx5LCB3ZQorICAg
ICAgICBjYW4gaW5jcmVtZW50YWxseSByZWR1Y2UgdGhlc2UgbGlzdHMgdG8gbmVhci16ZXJvLiBS
aWdodCBub3csIHRoZXkncmUgYWJvdXQKKyAgICAgICAgMTUwMCB0ZXN0cyBpbiB0b3RhbCwgdGhl
IHZhc3QgbWFqb3JpdHkgYmVpbmcgaHR0cCB0ZXN0cy4KKworICAgICAgICAqIEFkZGVkIGEgc2Vw
YXJhdGUgInJldHJ5IiBtb2RlIGZvciByZXRyeWluZyB0ZXN0cyB0aGF0IGZhaWxlZCB0aGUgZmly
c3QKKyAgICAgICAgdGltZSBhcm91bmQuICJyZXRyeSIgbW9kZSBydW5zIGFsbCByZXRyaWVkIHRl
c3RzIGluIGEgc2luZ2xlIHNoYXJkLCBob3BpbmcKKyAgICAgICAgdG8gZ2V0IGJldHRlciByZWxp
YWJpbGl0eSB0aGF0IHdheS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHk6CisKIDIwMTEtMDQtMjcgIERhdmlkIExldmlu
ICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9tYW5hZ2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkJKHJldmlzaW9uIDg1MTI3KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5w
eQkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNTEgQEAgQlVJTERFUl9CQVNFX1VSTCA9ICJo
dHRwOi8vYnVpbGQuY2hyb21pdQogCiBUZXN0RXhwZWN0YXRpb25zRmlsZSA9IHRlc3RfZXhwZWN0
YXRpb25zLlRlc3RFeHBlY3RhdGlvbnNGaWxlCiAKK19sb2NrZWRfdGVzdHMgPSBbCisgICAgIyBU
aGVzZSB0ZXN0cyBjcmFzaCB3aXRoIHRoZSBhc3NlcnRpb24gQVNTRVJUSU9OIEZBSUxFRDogZm9u
dENhY2hlKCktPmdlbmVyYXRpb24oKSA9PSBtX2dlbmVyYXRpb24uCisgICAgIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk1NTIKKyAgICAiaW5zcGVjdG9yL3N0eWxl
cy9zdHlsZXMtZGlzYWJsZS10aGVuLWVuYWJsZS5odG1sIiwKKyAgICAiaW5zcGVjdG9yL3N0eWxl
cy9tZXRyaWNzLWJveC1zaXppbmcuaHRtbCIsCisgICAgImluc3BlY3Rvci9zdHlsZXMvc3R5bGVz
LWFkZC1ibGFuay1wcm9wZXJ0eS5odG1sIiwKKyAgICAiaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMt
ZGlzYWJsZS1pbmhlcml0ZWQuaHRtbCIsCisgICAgImluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXVw
ZGF0ZS1mcm9tLWpzLmh0bWwiLAorICAgICJpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1kaXNhYmxl
LXRoZW4tY2hhbmdlLmh0bWwiLAorCisgICAgIyBUaGlzIHRlc3QgaXMgdG9vIHNsb3cgdG8gcnVu
IHVuZGVyIGxvYWQuCisgICAgImZhc3Qvb3ZlcmZsb3cvbG90cy1vZi1zaWJsaW5nLWlubGluZS1i
b3hlcy5odG1sIiwKKworICAgICMgVGhlc2UgdGVzdHMgZmFpbCBmb3IgdW5rbm93biByZWFzb25z
IHdoZW4gcnVuIGluIHBhcmFsbGVsLgorICAgICJlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdv
cmQtdmlzdWFsbHkuaHRtbCIsCisgICAgImZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQt
aW4tc2Nyb2xsaW5nLWRpdi5odG1sIiwKKyAgICAiZmFzdC9mb3Jtcy9yZXN0b3JlLXNlbGVjdGlv
bi1hZnRlci1sYXlvdXQuaHRtbCIsCisgICAgImZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1yZXN0
b3JlZC1mcm9tLWJmY2FjaGUuaHRtbCIsCisgICAgImZhc3QvbG9hZGVyL2xvY2FsLUNTUy1mcm9t
LWxvY2FsLmh0bWwiLAorICAgICJmYXN0L2xvYWRlci9sb2NhbC1KYXZhU2NyaXB0LWZyb20tbG9j
YWwuaHRtbCIsCisgICAgImZhc3QvbG9hZGVyL2xvY2FsLWltYWdlLWZyb20tbG9jYWwuaHRtbCIs
CisgICAgImluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1sYXlvdXQuaHRtbCIsCisgICAgImlu
c3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbCIsCisgICAg
ImpxdWVyeS9tYW5pcHVsYXRpb24uaHRtbCIsCisgICAgImxvYWRlci9nby1iYWNrLXRvLWRpZmZl
cmVudC13aW5kb3ctc2l6ZS5odG1sIiwKKyAgICAibWVkaWEvdmlkZW8tcHJlbG9hZC5odG1sIiwK
KyAgICAibWVkaWEvdmlkZW8tcGxheWVkLXJlc2V0Lmh0bWwiLAorICAgICJzdmcvVzNDLVNWRy0x
LjEtU0UvdHlwZXMtZG9tLTAxLWIuc3ZnIiwKK10KKworX2xvY2tlZF9kaXJlY3RvcmllcyA9IFsK
KyAgICAjIFRoZXNlIHRlc3RzIHJlbHkgb24gZmlsZXN5c3RlbSBzdGF0ZSwgc28gdGhleSBjYW4n
dCBydW4gaW4gcGFyYWxsZWwuCisgICAgJ2h0dHAnLAorICAgICd3ZWJzb2NrZXQnLAorICAgICds
b2NhbHN0b3JhZ2UnLAorCisgICAgIyBUaGVzZSB0ZXN0cyByZWx5IG9uIHVuZGVybHlpbmcgQ1BV
IHRpbWluZywgc28gdGhleSBjYW4ndCBydW4gd2hlbiB0aGUgQ1BVIGlzIHVuZGVyIGhlYXZ5IGxv
YWQuCisgICAgJ2FuaW1hdGlvbnMnLAorCisgICAgIyBPcGVuR0wgPGNhbnZhcz4gY29udGV4dCBz
ZWVtcyB0byBmYWlsIHRvIGluaXRpYWxpemUgd2hlbiB1c2VkIHVuZGVyIGhlYXZ5IGxvYWQuCisg
ICAgJ3dlYmdsJywKKworICAgICMgSmF2YSBwbHVnLWluIHNlZW1zIHRvIG1hbGZ1bmN0aW9uIHVu
cHJlZGljdGFibHkgd2hlbiB1c2VkIHVuZGVyIHBhcmFsbGVsIGxvYWQuCisgICAgJ2phdmEnLAor
XQogCiBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgcmVzdWx0
X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlc3RfdGltaW5ncywgb25seV91bmV4cGVjdGVkKToK
ICAgICAiIiJTdW1tYXJpemUgZmFpbGluZyByZXN1bHRzIGFzIGEgZGljdC4KQEAgLTQ4Niw4ICs1
MzEsMTMgQEAgY2xhc3MgTWFuYWdlcjoKICAgICBkZWYgX3Rlc3RfcmVxdWlyZXNfbG9jayhzZWxm
LCB0ZXN0X2ZpbGUpOgogICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgdGVzdCBuZWVkcyB0
byBiZSBsb2NrZWQgd2hlbgogICAgICAgICBydW5uaW5nIG11bHRpcGxlIGNvcGllcyBvZiBOUldU
cy4iIiIKLSAgICAgICAgc3BsaXRfcGF0aCA9IHRlc3RfZmlsZS5zcGxpdChzZWxmLl9wb3J0Ll9m
aWxlc3lzdGVtLnNlcCkKLSAgICAgICAgcmV0dXJuICdodHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3
ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGgKKyAgICAgICAgc3BsaXRfZmlsZSA9IHRlc3RfZmlsZS5z
cGxpdChzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnNlcCkKKyAgICAgICAgZm9yIGRpcmVjdG9yeSBp
biBfbG9ja2VkX2RpcmVjdG9yaWVzOgorICAgICAgICAgICAgaWYgZGlyZWN0b3J5IGluIHNwbGl0
X2ZpbGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0ZXN0ID0gdGVz
dF9maWxlW3Rlc3RfZmlsZS5maW5kKHNlbGYuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSkgKyBsZW4o
c2VsZi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZKTpdCisgICAgICAgIHJldHVybiB0ZXN0IGluIF9s
b2NrZWRfdGVzdHMKIAogICAgIGRlZiBfdGVzdF9pc19zbG93KHNlbGYsIHRlc3RfZmlsZSk6CiAg
ICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwK
QEAgLTU2NSw3ICs2MTUsNyBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICAgICAgICAgIChudW1f
d29ya2VycywgZHJpdmVyX25hbWUsIG51bV9zaGFyZHMpKQogICAgICAgICByZXR1cm4gbnVtX3dv
cmtlcnMKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1h
cnkpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1hcnks
IGlzX3JldHJ5KToKICAgICAgICAgIiIiUnVucyB0aGUgdGVzdHMgaW4gdGhlIGZpbGVfbGlzdC4K
IAogICAgICAgICBSZXR1cm46IEEgdHVwbGUgKGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1
cHRlZCwgdGhyZWFkX3RpbWluZ3MsCkBAIC01OTEsOCArNjQxLDE3IEBAIGNsYXNzIE1hbmFnZXI6
CiAgICAgICAgIHRocmVhZF90aW1pbmdzID0gW10KIAogICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKLSAgICAgICAgdGVzdF9saXN0cyA9IHNl
bGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKLSAgICAgICAgICAgIGludChzZWxmLl9vcHRpb25z
LmNoaWxkX3Byb2Nlc3NlcykgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5leHBlcmltZW50YWxf
ZnVsbHlfcGFyYWxsZWwpCisgICAgICAgIGxvY2tlZF90ZXN0cyA9IE5vbmUKKyAgICAgICAgaWYg
aXNfcmV0cnk6CisgICAgICAgICAgICB0ZXN0X2xpc3QgPSBbXQorICAgICAgICAgICAgZm9yIHRl
c3RfZmlsZSBpbiBmaWxlX2xpc3Q6CisgICAgICAgICAgICAgICAgdGVzdF9saXN0LmFwcGVuZChz
ZWxmLl9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpKQorICAgICAgICAgICAgdGVz
dF9saXN0cyA9IFsoInRlc3RzX3RvX3JldHJ5IiwgdGVzdF9saXN0KV0KKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHRlc3RfbGlzdHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCisg
ICAgICAgICAgICAgICAgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSA+IDEgYW5k
IG5vdCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKKyAgICAgICAg
ICAgIGlmICh0ZXN0X2xpc3RzWzBdWzBdID09ICJ0ZXN0c190b19odHRwX2xvY2siKToKKyAgICAg
ICAgICAgICAgICBsb2NrZWRfdGVzdHMgPSB0ZXN0X2xpc3RzLnBvcCgwKQogCiAgICAgICAgIG51
bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtlcnMobGVuKHRlc3RfbGlzdHMpKQogICAgICAgICBt
YW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQs
IHNlbGYuX29wdGlvbnMsCkBAIC02MzEsNiArNjkwLDIxIEBAIGNsYXNzIE1hbmFnZXI6CiAgICAg
ICAgICAgICAgICAgIyBXZSBsb29wIHdpdGggYSB0aW1lb3V0IGluIG9yZGVyIHRvIGJlIGFibGUg
dG8gZGV0ZWN0IHdlZGdlZCB0aHJlYWRzLgogICAgICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVj
dGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQogCisgICAgICAgICAgICBpZiBs
b2NrZWRfdGVzdHM6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUo
J1N0YXJ0aW5nIHdvcmtlciBmb3IgbG9ja2VkIHRlc3RzIC4uLicpCisKKyAgICAgICAgICAgICAg
ICB3b3JrZXJfbnVtYmVyID0gbnVtX3dvcmtlcnMgKyAxCisgICAgICAgICAgICAgICAgd29ya2Vy
X2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdvcmtlcl9udW1i
ZXIpCisgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdvcmtlcl9u
dW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9z
dGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24ubmFtZV0gPSB3b3JrZXJfc3RhdGUKKworICAgICAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFydGluZyB0ZXN0aW5nIC4uLiIp
CisgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgndGVzdF9s
aXN0JywgbG9ja2VkX3Rlc3RzWzBdLCBsb2NrZWRfdGVzdHNbMV0pCisgICAgICAgICAgICAgICAg
bWFuYWdlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisgICAgICAgICAgICAgICAg
d2hpbGUgbm90IHNlbGYuaXNfZG9uZSgpOgorICAgICAgICAgICAgICAgICAgICAjIFdlIGxvb3Ag
d2l0aCBhIHRpbWVvdXQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2VkZ2VkIHRocmVh
ZHMuCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9s
b29wKGRlbGF5X3NlY3M9MS4wKQorCiAgICAgICAgICAgICBpZiBhbnkod29ya2VyX3N0YXRlLndl
ZGdlZCBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCkpOgog
ICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCiAgICAgICAgICAgICAgICAgX2xvZy5lcnJv
cignUmVtYWluaW5nIHdvcmtlcnMgYXJlIHdlZGdlZCwgYmFpbGluZyBvdXQuJykKQEAgLTc0Myw3
ICs4MTcsNyBAQCBjbGFzcyBNYW5hZ2VyOgogCiAgICAgICAgIGludGVycnVwdGVkLCBrZXlib2Fy
ZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgXAogICAgICAgICAg
ICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSAoCi0gICAgICAgICAgICBzZWxmLl9ydW5fdGVz
dHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCByZXN1bHRfc3VtbWFyeSkpCisgICAgICAgICAgICBz
ZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCByZXN1bHRfc3VtbWFyeSwgRmFs
c2UpKQogCiAgICAgICAgICMgV2UgZXhjbHVkZSB0aGUgY3Jhc2hlcyBmcm9tIHRoZSBsaXN0IG9m
IHJlc3VsdHMgdG8gcmV0cnksIGJlY2F1c2UKICAgICAgICAgIyB3ZSB3YW50IHRvIHRyZWF0IGV2
ZW4gYSBwb3RlbnRpYWxseSBmbGFreSBjcmFzaCBhcyBhbiBlcnJvci4KQEAgLTc1Nyw3ICs4MzEs
NyBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSBUcnVlCiAg
ICAgICAgICAgICByZXRyeV9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlv
bnMsIGZhaWx1cmVzLmtleXMoKSkKICAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGludGVudGlv
bmFsbHkgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgaGVyZS4KLSAgICAgICAgICAgIHNlbGYuX3J1
bl90ZXN0cyhmYWlsdXJlcy5rZXlzKCksIHJldHJ5X3N1bW1hcnkpCisgICAgICAgICAgICBzZWxm
Ll9ydW5fdGVzdHMoZmFpbHVyZXMua2V5cygpLCByZXRyeV9zdW1tYXJ5LCBUcnVlKQogICAgICAg
ICAgICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmV0cnlfc3VtbWFyeSwgaW5jbHVk
ZV9jcmFzaGVzPVRydWUpCiAKICAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQo=
</data>
<flag name="review"
          id="84277"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>