<?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>96168</bug_id>
          
          <creation_ts>2012-09-07 17:43:40 -0700</creation_ts>
          <short_desc>WebKit exposes incorrect bounds for embedded SVG in HTML</short_desc>
          <delta_ts>2012-09-21 14:27:19 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>krit</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
    
    <cc>zourtney</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715173</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-07 17:43:40 -0700</bug_when>
    <thetext>WebKit exposes incorrect bounds for embedded SVG in HTML</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715174</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-07 17:43:56 -0700</bug_when>
    <thetext>rdar://12225992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715175</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-07 17:44:38 -0700</bug_when>
    <thetext>It looks like the problem is that the focusRing methods we rely on to return a bounding box are all in local coordinates for SVG elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715271</commentid>
    <comment_count>3</comment_count>
      <attachid>162943</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-07 22:50:59 -0700</bug_when>
    <thetext>Created attachment 162943
patch for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715276</commentid>
    <comment_count>4</comment_count>
      <attachid>162943</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-07 23:06:38 -0700</bug_when>
    <thetext>Comment on attachment 162943
patch for testing

Attachment 162943 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13785842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715277</commentid>
    <comment_count>5</comment_count>
      <attachid>162943</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-07 23:06:50 -0700</bug_when>
    <thetext>Comment on attachment 162943
patch for testing

Attachment 162943 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13795168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715278</commentid>
    <comment_count>6</comment_count>
      <attachid>162943</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-07 23:09:07 -0700</bug_when>
    <thetext>Comment on attachment 162943
patch for testing

Attachment 162943 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13788505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715279</commentid>
    <comment_count>7</comment_count>
      <attachid>162943</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-07 23:15:09 -0700</bug_when>
    <thetext>Comment on attachment 162943
patch for testing

Attachment 162943 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13798115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715282</commentid>
    <comment_count>8</comment_count>
      <attachid>162946</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-07 23:21:39 -0700</bug_when>
    <thetext>Created attachment 162946
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715400</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-08 19:37:09 -0700</bug_when>
    <thetext>The new patch doesn&apos;t apply to ToT any more, so EWS is not building it. Could you please upload a patch made against an updated tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715408</commentid>
    <comment_count>10</comment_count>
      <attachid>162946</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-08 22:09:51 -0700</bug_when>
    <thetext>Comment on attachment 162946
patch 

Not all elements inherit from RenderSVGModelObject, so I doubt that this extra check will help you a lot (SVGImage or SVG*Text* as example). Something that we usually do is checking the elements type (node()-&gt;isSVGElement()). You need to be carful with inline SVG elements so:

&lt;body&gt;
&lt;svg&gt;
...
&lt;/svg&gt;
&lt;/body&gt;

These elements are treated like HTML elements, but still return true for isSVGElement().

Can you add examples with &lt;text&gt; and &lt;image&gt; as well please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716724</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-10 17:37:52 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 162946 [details])
&gt; Not all elements inherit from RenderSVGModelObject, so I doubt that this extra check will help you a lot (SVGImage or SVG*Text* as example). Something that we usually do is checking the elements type (node()-&gt;isSVGElement()). You need to be carful with inline SVG elements so:
&gt; 
&gt; &lt;body&gt;
&gt; &lt;svg&gt;
&gt; ...
&gt; &lt;/svg&gt;
&gt; &lt;/body&gt;
&gt; 
&gt; These elements are treated like HTML elements, but still return true for isSVGElement().
&gt; 
&gt; Can you add examples with &lt;text&gt; and &lt;image&gt; as well please?

Hi Dirk,

Thanks for your feedback. I just tested text and images for SVG

Text works correctly already. It looks like it doesn&apos;t do the same &quot;draw the focus ring itself and store in local coordinates&quot; thing

Images are not accessible at all for some reason. I filed
https://bugs.webkit.org/show_bug.cgi?id=96341

to figure that one out. I will update the test to include text in it, but do you think this approach is OK

It looks like if i just do the node() check, then &lt;text&gt; will actually be incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724666</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-20 11:07:02 -0700</bug_when>
    <thetext>*** Bug 66095 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724671</commentid>
    <comment_count>13</comment_count>
      <attachid>164950</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-20 11:09:42 -0700</bug_when>
    <thetext>Created attachment 164950
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724685</commentid>
    <comment_count>14</comment_count>
      <attachid>164950</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-20 11:18:45 -0700</bug_when>
    <thetext>Comment on attachment 164950
patch 

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:817
&gt;      else
&gt;          obj-&gt;absoluteFocusRingQuads(quads);

Are you suggesting absoluteFocusRingQuads gives a non-absolute answer for SVG?  That seems like a bug if true...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724691</commentid>
    <comment_count>15</comment_count>
      <attachid>164950</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-20 11:20:40 -0700</bug_when>
    <thetext>Comment on attachment 164950
patch 

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:817
&gt;&gt;          obj-&gt;absoluteFocusRingQuads(quads);
&gt; 
&gt; Are you suggesting absoluteFocusRingQuads gives a non-absolute answer for SVG?  That seems like a bug if true...

Yep...


RenderSVGShape.cpp
// This method is called from inside paintOutline() since we call paintOutline()
// while transformed to our coord system, return local coords
void RenderSVGShape::addFocusRingRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724696</commentid>
    <comment_count>16</comment_count>
      <attachid>164950</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-20 11:25:08 -0700</bug_when>
    <thetext>Comment on attachment 164950
patch 

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

&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:817
&gt;&gt;&gt;          obj-&gt;absoluteFocusRingQuads(quads);
&gt;&gt; 
&gt;&gt; Are you suggesting absoluteFocusRingQuads gives a non-absolute answer for SVG?  That seems like a bug if true...
&gt; 
&gt; Yep...
&gt; 
&gt; 
&gt; RenderSVGShape.cpp
&gt; // This method is called from inside paintOutline() since we call paintOutline()
&gt; // while transformed to our coord system, return local coords
&gt; void RenderSVGShape::addFocusRingRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp;)

But that&apos;s addFocusRingRects, not absoluteFocusRingQuads.  I guess SVG needs to override absoluteFocusRingQuads to transform them to absolute if absoluteFocusRingQuads expects addFocusRingRects to be absolute?

Because SVG elements can have arbitrary transforms between elements (and we don&apos;t have a layer tree to help), everything is done in local coordinates and then only turned to absolute when necessary.  I&apos;m sure RenderLayer functions similarly, (even though our old HTML renderers operate in an odd containing-block-relative world). :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724697</commentid>
    <comment_count>17</comment_count>
      <attachid>164950</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-20 11:26:27 -0700</bug_when>
    <thetext>Comment on attachment 164950
patch 

I agree this seems like a potential bug.  This seems like the wrong fix to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724700</commentid>
    <comment_count>18</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-20 11:27:58 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 164950 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164950&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:817
&gt; &gt;&gt;&gt;          obj-&gt;absoluteFocusRingQuads(quads);
&gt; &gt;&gt; 
&gt; &gt;&gt; Are you suggesting absoluteFocusRingQuads gives a non-absolute answer for SVG?  That seems like a bug if true...
&gt; &gt; 
&gt; &gt; Yep...
&gt; &gt; 
&gt; &gt; 
&gt; &gt; RenderSVGShape.cpp
&gt; &gt; // This method is called from inside paintOutline() since we call paintOutline()
&gt; &gt; // while transformed to our coord system, return local coords
&gt; &gt; void RenderSVGShape::addFocusRingRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp;)
&gt; 
&gt; But that&apos;s addFocusRingRects, not absoluteFocusRingQuads.  I guess SVG needs to override absoluteFocusRingQuads to transform them to absolute if absoluteFocusRingQuads expects addFocusRingRects to be absolute?
&gt; 
&gt; Because SVG elements can have arbitrary transforms between elements (and we don&apos;t have a layer tree to help), everything is done in local coordinates and then only turned to absolute when necessary.  I&apos;m sure RenderLayer functions similarly, (even though our old HTML renderers operate in an odd containing-block-relative world). :)

In absoluteFocusRingQuads, it calls addFocusRingRects...

void RenderObject::absoluteFocusRingQuads(Vector&lt;FloatQuad&gt;&amp; quads)
{
    ....
    addFocusRingRects(rects, flooredLayoutPoint(absolutePoint));


It sounds like this patch should have an RenderSVGShape override of absoluteFocusRingQuads and absoluteFocusRingRects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724721</commentid>
    <comment_count>19</comment_count>
      <attachid>164950</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-09-20 11:50:26 -0700</bug_when>
    <thetext>Comment on attachment 164950
patch 

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:817
&gt;&gt;&gt;&gt;&gt;          obj-&gt;absoluteFocusRingQuads(quads);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Are you suggesting absoluteFocusRingQuads gives a non-absolute answer for SVG?  That seems like a bug if true...
&gt;&gt;&gt; 
&gt;&gt;&gt; Yep...
&gt;&gt;&gt; 
&gt;&gt;&gt; 
&gt;&gt;&gt; RenderSVGShape.cpp
&gt;&gt;&gt; // This method is called from inside paintOutline() since we call paintOutline()
&gt;&gt;&gt; // while transformed to our coord system, return local coords
&gt;&gt;&gt; void RenderSVGShape::addFocusRingRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp;)
&gt;&gt; 
&gt;&gt; But that&apos;s addFocusRingRects, not absoluteFocusRingQuads.  I guess SVG needs to override absoluteFocusRingQuads to transform them to absolute if absoluteFocusRingQuads expects addFocusRingRects to be absolute?
&gt;&gt; 
&gt;&gt; Because SVG elements can have arbitrary transforms between elements (and we don&apos;t have a layer tree to help), everything is done in local coordinates and then only turned to absolute when necessary.  I&apos;m sure RenderLayer functions similarly, (even though our old HTML renderers operate in an odd containing-block-relative world). :)
&gt; 
&gt; In absoluteFocusRingQuads, it calls addFocusRingRects...
&gt; 
&gt; void RenderObject::absoluteFocusRingQuads(Vector&lt;FloatQuad&gt;&amp; quads)
&gt; {
&gt;     ....
&gt;     addFocusRingRects(rects, flooredLayoutPoint(absolutePoint));
&gt; 
&gt; 
&gt; It sounds like this patch should have an RenderSVGShape override of absoluteFocusRingQuads and absoluteFocusRingRects?

That would be better than adding the code you have here, yes. Let us know if you need help with that.

&gt; LayoutTests/accessibility/svg-bounds.html:16
&gt; +  &lt;image x=&quot;20&quot; y=&quot;20&quot; width=&quot;300&quot; height=&quot;80&quot; aria-label=&quot;Test Image&quot; xlink:href=&quot;resources/cake.ong&quot; /&gt;

I presume you mean cake.png? Does this mean the issues you were having with images are not real issues?

&gt; LayoutTests/platform/mac/accessibility/svg-bounds-expected.txt:1
&gt; +Test

Do you expect this test to be platform specific? It doesn&apos;t seem so, and hence the results should go in LayoutTests/accessibility/svg-bounds-expected.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724722</commentid>
    <comment_count>20</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-20 11:51:48 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 164950 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164950&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:817
&gt; &gt;&gt;&gt;&gt;&gt;          obj-&gt;absoluteFocusRingQuads(quads);
&gt; &gt;&gt;&gt;&gt; 
&gt; &gt;&gt;&gt;&gt; Are you suggesting absoluteFocusRingQuads gives a non-absolute answer for SVG?  That seems like a bug if true...
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Yep...
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; RenderSVGShape.cpp
&gt; &gt;&gt;&gt; // This method is called from inside paintOutline() since we call paintOutline()
&gt; &gt;&gt;&gt; // while transformed to our coord system, return local coords
&gt; &gt;&gt;&gt; void RenderSVGShape::addFocusRingRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp;)
&gt; &gt;&gt; 
&gt; &gt;&gt; But that&apos;s addFocusRingRects, not absoluteFocusRingQuads.  I guess SVG needs to override absoluteFocusRingQuads to transform them to absolute if absoluteFocusRingQuads expects addFocusRingRects to be absolute?
&gt; &gt;&gt; 
&gt; &gt;&gt; Because SVG elements can have arbitrary transforms between elements (and we don&apos;t have a layer tree to help), everything is done in local coordinates and then only turned to absolute when necessary.  I&apos;m sure RenderLayer functions similarly, (even though our old HTML renderers operate in an odd containing-block-relative world). :)
&gt; &gt; 
&gt; &gt; In absoluteFocusRingQuads, it calls addFocusRingRects...
&gt; &gt; 
&gt; &gt; void RenderObject::absoluteFocusRingQuads(Vector&lt;FloatQuad&gt;&amp; quads)
&gt; &gt; {
&gt; &gt;     ....
&gt; &gt;     addFocusRingRects(rects, flooredLayoutPoint(absolutePoint));
&gt; &gt; 
&gt; &gt; 
&gt; &gt; It sounds like this patch should have an RenderSVGShape override of absoluteFocusRingQuads and absoluteFocusRingRects?
&gt; 
&gt; That would be better than adding the code you have here, yes. Let us know if you need help with that.
&gt; 
&gt; &gt; LayoutTests/accessibility/svg-bounds.html:16
&gt; &gt; +  &lt;image x=&quot;20&quot; y=&quot;20&quot; width=&quot;300&quot; height=&quot;80&quot; aria-label=&quot;Test Image&quot; xlink:href=&quot;resources/cake.ong&quot; /&gt;
&gt; 
&gt; I presume you mean cake.png? Does this mean the issues you were having with images are not real issues?

Yes that should be cake.png but in reality it doesn&apos;t matter. An image still exists in the tree with the correct width and height.

&gt; 
&gt; &gt; LayoutTests/platform/mac/accessibility/svg-bounds-expected.txt:1
&gt; &gt; +Test
&gt; 
&gt; Do you expect this test to be platform specific? It doesn&apos;t seem so, and hence the results should go in LayoutTests/accessibility/svg-bounds-expected.txt

The results will be platform specific, specifically the way that role&apos;s and labels are outputted are different</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725215</commentid>
    <comment_count>21</comment_count>
      <attachid>165060</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 00:11:40 -0700</bug_when>
    <thetext>Created attachment 165060
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725216</commentid>
    <comment_count>22</comment_count>
      <attachid>165060</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 00:12:37 -0700</bug_when>
    <thetext>Comment on attachment 165060
patch 

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

&gt; Source/WebCore/rendering/RenderObject.h:727
&gt; +    virtual void absoluteFocusRingQuads(Vector&lt;FloatQuad&gt;&amp;);

it looks like accessibility code is the only client of this method, so probably not a problem to make it virtual</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725372</commentid>
    <comment_count>23</comment_count>
      <attachid>165060</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 03:23:08 -0700</bug_when>
    <thetext>Comment on attachment 165060
patch 

Attachment 165060 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13963011

New failing tests:
accessibility/svg-bounds.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725558</commentid>
    <comment_count>24</comment_count>
      <attachid>165144</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 09:08:34 -0700</bug_when>
    <thetext>Created attachment 165144
patch 

Change the layout test to rely less on shouldBe so it can be platform independent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725577</commentid>
    <comment_count>25</comment_count>
      <attachid>165144</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-21 09:40:43 -0700</bug_when>
    <thetext>Comment on attachment 165144
patch 

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

&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:169
&gt; +void RenderSVGModelObject::absoluteFocusRingQuads(Vector&lt;FloatQuad&gt;&amp; quads)

FYI. Almost all SVG objects are SVGModelObjects, except RenderSVGBlock (for &lt;text&gt;, &lt;tspan&gt; etc.) and RenderForeignObject.  If you worry about those bounds, you may need to test them as well in your test case to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725580</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-21 09:42:41 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 165060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165060&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderObject.h:727
&gt; &gt; +    virtual void absoluteFocusRingQuads(Vector&lt;FloatQuad&gt;&amp;);
&gt; 
&gt; it looks like accessibility code is the only client of this method, so probably not a problem to make it virtual

If that&apos;s true, we might consider renaming it to involve AX?  I know SVG has some focus-ring bugs:
http://trac.webkit.org/browser/trunk/LayoutTests/platform/mac/svg/custom/focus-ring-expected.png</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725611</commentid>
    <comment_count>27</comment_count>
      <attachid>165144</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 10:14:29 -0700</bug_when>
    <thetext>Comment on attachment 165144
patch 

Attachment 165144 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13953677

New failing tests:
accessibility/svg-bounds.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725633</commentid>
    <comment_count>28</comment_count>
      <attachid>165144</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 10:54:54 -0700</bug_when>
    <thetext>Comment on attachment 165144
patch 

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

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:169
&gt;&gt; +void RenderSVGModelObject::absoluteFocusRingQuads(Vector&lt;FloatQuad&gt;&amp; quads)
&gt; 
&gt; FYI. Almost all SVG objects are SVGModelObjects, except RenderSVGBlock (for &lt;text&gt;, &lt;tspan&gt; etc.) and RenderForeignObject.  If you worry about those bounds, you may need to test them as well in your test case to be sure.

I did add a test for &lt;text&gt; in this layout test, which seemed to already be working correctly, so I think we&apos;re OK on that front</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725645</commentid>
    <comment_count>29</comment_count>
      <attachid>165144</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 11:13:16 -0700</bug_when>
    <thetext>Comment on attachment 165144
patch 

Attachment 165144 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13956705

New failing tests:
accessibility/svg-bounds.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725710</commentid>
    <comment_count>30</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-21 12:38:04 -0700</bug_when>
    <thetext>Go ahead and skip this test on Chromium for now. Looks like there are two issues:

1. Chromium is ignoring different objects, so all of the childAtIndex calculations are not working. Switching to the new accessibleElementById should help a lot. In the meantime, would it work to make each svg element focusable and focus them in order to get their accessible object? If so, the test will be a little less brittle...

2. I haven&apos;t implemented clickPointX and clickPointY on Chromium. Shouldn&apos;t be hard, but I just haven&apos;t had a chance. I&apos;ll get around to fixing it as soon as I have a chance.

If you can do #1 without much trouble before committing, that&apos;d be great - but either way I&apos;ll take care of implementing clickPoint[X,Y] and fixing it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725768</commentid>
    <comment_count>31</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 13:42:35 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Go ahead and skip this test on Chromium for now. Looks like there are two issues:
&gt; 
&gt; 1. Chromium is ignoring different objects, so all of the childAtIndex calculations are not working. Switching to the new accessibleElementById should help a lot. In the meantime, would it work to make each svg element focusable and focus them in order to get their accessible object? If so, the test will be a little less brittle...
&gt; 
&gt; 2. I haven&apos;t implemented clickPointX and clickPointY on Chromium. Shouldn&apos;t be hard, but I just haven&apos;t had a chance. I&apos;ll get around to fixing it as soon as I have a chance.
&gt; 
&gt; If you can do #1 without much trouble before committing, that&apos;d be great - but either way I&apos;ll take care of implementing clickPoint[X,Y] and fixing it later.

Thanks. I think I&apos;ll wait until we have our new method since we&apos;ll want to move a lot of tests over I imagine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725791</commentid>
    <comment_count>32</comment_count>
      <attachid>165185</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 13:57:28 -0700</bug_when>
    <thetext>Created attachment 165185
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725823</commentid>
    <comment_count>33</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-21 14:27:19 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/129254</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162943</attachid>
            <date>2012-09-07 22:50:59 -0700</date>
            <delta_ts>2012-09-07 23:21:39 -0700</delta_ts>
            <desc>patch for testing</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6458</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA5LTA3ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGV4cG9zZXMg
aW5jb3JyZWN0IGJvdW5kcyBmb3IgZW1iZWRkZWQgU1ZHIGluIEhUTUwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIG1vc3QgYWNjZXNzaWJpbGl0eSBl
bGVtZW50cywgdGhlIGZvY3VzIHJpbmcgcXVhZHMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBl
bGVtZW50cyBib3VuZHMuCisgICAgICAgIEhvd2V2ZXIsIGZvciBTVkcgZWxlbWVudHMgdGhpcyBt
ZWNoYW5pc20gb25seSBzdG9yZXMgbG9jYWwgY29vcmRpbmF0ZXMsIHdoaWNoIHJlc3VsdHMgaW4g
aW5jb3JyZWN0CisgICAgICAgIGFjY2Vzc2liaWxpdHkgYm91bmRzLgorCisgICAgICAgIFRlc3Q6
IGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKwogMjAxMi0wOS0wNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBib3gtc2hhZG93
IGNhdXNlcyBvdmVybGF5IHNjcm9sbGJhcnMgdG8gYmUgaW4gdGhlIHdyb25nIHBvc2l0aW9uIHdo
ZW4gZWxlbWVudCBpcyBjb21wb3NpdGVkCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc5NDQpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
Mi0wOS0wNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYktpdCBleHBvc2VzIGluY29ycmVjdCBib3VuZHMgZm9yIGVtYmVkZGVkIFNWRyBpbiBIVE1M
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjE2OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9zdmctYm91bmRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9zdmctYm91bmRzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTA3ICBEb21pbmljIE1h
enpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIEFYOiBXZWJDb3JlIGFjY2Vz
c2liaWxpdHkgcm9sZXMgc2hvdWxkIGJlIGNyb3NzLXBsYXRmb3JtCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAJKHJldmlzaW9uIDEyNzY2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzYs
NiArMTUzNiwxMSBAQAogICAgICAgICB0b1JlbmRlclRleHQob2JqKS0+YWJzb2x1dGVRdWFkcyhx
dWFkcywgMCwgUmVuZGVyVGV4dDo6Q2xpcFRvRWxsaXBzaXMpOwogICAgIGVsc2UgaWYgKGlzV2Vi
QXJlYSgpKQogICAgICAgICBvYmotPmFic29sdXRlUXVhZHMocXVhZHMpOworI2lmIEVOQUJMRShT
VkcpCisgICAgLy8gU1ZHIHJlbmRlciBvYmplY3RzIHBhaW50IHRoZWlyIGZvY3VzIHJpbmdzIGlu
IGxvY2FsIGNvb3JkaW5hdGVzLCBzbyBhYnNvbHV0ZVF1YWRzIG5lZWRzIHRvIGJlIHVzZWQuCisg
ICAgZWxzZSBpZiAob2JqLT5pc1NWR1JlbmRlck9iamVjdCgpKQorICAgICAgICBvYmotPmFic29s
dXRlUXVhZHMocXVhZHMpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBvYmotPmFic29sdXRl
Rm9jdXNSaW5nUXVhZHMocXVhZHMpOwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9zdmctYm91bmRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzMiBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGFjY2Vzc2liaWxpdHkg
Ym91bmRzIG9mIGVtYmVkZGVkIFNWRyBvYmplY3RzIGFyZSBjb3JyZWN0LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworY29udGFpbmVyIGxvY2F0aW9uOiAoMTAwNywgMTAwNykKK0Zh
Y2Ugcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRmFjZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogZmFj
ZQorUEFTUyBmYWNlWCAtIHggaXMgMAorUEFTUyBNYXRoLmFicyhmYWNlWSAtIHkpIGlzIDAKKwor
CitFeWUgcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRXllIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBs
ZWZ0LWV5ZQorUEFTUyBwYWdlWChleWUpIC0geCBpcyAxMDMKK1BBU1MgTWF0aC5hYnMocGFnZVko
ZXllKSAtIHkpIGlzIDE0OAorCisKK05vc2Ugcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorTm9zZSBs
YWJlbDogQVhEZXNjcmlwdGlvbjogbm9zZQorUEFTUyBwYWdlWChub3NlKSAtIHggaXMgMTkzCitQ
QVNTIE1hdGguYWJzKHBhZ2VZKG5vc2UpIC0geSkgaXMgMjA2CisKKworTW91dGggcm9sZTogQVhS
b2xlOiBBWEJ1dHRvbgorTW91dGggbGFiZWw6IEFYRGVzY3JpcHRpb246IHNtaWxlCitQQVNTIHBh
Z2VYKG1vdXRoKSAtIHggaXMgMTE1CitQQVNTIE1hdGguYWJzKHBhZ2VZKG1vdXRoKSAtIHkpIGlz
IDI3NC41CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKworPGRpdiBpZD0iY29udGFpbmVyIiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB0
b3A6IDEwMDBweDsgbGVmdDogMTAwMHB4OyB3aWR0aDo0MDBweDsgaGVpZ2h0OiA0MDBweDsiIHJv
bGU9Imdyb3VwIiB0YWJpbmRleD0iMCI+CisKKzxzdmc+CisKKyAgPGNpcmNsZSByb2xlPSJidXR0
b24iIGFyaWEtbGFiZWw9ImZhY2UiIGlkPSJmYWNlIiByPSIyMDAiIGN4PSIyMDAiIGN5PSIyMDAi
IHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9InllbGxvdyIgLz4KKyAgPGVsbGlw
c2Ugcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJsZWZ0LWV5ZSIgaWQ9ImxlZnQtZXllIiBjeD0i
MTIwIiBjeT0iMTgwIiByeD0iMTgiIHJ5PSIzMyIgZmlsbD0iYmxhY2siLz4KKyAgPGVsbGlwc2Ug
cm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJyaWdodC1leWUiIGlkPSJyaWdodC1leWUiIGN4PSIy
ODAiIGN5PSIxMjAiIHJ4PSIxOCIgcnk9IjMzIiBmaWxsPSJibGFjayIvPgorICA8ZWxsaXBzZSBy
b2xlPSJidXR0b24iIGFyaWEtbGFiZWw9Im5vc2UiIGlkPSJub3NlIiBjeD0iMjAwIiBjeT0iMjIw
IiByeD0iOCIgcnk9IjE1IiBmaWxsPSJibGFjayIvPgorICA8cGF0aCByb2xlPSJidXR0b24iIGFy
aWEtbGFiZWw9InNtaWxlIiBpZD0ic21pbGUiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZT0iYmxh
Y2siIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0iTTEyMCwyODAgUTIwMCwz
MzAgMjkwLDI4MCIvPgorICAKKzwvc3ZnPgorPC9kaXY+CisKKworPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGFj
Y2Vzc2liaWxpdHkgYm91bmRzIG9mIGVtYmVkZGVkIFNWRyBvYmplY3RzIGFyZSBjb3JyZWN0LiIp
CisKKy8vIFJldHVybiB0aGUgcGFnZSdzIHJlbGF0aXZlIGNvb3JkaW5hdGVzLiBJZiB3ZSByZWx5
IG9uIHRoZSB4KCkgb3IgeSgpIG9mIHRoZSBhY2Nlc3NpYmlsaXR5IG9iamVjdCwgdGhlbiAKKy8v
IGFjY2Vzc2liaWxpdHkgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCB0aGF0IGZhaWwgYmVjYXVzZSB0
aGVyZSBpcyBubyB3aW5kb3cgYXZhaWxhYmxlCitmdW5jdGlvbiBwYWdlWChlbGVtZW50KSB7Cisg
ICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2ludFggLSBlbGVtZW50LndpZHRoLzI7Cit9CisKK2Z1
bmN0aW9uIHBhZ2VZKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1BvaW50WSAt
IGVsZW1lbnQuaGVpZ2h0LzI7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgCisgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJv
b3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisKKyAgICB2YXIgeCA9
IHBhZ2VYKGNvbnRhaW5lcikgLSAxOworICAgIHZhciB5ID0gcGFnZVkoY29udGFpbmVyKSAtIDE7
CisKKyAgICBkZWJ1ZygiY29udGFpbmVyIGxvY2F0aW9uOiAoIiArIHggKyAiLCAiICsgeSArICIp
Iik7CisKKyAgICB2YXIgZmFjZSA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7CisgICAgdmFy
IGZhY2VYID0gcGFnZVgoZmFjZSk7CisgICAgdmFyIGZhY2VZID0gcGFnZVkoZmFjZSk7CisgICAg
ZGVidWcoJ0ZhY2Ugcm9sZTogJyArIGZhY2Uucm9sZSk7CisgICAgZGVidWcoJ0ZhY2UgbGFiZWw6
ICcgKyBmYWNlLmRlc2NyaXB0aW9uKTsKKyAgICBzaG91bGRCZSgiZmFjZVggLSB4IiwgIjAiKTsK
KyAgICBzaG91bGRCZSgiTWF0aC5hYnMoZmFjZVkgLSB5KSIsICIwIik7CisgICAgZGVidWcoJzxi
cj4nKTsKKworICAgIHZhciBleWUgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDEpOworICAgIGRl
YnVnKCdFeWUgcm9sZTogJyArIGV5ZS5yb2xlKTsKKyAgICBkZWJ1ZygnRXllIGxhYmVsOiAnICsg
ZXllLmRlc2NyaXB0aW9uKTsKKyAgICBzaG91bGRCZSgicGFnZVgoZXllKSAtIHgiLCAiMTAzIik7
CisgICAgc2hvdWxkQmUoIk1hdGguYWJzKHBhZ2VZKGV5ZSkgLSB5KSIsICIxNDgiKTsKKyAgICBk
ZWJ1ZygnPGJyPicpOworCisgICAgdmFyIG5vc2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDMp
OworICAgIGRlYnVnKCdOb3NlIHJvbGU6ICcgKyBub3NlLnJvbGUpOworICAgIGRlYnVnKCdOb3Nl
IGxhYmVsOiAnICsgbm9zZS5kZXNjcmlwdGlvbik7CisgICAgc2hvdWxkQmUoInBhZ2VYKG5vc2Up
IC0geCIsICIxOTMiKTsKKyAgICBzaG91bGRCZSgiTWF0aC5hYnMocGFnZVkobm9zZSkgLSB5KSIs
ICIyMDYiKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIG1vdXRoID0gY29udGFpbmVy
LmNoaWxkQXRJbmRleCg0KTsKKyAgICBkZWJ1ZygnTW91dGggcm9sZTogJyArIG1vdXRoLnJvbGUp
OworICAgIGRlYnVnKCdNb3V0aCBsYWJlbDogJyArIG1vdXRoLmRlc2NyaXB0aW9uKTsKKyAgICBz
aG91bGRCZSgicGFnZVgobW91dGgpIC0geCIsICIxMTUiKTsKKyAgICBzaG91bGRCZSgiTWF0aC5h
YnMocGFnZVkobW91dGgpIC0geSkiLCAiMjc0LjUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="174207"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162946</attachid>
            <date>2012-09-07 23:21:39 -0700</date>
            <delta_ts>2012-09-20 11:09:42 -0700</delta_ts>
            <desc>patch </desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7881</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA3ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGV4cG9zZXMg
aW5jb3JyZWN0IGJvdW5kcyBmb3IgZW1iZWRkZWQgU1ZHIGluIEhUTUwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIG1vc3QgYWNjZXNzaWJpbGl0eSBl
bGVtZW50cywgdGhlIGZvY3VzIHJpbmcgcXVhZHMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBl
bGVtZW50cyBib3VuZHMuCisgICAgICAgIEhvd2V2ZXIsIGZvciBTVkcgZWxlbWVudHMgdGhpcyBt
ZWNoYW5pc20gb25seSBzdG9yZXMgbG9jYWwgY29vcmRpbmF0ZXMsIHdoaWNoIHJlc3VsdHMgaW4g
aW5jb3JyZWN0CisgICAgICAgIGFjY2Vzc2liaWxpdHkgYm91bmRzLgorCisgICAgICAgIFRlc3Q6
IGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzU1ZH
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6aXNTVkdSZW5k
ZXJPYmplY3QpOgorCiAyMDEyLTA5LTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIGJveC1zaGFkb3cgY2F1c2VzIG92ZXJsYXkgc2Nyb2xsYmFycyB0
byBiZSBpbiB0aGUgd3JvbmcgcG9zaXRpb24gd2hlbiBlbGVtZW50IGlzIGNvbXBvc2l0ZWQKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEyNzk0NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA5LTA3ICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGV4cG9zZXMgaW5jb3JyZWN0IGJv
dW5kcyBmb3IgZW1iZWRkZWQgU1ZHIGluIEhUTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbDogQWRk
ZWQuCisKIDIwMTItMDktMDcgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+
CiAKICAgICAgICAgQVg6IFdlYkNvcmUgYWNjZXNzaWJpbGl0eSByb2xlcyBzaG91bGQgYmUgY3Jv
c3MtcGxhdGZvcm0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTI3NjYxKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzNiw2ICsxNTM2LDExIEBACiAgICAgICAgIHRvUmVu
ZGVyVGV4dChvYmopLT5hYnNvbHV0ZVF1YWRzKHF1YWRzLCAwLCBSZW5kZXJUZXh0OjpDbGlwVG9F
bGxpcHNpcyk7CiAgICAgZWxzZSBpZiAoaXNXZWJBcmVhKCkpCiAgICAgICAgIG9iai0+YWJzb2x1
dGVRdWFkcyhxdWFkcyk7CisjaWYgRU5BQkxFKFNWRykKKyAgICAvLyBTVkcgcmVuZGVyIG9iamVj
dHMgcGFpbnQgdGhlaXIgZm9jdXMgcmluZ3MgaW4gbG9jYWwgY29vcmRpbmF0ZXMsIHNvIGFic29s
dXRlUXVhZHMgbmVlZHMgdG8gYmUgdXNlZC4KKyAgICBlbHNlIGlmIChvYmotPmlzU1ZHUmVuZGVy
T2JqZWN0KCkpCisgICAgICAgIG9iai0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7CisjZW5kaWYKICAg
ICBlbHNlCiAgICAgICAgIG9iai0+YWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhxdWFkcyk7CiAgICAg
CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1i
b3VuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACitUaGlzIHRl
c3QgZW5zdXJlcyB0aGUgYWNjZXNzaWJpbGl0eSBib3VuZHMgb2YgZW1iZWRkZWQgU1ZHIG9iamVj
dHMgYXJlIGNvcnJlY3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitjb250YWlu
ZXIgbG9jYXRpb246ICgxMDA3LCAxMDA3KQorRmFjZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitG
YWNlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBmYWNlCitQQVNTIGZhY2VYIC0geCBpcyAwCitQQVNT
IE1hdGguYWJzKGZhY2VZIC0geSkgaXMgMAorCisKK0V5ZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9u
CitFeWUgbGFiZWw6IEFYRGVzY3JpcHRpb246IGxlZnQtZXllCitQQVNTIHBhZ2VYKGV5ZSkgLSB4
IGlzIDEwMworUEFTUyBNYXRoLmFicyhwYWdlWShleWUpIC0geSkgaXMgMTQ4CisKKworTm9zZSBy
b2xlOiBBWFJvbGU6IEFYQnV0dG9uCitOb3NlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBub3NlCitQ
QVNTIHBhZ2VYKG5vc2UpIC0geCBpcyAxOTMKK1BBU1MgTWF0aC5hYnMocGFnZVkobm9zZSkgLSB5
KSBpcyAyMDYKKworCitNb3V0aCByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitNb3V0aCBsYWJlbDog
QVhEZXNjcmlwdGlvbjogc21pbGUKK1BBU1MgcGFnZVgobW91dGgpIC0geCBpcyAxMTUKK1BBU1Mg
TWF0aC5hYnMocGFnZVkobW91dGgpIC0geSkgaXMgMjc0LjUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJjb250YWluZXIi
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMTAwMHB4OyBsZWZ0OiAxMDAwcHg7IHdp
ZHRoOjQwMHB4OyBoZWlnaHQ6IDQwMHB4OyIgcm9sZT0iZ3JvdXAiIHRhYmluZGV4PSIwIj4KKwor
PHN2Zz4KKworICA8Y2lyY2xlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iZmFjZSIgaWQ9ImZh
Y2UiIHI9IjIwMCIgY3g9IjIwMCIgY3k9IjIwMCIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MSIgZmlsbD0ieWVsbG93IiAvPgorICA8ZWxsaXBzZSByb2xlPSJidXR0b24iIGFyaWEtbGFiZWw9
ImxlZnQtZXllIiBpZD0ibGVmdC1leWUiIGN4PSIxMjAiIGN5PSIxODAiIHJ4PSIxOCIgcnk9IjMz
IiBmaWxsPSJibGFjayIvPgorICA8ZWxsaXBzZSByb2xlPSJidXR0b24iIGFyaWEtbGFiZWw9InJp
Z2h0LWV5ZSIgaWQ9InJpZ2h0LWV5ZSIgY3g9IjI4MCIgY3k9IjEyMCIgcng9IjE4IiByeT0iMzMi
IGZpbGw9ImJsYWNrIi8+CisgIDxlbGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0ibm9z
ZSIgaWQ9Im5vc2UiIGN4PSIyMDAiIGN5PSIyMjAiIHJ4PSI4IiByeT0iMTUiIGZpbGw9ImJsYWNr
Ii8+CisgIDxwYXRoIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0ic21pbGUiIGlkPSJzbWlsZSIg
c3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlPSJibGFjayIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVj
YXA9InJvdW5kIiBkPSJNMTIwLDI4MCBRMjAwLDMzMCAyOTAsMjgwIi8+CisgIAorPC9zdmc+Cis8
L2Rpdj4KKworCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGUgYWNjZXNzaWJpbGl0eSBib3VuZHMgb2YgZW1iZWRk
ZWQgU1ZHIG9iamVjdHMgYXJlIGNvcnJlY3QuIikKKworLy8gUmV0dXJuIHRoZSBwYWdlJ3MgcmVs
YXRpdmUgY29vcmRpbmF0ZXMuIElmIHdlIHJlbHkgb24gdGhlIHgoKSBvciB5KCkgb2YgdGhlIGFj
Y2Vzc2liaWxpdHkgb2JqZWN0LCB0aGVuIAorLy8gYWNjZXNzaWJpbGl0eSB0cmFuc2Zvcm1zIGFy
ZSBhcHBsaWVkIHRoYXQgZmFpbCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdpbmRvdyBhdmFpbGFibGUK
K2Z1bmN0aW9uIHBhZ2VYKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1BvaW50
WCAtIGVsZW1lbnQud2lkdGgvMjsKK30KKworZnVuY3Rpb24gcGFnZVkoZWxlbWVudCkgeworICAg
IHJldHVybiBlbGVtZW50LmNsaWNrUG9pbnRZIC0gZWxlbWVudC5oZWlnaHQvMjsKK30KKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAKKyAgICB2YXIgY29udGFpbmVy
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmNo
aWxkQXRJbmRleCgwKTsKKworICAgIHZhciB4ID0gcGFnZVgoY29udGFpbmVyKSAtIDE7CisgICAg
dmFyIHkgPSBwYWdlWShjb250YWluZXIpIC0gMTsKKworICAgIGRlYnVnKCJjb250YWluZXIgbG9j
YXRpb246ICgiICsgeCArICIsICIgKyB5ICsgIikiKTsKKworICAgIHZhciBmYWNlID0gY29udGFp
bmVyLmNoaWxkQXRJbmRleCgwKTsKKyAgICB2YXIgZmFjZVggPSBwYWdlWChmYWNlKTsKKyAgICB2
YXIgZmFjZVkgPSBwYWdlWShmYWNlKTsKKyAgICBkZWJ1ZygnRmFjZSByb2xlOiAnICsgZmFjZS5y
b2xlKTsKKyAgICBkZWJ1ZygnRmFjZSBsYWJlbDogJyArIGZhY2UuZGVzY3JpcHRpb24pOworICAg
IHNob3VsZEJlKCJmYWNlWCAtIHgiLCAiMCIpOworICAgIHNob3VsZEJlKCJNYXRoLmFicyhmYWNl
WSAtIHkpIiwgIjAiKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIGV5ZSA9IGNvbnRh
aW5lci5jaGlsZEF0SW5kZXgoMSk7CisgICAgZGVidWcoJ0V5ZSByb2xlOiAnICsgZXllLnJvbGUp
OworICAgIGRlYnVnKCdFeWUgbGFiZWw6ICcgKyBleWUuZGVzY3JpcHRpb24pOworICAgIHNob3Vs
ZEJlKCJwYWdlWChleWUpIC0geCIsICIxMDMiKTsKKyAgICBzaG91bGRCZSgiTWF0aC5hYnMocGFn
ZVkoZXllKSAtIHkpIiwgIjE0OCIpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgbm9z
ZSA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMyk7CisgICAgZGVidWcoJ05vc2Ugcm9sZTogJyAr
IG5vc2Uucm9sZSk7CisgICAgZGVidWcoJ05vc2UgbGFiZWw6ICcgKyBub3NlLmRlc2NyaXB0aW9u
KTsKKyAgICBzaG91bGRCZSgicGFnZVgobm9zZSkgLSB4IiwgIjE5MyIpOworICAgIHNob3VsZEJl
KCJNYXRoLmFicyhwYWdlWShub3NlKSAtIHkpIiwgIjIwNiIpOworICAgIGRlYnVnKCc8YnI+Jyk7
CisKKyAgICB2YXIgbW91dGggPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDQpOworICAgIGRlYnVn
KCdNb3V0aCByb2xlOiAnICsgbW91dGgucm9sZSk7CisgICAgZGVidWcoJ01vdXRoIGxhYmVsOiAn
ICsgbW91dGguZGVzY3JpcHRpb24pOworICAgIHNob3VsZEJlKCJwYWdlWChtb3V0aCkgLSB4Iiwg
IjExNSIpOworICAgIHNob3VsZEJlKCJNYXRoLmFicyhwYWdlWShtb3V0aCkgLSB5KSIsICIyNzQu
NSIpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMjc2NjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0OCw2ICs0NDgsNyBAQAogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlQ29udGFpbmVy
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJj
ZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1NWR1JlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Owog
CiAgICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogdG9SZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCShyZXZpc2lvbiAxMjc2NjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDYgKzcyLDcgQEAKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hv
dWxkIG5ldmVyIGJlIGNhbGxlZCwgU1ZHIHVzZXMgYSBkaWZmZXJlbnQgbm9kZUF0UG9pbnQgbWV0
aG9kCiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVuZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfTsKIH07CiAKIH0K
</data>
<flag name="review"
          id="174208"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164950</attachid>
            <date>2012-09-20 11:09:42 -0700</date>
            <delta_ts>2012-09-21 00:11:40 -0700</delta_ts>
            <desc>patch </desc>
            <filename>p1</filename>
            <type>text/plain</type>
            <size>8760</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTE0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTIwICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGV4cG9zZXMg
aW5jb3JyZWN0IGJvdW5kcyBmb3IgZW1iZWRkZWQgU1ZHIGluIEhUTUwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgCisgICAgICAgIEZvciBtb3N0IGFjY2Vzc2liaWxpdHkg
ZWxlbWVudHMsIHRoZSBmb2N1cyByaW5nIHF1YWRzIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUg
ZWxlbWVudHMgYm91bmRzLgorICAgICAgICBIb3dldmVyLCBmb3IgU1ZHIGVsZW1lbnRzIHRoaXMg
bWVjaGFuaXNtIG9ubHkgc3RvcmVzIGxvY2FsIGNvb3JkaW5hdGVzLCB3aGljaCByZXN1bHRzIGlu
IGluY29ycmVjdAorICAgICAgICBhY2Nlc3NpYmlsaXR5IGJvdW5kcy4KKworICAgICAgICBUZXN0
OiBhY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1NW
R1JlbmRlck9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmlzU1ZHUmVu
ZGVyT2JqZWN0KToKKwogMjAxMi0wOS0yMCAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gQ29udHJvbHNQYW5lbCBzdHJpbmcgaXMgbm90IGxvY2Fs
aXplZCBpbiBMb2NhbGl6ZWRTdHJpbmdzR3RrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDEyOTEzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwOCw2ICs4MDgsMTEgQEAK
ICAgICAgICAgdG9SZW5kZXJUZXh0KG9iaiktPmFic29sdXRlUXVhZHMocXVhZHMsIDAsIFJlbmRl
clRleHQ6OkNsaXBUb0VsbGlwc2lzKTsKICAgICBlbHNlIGlmIChpc1dlYkFyZWEoKSkKICAgICAg
ICAgb2JqLT5hYnNvbHV0ZVF1YWRzKHF1YWRzKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIC8vIFNW
RyByZW5kZXIgb2JqZWN0cyBwYWludCB0aGVpciBmb2N1cyByaW5ncyBpbiBsb2NhbCBjb29yZGlu
YXRlcywgc28gYWJzb2x1dGVRdWFkcyBuZWVkcyB0byBiZSB1c2VkLgorICAgIGVsc2UgaWYgKG9i
ai0+aXNTVkdSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgb2JqLT5hYnNvbHV0ZVF1YWRzKHF1YWRz
KTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb2JqLT5hYnNvbHV0ZUZvY3VzUmluZ1F1YWRz
KHF1YWRzKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDEyOTEzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNiArNzIsNyBAQAogcHJpdmF0ZToKICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQg
bmV2ZXIgYmUgY2FsbGVkLCBTVkcgdXNlcyBhIGRpZmZlcmVudCBub2RlQXRQb2ludCBtZXRob2QK
ICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdSZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAko
cmV2aXNpb24gMTI5MTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNiArNDUxLDcgQEAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZW5kZXJPYmplY3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIqIHRvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoKTsKIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTI5MTQyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDktMjAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJLaXQgZXhwb3NlcyBpbmNvcnJlY3QgYm91bmRzIGZvciBlbWJl
ZGRlZCBTVkcgaW4gSFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTYxNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisKIDIwMTItMDktMjAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBJbmRleGVkREI6IFJld3JpdGUgY29uZnVzaW5nIGNhbGwgc2VxdWVuY2UgbGF5b3V0
IHRlc3RzCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorCis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHRvcDogMTAwMHB4OyBsZWZ0OiAxMDAwcHg7IHdpZHRoOjQwMHB4OyBoZWlnaHQ6IDQwMHB4
OyIgcm9sZT0iZ3JvdXAiIHRhYmluZGV4PSIwIj4KKworPHN2Zz4KKworICA8Y2lyY2xlIHJvbGU9
ImJ1dHRvbiIgYXJpYS1sYWJlbD0iZmFjZSIgaWQ9ImZhY2UiIHI9IjIwMCIgY3g9IjIwMCIgY3k9
IjIwMCIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ieWVsbG93IiAvPgorICA8
ZWxsaXBzZSByb2xlPSJidXR0b24iIGFyaWEtbGFiZWw9ImxlZnQtZXllIiBpZD0ibGVmdC1leWUi
IGN4PSIxMjAiIGN5PSIxODAiIHJ4PSIxOCIgcnk9IjMzIiBmaWxsPSJibGFjayIvPgorICA8ZWxs
aXBzZSByb2xlPSJidXR0b24iIGFyaWEtbGFiZWw9InJpZ2h0LWV5ZSIgaWQ9InJpZ2h0LWV5ZSIg
Y3g9IjI4MCIgY3k9IjEyMCIgcng9IjE4IiByeT0iMzMiIGZpbGw9ImJsYWNrIi8+CisgIDxlbGxp
cHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0ibm9zZSIgaWQ9Im5vc2UiIGN4PSIyMDAiIGN5
PSIyMjAiIHJ4PSI4IiByeT0iMTUiIGZpbGw9ImJsYWNrIi8+CisgIDxwYXRoIHJvbGU9ImJ1dHRv
biIgYXJpYS1sYWJlbD0ic21pbGUiIGlkPSJzbWlsZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tl
PSJibGFjayIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMTIwLDI4MCBR
MjAwLDMzMCAyOTAsMjgwIi8+CisgIDx0ZXh0IHg9IjAiIHk9IjE1IiBmaWxsPSJyZWQiPlRlc3Q8
L3RleHQ+ICAKKyAgPGltYWdlIHg9IjIwIiB5PSIyMCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI4MCIg
YXJpYS1sYWJlbD0iVGVzdCBJbWFnZSIgeGxpbms6aHJlZj0icmVzb3VyY2VzL2Nha2Uub25nIiAv
PgorCis8L3N2Zz4KKzwvZGl2PgorCisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoZSBhY2Nlc3NpYmlsaXR5IGJv
dW5kcyBvZiBlbWJlZGRlZCBTVkcgb2JqZWN0cyBhcmUgY29ycmVjdC4iKQorCisvLyBSZXR1cm4g
dGhlIHBhZ2UncyByZWxhdGl2ZSBjb29yZGluYXRlcy4gSWYgd2UgcmVseSBvbiB0aGUgeCgpIG9y
IHkoKSBvZiB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3QsIHRoZW4gCisvLyBhY2Nlc3NpYmlsaXR5
IHRyYW5zZm9ybXMgYXJlIGFwcGxpZWQgdGhhdCBmYWlsIGJlY2F1c2UgdGhlcmUgaXMgbm8gd2lu
ZG93IGF2YWlsYWJsZQorZnVuY3Rpb24gcGFnZVgoZWxlbWVudCkgeworICAgIHJldHVybiBlbGVt
ZW50LmNsaWNrUG9pbnRYIC0gZWxlbWVudC53aWR0aC8yOworfQorCitmdW5jdGlvbiBwYWdlWShl
bGVtZW50KSB7CisgICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2ludFkgLSBlbGVtZW50LmhlaWdo
dC8yOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworIAorICAg
IHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOworCisgICAgdmFyIHggPSBwYWdlWChjb250YWlu
ZXIpIC0gMTsKKyAgICB2YXIgeSA9IHBhZ2VZKGNvbnRhaW5lcikgLSAxOworCisgICAgZGVidWco
ImNvbnRhaW5lciBsb2NhdGlvbjogKCIgKyB4ICsgIiwgIiArIHkgKyAiKSIpOworCisgICAgdmFy
IGZhY2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDApOworICAgIHZhciBmYWNlWCA9IHBhZ2VY
KGZhY2UpOworICAgIHZhciBmYWNlWSA9IHBhZ2VZKGZhY2UpOworICAgIGRlYnVnKCdGYWNlIHJv
bGU6ICcgKyBmYWNlLnJvbGUpOworICAgIGRlYnVnKCdGYWNlIGxhYmVsOiAnICsgZmFjZS5kZXNj
cmlwdGlvbik7CisgICAgc2hvdWxkQmUoImZhY2VYIC0geCIsICIwIik7CisgICAgc2hvdWxkQmUo
Ik1hdGguYWJzKGZhY2VZIC0geSkiLCAiMCIpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2
YXIgZXllID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKTsKKyAgICBkZWJ1ZygnRXllIHJvbGU6
ICcgKyBleWUucm9sZSk7CisgICAgZGVidWcoJ0V5ZSBsYWJlbDogJyArIGV5ZS5kZXNjcmlwdGlv
bik7CisgICAgc2hvdWxkQmUoInBhZ2VYKGV5ZSkgLSB4IiwgIjEwMyIpOworICAgIHNob3VsZEJl
KCJNYXRoLmFicyhwYWdlWShleWUpIC0geSkiLCAiMTQ4Iik7CisgICAgZGVidWcoJzxicj4nKTsK
KworICAgIHZhciBub3NlID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgzKTsKKyAgICBkZWJ1Zygn
Tm9zZSByb2xlOiAnICsgbm9zZS5yb2xlKTsKKyAgICBkZWJ1ZygnTm9zZSBsYWJlbDogJyArIG5v
c2UuZGVzY3JpcHRpb24pOworICAgIHNob3VsZEJlKCJwYWdlWChub3NlKSAtIHgiLCAiMTkzIik7
CisgICAgc2hvdWxkQmUoIk1hdGguYWJzKHBhZ2VZKG5vc2UpIC0geSkiLCAiMjA2Iik7CisgICAg
ZGVidWcoJzxicj4nKTsKKworICAgIHZhciBtb3V0aCA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgo
NCk7CisgICAgZGVidWcoJ01vdXRoIHJvbGU6ICcgKyBtb3V0aC5yb2xlKTsKKyAgICBkZWJ1Zygn
TW91dGggbGFiZWw6ICcgKyBtb3V0aC5kZXNjcmlwdGlvbik7CisgICAgc2hvdWxkQmUoInBhZ2VY
KG1vdXRoKSAtIHgiLCAiMTE1Iik7CisgICAgc2hvdWxkQmUoIk1hdGguYWJzKHBhZ2VZKG1vdXRo
KSAtIHkpIiwgIjI3NC41Iik7CisgICAgZGVidWcoJzxicj4nKTsKKworICAgIHZhciB0ZXh0ID0g
Y29udGFpbmVyLmNoaWxkQXRJbmRleCg1KS5jaGlsZEF0SW5kZXgoMCk7CisgICAgZGVidWcoJ1Rl
eHQgcm9sZTogJyArIHRleHQucm9sZSk7CisgICAgc2hvdWxkQmUoInBhZ2VYKHRleHQpIC0geCIs
ICIwLjUiKTsKKyAgICBzaG91bGRCZSgiTWF0aC5hYnMocGFnZVkodGV4dCkgLSB5KSIsICIyIik7
CisgICAgZGVidWcoJzxicj4nKTsKKworICAgIHZhciBpbWFnZSA9IGNvbnRhaW5lci5jaGlsZEF0
SW5kZXgoNik7CisgICAgZGVidWcoJ0ltYWdlIHJvbGU6ICcgKyBpbWFnZS5yb2xlKTsKKyAgICBk
ZWJ1ZygnSW1hZ2UgbGFiZWw6ICcgKyBpbWFnZS5kZXNjcmlwdGlvbik7CisgICAgc2hvdWxkQmUo
InBhZ2VYKGltYWdlKSAtIHgiLCAiMjEiKTsKKyAgICBzaG91bGRCZSgiTWF0aC5hYnMocGFnZVko
aW1hZ2UpIC0geSkiLCAiMjEiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLWJv
dW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorVGVzdAorVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhlIGFjY2Vzc2liaWxpdHkgYm91bmRzIG9mIGVtYmVkZGVkIFNWRyBvYmplY3RzIGFyZSBj
b3JyZWN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworY29udGFpbmVyIGxvY2F0
aW9uOiAoMTAwNywgMTAwNykKK0ZhY2Ugcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRmFjZSBsYWJl
bDogQVhEZXNjcmlwdGlvbjogZmFjZQorUEFTUyBmYWNlWCAtIHggaXMgMAorUEFTUyBNYXRoLmFi
cyhmYWNlWSAtIHkpIGlzIDAKKworCitFeWUgcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRXllIGxh
YmVsOiBBWERlc2NyaXB0aW9uOiBsZWZ0LWV5ZQorUEFTUyBwYWdlWChleWUpIC0geCBpcyAxMDMK
K1BBU1MgTWF0aC5hYnMocGFnZVkoZXllKSAtIHkpIGlzIDE0OAorCisKK05vc2Ugcm9sZTogQVhS
b2xlOiBBWEJ1dHRvbgorTm9zZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogbm9zZQorUEFTUyBwYWdl
WChub3NlKSAtIHggaXMgMTkzCitQQVNTIE1hdGguYWJzKHBhZ2VZKG5vc2UpIC0geSkgaXMgMjA2
CisKKworTW91dGggcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorTW91dGggbGFiZWw6IEFYRGVzY3Jp
cHRpb246IHNtaWxlCitQQVNTIHBhZ2VYKG1vdXRoKSAtIHggaXMgMTE1CitQQVNTIE1hdGguYWJz
KHBhZ2VZKG1vdXRoKSAtIHkpIGlzIDI3NC41CisKKworVGV4dCByb2xlOiBBWFJvbGU6IEFYU3Rh
dGljVGV4dAorUEFTUyBwYWdlWCh0ZXh0KSAtIHggaXMgMC41CitQQVNTIE1hdGguYWJzKHBhZ2VZ
KHRleHQpIC0geSkgaXMgMgorCisKK0ltYWdlIHJvbGU6IEFYUm9sZTogQVhJbWFnZQorSW1hZ2Ug
bGFiZWw6IEFYRGVzY3JpcHRpb246IFRlc3QgSW1hZ2UKK1BBU1MgcGFnZVgoaW1hZ2UpIC0geCBp
cyAyMQorUEFTUyBNYXRoLmFicyhwYWdlWShpbWFnZSkgLSB5KSBpcyAyMQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>
<flag name="review"
          id="176887"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165060</attachid>
            <date>2012-09-21 00:11:40 -0700</date>
            <delta_ts>2012-09-21 09:08:34 -0700</delta_ts>
            <desc>patch </desc>
            <filename>p1</filename>
            <type>text/plain</type>
            <size>8992</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBleHBv
c2VzIGluY29ycmVjdCBib3VuZHMgZm9yIGVtYmVkZGVkIFNWRyBpbiBIVE1MCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjE2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXJyaWRlIGFic29sdXRlRm9j
dXNSaW5nUXVhZHMoKSBmb3IgU1ZHIG9iamVjdHMgYmVjYXVzZSB0aGUgZGVmYXVsdAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gYWRkRm9jdXNSaW5nUmVjdHMoKS4gSW4gYWRkRm9j
dXNSaW5nUmVjdHMoKSwgU1ZHIAorICAgICAgICBvYmplY3RzIGFkZHMgbG9jYWwgcG9zaXRpb25z
IGZvciBpdHMgcmVjdHMgaW5zdGVhZCBvZiBhYnNvbHV0ZSBwb3NpdGlvbnMuCisKKyAgICAgICAg
VGVzdDogYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmlu
Z1F1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6
CisgICAgICAgIChSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisKIDIwMTItMDktMjEgIEtlaXNoaSBI
YXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJlcGFyZSBDYWxlbmRhclBp
Y2tlciBzbyB3ZSBjYW4gYWRkIGFub3RoZXIgcGlja2VyLCBTdWdnZXRpb25QaWNrZXIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmgJKHJldmlzaW9uIDEyODcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQAog
cHJpdmF0ZToKICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkLCBTVkcg
dXNlcyBhIGRpZmZlcmVudCBub2RlQXRQb2ludCBtZXRob2QKICAgICBib29sIG5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAJKHJldmlzaW9uIDEyODcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDEz
IEBACiAgICAgcmV0dXJuIHJlbmRlcmVyLT5pc1NWR1NoYXBlKCkgfHwgcmVuZGVyZXItPmlzU1ZH
VGV4dCgpIHx8IHJlbmRlcmVyLT5pc1NWR0ltYWdlKCkgfHwgcmVuZGVyZXItPm5vZGUoKS0+aGFz
VGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKTsKIH0KIAorLy8gVGhlIFNWRyBhZGRGb2N1c1JpbmdS
ZWN0cygpIG1ldGhvZCBhZGRzIHJlY3RzIGluIGxvY2FsIGNvb3JkaW5hdGVzIHNvIHRoZSBkZWZh
dWx0IGFic29sdXRlRm9jdXNSaW5nUXVhZHMKKy8vIHJldHVybnMgaW5jb3JyZWN0IHZhbHVlcyBm
b3IgU1ZHIG9iamVjdHMuIE92ZXJyaWRpbmcgdGhpcyBtZXRob2QgcHJvdmlkZXMgYWNjZXNzIHRv
IHRoZSBhYnNvbHV0ZSBib3VuZHMuCit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0
ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKK3sKKyAgICBxdWFkcy5h
cHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQocmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKSkpKTsKK30KKyAgICAKIGJvb2wgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNr
SW50ZXJzZWN0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBpZiAoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLT5wb2ludGVyRXZl
bnRzKCkgPT0gUEVfTk9ORSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgJKHJldmlzaW9uIDEyODcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzI0LDcgKzcyNCw3IEBACiAgICAgLy8gQnVp
bGQgYW4gYXJyYXkgb2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRzIGZvciBsaW5lIGJveGVzCiAg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAv
Kndhc0ZpeGVkKi8gPSAwKSBjb25zdCB7IH0KIAotICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZUZvY3Vz
UmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAgICBzdGF0aWMgRmxvYXRSZWN0IGFi
c29sdXRlQm91bmRpbmdCb3hSZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2UqKTsKIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI5MTk4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDktMjEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQgZXhwb3NlcyBpbmNvcnJlY3QgYm91bmRzIGZv
ciBlbWJlZGRlZCBTVkcgaW4gSFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYxNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKIDIwMTItMDktMjAgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9u
IHVwZGF0ZS4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgdG9wOiAxMDAwcHg7IGxlZnQ6IDEwMDBweDsgd2lkdGg6NDAwcHg7IGhlaWdodDogNDAw
cHg7IiByb2xlPSJncm91cCIgdGFiaW5kZXg9IjAiPgorCis8c3ZnPgorCisgIDxjaXJjbGUgcm9s
ZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJmYWNlIiBpZD0iZmFjZSIgcj0iMjAwIiBjeD0iMjAwIiBj
eT0iMjAwIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJ5ZWxsb3ciIC8+Cisg
IDxlbGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0ibGVmdC1leWUiIGlkPSJsZWZ0LWV5
ZSIgY3g9IjEyMCIgY3k9IjE4MCIgcng9IjE4IiByeT0iMzMiIGZpbGw9ImJsYWNrIi8+CisgIDxl
bGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0icmlnaHQtZXllIiBpZD0icmlnaHQtZXll
IiBjeD0iMjgwIiBjeT0iMTIwIiByeD0iMTgiIHJ5PSIzMyIgZmlsbD0iYmxhY2siLz4KKyAgPGVs
bGlwc2Ugcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJub3NlIiBpZD0ibm9zZSIgY3g9IjIwMCIg
Y3k9IjIyMCIgcng9IjgiIHJ5PSIxNSIgZmlsbD0iYmxhY2siLz4KKyAgPHBhdGggcm9sZT0iYnV0
dG9uIiBhcmlhLWxhYmVsPSJzbWlsZSIgaWQ9InNtaWxlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJv
a2U9ImJsYWNrIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0xMjAsMjgw
IFEyMDAsMzMwIDI5MCwyODAiLz4KKyAgPHRleHQgeD0iMCIgeT0iMTUiIGZpbGw9InJlZCI+VGVz
dDwvdGV4dD4gIAorICA8aW1hZ2UgeD0iMjAiIHk9IjIwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9Ijgw
IiBhcmlhLWxhYmVsPSJUZXN0IEltYWdlIiB4bGluazpocmVmPSJyZXNvdXJjZXMvY2FrZS5vbmci
IC8+CisKKzwvc3ZnPgorPC9kaXY+CisKKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGFjY2Vzc2liaWxpdHkg
Ym91bmRzIG9mIGVtYmVkZGVkIFNWRyBvYmplY3RzIGFyZSBjb3JyZWN0LiIpCisKKy8vIFJldHVy
biB0aGUgcGFnZSdzIHJlbGF0aXZlIGNvb3JkaW5hdGVzLiBJZiB3ZSByZWx5IG9uIHRoZSB4KCkg
b3IgeSgpIG9mIHRoZSBhY2Nlc3NpYmlsaXR5IG9iamVjdCwgdGhlbiAKKy8vIGFjY2Vzc2liaWxp
dHkgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCB0aGF0IGZhaWwgYmVjYXVzZSB0aGVyZSBpcyBubyB3
aW5kb3cgYXZhaWxhYmxlCitmdW5jdGlvbiBwYWdlWChlbGVtZW50KSB7CisgICAgcmV0dXJuIGVs
ZW1lbnQuY2xpY2tQb2ludFggLSBlbGVtZW50LndpZHRoLzI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZ
KGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1BvaW50WSAtIGVsZW1lbnQuaGVp
Z2h0LzI7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgCisg
ICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisKKyAgICB2YXIgeCA9IHBhZ2VYKGNvbnRh
aW5lcikgLSAxOworICAgIHZhciB5ID0gcGFnZVkoY29udGFpbmVyKSAtIDE7CisKKyAgICBkZWJ1
ZygiY29udGFpbmVyIGxvY2F0aW9uOiAoIiArIHggKyAiLCAiICsgeSArICIpIik7CisKKyAgICB2
YXIgZmFjZSA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7CisgICAgdmFyIGZhY2VYID0gcGFn
ZVgoZmFjZSk7CisgICAgdmFyIGZhY2VZID0gcGFnZVkoZmFjZSk7CisgICAgZGVidWcoJ0ZhY2Ug
cm9sZTogJyArIGZhY2Uucm9sZSk7CisgICAgZGVidWcoJ0ZhY2UgbGFiZWw6ICcgKyBmYWNlLmRl
c2NyaXB0aW9uKTsKKyAgICBzaG91bGRCZSgiZmFjZVggLSB4IiwgIjAiKTsKKyAgICBzaG91bGRC
ZSgiTWF0aC5hYnMoZmFjZVkgLSB5KSIsICIwIik7CisgICAgZGVidWcoJzxicj4nKTsKKworICAg
IHZhciBleWUgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDEpOworICAgIGRlYnVnKCdFeWUgcm9s
ZTogJyArIGV5ZS5yb2xlKTsKKyAgICBkZWJ1ZygnRXllIGxhYmVsOiAnICsgZXllLmRlc2NyaXB0
aW9uKTsKKyAgICBzaG91bGRCZSgicGFnZVgoZXllKSAtIHgiLCAiMTAzIik7CisgICAgc2hvdWxk
QmUoIk1hdGguYWJzKHBhZ2VZKGV5ZSkgLSB5KSIsICIxNDgiKTsKKyAgICBkZWJ1ZygnPGJyPicp
OworCisgICAgdmFyIG5vc2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDMpOworICAgIGRlYnVn
KCdOb3NlIHJvbGU6ICcgKyBub3NlLnJvbGUpOworICAgIGRlYnVnKCdOb3NlIGxhYmVsOiAnICsg
bm9zZS5kZXNjcmlwdGlvbik7CisgICAgc2hvdWxkQmUoInBhZ2VYKG5vc2UpIC0geCIsICIxOTMi
KTsKKyAgICBzaG91bGRCZSgiTWF0aC5hYnMocGFnZVkobm9zZSkgLSB5KSIsICIyMDYiKTsKKyAg
ICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIG1vdXRoID0gY29udGFpbmVyLmNoaWxkQXRJbmRl
eCg0KTsKKyAgICBkZWJ1ZygnTW91dGggcm9sZTogJyArIG1vdXRoLnJvbGUpOworICAgIGRlYnVn
KCdNb3V0aCBsYWJlbDogJyArIG1vdXRoLmRlc2NyaXB0aW9uKTsKKyAgICBzaG91bGRCZSgicGFn
ZVgobW91dGgpIC0geCIsICIxMTUiKTsKKyAgICBzaG91bGRCZSgiTWF0aC5hYnMocGFnZVkobW91
dGgpIC0geSkiLCAiMjc0LjUiKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIHRleHQg
PSBjb250YWluZXIuY2hpbGRBdEluZGV4KDUpLmNoaWxkQXRJbmRleCgwKTsKKyAgICBkZWJ1Zygn
VGV4dCByb2xlOiAnICsgdGV4dC5yb2xlKTsKKyAgICBzaG91bGRCZSgicGFnZVgodGV4dCkgLSB4
IiwgIjAuNSIpOworICAgIHNob3VsZEJlKCJNYXRoLmFicyhwYWdlWSh0ZXh0KSAtIHkpIiwgIjIi
KTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIGltYWdlID0gY29udGFpbmVyLmNoaWxk
QXRJbmRleCg2KTsKKyAgICBkZWJ1ZygnSW1hZ2Ugcm9sZTogJyArIGltYWdlLnJvbGUpOworICAg
IGRlYnVnKCdJbWFnZSBsYWJlbDogJyArIGltYWdlLmRlc2NyaXB0aW9uKTsKKyAgICBzaG91bGRC
ZSgicGFnZVgoaW1hZ2UpIC0geCIsICIyMSIpOworICAgIHNob3VsZEJlKCJNYXRoLmFicyhwYWdl
WShpbWFnZSkgLSB5KSIsICIyMSIpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N2
Zy1ib3VuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKK1Rlc3QKK1RoaXMgdGVzdCBl
bnN1cmVzIHRoZSBhY2Nlc3NpYmlsaXR5IGJvdW5kcyBvZiBlbWJlZGRlZCBTVkcgb2JqZWN0cyBh
cmUgY29ycmVjdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2NvbnRhaW5lciBs
b2NhdGlvbjogKDEwMDcsIDEwMDcpCitGYWNlIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK0ZhY2Ug
bGFiZWw6IEFYRGVzY3JpcHRpb246IGZhY2UKK1BBU1MgZmFjZVggLSB4IGlzIDAKK1BBU1MgTWF0
aC5hYnMoZmFjZVkgLSB5KSBpcyAwCisKKworRXllIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK0V5
ZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogbGVmdC1leWUKK1BBU1MgcGFnZVgoZXllKSAtIHggaXMg
MTAzCitQQVNTIE1hdGguYWJzKHBhZ2VZKGV5ZSkgLSB5KSBpcyAxNDgKKworCitOb3NlIHJvbGU6
IEFYUm9sZTogQVhCdXR0b24KK05vc2UgbGFiZWw6IEFYRGVzY3JpcHRpb246IG5vc2UKK1BBU1Mg
cGFnZVgobm9zZSkgLSB4IGlzIDE5MworUEFTUyBNYXRoLmFicyhwYWdlWShub3NlKSAtIHkpIGlz
IDIwNgorCisKK01vdXRoIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK01vdXRoIGxhYmVsOiBBWERl
c2NyaXB0aW9uOiBzbWlsZQorUEFTUyBwYWdlWChtb3V0aCkgLSB4IGlzIDExNQorUEFTUyBNYXRo
LmFicyhwYWdlWShtb3V0aCkgLSB5KSBpcyAyNzQuNQorCisKK1RleHQgcm9sZTogQVhSb2xlOiBB
WFN0YXRpY1RleHQKK1BBU1MgcGFnZVgodGV4dCkgLSB4IGlzIDAuNQorUEFTUyBNYXRoLmFicyhw
YWdlWSh0ZXh0KSAtIHkpIGlzIDIKKworCitJbWFnZSByb2xlOiBBWFJvbGU6IEFYSW1hZ2UKK0lt
YWdlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBUZXN0IEltYWdlCitQQVNTIHBhZ2VYKGltYWdlKSAt
IHggaXMgMjEKK1BBU1MgTWF0aC5hYnMocGFnZVkoaW1hZ2UpIC0geSkgaXMgMjEKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCg==
</data>
<flag name="commit-queue"
          id="177055"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165144</attachid>
            <date>2012-09-21 09:08:34 -0700</date>
            <delta_ts>2012-09-21 11:13:16 -0700</delta_ts>
            <desc>patch </desc>
            <filename>p1</filename>
            <type>text/plain</type>
            <size>8712</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBleHBv
c2VzIGluY29ycmVjdCBib3VuZHMgZm9yIGVtYmVkZGVkIFNWRyBpbiBIVE1MCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjE2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXJyaWRlIGFic29sdXRlRm9j
dXNSaW5nUXVhZHMoKSBmb3IgU1ZHIG9iamVjdHMgYmVjYXVzZSB0aGUgZGVmYXVsdAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gYWRkRm9jdXNSaW5nUmVjdHMoKS4gSW4gYWRkRm9j
dXNSaW5nUmVjdHMoKSwgU1ZHIAorICAgICAgICBvYmplY3RzIGFkZHMgbG9jYWwgcG9zaXRpb25z
IGZvciBpdHMgcmVjdHMgaW5zdGVhZCBvZiBhYnNvbHV0ZSBwb3NpdGlvbnMuCisKKyAgICAgICAg
VGVzdDogYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmlu
Z1F1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6
CisgICAgICAgIChSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisKIDIwMTItMDktMjEgIEtlaXNoaSBI
YXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJlcGFyZSBDYWxlbmRhclBp
Y2tlciBzbyB3ZSBjYW4gYWRkIGFub3RoZXIgcGlja2VyLCBTdWdnZXRpb25QaWNrZXIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmgJKHJldmlzaW9uIDEyODcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQAog
cHJpdmF0ZToKICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkLCBTVkcg
dXNlcyBhIGRpZmZlcmVudCBub2RlQXRQb2ludCBtZXRob2QKICAgICBib29sIG5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAJKHJldmlzaW9uIDEyODcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDEz
IEBACiAgICAgcmV0dXJuIHJlbmRlcmVyLT5pc1NWR1NoYXBlKCkgfHwgcmVuZGVyZXItPmlzU1ZH
VGV4dCgpIHx8IHJlbmRlcmVyLT5pc1NWR0ltYWdlKCkgfHwgcmVuZGVyZXItPm5vZGUoKS0+aGFz
VGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKTsKIH0KIAorLy8gVGhlIFNWRyBhZGRGb2N1c1JpbmdS
ZWN0cygpIG1ldGhvZCBhZGRzIHJlY3RzIGluIGxvY2FsIGNvb3JkaW5hdGVzIHNvIHRoZSBkZWZh
dWx0IGFic29sdXRlRm9jdXNSaW5nUXVhZHMKKy8vIHJldHVybnMgaW5jb3JyZWN0IHZhbHVlcyBm
b3IgU1ZHIG9iamVjdHMuIE92ZXJyaWRpbmcgdGhpcyBtZXRob2QgcHJvdmlkZXMgYWNjZXNzIHRv
IHRoZSBhYnNvbHV0ZSBib3VuZHMuCit2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0
ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKK3sKKyAgICBxdWFkcy5h
cHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQocmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKSkpKTsKK30KKyAgICAKIGJvb2wgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNr
SW50ZXJzZWN0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBpZiAoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLT5wb2ludGVyRXZl
bnRzKCkgPT0gUEVfTk9ORSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgJKHJldmlzaW9uIDEyODcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzI0LDcgKzcyNCw3IEBACiAgICAgLy8gQnVp
bGQgYW4gYXJyYXkgb2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRzIGZvciBsaW5lIGJveGVzCiAg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAv
Kndhc0ZpeGVkKi8gPSAwKSBjb25zdCB7IH0KIAotICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZUZvY3Vz
UmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAgICBzdGF0aWMgRmxvYXRSZWN0IGFi
c29sdXRlQm91bmRpbmdCb3hSZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2UqKTsKIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI5MTk4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDktMjEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQgZXhwb3NlcyBpbmNvcnJlY3QgYm91bmRzIGZv
ciBlbWJlZGRlZCBTVkcgaW4gSFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYxNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKIDIwMTItMDktMjAgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9u
IHVwZGF0ZS4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgdG9wOiAxMDAwcHg7IGxlZnQ6IDEwMDBweDsgd2lkdGg6NDAwcHg7IGhlaWdodDogNDAw
cHg7IiByb2xlPSJncm91cCIgdGFiaW5kZXg9IjAiPgorCis8c3ZnPgorCisgIDxjaXJjbGUgcm9s
ZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJmYWNlIiBpZD0iZmFjZSIgcj0iMjAwIiBjeD0iMjAwIiBj
eT0iMjAwIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJ5ZWxsb3ciIC8+Cisg
IDxlbGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0ibGVmdC1leWUiIGlkPSJsZWZ0LWV5
ZSIgY3g9IjEyMCIgY3k9IjE4MCIgcng9IjE4IiByeT0iMzMiIGZpbGw9ImJsYWNrIi8+CisgIDxl
bGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0icmlnaHQtZXllIiBpZD0icmlnaHQtZXll
IiBjeD0iMjgwIiBjeT0iMTIwIiByeD0iMTgiIHJ5PSIzMyIgZmlsbD0iYmxhY2siLz4KKyAgPGVs
bGlwc2Ugcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJub3NlIiBpZD0ibm9zZSIgY3g9IjIwMCIg
Y3k9IjIyMCIgcng9IjgiIHJ5PSIxNSIgZmlsbD0iYmxhY2siLz4KKyAgPHBhdGggcm9sZT0iYnV0
dG9uIiBhcmlhLWxhYmVsPSJzbWlsZSIgaWQ9InNtaWxlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJv
a2U9ImJsYWNrIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0xMjAsMjgw
IFEyMDAsMzMwIDI5MCwyODAiLz4KKyAgPHRleHQgeD0iMCIgeT0iMTUiIGZpbGw9InJlZCI+VGVz
dDwvdGV4dD4gIAorICA8aW1hZ2UgeD0iMjAiIHk9IjIwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9Ijgw
IiBhcmlhLWxhYmVsPSJUZXN0IEltYWdlIiB4bGluazpocmVmPSJyZXNvdXJjZXMvY2FrZS5vbmci
IC8+CisKKzwvc3ZnPgorPC9kaXY+CisKKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGFjY2Vzc2liaWxpdHkg
Ym91bmRzIG9mIGVtYmVkZGVkIFNWRyBvYmplY3RzIGFyZSBjb3JyZWN0LiIpCisKKy8vIFJldHVy
biB0aGUgcGFnZSdzIHJlbGF0aXZlIGNvb3JkaW5hdGVzLiBJZiB3ZSByZWx5IG9uIHRoZSB4KCkg
b3IgeSgpIG9mIHRoZSBhY2Nlc3NpYmlsaXR5IG9iamVjdCwgdGhlbiAKKy8vIGFjY2Vzc2liaWxp
dHkgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCB0aGF0IGZhaWwgYmVjYXVzZSB0aGVyZSBpcyBubyB3
aW5kb3cgYXZhaWxhYmxlCitmdW5jdGlvbiBwYWdlWChlbGVtZW50KSB7CisgICAgcmV0dXJuIGVs
ZW1lbnQuY2xpY2tQb2ludFggLSBlbGVtZW50LndpZHRoLzI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZ
KGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1BvaW50WSAtIGVsZW1lbnQuaGVp
Z2h0LzI7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgCisg
ICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50LmNo
aWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisKKyAgICB2YXIgeCA9IHBhZ2VYKGNvbnRh
aW5lcikgLSAxOworICAgIHZhciB5ID0gcGFnZVkoY29udGFpbmVyKSAtIDE7CisKKyAgICBkZWJ1
ZygiY29udGFpbmVyIGxvY2F0aW9uOiAoIiArIHggKyAiLCAiICsgeSArICIpIik7CisKKyAgICB2
YXIgZmFjZSA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7CisgICAgZGVidWcoJ0ZhY2Ugcm9s
ZTogJyArIGZhY2Uucm9sZSk7CisgICAgZGVidWcoJ0ZhY2UgbGFiZWw6ICcgKyBmYWNlLmRlc2Ny
aXB0aW9uKTsKKyAgICBkZWJ1ZygnRmFjZVg6ICcgKyAocGFnZVgoZmFjZSkgLSB4KSk7CisgICAg
ZGVidWcoJ0ZhY2VZOiAnICsgTWF0aC5hYnMocGFnZVkoZmFjZSkgLSB5KSk7CisgICAgZGVidWco
Jzxicj4nKTsKKworICAgIHZhciBleWUgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDEpOworICAg
IGRlYnVnKCdFeWUgcm9sZTogJyArIGV5ZS5yb2xlKTsKKyAgICBkZWJ1ZygnRXllIGxhYmVsOiAn
ICsgZXllLmRlc2NyaXB0aW9uKTsKKyAgICBkZWJ1ZygnRXllWDogJyArIChwYWdlWChleWUpIC0g
eCkpOworICAgIGRlYnVnKCdFeWVZOiAnICsgTWF0aC5hYnMocGFnZVkoZXllKSAtIHkpKTsKKyAg
ICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIG5vc2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4
KDMpOworICAgIGRlYnVnKCdOb3NlIHJvbGU6ICcgKyBub3NlLnJvbGUpOworICAgIGRlYnVnKCdO
b3NlIGxhYmVsOiAnICsgbm9zZS5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ05vc2VYOiAnICsg
KHBhZ2VYKG5vc2UpIC0geCkpOworICAgIGRlYnVnKCdOb3NlWTogJyArIE1hdGguYWJzKHBhZ2VZ
KG5vc2UpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgbW91dGggPSBjb250
YWluZXIuY2hpbGRBdEluZGV4KDQpOworICAgIGRlYnVnKCdNb3V0aCByb2xlOiAnICsgbW91dGgu
cm9sZSk7CisgICAgZGVidWcoJ01vdXRoIGxhYmVsOiAnICsgbW91dGguZGVzY3JpcHRpb24pOwor
ICAgIGRlYnVnKCdNb3V0aFg6ICcgKyAocGFnZVgobW91dGgpIC0geCkpOworICAgIGRlYnVnKCdN
b3V0aFk6ICcgKyBNYXRoLmFicyhwYWdlWShtb3V0aCkgLSB5KSk7CisgICAgZGVidWcoJzxicj4n
KTsKKworICAgIHZhciB0ZXh0ID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCg1KS5jaGlsZEF0SW5k
ZXgoMCk7CisgICAgZGVidWcoJ1RleHQgcm9sZTogJyArIHRleHQucm9sZSk7CisgICAgZGVidWco
J1RleHRYOiAnICsgKHBhZ2VYKHRleHQpIC0geCkpOworICAgIGRlYnVnKCdUZXh0WTogJyArIE1h
dGguYWJzKHBhZ2VZKHRleHQpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIg
aW1hZ2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDYpOworICAgIGRlYnVnKCdJbWFnZSByb2xl
OiAnICsgaW1hZ2Uucm9sZSk7CisgICAgZGVidWcoJ0ltYWdlIGxhYmVsOiAnICsgaW1hZ2UuZGVz
Y3JpcHRpb24pOworICAgIGRlYnVnKCdJbWFnZVg6ICcgKyAocGFnZVgoaW1hZ2UpIC0geCkpOwor
ICAgIGRlYnVnKCdJbWFnZVk6ICcgKyBNYXRoLmFicyhwYWdlWShpbWFnZSkgLSB5KSk7Cit9CisK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5k
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NCBAQAorVGVzdAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGFjY2Vzc2liaWxpdHkgYm91
bmRzIG9mIGVtYmVkZGVkIFNWRyBvYmplY3RzIGFyZSBjb3JyZWN0LgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworY29udGFpbmVyIGxvY2F0aW9uOiAoMTAwNywgMTAwNykKK0ZhY2Ug
cm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRmFjZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogZmFjZQor
RmFjZVg6IDAKK0ZhY2VZOiAwCisKKworRXllIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK0V5ZSBs
YWJlbDogQVhEZXNjcmlwdGlvbjogbGVmdC1leWUKK0V5ZVg6IDEwMworRXllWTogMTQ4CisKKwor
Tm9zZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitOb3NlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBu
b3NlCitOb3NlWDogMTkzCitOb3NlWTogMjA2CisKKworTW91dGggcm9sZTogQVhSb2xlOiBBWEJ1
dHRvbgorTW91dGggbGFiZWw6IEFYRGVzY3JpcHRpb246IHNtaWxlCitNb3V0aFg6IDExNQorTW91
dGhZOiAyNzQuNQorCisKK1RleHQgcm9sZTogQVhSb2xlOiBBWFN0YXRpY1RleHQKK1RleHRYOiAw
LjUKK1RleHRZOiAyCisKKworSW1hZ2Ugcm9sZTogQVhSb2xlOiBBWEltYWdlCitJbWFnZSBsYWJl
bDogQVhEZXNjcmlwdGlvbjogVGVzdCBJbWFnZQorSW1hZ2VYOiAyMQorSW1hZ2VZOiAyMQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>
<flag name="review"
          id="177111"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="177121"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165185</attachid>
            <date>2012-09-21 13:57:28 -0700</date>
            <delta_ts>2012-09-21 13:57:28 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>p1</filename>
            <type>text/plain</type>
            <size>9372</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTI1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBleHBv
c2VzIGluY29ycmVjdCBib3VuZHMgZm9yIGVtYmVkZGVkIFNWRyBpbiBIVE1MCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjE2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIE92ZXJyaWRlIGFic29sdXRlRm9jdXNS
aW5nUXVhZHMoKSBmb3IgU1ZHIG9iamVjdHMgYmVjYXVzZSB0aGUgZGVmYXVsdAorICAgICAgICBp
bXBsZW1lbnRhdGlvbiByZWxpZXMgb24gYWRkRm9jdXNSaW5nUmVjdHMoKS4gSW4gYWRkRm9jdXNS
aW5nUmVjdHMoKSwgU1ZHIAorICAgICAgICBvYmplY3RzIGFkZHMgbG9jYWwgcG9zaXRpb25zIGZv
ciBpdHMgcmVjdHMgaW5zdGVhZCBvZiBhYnNvbHV0ZSBwb3NpdGlvbnMuCisKKyAgICAgICAgVGVz
dDogYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1
YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6Cisg
ICAgICAgIChSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisKIDIwMTItMDktMjEgIFNpbW9uIEhhdXNt
YW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjkyNDguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCShyZXZpc2lvbiAxMjkyNTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDYgKzcyLDcgQEAKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBtZXRob2Qgc2hv
dWxkIG5ldmVyIGJlIGNhbGxlZCwgU1ZHIHVzZXMgYSBkaWZmZXJlbnQgbm9kZUF0UG9pbnQgbWV0
aG9kCiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMjkyNTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwxMyBAQAogICAgIHJldHVybiByZW5kZXJlci0+aXNTVkdT
aGFwZSgpIHx8IHJlbmRlcmVyLT5pc1NWR1RleHQoKSB8fCByZW5kZXJlci0+aXNTVkdJbWFnZSgp
IHx8IHJlbmRlcmVyLT5ub2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZyk7CiB9CiAK
Ky8vIFRoZSBTVkcgYWRkRm9jdXNSaW5nUmVjdHMoKSBtZXRob2QgYWRkcyByZWN0cyBpbiBsb2Nh
bCBjb29yZGluYXRlcyBzbyB0aGUgZGVmYXVsdCBhYnNvbHV0ZUZvY3VzUmluZ1F1YWRzCisvLyBy
ZXR1cm5zIGluY29ycmVjdCB2YWx1ZXMgZm9yIFNWRyBvYmplY3RzLiBPdmVycmlkaW5nIHRoaXMg
bWV0aG9kIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYWJzb2x1dGUgYm91bmRzLgordm9pZCBSZW5k
ZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMpCit7CisgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRR
dWFkKHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKSk7Cit9CisgICAgCiBib29sIFJl
bmRlclNWR01vZGVsT2JqZWN0OjpjaGVja0ludGVyc2VjdGlvbihSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFyZW5kZXJlciB8fCByZW5k
ZXJlci0+c3R5bGUoKS0+cG9pbnRlckV2ZW50cygpID09IFBFX05PTkUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMjkyNTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
NCw3ICs3MjQsNyBAQAogICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRl
IGNvb3JkcyBmb3IgbGluZSBib3hlcwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgY29uc3QgeyB9CiAKLSAg
ICB2b2lkIGFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwog
CiAgICAgc3RhdGljIEZsb2F0UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEZvclJhbmdlKGNv
bnN0IFJhbmdlKik7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTI1MCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTIxICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGV4
cG9zZXMgaW5jb3JyZWN0IGJvdW5kcyBmb3IgZW1iZWRkZWQgU1ZHIGluIEhUTUwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3N2Zy1i
b3VuZHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDktMjEgIEpvYW5tYXJpZSBEaWdncyAgPGpk
aWdnc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMjc4ODIpOiBhY2Nlc3Np
YmlsaXR5L3NwaW5idXR0b24tdmFsdWUuaHRtbCBmYWlsaW5nIG9uIEdUSwpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAx
MjkyNTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzkzLDYgKzEzOTMsNyBAQAogY3JidWcuY29tLzEwMzIyIGFj
Y2Vzc2liaWxpdHkvdHJhbnNmb3JtZWQtZWxlbWVudC5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20v
MTAzMjIgYWNjZXNzaWJpbGl0eS92aXNpYmxlLWVsZW1lbnRzLmh0bWwgWyBTa2lwIF0KIAord2Vi
a2l0Lm9yZy9iLzk3MzU5IGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvNzM5MTIgYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXRleHQuaHRtbCBb
IFNraXAgXQogCiB3ZWJraXQub3JnL2IvNzM5MTIgYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94
LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgRmFpbHVyZSBQYXNzIF0KSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOTMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9
ImNvbnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAxMDAwcHg7IGxlZnQ6
IDEwMDBweDsgd2lkdGg6NDAwcHg7IGhlaWdodDogNDAwcHg7IiByb2xlPSJncm91cCIgdGFiaW5k
ZXg9IjAiPgorCis8c3ZnPgorCisgIDxjaXJjbGUgcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJm
YWNlIiBpZD0iZmFjZSIgcj0iMjAwIiBjeD0iMjAwIiBjeT0iMjAwIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxIiBmaWxsPSJ5ZWxsb3ciIC8+CisgIDxlbGxpcHNlIHJvbGU9ImJ1dHRvbiIg
YXJpYS1sYWJlbD0ibGVmdC1leWUiIGlkPSJsZWZ0LWV5ZSIgY3g9IjEyMCIgY3k9IjE4MCIgcng9
IjE4IiByeT0iMzMiIGZpbGw9ImJsYWNrIi8+CisgIDxlbGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJp
YS1sYWJlbD0icmlnaHQtZXllIiBpZD0icmlnaHQtZXllIiBjeD0iMjgwIiBjeT0iMTIwIiByeD0i
MTgiIHJ5PSIzMyIgZmlsbD0iYmxhY2siLz4KKyAgPGVsbGlwc2Ugcm9sZT0iYnV0dG9uIiBhcmlh
LWxhYmVsPSJub3NlIiBpZD0ibm9zZSIgY3g9IjIwMCIgY3k9IjIyMCIgcng9IjgiIHJ5PSIxNSIg
ZmlsbD0iYmxhY2siLz4KKyAgPHBhdGggcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJzbWlsZSIg
aWQ9InNtaWxlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2U9ImJsYWNrIiBmaWxsPSJub25lIiBz
dHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0xMjAsMjgwIFEyMDAsMzMwIDI5MCwyODAiLz4KKyAg
PHRleHQgeD0iMCIgeT0iMTUiIGZpbGw9InJlZCI+VGVzdDwvdGV4dD4gIAorICA8aW1hZ2UgeD0i
MjAiIHk9IjIwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjgwIiBhcmlhLWxhYmVsPSJUZXN0IEltYWdl
IiB4bGluazpocmVmPSJyZXNvdXJjZXMvY2FrZS5vbmciIC8+CisKKzwvc3ZnPgorPC9kaXY+CisK
KworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IGVuc3VyZXMgdGhlIGFjY2Vzc2liaWxpdHkgYm91bmRzIG9mIGVtYmVkZGVkIFNWRyBv
YmplY3RzIGFyZSBjb3JyZWN0LiIpCisKKy8vIFJldHVybiB0aGUgcGFnZSdzIHJlbGF0aXZlIGNv
b3JkaW5hdGVzLiBJZiB3ZSByZWx5IG9uIHRoZSB4KCkgb3IgeSgpIG9mIHRoZSBhY2Nlc3NpYmls
aXR5IG9iamVjdCwgdGhlbiAKKy8vIGFjY2Vzc2liaWxpdHkgdHJhbnNmb3JtcyBhcmUgYXBwbGll
ZCB0aGF0IGZhaWwgYmVjYXVzZSB0aGVyZSBpcyBubyB3aW5kb3cgYXZhaWxhYmxlCitmdW5jdGlv
biBwYWdlWChlbGVtZW50KSB7CisgICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2ludFggLSBlbGVt
ZW50LndpZHRoLzI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZKGVsZW1lbnQpIHsKKyAgICByZXR1cm4g
ZWxlbWVudC5jbGlja1BvaW50WSAtIGVsZW1lbnQuaGVpZ2h0LzI7Cit9CisKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgCisgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5k
ZXgoMCk7CisKKyAgICB2YXIgeCA9IHBhZ2VYKGNvbnRhaW5lcikgLSAxOworICAgIHZhciB5ID0g
cGFnZVkoY29udGFpbmVyKSAtIDE7CisKKyAgICBkZWJ1ZygiY29udGFpbmVyIGxvY2F0aW9uOiAo
IiArIHggKyAiLCAiICsgeSArICIpIik7CisKKyAgICB2YXIgZmFjZSA9IGNvbnRhaW5lci5jaGls
ZEF0SW5kZXgoMCk7CisgICAgZGVidWcoJ0ZhY2Ugcm9sZTogJyArIGZhY2Uucm9sZSk7CisgICAg
ZGVidWcoJ0ZhY2UgbGFiZWw6ICcgKyBmYWNlLmRlc2NyaXB0aW9uKTsKKyAgICBkZWJ1ZygnRmFj
ZVg6ICcgKyAocGFnZVgoZmFjZSkgLSB4KSk7CisgICAgZGVidWcoJ0ZhY2VZOiAnICsgTWF0aC5h
YnMocGFnZVkoZmFjZSkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsKKworICAgIHZhciBleWUg
PSBjb250YWluZXIuY2hpbGRBdEluZGV4KDEpOworICAgIGRlYnVnKCdFeWUgcm9sZTogJyArIGV5
ZS5yb2xlKTsKKyAgICBkZWJ1ZygnRXllIGxhYmVsOiAnICsgZXllLmRlc2NyaXB0aW9uKTsKKyAg
ICBkZWJ1ZygnRXllWDogJyArIChwYWdlWChleWUpIC0geCkpOworICAgIGRlYnVnKCdFeWVZOiAn
ICsgTWF0aC5hYnMocGFnZVkoZXllKSAtIHkpKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAg
dmFyIG5vc2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDMpOworICAgIGRlYnVnKCdOb3NlIHJv
bGU6ICcgKyBub3NlLnJvbGUpOworICAgIGRlYnVnKCdOb3NlIGxhYmVsOiAnICsgbm9zZS5kZXNj
cmlwdGlvbik7CisgICAgZGVidWcoJ05vc2VYOiAnICsgKHBhZ2VYKG5vc2UpIC0geCkpOworICAg
IGRlYnVnKCdOb3NlWTogJyArIE1hdGguYWJzKHBhZ2VZKG5vc2UpIC0geSkpOworICAgIGRlYnVn
KCc8YnI+Jyk7CisKKyAgICB2YXIgbW91dGggPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDQpOwor
ICAgIGRlYnVnKCdNb3V0aCByb2xlOiAnICsgbW91dGgucm9sZSk7CisgICAgZGVidWcoJ01vdXRo
IGxhYmVsOiAnICsgbW91dGguZGVzY3JpcHRpb24pOworICAgIGRlYnVnKCdNb3V0aFg6ICcgKyAo
cGFnZVgobW91dGgpIC0geCkpOworICAgIGRlYnVnKCdNb3V0aFk6ICcgKyBNYXRoLmFicyhwYWdl
WShtb3V0aCkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsKKworICAgIHZhciB0ZXh0ID0gY29u
dGFpbmVyLmNoaWxkQXRJbmRleCg1KS5jaGlsZEF0SW5kZXgoMCk7CisgICAgZGVidWcoJ1RleHQg
cm9sZTogJyArIHRleHQucm9sZSk7CisgICAgZGVidWcoJ1RleHRYOiAnICsgKHBhZ2VYKHRleHQp
IC0geCkpOworICAgIGRlYnVnKCdUZXh0WTogJyArIE1hdGguYWJzKHBhZ2VZKHRleHQpIC0geSkp
OworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgaW1hZ2UgPSBjb250YWluZXIuY2hpbGRB
dEluZGV4KDYpOworICAgIGRlYnVnKCdJbWFnZSByb2xlOiAnICsgaW1hZ2Uucm9sZSk7CisgICAg
ZGVidWcoJ0ltYWdlIGxhYmVsOiAnICsgaW1hZ2UuZGVzY3JpcHRpb24pOworICAgIGRlYnVnKCdJ
bWFnZVg6ICcgKyAocGFnZVgoaW1hZ2UpIC0geCkpOworICAgIGRlYnVnKCdJbWFnZVk6ICcgKyBN
YXRoLmFicyhwYWdlWShpbWFnZSkgLSB5KSk7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvc3ZnLWJvdW5kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorVGVzdAorVGhpcyB0
ZXN0IGVuc3VyZXMgdGhlIGFjY2Vzc2liaWxpdHkgYm91bmRzIG9mIGVtYmVkZGVkIFNWRyBvYmpl
Y3RzIGFyZSBjb3JyZWN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworY29udGFp
bmVyIGxvY2F0aW9uOiAoMTAwNywgMTAwNykKK0ZhY2Ugcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgor
RmFjZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogZmFjZQorRmFjZVg6IDAKK0ZhY2VZOiAwCisKKwor
RXllIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK0V5ZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogbGVm
dC1leWUKK0V5ZVg6IDEwMworRXllWTogMTQ4CisKKworTm9zZSByb2xlOiBBWFJvbGU6IEFYQnV0
dG9uCitOb3NlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBub3NlCitOb3NlWDogMTkzCitOb3NlWTog
MjA2CisKKworTW91dGggcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorTW91dGggbGFiZWw6IEFYRGVz
Y3JpcHRpb246IHNtaWxlCitNb3V0aFg6IDExNQorTW91dGhZOiAyNzQuNQorCisKK1RleHQgcm9s
ZTogQVhSb2xlOiBBWFN0YXRpY1RleHQKK1RleHRYOiAwLjUKK1RleHRZOiAyCisKKworSW1hZ2Ug
cm9sZTogQVhSb2xlOiBBWEltYWdlCitJbWFnZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogVGVzdCBJ
bWFnZQorSW1hZ2VYOiAyMQorSW1hZ2VZOiAyMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>