<?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>36599</bug_id>
          
          <creation_ts>2010-03-25 07:23:51 -0700</creation_ts>
          <short_desc>test-webkitpy: Should remove orphaned *.pyc files in webkitpy/ prior to importing from webkitpy/</short_desc>
          <delta_ts>2010-03-30 09:20:15 -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>All</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="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204046</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-25 07:23:51 -0700</bug_when>
    <thetext>This should increase the robustness of test-webkitpy since it eliminates the possibility of test-webkitpy passing because of *.pyc files left-over from a batch of file moves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204184</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-25 12:01:13 -0700</bug_when>
    <thetext>Huh?  To test-webkitpy would always cause a full python recompile?  That seems like a bad idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204192</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-25 12:29:23 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Huh?  To test-webkitpy would always cause a full python recompile?  That seems
&gt; like a bad idea.

I noticed no perceptible difference between running test-webkitpy with and without  deleting all *.pyc files before-hand.  It seems like recompiling might be an order of magnitude or two less than running the tests themselves.  (I tried to time the difference, but unittest.main() exits before you can execute a final line.)

Do you have a suggestion for an alternative?  We could always put this behind a --clean option, but I think it would be good for the bots to do whatever we come up with by default.

One alternative might be to delete any .pyc file that doesn&apos;t have a corresponding .py, but I don&apos;t think that covers all the cases we want to deal with.  Or maybe delete any *.pyc file that doesn&apos;t correspond to a source-controlled (tracked) *.py file, but I&apos;m also not sure that covers all the scenarios.  Given that the compile is so fast, it might not be worth the trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204193</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-25 12:39:17 -0700</bug_when>
    <thetext>We can certainly try it.  I wonder how it will interact with things like the commit-queue which are written in python and run test-webkitpy before committing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204216</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-25 14:16:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; One alternative might be to delete any .pyc file that doesn&apos;t have a
&gt; corresponding .py, but I don&apos;t think that covers all the cases we want to deal
&gt; with.

After thinking about this, the above may be the correct alternative.  This should address the main case I had in mind which was moving .py files in source control and leaving behind orphaned .pyc files that were still being referenced by import statements.  (This has occasionally caused problems in practice.)   If there are untracked .py files still being referenced, though, I&apos;m not sure how much we can really do about that (or in practice need to) since in problem scenarios those would get recompiled anyways.

&gt; Or maybe delete any *.pyc file that doesn&apos;t correspond to a
&gt; source-controlled (tracked) *.py file, but I&apos;m also not sure that covers all
&gt; the scenarios.


(In reply to comment #3)
&gt; We can certainly try it.  I wonder how it will interact with things like the
&gt; commit-queue which are written in python and run test-webkitpy before
&gt; committing. :)

A related issue to consider is that we may want other scripts (e.g. update-webkit) to trigger a *.pyc &quot;clean&quot; action (&quot;clean&quot; in the sense of the first alternative above).  This way if there are orphaned *.pyc files in someone&apos;s webkitpy, the Python scripts will never pick up the wrong ones (e.g. if import finds multiple potential matches in sys.path).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204511</commentid>
    <comment_count>5</comment_count>
      <attachid>51730</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 05:26:34 -0700</bug_when>
    <thetext>Created attachment 51730
Proposed patch

This would have come in handy during the re-org. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204515</commentid>
    <comment_count>6</comment_count>
      <attachid>51732</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 05:32:58 -0700</bug_when>
    <thetext>Created attachment 51732
Proposed patch 2

Reduced the maximum indent level by one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204632</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-26 09:44:37 -0700</bug_when>
    <thetext>Are we sure this is actually a bug?  Do we know how to reproduce it?  If so, we should file a bug with python before working around it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204650</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 10:08:27 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Are we sure this is actually a bug?  Do we know how to reproduce it?

Yes, we can reproduce it.  Just &quot;svn move&quot; any python module (without touching any of the code), and then run test-webkitpy.  It still succeeds.  With this patch, it correctly fails with an error:

ImportError: No module named ...

&gt; If so, we
&gt; should file a bug with python before working around it here.

It&apos;s a Python feature, not a bug. :)

&quot;It is possible to have a file called spam.pyc (or spam.pyo when -O is used) without a file spam.py for the same module. This can be used to distribute a library of Python code in a form that is moderately hard to reverse engineer.&quot;

(from http://docs.python.org/tutorial/modules.html#compiled-python-files )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204659</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 10:24:58 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Are we sure this is actually a bug?  Do we know how to reproduce it?  If so, we
&gt; should file a bug with python before working around it here.

The problem is also stated here, for instance:

http://bugs.python.org/issue1180193#msg24989</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204669</commentid>
    <comment_count>10</comment_count>
      <attachid>51732</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-26 10:44:13 -0700</bug_when>
    <thetext>Comment on attachment 51732
Proposed patch 2

OK.  I think it needs a unit test though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204682</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 11:04:05 -0700</bug_when>
    <thetext>So (In reply to comment #10)
&gt; (From update of attachment 51732 [details])
&gt; OK.  I think it needs a unit test though.

This seems a bit excessive to me since we&apos;d be unit testing unit-test code.  We don&apos;t normally do that, but I could do it.

In this case, since the method needs to be defined in test-webkitpy, the unit test would either need to go in test-webkitpy itself, or we would need a module somewhere in webkitpy (say webkitpy/test/main_unittest.py) that would need to import this method from test-webkitpy.  (In particular, the method would be getting unit-tested after it has already executed.)

Clarify for me by r-&apos;ing the patch if this is required.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204741</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 13:10:57 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; In this case, since the method needs to be defined in test-webkitpy, the unit
&gt; test would either need to go in test-webkitpy itself, or we would need a module
&gt; somewhere in webkitpy (say webkitpy/test/main_unittest.py) that would need to
&gt; import this method from test-webkitpy.

Maybe the simplest approach to test that this method is doing what it&apos;s supposed to do would be to insert a mock .pyc file somewhere in webkitpy before the method call and then raise an error afterwards if that particular file hasn&apos;t been deleted.  I.e. the call and the test would be one and the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204748</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-26 13:21:01 -0700</bug_when>
    <thetext>The problem is that this code is &quot;complicated&quot; and difficult to tell when it&apos;s broken.  Which is why I suggested testing.  I agree, it seems kinda silly to test the test code.   Your solution of dropping a some sort of testing .pyc file makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204933</commentid>
    <comment_count>14</comment_count>
      <attachid>51812</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 21:45:52 -0700</bug_when>
    <thetext>Created attachment 51812
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204935</commentid>
    <comment_count>15</comment_count>
      <attachid>51814</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-26 21:56:40 -0700</bug_when>
    <thetext>Created attachment 51814
Proposed patch 4

Added link to Python documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205816</commentid>
    <comment_count>16</comment_count>
      <attachid>51814</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-29 19:56:37 -0700</bug_when>
    <thetext>Comment on attachment 51814
Proposed patch 4

Looks sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205820</commentid>
    <comment_count>17</comment_count>
      <attachid>51814</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-29 20:08:23 -0700</bug_when>
    <thetext>Comment on attachment 51814
Proposed patch 4

Rejecting patch 51814 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Eric Seidel&apos;, &apos;--force&apos;]&quot; exit_code: 1
patching file WebKitTools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebKitTools/Scripts/test-webkitpy
Hunk #1 FAILED at 29.
Hunk #2 succeeded at 79 (offset 1 line).
1 out of 2 hunks FAILED -- saving rejects to file WebKitTools/Scripts/test-webkitpy.rej

Full output: http://webkit-commit-queue.appspot.com/results/1605082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206040</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-03-30 09:20:15 -0700</bug_when>
    <thetext>Manually committed after rebasing:

http://trac.webkit.org/changeset/56794</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51730</attachid>
            <date>2010-03-26 05:26:34 -0700</date>
            <delta_ts>2010-03-26 05:32:58 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-36599-1.diff</filename>
            <type>text/plain</type>
            <size>3309</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3NWIwN2Q2Li40ZjNkYjQ0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMt
MjYgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0ZWQgdGVzdC13ZWJraXRw
eSB0byBkZWxldGUgYWxsIG9ycGhhbmVkICoucHljIGZpbGVzCisgICAgICAgIGZyb20gd2Via2l0
cHkvIHByaW9yIHRvIGltcG9ydGluZyBhbnkgbW9kdWxlcyBmcm9tIHdlYmtpdHB5LgorICAgICAg
ICBUaGlzIGVuc3VyZXMgdGhhdCBubyBpbXBvcnQgc3RhdGVtZW50cyBpbiB3ZWJraXRweSBmYWxz
ZWx5CisgICAgICAgIHN1Y2NlZWQgYmVjYXVzZSBvZiBsZWZ0b3ZlciAqLnB5YyBmaWxlcy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1OTkKKwor
ICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRweToKKyAgICAgICAgICAtIEFkZGVkIGEgX2Ns
ZWFuX3dlYmtpdHB5KCkgbWV0aG9kIHRoYXQgZGVsZXRlcyBvcnBoYW5lZAorICAgICAgICAgICAg
Ki5weWMgZmlsZXMuCisgICAgICAgICAgLSBNb3ZlZCB0aGUgImltcG9ydCB3ZWJraXRweS5weXRo
b24yNC52ZXJzaW9uaW5nIiBzdGF0ZW1lbnQKKyAgICAgICAgICAgIGZyb20gdGhlIHRvcCBvZiB0
aGUgbW9kdWxlIHRvIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsCisgICAgICAgICAgICB0byBf
Y2xlYW5fd2Via2l0cHkoKSBpbiB0aGUgaW5pdCgpIG1ldGhvZC4KKwogMjAxMC0wMy0yNSAgQ2hh
cmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKaW5kZXggYTYyNzUyMy4uMTg1MmQ3
MiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQpAQCAtMjksMTAgKzI5LDEzIEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9y
dCB1bml0dGVzdAogCi1pbXBvcnQgd2Via2l0cHkucHl0aG9uMjQudmVyc2lvbmluZyBhcyB2ZXJz
aW9uaW5nCisjIERvIG5vdCBpbXBvcnQgYW55dGhpbmcgZnJvbSB3ZWJraXRweSBwcmlvciB0byBj
YWxsaW5nIF9jbGVhbl93ZWJraXRweSgpLgorIyBUaGlzIGVuc3VyZXMgdGhhdCBubyBvcnBoYW5l
ZCAqLnB5YyBmaWxlcyBhcmUgYWNjaWRlbnRhbGx5IGltcG9ydGVkCisjIGR1cmluZyB0aGUgY291
cnNlIG9mIHRoaXMgc2NyaXB0LgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3Qtd2Vi
a2l0cHkiKQogCkBAIC03NSwxMCArNzgsMzkgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAg
ICAgaGFuZGxlci5hZGRGaWx0ZXIodGVzdGluZ19maWx0ZXIpCiAKIAorZGVmIF9jbGVhbl93ZWJr
aXRweSgpOgorICAgICIiIkRlbGV0ZSBmcm9tIHdlYmtpdHB5IGFsbCAucHljIGZpbGVzIHRoYXQg
aGF2ZSBubyAucHkgZmlsZS4iIiIKKyAgICB3ZWJraXRweV9kaXIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIndlYmtpdHB5IikKKyAgICBfbG9nLmRlYnVnKCJDbGVh
bmluZyBvcnBoYW5lZCAqLnB5YyBmaWxlcyBmcm9tOiAlcyIgJSB3ZWJraXRweV9kaXIpCisKKyAg
ICBmb3IgZGlyX3BhdGgsIGRpcl9uYW1lcywgZmlsZV9uYW1lcyBpbiBvcy53YWxrKHdlYmtpdHB5
X2Rpcik6CisgICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmlsZV9uYW1lczoKKyAgICAgICAgICAg
IGlmIGZpbGVfbmFtZS5lbmRzd2l0aCgiLnB5YyIpOgorICAgICAgICAgICAgICAgIGlmIGZpbGVf
bmFtZVs6LTFdIG5vdCBpbiBmaWxlX25hbWVzOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0g
b3MucGF0aC5qb2luKGRpcl9wYXRoLCBmaWxlX25hbWUpCisgICAgICAgICAgICAgICAgICAgIF9s
b2cuaW5mbygiRGVsZXRpbmcgb3JwaGFuZWQgKi5weWMgZmlsZTogJXMiICUgcGF0aCkKKyAgICAg
ICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCisKKwogZGVmIGluaXQoKToKICAgICAiIiJF
eGVjdXRlIGNvZGUgcHJpb3IgdG8gaW1wb3J0aW5nIGZyb20gd2Via2l0cHkudW5pdHRlc3RzLiIi
IgogICAgIGNvbmZpZ3VyZV9sb2dnaW5nKCkKIAorICAgICMgV2UgY2FsbCBjbGVhbl93ZWJraXRw
eSgpIHByaW9yIHRvIGltcG9ydGluZyBmcm9tIHdlYmtpdHB5IHRvIG1ha2UKKyAgICAjIHN1cmUg
dGhhdCBubyBpbXBvcnQgc3RhdGVtZW50cyBmYWxzZWx5IHN1Y2NlZWQgYmVjYXVzZSBvZiBvcnBo
YW5lZAorICAgICMgKi5weWMgZmlsZXMuICBUaGlzIGhlbHBzIHRvIGNoZWNrIHRoYXQgaW1wb3J0
IHN0YXRlbWVudHMgaGF2ZSBiZWVuCisgICAgIyB1cGRhdGVkIGNvcnJlY3RseSBhZnRlciBhbnkg
ZmlsZSBtb3Zlcy4KKyAgICAjCisgICAgIyBGb3IgZXhhbXBsZSwgaWYgd2Via2l0cHkvcHl0aG9u
MjQvdmVyc2lvbmluZy5weSB3ZXJlIG1vdmVkIHRvIGEKKyAgICAjIGRpZmZlcmVudCBsb2NhdGlv
biBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgLnB5YyBmaWxlIHdlcmUgbGVmdCB0aGVyZSwKKyAgICAj
IHRoZW4gImltcG9ydCB3ZWJraXRweS5weXRob24yNC52ZXJzaW9uaW5nIiB3b3VsZCBjb250aW51
ZSB0byBzdWNjZWVkCisgICAgIyBldmVuIHRob3VnaCBpdCB3b3VsZCBmYWlsIGZvciBzb21lb25l
IGNoZWNraW5nIG91dCBhIGZyZXNoIGNvcHkKKyAgICAjIG9mIHRoZSBzb3VyY2UgdHJlZS4gIERl
bGV0aW5nIHRoZSBvcnBoYW5lZCAucHljIGZpbGUgcHJpb3IgdG8KKyAgICAjIGltcG9ydGluZywg
aG93ZXZlciwgY2F1c2VzIGFuIEltcG9ydEVycm9yIHRvIG9jY3VyIG9uIGltcG9ydC4KKyAgICBf
Y2xlYW5fd2Via2l0cHkoKQorCisgICAgaW1wb3J0IHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25p
bmcgYXMgdmVyc2lvbmluZworCiAgICAgdmVyc2lvbmluZy5jaGVja192ZXJzaW9uKGxvZz1fbG9n
KQogCiAgICAgKGNvbXBhcmlzb24sIGN1cnJlbnRfdmVyc2lvbiwgbWluaW11bV92ZXJzaW9uKSA9
IFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51732</attachid>
            <date>2010-03-26 05:32:58 -0700</date>
            <delta_ts>2010-03-26 21:45:52 -0700</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>_patch-36599-2.diff</filename>
            <type>text/plain</type>
            <size>3280</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3NWIwN2Q2Li40ZjNkYjQ0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMt
MjYgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0ZWQgdGVzdC13ZWJraXRw
eSB0byBkZWxldGUgYWxsIG9ycGhhbmVkICoucHljIGZpbGVzCisgICAgICAgIGZyb20gd2Via2l0
cHkvIHByaW9yIHRvIGltcG9ydGluZyBhbnkgbW9kdWxlcyBmcm9tIHdlYmtpdHB5LgorICAgICAg
ICBUaGlzIGVuc3VyZXMgdGhhdCBubyBpbXBvcnQgc3RhdGVtZW50cyBpbiB3ZWJraXRweSBmYWxz
ZWx5CisgICAgICAgIHN1Y2NlZWQgYmVjYXVzZSBvZiBsZWZ0b3ZlciAqLnB5YyBmaWxlcy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1OTkKKwor
ICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRweToKKyAgICAgICAgICAtIEFkZGVkIGEgX2Ns
ZWFuX3dlYmtpdHB5KCkgbWV0aG9kIHRoYXQgZGVsZXRlcyBvcnBoYW5lZAorICAgICAgICAgICAg
Ki5weWMgZmlsZXMuCisgICAgICAgICAgLSBNb3ZlZCB0aGUgImltcG9ydCB3ZWJraXRweS5weXRo
b24yNC52ZXJzaW9uaW5nIiBzdGF0ZW1lbnQKKyAgICAgICAgICAgIGZyb20gdGhlIHRvcCBvZiB0
aGUgbW9kdWxlIHRvIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsCisgICAgICAgICAgICB0byBf
Y2xlYW5fd2Via2l0cHkoKSBpbiB0aGUgaW5pdCgpIG1ldGhvZC4KKwogMjAxMC0wMy0yNSAgQ2hh
cmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKaW5kZXggYTYyNzUyMy4uNDUwYjFk
YyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQpAQCAtMjksMTAgKzI5LDEzIEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9y
dCB1bml0dGVzdAogCi1pbXBvcnQgd2Via2l0cHkucHl0aG9uMjQudmVyc2lvbmluZyBhcyB2ZXJz
aW9uaW5nCisjIERvIG5vdCBpbXBvcnQgYW55dGhpbmcgZnJvbSB3ZWJraXRweSBwcmlvciB0byBj
YWxsaW5nIF9jbGVhbl93ZWJraXRweSgpLgorIyBUaGlzIGVuc3VyZXMgdGhhdCBubyBvcnBoYW5l
ZCAqLnB5YyBmaWxlcyBhcmUgYWNjaWRlbnRhbGx5IGltcG9ydGVkCisjIGR1cmluZyB0aGUgY291
cnNlIG9mIHRoaXMgc2NyaXB0LgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3Qtd2Vi
a2l0cHkiKQogCkBAIC03NSwxMCArNzgsMzggQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAg
ICAgaGFuZGxlci5hZGRGaWx0ZXIodGVzdGluZ19maWx0ZXIpCiAKIAorZGVmIF9jbGVhbl93ZWJr
aXRweSgpOgorICAgICIiIkRlbGV0ZSBmcm9tIHdlYmtpdHB5IGFsbCAucHljIGZpbGVzIHRoYXQg
aGF2ZSBubyAucHkgZmlsZS4iIiIKKyAgICB3ZWJraXRweV9kaXIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIndlYmtpdHB5IikKKyAgICBfbG9nLmRlYnVnKCJDbGVh
bmluZyBvcnBoYW5lZCAqLnB5YyBmaWxlcyBmcm9tOiAlcyIgJSB3ZWJraXRweV9kaXIpCisKKyAg
ICBmb3IgZGlyX3BhdGgsIGRpcl9uYW1lcywgZmlsZV9uYW1lcyBpbiBvcy53YWxrKHdlYmtpdHB5
X2Rpcik6CisgICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmlsZV9uYW1lczoKKyAgICAgICAgICAg
IGlmIGZpbGVfbmFtZS5lbmRzd2l0aCgiLnB5YyIpIGFuZCBmaWxlX25hbWVbOi0xXSBub3QgaW4g
ZmlsZV9uYW1lczoKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcl9wYXRo
LCBmaWxlX25hbWUpCisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJEZWxldGluZyBvcnBoYW5l
ZCAqLnB5YyBmaWxlOiAlcyIgJSBwYXRoKQorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRo
KQorCisKIGRlZiBpbml0KCk6CiAgICAgIiIiRXhlY3V0ZSBjb2RlIHByaW9yIHRvIGltcG9ydGlu
ZyBmcm9tIHdlYmtpdHB5LnVuaXR0ZXN0cy4iIiIKICAgICBjb25maWd1cmVfbG9nZ2luZygpCiAK
KyAgICAjIFdlIGNhbGwgY2xlYW5fd2Via2l0cHkoKSBwcmlvciB0byBpbXBvcnRpbmcgZnJvbSB3
ZWJraXRweSB0byBtYWtlCisgICAgIyBzdXJlIHRoYXQgbm8gaW1wb3J0IHN0YXRlbWVudHMgZmFs
c2VseSBzdWNjZWVkIGJlY2F1c2Ugb2Ygb3JwaGFuZWQKKyAgICAjICoucHljIGZpbGVzLiAgVGhp
cyBoZWxwcyB0byBjaGVjayB0aGF0IGltcG9ydCBzdGF0ZW1lbnRzIGhhdmUgYmVlbgorICAgICMg
dXBkYXRlZCBjb3JyZWN0bHkgYWZ0ZXIgYW55IGZpbGUgbW92ZXMuCisgICAgIworICAgICMgRm9y
IGV4YW1wbGUsIGlmIHdlYmtpdHB5L3B5dGhvbjI0L3ZlcnNpb25pbmcucHkgd2VyZSBtb3ZlZCB0
byBhCisgICAgIyBkaWZmZXJlbnQgbG9jYXRpb24gYW5kIHRoZSBjb3JyZXNwb25kaW5nIC5weWMg
ZmlsZSB3ZXJlIGxlZnQgdGhlcmUsCisgICAgIyB0aGVuICJpbXBvcnQgd2Via2l0cHkucHl0aG9u
MjQudmVyc2lvbmluZyIgd291bGQgY29udGludWUgdG8gc3VjY2VlZAorICAgICMgZXZlbiB0aG91
Z2ggaXQgd291bGQgZmFpbCBmb3Igc29tZW9uZSBjaGVja2luZyBvdXQgYSBmcmVzaCBjb3B5Cisg
ICAgIyBvZiB0aGUgc291cmNlIHRyZWUuICBEZWxldGluZyB0aGUgb3JwaGFuZWQgLnB5YyBmaWxl
IHByaW9yIHRvCisgICAgIyBpbXBvcnRpbmcsIGhvd2V2ZXIsIGNhdXNlcyBhbiBJbXBvcnRFcnJv
ciB0byBvY2N1ciBvbiBpbXBvcnQuCisgICAgX2NsZWFuX3dlYmtpdHB5KCkKKworICAgIGltcG9y
dCB3ZWJraXRweS5weXRob24yNC52ZXJzaW9uaW5nIGFzIHZlcnNpb25pbmcKKwogICAgIHZlcnNp
b25pbmcuY2hlY2tfdmVyc2lvbihsb2c9X2xvZykKIAogICAgIChjb21wYXJpc29uLCBjdXJyZW50
X3ZlcnNpb24sIG1pbmltdW1fdmVyc2lvbikgPSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51812</attachid>
            <date>2010-03-26 21:45:52 -0700</date>
            <delta_ts>2010-03-26 21:56:40 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-36599-3.diff</filename>
            <type>text/plain</type>
            <size>5109</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMGNhNmI5Li5lOTA3YTE1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDMt
MjYgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0ZWQgdGVzdC13ZWJraXRw
eSB0byBkZWxldGUgYWxsIG9ycGhhbmVkICoucHljIGZpbGVzCisgICAgICAgIGZyb20gd2Via2l0
cHkvIHByaW9yIHRvIGltcG9ydGluZyBhbnkgbW9kdWxlcyBmcm9tIHdlYmtpdHB5LgorICAgICAg
ICBUaGlzIGVuc3VyZXMgdGhhdCBubyBpbXBvcnQgc3RhdGVtZW50cyBpbiB3ZWJraXRweSBmYWxz
ZWx5CisgICAgICAgIHN1Y2NlZWQgYmVjYXVzZSBvZiBsZWZ0b3ZlciAqLnB5YyBmaWxlcy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1OTkKKwor
ICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRweToKKyAgICAgICAgICAtIEFkZGVkIF9jbGVh
bl9weWNfZmlsZXMoKSB0byBkZWxldGUgb3JwaGFuZWQgKi5weWMgZmlsZXMKKyAgICAgICAgICAg
IGZyb20gYSBkaXJlY3RvcnkuCisgICAgICAgICAgLSBBZGRlZCBfY2xlYW5fd2Via2l0cHlfd2l0
aF90ZXN0KCkgdG8gY2FsbCBhbmQgdGVzdAorICAgICAgICAgICAgX2NsZWFuX3B5Y19maWxlcygp
LgorICAgICAgICAgIC0gTW92ZWQgdGhlICJpbXBvcnQgd2Via2l0cHkucHl0aG9uMjQudmVyc2lv
bmluZyIgc3RhdGVtZW50CisgICAgICAgICAgICBmcm9tIHRoZSB0b3Agb2YgdGhlIG1vZHVsZSB0
byB0aGUgaW5pdCgpIG1ldGhvZCAtLSBpbW1lZGlhdGVseQorICAgICAgICAgICAgYWZ0ZXIgdGhl
IGNhbGwgdG8gX2NsZWFuX3dlYmtpdHB5X3dpdGhfdGVzdCgpLgorCiAyMDEwLTAzLTI2ICBEaXJr
IFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5CmluZGV4IGE2Mjc1MjMuLmU5MDdlNDMgMTAwNzU1
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKQEAgLTI5LDEwICsyOSwxMyBAQAogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRl
c3QKIAotaW1wb3J0IHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcgYXMgdmVyc2lvbmluZwor
IyBEbyBub3QgaW1wb3J0IGFueXRoaW5nIGZyb20gd2Via2l0cHkgcHJpb3IgdG8gY2xlYW5pbmcg
d2Via2l0cHkgb2YKKyMgb3JwaGFuZWQgKi5weWMgZmlsZXMuICBUaGlzIGVuc3VyZXMgdGhhdCBu
byBvcnBoYW5lZCAqLnB5YyBmaWxlcyBhcmUKKyMgYWNjaWRlbnRhbGx5IGltcG9ydGVkIGR1cmlu
ZyB0aGUgY291cnNlIG9mIHRoaXMgc2NyaXB0LgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
InRlc3Qtd2Via2l0cHkiKQogCkBAIC03NSwxMCArNzgsODAgQEAgZGVmIGNvbmZpZ3VyZV9sb2dn
aW5nKCk6CiAgICAgaGFuZGxlci5hZGRGaWx0ZXIodGVzdGluZ19maWx0ZXIpCiAKIAorZGVmIF9j
bGVhbl9weWNfZmlsZXMoZGlyX3RvX2NsZWFuLCBwYXRoc19ub3RfdG9fbG9nKToKKyAgICAiIiJE
ZWxldGUgZnJvbSBhIGRpcmVjdG9yeSBhbGwgLnB5YyBmaWxlcyB0aGF0IGhhdmUgbm8gLnB5IGZp
bGUuCisKKyAgICBBcmdzOgorICAgICAgZGlyX3RvX2NsZWFuOiBUaGUgcGF0aCB0byB0aGUgZGly
ZWN0b3J5IHRvIGNsZWFuLgorICAgICAgcGF0aHNfbm90X3RvX2xvZzogQSBsaXN0IG9mIHBhdGhz
IHRvIC5weWMgZmlsZXMgd2hvc2UgZGVsZXRpb25zIHNob3VsZAorICAgICAgICAgICAgICAgICAg
ICAgICAgbm90IGJlIGxvZ2dlZC4gIFRoaXMgbGlzdCBzaG91bGQgbm9ybWFsbHkgaW5jbHVkZQor
ICAgICAgICAgICAgICAgICAgICAgICAgb25seSB0ZXN0IC5weWMgZmlsZXMuCisKKyAgICAiIiIK
KyAgICBfbG9nLmRlYnVnKCJDbGVhbmluZyBvcnBoYW5lZCAqLnB5YyBmaWxlcyBmcm9tOiAlcyIg
JSBkaXJfdG9fY2xlYW4pCisKKyAgICAjIE5vcm1hbGl6ZSBwYXRocyBub3QgdG8gbG9nLgorICAg
IHBhdGhzX25vdF90b19sb2cgPSBbb3MucGF0aC5hYnNwYXRoKHBhdGgpIGZvciBwYXRoIGluIHBh
dGhzX25vdF90b19sb2ddCisKKyAgICBmb3IgZGlyX3BhdGgsIGRpcl9uYW1lcywgZmlsZV9uYW1l
cyBpbiBvcy53YWxrKGRpcl90b19jbGVhbik6CisgICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmls
ZV9uYW1lczoKKyAgICAgICAgICAgIGlmIGZpbGVfbmFtZS5lbmRzd2l0aCgiLnB5YyIpIGFuZCBm
aWxlX25hbWVbOi0xXSBub3QgaW4gZmlsZV9uYW1lczoKKyAgICAgICAgICAgICAgICBmaWxlX3Bh
dGggPSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsIGZpbGVfbmFtZSkKKyAgICAgICAgICAgICAgICBp
ZiBvcy5wYXRoLmFic3BhdGgoZmlsZV9wYXRoKSBub3QgaW4gcGF0aHNfbm90X3RvX2xvZzoKKyAg
ICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJEZWxldGluZyBvcnBoYW5lZCAqLnB5YyBmaWxl
OiAlcyIgJSBmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVfcGF0aCkK
KworCisjIEFzIGEgc3Vic3RpdHV0ZSBmb3IgYSB1bml0IHRlc3QsIHRoaXMgbWV0aG9kIHRlc3Rz
IF9jbGVhbl9weWNfZmlsZXMoKQorIyBpbiBhZGRpdGlvbiB0byBjYWxsaW5nIGl0LiAgV2UgY2hv
c2Ugbm90IHRvIHVzZSB0aGUgdW5pdHRlc3QgbW9kdWxlCisjIGJlY2F1c2UgX2NsZWFuX3B5Y19m
aWxlcygpIGlzIGNhbGxlZCBvbmx5IG9uY2UgYW5kIGlzIG5vdCB1c2VkIGVsc2V3aGVyZS4KK2Rl
ZiBfY2xlYW5fd2Via2l0cHlfd2l0aF90ZXN0KCk6CisgICAgd2Via2l0cHlfZGlyID0gb3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJ3ZWJraXRweSIpCisKKyAgICAjIFRo
ZSB0ZXN0IC5weWMgZmlsZSBpcy0tCisgICAgIyB3ZWJraXRweS9weXRob24yNC9URU1QX3Rlc3Qt
d2Via2l0cHlfdGVzdF9weWNfZmlsZS5weWMuCisgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2lu
KHdlYmtpdHB5X2RpciwgInB5dGhvbjI0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlRFTVBfdGVzdC13ZWJraXRweV90ZXN0X3B5Y19maWxlLnB5YyIpCisKKyAgICB0ZXN0X2ZpbGUg
PSBvcGVuKHRlc3RfcGF0aCwgInciKQorICAgIHRyeToKKyAgICAgICAgdGVzdF9maWxlLndyaXRl
KCJUZXN0IC5weWMgZmlsZSBnZW5lcmF0ZWQgYnkgdGVzdC13ZWJraXRweS4iKQorICAgIGZpbmFs
bHk6CisgICAgICAgIHRlc3RfZmlsZS5jbG9zZSgpCisKKyAgICAjIENvbmZpcm0gdGhhdCB0aGUg
dGVzdCBmaWxlIGV4aXN0cyBzbyB0aGF0IHdoZW4gd2UgY2hlY2sgdGhhdCBpdCBkb2VzCisgICAg
IyBub3QgZXhpc3QsIHRoZSByZXN1bHQgaXMgbWVhbmluZ2Z1bC4KKyAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHModGVzdF9wYXRoKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUZXN0IC5weWMg
ZmlsZSBub3QgY3JlYXRlZDogJXMiICUgdGVzdF9wYXRoKQorCisgICAgX2NsZWFuX3B5Y19maWxl
cyh3ZWJraXRweV9kaXIsIFt0ZXN0X3BhdGhdKQorCisgICAgaWYgb3MucGF0aC5leGlzdHModGVz
dF9wYXRoKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUZXN0IC5weWMgZmlsZSBub3QgZGVs
ZXRlZDogJXMiICUgdGVzdF9wYXRoKQorCisKIGRlZiBpbml0KCk6CiAgICAgIiIiRXhlY3V0ZSBj
b2RlIHByaW9yIHRvIGltcG9ydGluZyBmcm9tIHdlYmtpdHB5LnVuaXR0ZXN0cy4iIiIKICAgICBj
b25maWd1cmVfbG9nZ2luZygpCiAKKyAgICAjIFdlIGNsZWFuIG9ycGhhbmVkICoucHljIGZpbGVz
IGZyb20gd2Via2l0cHkgcHJpb3IgdG8gaW1wb3J0aW5nIGZyb20KKyAgICAjIHdlYmtpdHB5IHRv
IG1ha2Ugc3VyZSB0aGF0IG5vIGltcG9ydCBzdGF0ZW1lbnRzIGZhbHNlbHkgc3VjY2VlZC4KKyAg
ICAjIFRoaXMgaGVscHMgdG8gY2hlY2sgdGhhdCBpbXBvcnQgc3RhdGVtZW50cyBoYXZlIGJlZW4g
dXBkYXRlZCBjb3JyZWN0bHkKKyAgICAjIGFmdGVyIGFueSBmaWxlIG1vdmVzLiAgT3RoZXJ3aXNl
LCBpbmNvcnJlY3QgaW1wb3J0IHN0YXRlbWVudHMgY2FuCisgICAgIyBiZSBtYXNrZWQuCisgICAg
IworICAgICMgRm9yIGV4YW1wbGUsIGlmIHdlYmtpdHB5L3B5dGhvbjI0L3ZlcnNpb25pbmcucHkg
d2VyZSBtb3ZlZCB0byBhCisgICAgIyBkaWZmZXJlbnQgbG9jYXRpb24gd2l0aG91dCBjaGFuZ2lu
ZyBhbnkgaW1wb3J0IHN0YXRlbWVudHMsIGFuZCBpZgorICAgICMgdGhlIGNvcnJlc3BvbmRpbmcg
LnB5YyBmaWxlIHdlcmUgbGVmdCBiZWhpbmQgd2l0aG91dCBkZWxldGluZyBpdCwKKyAgICAjIHRo
ZW4gImltcG9ydCB3ZWJraXRweS5weXRob24yNC52ZXJzaW9uaW5nIiB3b3VsZCBjb250aW51ZSB0
byBzdWNjZWVkCisgICAgIyBldmVuIHRob3VnaCBpdCB3b3VsZCBmYWlsIGZvciBzb21lb25lIGNo
ZWNraW5nIG91dCBhIGZyZXNoIGNvcHkKKyAgICAjIG9mIHRoZSBzb3VyY2UgdHJlZS4gIERlbGV0
aW5nIHRoZSBvcnBoYW5lZCAucHljIGZpbGUgcHJpb3IgdG8KKyAgICAjIGltcG9ydGluZywgaG93
ZXZlciwgd291bGQgY2F1c2UgYW4gSW1wb3J0RXJyb3IgdG8gb2NjdXIgb24gaW1wb3J0CisgICAg
IyBhcyBpcyBkZXNpcmVkLgorICAgIF9jbGVhbl93ZWJraXRweV93aXRoX3Rlc3QoKQorCisgICAg
aW1wb3J0IHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcgYXMgdmVyc2lvbmluZworCiAgICAg
dmVyc2lvbmluZy5jaGVja192ZXJzaW9uKGxvZz1fbG9nKQogCiAgICAgKGNvbXBhcmlzb24sIGN1
cnJlbnRfdmVyc2lvbiwgbWluaW11bV92ZXJzaW9uKSA9IFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51814</attachid>
            <date>2010-03-26 21:56:40 -0700</date>
            <delta_ts>2010-03-29 20:08:23 -0700</delta_ts>
            <desc>Proposed patch 4</desc>
            <filename>_patch-36599-4.diff</filename>
            <type>text/plain</type>
            <size>5503</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMGNhNmI5Li5lOTA3YTE1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDMt
MjYgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0ZWQgdGVzdC13ZWJraXRw
eSB0byBkZWxldGUgYWxsIG9ycGhhbmVkICoucHljIGZpbGVzCisgICAgICAgIGZyb20gd2Via2l0
cHkvIHByaW9yIHRvIGltcG9ydGluZyBhbnkgbW9kdWxlcyBmcm9tIHdlYmtpdHB5LgorICAgICAg
ICBUaGlzIGVuc3VyZXMgdGhhdCBubyBpbXBvcnQgc3RhdGVtZW50cyBpbiB3ZWJraXRweSBmYWxz
ZWx5CisgICAgICAgIHN1Y2NlZWQgYmVjYXVzZSBvZiBsZWZ0b3ZlciAqLnB5YyBmaWxlcy4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1OTkKKwor
ICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRweToKKyAgICAgICAgICAtIEFkZGVkIF9jbGVh
bl9weWNfZmlsZXMoKSB0byBkZWxldGUgb3JwaGFuZWQgKi5weWMgZmlsZXMKKyAgICAgICAgICAg
IGZyb20gYSBkaXJlY3RvcnkuCisgICAgICAgICAgLSBBZGRlZCBfY2xlYW5fd2Via2l0cHlfd2l0
aF90ZXN0KCkgdG8gY2FsbCBhbmQgdGVzdAorICAgICAgICAgICAgX2NsZWFuX3B5Y19maWxlcygp
LgorICAgICAgICAgIC0gTW92ZWQgdGhlICJpbXBvcnQgd2Via2l0cHkucHl0aG9uMjQudmVyc2lv
bmluZyIgc3RhdGVtZW50CisgICAgICAgICAgICBmcm9tIHRoZSB0b3Agb2YgdGhlIG1vZHVsZSB0
byB0aGUgaW5pdCgpIG1ldGhvZCAtLSBpbW1lZGlhdGVseQorICAgICAgICAgICAgYWZ0ZXIgdGhl
IGNhbGwgdG8gX2NsZWFuX3dlYmtpdHB5X3dpdGhfdGVzdCgpLgorCiAyMDEwLTAzLTI2ICBEaXJr
IFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5CmluZGV4IGE2Mjc1MjMuLjQwZjMzOTcgMTAwNzU1
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKQEAgLTI5LDEwICsyOSwxMyBAQAogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRl
c3QKIAotaW1wb3J0IHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcgYXMgdmVyc2lvbmluZwor
IyBEbyBub3QgaW1wb3J0IGFueXRoaW5nIGZyb20gd2Via2l0cHkgcHJpb3IgdG8gY2xlYW5pbmcg
d2Via2l0cHkgb2YKKyMgb3JwaGFuZWQgKi5weWMgZmlsZXMuICBUaGlzIGVuc3VyZXMgdGhhdCBu
byBvcnBoYW5lZCAqLnB5YyBmaWxlcyBhcmUKKyMgYWNjaWRlbnRhbGx5IGltcG9ydGVkIGR1cmlu
ZyB0aGUgY291cnNlIG9mIHRoaXMgc2NyaXB0LgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
InRlc3Qtd2Via2l0cHkiKQogCkBAIC03NSwxMCArNzgsODggQEAgZGVmIGNvbmZpZ3VyZV9sb2dn
aW5nKCk6CiAgICAgaGFuZGxlci5hZGRGaWx0ZXIodGVzdGluZ19maWx0ZXIpCiAKIAorZGVmIF9j
bGVhbl9weWNfZmlsZXMoZGlyX3RvX2NsZWFuLCBwYXRoc19ub3RfdG9fbG9nKToKKyAgICAiIiJE
ZWxldGUgZnJvbSBhIGRpcmVjdG9yeSBhbGwgLnB5YyBmaWxlcyB0aGF0IGhhdmUgbm8gLnB5IGZp
bGUuCisKKyAgICBBcmdzOgorICAgICAgZGlyX3RvX2NsZWFuOiBUaGUgcGF0aCB0byB0aGUgZGly
ZWN0b3J5IHRvIGNsZWFuLgorICAgICAgcGF0aHNfbm90X3RvX2xvZzogQSBsaXN0IG9mIHBhdGhz
IHRvIC5weWMgZmlsZXMgd2hvc2UgZGVsZXRpb25zIHNob3VsZAorICAgICAgICAgICAgICAgICAg
ICAgICAgbm90IGJlIGxvZ2dlZC4gIFRoaXMgbGlzdCBzaG91bGQgbm9ybWFsbHkgaW5jbHVkZQor
ICAgICAgICAgICAgICAgICAgICAgICAgb25seSB0ZXN0IC5weWMgZmlsZXMuCisKKyAgICAiIiIK
KyAgICBfbG9nLmRlYnVnKCJDbGVhbmluZyBvcnBoYW5lZCAqLnB5YyBmaWxlcyBmcm9tOiAlcyIg
JSBkaXJfdG9fY2xlYW4pCisKKyAgICAjIE5vcm1hbGl6ZSBwYXRocyBub3QgdG8gbG9nLgorICAg
IHBhdGhzX25vdF90b19sb2cgPSBbb3MucGF0aC5hYnNwYXRoKHBhdGgpIGZvciBwYXRoIGluIHBh
dGhzX25vdF90b19sb2ddCisKKyAgICBmb3IgZGlyX3BhdGgsIGRpcl9uYW1lcywgZmlsZV9uYW1l
cyBpbiBvcy53YWxrKGRpcl90b19jbGVhbik6CisgICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmls
ZV9uYW1lczoKKyAgICAgICAgICAgIGlmIGZpbGVfbmFtZS5lbmRzd2l0aCgiLnB5YyIpIGFuZCBm
aWxlX25hbWVbOi0xXSBub3QgaW4gZmlsZV9uYW1lczoKKyAgICAgICAgICAgICAgICBmaWxlX3Bh
dGggPSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsIGZpbGVfbmFtZSkKKyAgICAgICAgICAgICAgICBp
ZiBvcy5wYXRoLmFic3BhdGgoZmlsZV9wYXRoKSBub3QgaW4gcGF0aHNfbm90X3RvX2xvZzoKKyAg
ICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJEZWxldGluZyBvcnBoYW5lZCAqLnB5YyBmaWxl
OiAlcyIgJSBmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVfcGF0aCkK
KworCisjIEFzIGEgc3Vic3RpdHV0ZSBmb3IgYSB1bml0IHRlc3QsIHRoaXMgbWV0aG9kIHRlc3Rz
IF9jbGVhbl9weWNfZmlsZXMoKQorIyBpbiBhZGRpdGlvbiB0byBjYWxsaW5nIGl0LiAgV2UgY2hv
c2Ugbm90IHRvIHVzZSB0aGUgdW5pdHRlc3QgbW9kdWxlCisjIGJlY2F1c2UgX2NsZWFuX3B5Y19m
aWxlcygpIGlzIGNhbGxlZCBvbmx5IG9uY2UgYW5kIGlzIG5vdCB1c2VkIGVsc2V3aGVyZS4KK2Rl
ZiBfY2xlYW5fd2Via2l0cHlfd2l0aF90ZXN0KCk6CisgICAgd2Via2l0cHlfZGlyID0gb3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJ3ZWJraXRweSIpCisKKyAgICAjIFRo
ZSB0ZXN0IC5weWMgZmlsZSBpcy0tCisgICAgIyB3ZWJraXRweS9weXRob24yNC9URU1QX3Rlc3Qt
d2Via2l0cHlfdGVzdF9weWNfZmlsZS5weWMuCisgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2lu
KHdlYmtpdHB5X2RpciwgInB5dGhvbjI0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlRFTVBfdGVzdC13ZWJraXRweV90ZXN0X3B5Y19maWxlLnB5YyIpCisKKyAgICB0ZXN0X2ZpbGUg
PSBvcGVuKHRlc3RfcGF0aCwgInciKQorICAgIHRyeToKKyAgICAgICAgdGVzdF9maWxlLndyaXRl
KCJUZXN0IC5weWMgZmlsZSBnZW5lcmF0ZWQgYnkgdGVzdC13ZWJraXRweS4iKQorICAgIGZpbmFs
bHk6CisgICAgICAgIHRlc3RfZmlsZS5jbG9zZSgpCisKKyAgICAjIENvbmZpcm0gdGhhdCB0aGUg
dGVzdCBmaWxlIGV4aXN0cyBzbyB0aGF0IHdoZW4gd2UgY2hlY2sgdGhhdCBpdCBkb2VzCisgICAg
IyBub3QgZXhpc3QsIHRoZSByZXN1bHQgaXMgbWVhbmluZ2Z1bC4KKyAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHModGVzdF9wYXRoKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUZXN0IC5weWMg
ZmlsZSBub3QgY3JlYXRlZDogJXMiICUgdGVzdF9wYXRoKQorCisgICAgX2NsZWFuX3B5Y19maWxl
cyh3ZWJraXRweV9kaXIsIFt0ZXN0X3BhdGhdKQorCisgICAgaWYgb3MucGF0aC5leGlzdHModGVz
dF9wYXRoKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUZXN0IC5weWMgZmlsZSBub3QgZGVs
ZXRlZDogJXMiICUgdGVzdF9wYXRoKQorCisKIGRlZiBpbml0KCk6CiAgICAgIiIiRXhlY3V0ZSBj
b2RlIHByaW9yIHRvIGltcG9ydGluZyBmcm9tIHdlYmtpdHB5LnVuaXR0ZXN0cy4iIiIKICAgICBj
b25maWd1cmVfbG9nZ2luZygpCiAKKyAgICAjIFdlIGNsZWFuIG9ycGhhbmVkICoucHljIGZpbGVz
IGZyb20gd2Via2l0cHkgcHJpb3IgdG8gaW1wb3J0aW5nIGZyb20KKyAgICAjIHdlYmtpdHB5IHRv
IG1ha2Ugc3VyZSB0aGF0IG5vIGltcG9ydCBzdGF0ZW1lbnRzIGZhbHNlbHkgc3VjY2VlZC4KKyAg
ICAjIFRoaXMgaGVscHMgdG8gY2hlY2sgdGhhdCBpbXBvcnQgc3RhdGVtZW50cyBoYXZlIGJlZW4g
dXBkYXRlZCBjb3JyZWN0bHkKKyAgICAjIGFmdGVyIGFueSBmaWxlIG1vdmVzLiAgT3RoZXJ3aXNl
LCBpbmNvcnJlY3QgaW1wb3J0IHN0YXRlbWVudHMgY2FuCisgICAgIyBiZSBtYXNrZWQuCisgICAg
IworICAgICMgRm9yIGV4YW1wbGUsIGlmIHdlYmtpdHB5L3B5dGhvbjI0L3ZlcnNpb25pbmcucHkg
d2VyZSBtb3ZlZCB0byBhCisgICAgIyBkaWZmZXJlbnQgbG9jYXRpb24gd2l0aG91dCBjaGFuZ2lu
ZyBhbnkgaW1wb3J0IHN0YXRlbWVudHMsIGFuZCBpZgorICAgICMgdGhlIGNvcnJlc3BvbmRpbmcg
LnB5YyBmaWxlIHdlcmUgbGVmdCBiZWhpbmQgd2l0aG91dCBkZWxldGluZyBpdCwKKyAgICAjIHRo
ZW4gImltcG9ydCB3ZWJraXRweS5weXRob24yNC52ZXJzaW9uaW5nIiB3b3VsZCBjb250aW51ZSB0
byBzdWNjZWVkCisgICAgIyBldmVuIHRob3VnaCBpdCB3b3VsZCBmYWlsIGZvciBzb21lb25lIGNo
ZWNraW5nIG91dCBhIGZyZXNoIGNvcHkKKyAgICAjIG9mIHRoZSBzb3VyY2UgdHJlZS4gIFRoaXMg
aXMgYmVjYXVzZSBvZiBhIFB5dGhvbiBmZWF0dXJlOgorICAgICMKKyAgICAjICJJdCBpcyBwb3Nz
aWJsZSB0byBoYXZlIGEgZmlsZSBjYWxsZWQgc3BhbS5weWMgKG9yIHNwYW0ucHlvIHdoZW4gLU8K
KyAgICAjIGlzIHVzZWQpIHdpdGhvdXQgYSBmaWxlIHNwYW0ucHkgZm9yIHRoZSBzYW1lIG1vZHVs
ZS4gVGhpcyBjYW4gYmUgdXNlZAorICAgICMgdG8gZGlzdHJpYnV0ZSBhIGxpYnJhcnkgb2YgUHl0
aG9uIGNvZGUgaW4gYSBmb3JtIHRoYXQgaXMgbW9kZXJhdGVseQorICAgICMgaGFyZCB0byByZXZl
cnNlIGVuZ2luZWVyLiIKKyAgICAjCisgICAgIyAoIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvdHV0
b3JpYWwvbW9kdWxlcy5odG1sI2NvbXBpbGVkLXB5dGhvbi1maWxlcyApCisgICAgIworICAgICMg
RGVsZXRpbmcgdGhlIG9ycGhhbmVkIC5weWMgZmlsZSBwcmlvciB0byBpbXBvcnRpbmcsIGhvd2V2
ZXIsIHdvdWxkCisgICAgIyBjYXVzZSBhbiBJbXBvcnRFcnJvciB0byBvY2N1ciBvbiBpbXBvcnQg
YXMgZGVzaXJlZC4KKyAgICBfY2xlYW5fd2Via2l0cHlfd2l0aF90ZXN0KCkKKworICAgIGltcG9y
dCB3ZWJraXRweS5weXRob24yNC52ZXJzaW9uaW5nIGFzIHZlcnNpb25pbmcKKwogICAgIHZlcnNp
b25pbmcuY2hlY2tfdmVyc2lvbihsb2c9X2xvZykKIAogICAgIChjb21wYXJpc29uLCBjdXJyZW50
X3ZlcnNpb24sIG1pbmltdW1fdmVyc2lvbikgPSBcCg==
</data>
<flag name="review"
          id="35166"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="35167"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>