<?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>100718</bug_id>
          
          <creation_ts>2012-10-29 18:30:22 -0700</creation_ts>
          <short_desc>Invalidate non-composited content host when page scale factor changes</short_desc>
          <delta_ts>2012-11-25 22:09:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tien-Ren Chen">trchen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>klobag</cc>
    
    <cc>leviw</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753919</commentid>
    <comment_count>0</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-10-29 18:30:22 -0700</bug_when>
    <thetext>Invalidate non-composited content host when page scale factor changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753920</commentid>
    <comment_count>1</comment_count>
      <attachid>171355</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-10-29 18:31:06 -0700</bug_when>
    <thetext>Created attachment 171355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753923</commentid>
    <comment_count>2</comment_count>
      <attachid>171355</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-29 18:34:38 -0700</bug_when>
    <thetext>Comment on attachment 171355
Patch

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

Needs a test.

&gt; Source/WebKit/chromium/ChangeLog:11
&gt; +        a special case since it doesn&apos;t get notified by the WebCore::Page.

Why is that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753925</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-29 18:35:39 -0700</bug_when>
    <thetext>In Page::setPageScaleFactor() I see a setNeedsLayout(true) followed by a recalcStyle(Node::Force) - I would definitely expect this sequence to generate quite a few invalidations on the non composited content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753935</commentid>
    <comment_count>4</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-10-29 18:59:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; In Page::setPageScaleFactor() I see a setNeedsLayout(true) followed by a recalcStyle(Node::Force) - I would definitely expect this sequence to generate quite a few invalidations on the non composited content.

The RenderObject do generate a bunch of invalidation, but I doubt they&apos;re not redirected to the non-composited content layer (the contents are supposed to be on RenderView layer).

The only invalidation non-composited content layer gets is a rect of size of the CSS viewport, scaled by the page scale factor. I don&apos;t exactly know where does this rect come from, probably the size of RenderView(= size of CSS viewport), then wrongfully scaled with page scale factor. However even if it&apos;s correctly unscaled, it&apos;s still not suffice as the compositor can scroll the layer to expose the parts that are not repainted. We can observe that on the low-res preview when pinch zooming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753959</commentid>
    <comment_count>5</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-10-29 20:22:20 -0700</bug_when>
    <thetext>This change is hard to test -- with layout tests you don&apos;t have enough control over paint timing, and with unit tests you can&apos;t check the pixels.  Moreover, the class of problem it&apos;s fixing will become moot when we transition to the page-scale-applied-in-compositor model (at which point we can test this stuff entirely in cc_unittests).  So unless you can suggest some straightforward way to test it, I&apos;d argue we should land without test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753971</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-29 20:50:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; In Page::setPageScaleFactor() I see a setNeedsLayout(true) followed by a recalcStyle(Node::Force) - I would definitely expect this sequence to generate quite a few invalidations on the non composited content.
&gt; 
&gt; The RenderObject do generate a bunch of invalidation, but I doubt they&apos;re not redirected to the non-composited content layer (the contents are supposed to be on RenderView layer).

Where do you think they go?  All RenderObject invalidations go either to the non-composited content host or to a descendant composited layer.

&gt; 
&gt; The only invalidation non-composited content layer gets is a rect of size of the CSS viewport, scaled by the page scale factor. I don&apos;t exactly know where does this rect come from, probably the size of RenderView(= size of CSS viewport), then wrongfully scaled with page scale factor. However even if it&apos;s correctly unscaled, it&apos;s still not suffice as the compositor can scroll the layer to expose the parts that are not repainted. We can observe that on the low-res preview when pinch zooming.

Sounds like something is getting clipped incorrectly, then.  We&apos;ve taken some care to make sure that invalidations that should cover areas outside the currently visible viewport aren&apos;t clipped out, so if this is working incorrectly here we should track it down and fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753972</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-29 20:51:04 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This change is hard to test -- with layout tests you don&apos;t have enough control over paint timing, and with unit tests you can&apos;t check the pixels.  Moreover, the class of problem it&apos;s fixing will become moot when we transition to the page-scale-applied-in-compositor model (at which point we can test this stuff entirely in cc_unittests).  So unless you can suggest some straightforward way to test it, I&apos;d argue we should land without test.

In a layout test you have 100% control over paint timing - the harness paints when you call testRunner.display() or when the test ends and at no other time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761323</commentid>
    <comment_count>8</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-07 21:22:23 -0800</bug_when>
    <thetext>After carefully examining the whole invalidation process, I think this is the proper fix.

The story goes like this:
1. WebViewImpl::setPageScaleFactor calls Page::setPageScaleFactor, which calls document-&gt;recalcStyle(Node::Force) to update the transform.
2. During the style update, RenderObject::setStyle detects the transform change on the RenderView. Since it is only a transform change, repaint is not needed (StyleDifferenceRecompositeLayer).
3. Supposedly if the compositor wants to change the contents scale to repaint a high-res version, it is the compositor&apos;s responsibility to invalidate the layer. The compositor actually does it, but on the RenderView layer, which is a no-op since RenderView layer is non-drawing layer because its content is stolen by the non-composited content layer.
4. Nobody tells non-composited content layer to repaint --&gt; tile busted

This phenomenon is not obvious, because some area of the non-composited content layer are still invalidated for other reasons:
1. renderView-&gt;setNeedsLayout(true)
   This line doesn&apos;t really do any change to the layout. The purpose is only to update some internal variables. Regardless, it cause the RenderView to repaint its rect, which is totally bogus as the document node doesn&apos;t represent any contents, and its rect is set to the size of layout viewport only for layout purpose.
   That is why we can see the upper left part of the layer being repainted, and the size is exactly the viewportSize*pageScaleFactor, which is the size of the RenderView after transformation.
2. The enlarged part of the layer automatically gets invalidated.
   When we pinch zoom-in, the region that was not previously inside the layer bound always get the newest contents.

Combine reason 1. and 2., that is why we can&apos;t observe the phenomenon when pageScaleFactor &gt;= 1.0 and doing zoom-in, nor when pageScaleFactor &gt;= 1.0 and have scrollOffset == (0, 0).


The conclusion is that neither the compositor or WebCore is doing anything wrong. The correct fix is to notify the non-composited content host that the RenderView transform changed, thus needs a repaint. Currently the only thing that can change RenderView transform is the pageScaleFactor, therefore I think adding a hook in WebViewImpl::setPageScaleFactor is reasonable.

Now the real question is how to test this fix. I don&apos;t think DumpRenderTree uses the NonCompositedContentHost hack. We probably need to implement a webkit_unit_tests for that. I would say it is a non-trivial task and we might need to postpone the test until other high priority bugs are fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764675</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-11-12 12:37:02 -0800</bug_when>
    <thetext>James, can we land this?  As Tien-Ren explained, we now think this is the correct fix.  To summarize what he wrote above, the key point is that changing the CSS scale doesn&apos;t cause an invalidation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770309</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-18 20:47:55 -0800</bug_when>
    <thetext>Patching this at the WebKit layer is wrong, we should fix this in WebCore.  It&apos;s not anything specific to chromium or any particular embedding of WebCore - when the page scale changes, all content on the page needs to be invalidated.  This isn&apos;t a theoretical concern - we expose a window.internals function to set the page scale from layout tests (implemented in WebCore/testing/InternalSettings.cpp) that hooks directly in to WebCore::Page.  This needs to have the same behavior as the actual product or layout tests intended to cover page scale will not actually cover all the logic we ship.

Invalidating from WebCore should be quite easy.  NCCH hosts the content that is not considered composited by WebCore (hence the name), so invalidations on the hostWindow are routed to NCCH.  Calling repaint() on root Document&apos;s RenderObject should result in a correctly-sized repaint coming out via WebCore::Chrome::invalidateContentsAndRootView().  That&apos;s how style changes (such as background color) are repainting, so if that path is not working then I would expect us to see significantly more breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770310</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-18 20:48:20 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; 3. Supposedly if the compositor wants to change the contents scale to repaint a high-res version, it is the compositor&apos;s responsibility to invalidate the layer. The compositor actually does it, but on the RenderView layer, which is a no-op since RenderView layer is non-drawing layer because its content is stolen by the non-composited content layer.

WebCore is responsible for this property, not the compositor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771015</commentid>
    <comment_count>12</comment_count>
    <who name="Grace Kloba">klobag</who>
    <bug_when>2012-11-19 14:12:23 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; 3. Supposedly if the compositor wants to change the contents scale to repaint a high-res version, it is the compositor&apos;s responsibility to invalidate the layer. The compositor actually does it, but on the RenderView layer, which is a no-op since RenderView layer is non-drawing layer because its content is stolen by the non-composited content layer.
&gt; 
&gt; WebCore is responsible for this property, not the compositor.

NonCompositedContentHost is owned by WebViewImpl in WebKit. So it seems reasonable to do the way the patch does. 

When WebCore needs to invalidate a region, it invalids a rect. This propagates to NonCompositedContentHost through WebViewImpl::invalidateRect. But when scale factor changed, we want to invalidate everything, not just the visible part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771018</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-19 14:15:42 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; 3. Supposedly if the compositor wants to change the contents scale to repaint a high-res version, it is the compositor&apos;s responsibility to invalidate the layer. The compositor actually does it, but on the RenderView layer, which is a no-op since RenderView layer is non-drawing layer because its content is stolen by the non-composited content layer.
&gt; &gt; 
&gt; &gt; WebCore is responsible for this property, not the compositor.
&gt; 
&gt; NonCompositedContentHost is owned by WebViewImpl in WebKit. So it seems reasonable to do the way the patch does. 
&gt; 
&gt; When WebCore needs to invalidate a region, it invalids a rect. This propagates to NonCompositedContentHost through WebViewImpl::invalidateRect. But when scale factor changed, we want to invalidate everything, not just the visible part.

Sure, that&apos;s fine.  That&apos;s what repaint() does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771020</commentid>
    <comment_count>14</comment_count>
    <who name="Grace Kloba">klobag</who>
    <bug_when>2012-11-19 14:20:33 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; 3. Supposedly if the compositor wants to change the contents scale to repaint a high-res version, it is the compositor&apos;s responsibility to invalidate the layer. The compositor actually does it, but on the RenderView layer, which is a no-op since RenderView layer is non-drawing layer because its content is stolen by the non-composited content layer.
&gt; &gt; &gt; 
&gt; &gt; &gt; WebCore is responsible for this property, not the compositor.
&gt; &gt; 
&gt; &gt; NonCompositedContentHost is owned by WebViewImpl in WebKit. So it seems reasonable to do the way the patch does. 
&gt; &gt; 
&gt; &gt; When WebCore needs to invalidate a region, it invalids a rect. This propagates to NonCompositedContentHost through WebViewImpl::invalidateRect. But when scale factor changed, we want to invalidate everything, not just the visible part.
&gt; 
&gt; Sure, that&apos;s fine.  That&apos;s what repaint() does.

Then can you approve the CL?

In the compositor case, the composited layers are invalidated by RenderLayerCompositor. WebViewImpl needs to take care of the NonCompositedContentHost for the full layer invalidation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771029</commentid>
    <comment_count>15</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-19 14:30:17 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Patching this at the WebKit layer is wrong, we should fix this in WebCore.  It&apos;s not anything specific to chromium or any particular embedding of WebCore - when the page scale changes, all content on the page needs to be invalidated.  

It is true that when the page scale changes we need to issue a redraw, and we also need to repaint all layers that have contents scale changed. Both are happening correctly. The only exception is NCCH for the reason I explained in previous post.

It is indeed a chromium problem -- only chromium has this NCCH layer that steals contents from RenderView. If it&apos;s the embedder who re-route the painting to a different layer, then it&apos;s also the embedder&apos;s responsibility to re-route the invalidation.

&gt; This isn&apos;t a theoretical concern - we expose a window.internals function to set the page scale from layout tests (implemented in WebCore/testing/InternalSettings.cpp) that hooks directly in to WebCore::Page.  This needs to have the same behavior as the actual product or layout tests intended to cover page scale will not actually cover all the logic we ship.

DumpRenderTree doesn&apos;t use NCCH if my memory is correct.

&gt; Invalidating from WebCore should be quite easy.  NCCH hosts the content that is not considered composited by WebCore (hence the name), so invalidations on the hostWindow are routed to NCCH.  Calling repaint() on root Document&apos;s RenderObject should result in a correctly-sized repaint coming out via WebCore::Chrome::invalidateContentsAndRootView().  That&apos;s how style changes (such as background color) are repainting, so if that path is not working then I would expect us to see significantly more breakage.

Background color change will work, because it implies a repaint. In contrast, changing transform matrix on a compositing layer doesn&apos;t need a repaint -- the compositor just has to redraw the layer using a different quad.

(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; 3. Supposedly if the compositor wants to change the contents scale to repaint a high-res version, it is the compositor&apos;s responsibility to invalidate the layer. The compositor actually does it, but on the RenderView layer, which is a no-op since RenderView layer is non-drawing layer because its content is stolen by the non-composited content layer.
&gt; 
&gt; WebCore is responsible for this property, not the compositor.

I think it&apos;s updateLayerContentsScale in layer_tree_host_common.cc
I don&apos;t see why WebCore is responsible for contents scale. With the new scaling model, WebCore should not even know about the existence of the page scale factor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771032</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-19 14:34:05 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #10)
&gt; &gt; Patching this at the WebKit layer is wrong, we should fix this in WebCore.  It&apos;s not anything specific to chromium or any particular embedding of WebCore - when the page scale changes, all content on the page needs to be invalidated.  
&gt; 
&gt; It is true that when the page scale changes we need to issue a redraw, and we also need to repaint all layers that have contents scale changed. Both are happening correctly. The only exception is NCCH for the reason I explained in previous post.
&gt; 
&gt; It is indeed a chromium problem -- only chromium has this NCCH layer that steals contents from RenderView. If it&apos;s the embedder who re-route the painting to a different layer, then it&apos;s also the embedder&apos;s responsibility to re-route the invalidation.

That&apos;s not true.  Every port with compositing has to deal with the non-composited (according to WebCore) content.

&gt; 
&gt; &gt; This isn&apos;t a theoretical concern - we expose a window.internals function to set the page scale from layout tests (implemented in WebCore/testing/InternalSettings.cpp) that hooks directly in to WebCore::Page.  This needs to have the same behavior as the actual product or layout tests intended to cover page scale will not actually cover all the logic we ship.
&gt; 
&gt; DumpRenderTree doesn&apos;t use NCCH if my memory is correct.

No, it does.

&gt; 
&gt; &gt; Invalidating from WebCore should be quite easy.  NCCH hosts the content that is not considered composited by WebCore (hence the name), so invalidations on the hostWindow are routed to NCCH.  Calling repaint() on root Document&apos;s RenderObject should result in a correctly-sized repaint coming out via WebCore::Chrome::invalidateContentsAndRootView().  That&apos;s how style changes (such as background color) are repainting, so if that path is not working then I would expect us to see significantly more breakage.
&gt; 
&gt; Background color change will work, because it implies a repaint. In contrast, changing transform matrix on a compositing layer doesn&apos;t need a repaint -- the compositor just has to redraw the layer using a different quad.

Right, but changing the page scale should generate a repaint as well.

&gt; 
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; 3. Supposedly if the compositor wants to change the contents scale to repaint a high-res version, it is the compositor&apos;s responsibility to invalidate the layer. The compositor actually does it, but on the RenderView layer, which is a no-op since RenderView layer is non-drawing layer because its content is stolen by the non-composited content layer.
&gt; &gt; 
&gt; &gt; WebCore is responsible for this property, not the compositor.
&gt; 
&gt; I think it&apos;s updateLayerContentsScale in layer_tree_host_common.cc
&gt; I don&apos;t see why WebCore is responsible for contents scale. With the new scaling model, WebCore should not even know about the existence of the page scale factor.

WebCore is responsible for the page scale factor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771181</commentid>
    <comment_count>17</comment_count>
      <attachid>175073</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-19 16:36:31 -0800</bug_when>
    <thetext>Created attachment 175073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771188</commentid>
    <comment_count>18</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-19 16:39:18 -0800</bug_when>
    <thetext>Thanks for the offline discussion. I had much misunderstanding about how non-composited contents work. :)

A new patch is uploaded. Is it the solution that you suggested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771240</commentid>
    <comment_count>19</comment_count>
      <attachid>175073</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-19 17:15:34 -0800</bug_when>
    <thetext>Comment on attachment 175073
Patch

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

&gt; Source/WebCore/page/Page.cpp:680
&gt; +    // Transform change on RenderView doesn&apos;t trigger repaint on non-composited contents

nit: end sentence with a period

&gt; Source/WebCore/page/Page.cpp:681
&gt; +    chrome()-&gt;invalidateContentsAndRootView(IntRect(LayoutRect::infiniteRect()), false);

if you go through FrameView::repaintContentRectangle or something that calls it you&apos;ll get the layout test tracking for free, since it&apos;s implemented at that layer.  I think calling repaint() on the mainFrame()-&gt;contentRenderer() will do exactly what you want (although be sure to null-check it before dereferencing it), mind checking if that&apos;s the case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771261</commentid>
    <comment_count>20</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-19 17:26:22 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 175073 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175073&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:680
&gt; &gt; +    // Transform change on RenderView doesn&apos;t trigger repaint on non-composited contents
&gt; 
&gt; nit: end sentence with a period
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:681
&gt; &gt; +    chrome()-&gt;invalidateContentsAndRootView(IntRect(LayoutRect::infiniteRect()), false);
&gt; 
&gt; if you go through FrameView::repaintContentRectangle or something that calls it you&apos;ll get the layout test tracking for free, since it&apos;s implemented at that layer.  I think calling repaint() on the mainFrame()-&gt;contentRenderer() will do exactly what you want (although be sure to null-check it before dereferencing it), mind checking if that&apos;s the case?

Nope, mainFrame()-&gt;contentRenderer()-&gt;repaint() doesn&apos;t work recursively. Thus it only repaints the RenderView -- which is a dummy element and its size is the layout viewport, but repaints nothing that overflows outside of the layout viewport.

Lets use mainFrame()-&gt;view()-&gt;repaintContentRectangle()? Do I have to do null check for both mainFrame() and mainFrame()-&gt;view()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771318</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-19 17:56:32 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (From update of attachment 175073 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175073&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/Page.cpp:680
&gt; &gt; &gt; +    // Transform change on RenderView doesn&apos;t trigger repaint on non-composited contents
&gt; &gt; 
&gt; &gt; nit: end sentence with a period
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/Page.cpp:681
&gt; &gt; &gt; +    chrome()-&gt;invalidateContentsAndRootView(IntRect(LayoutRect::infiniteRect()), false);
&gt; &gt; 
&gt; &gt; if you go through FrameView::repaintContentRectangle or something that calls it you&apos;ll get the layout test tracking for free, since it&apos;s implemented at that layer.  I think calling repaint() on the mainFrame()-&gt;contentRenderer() will do exactly what you want (although be sure to null-check it before dereferencing it), mind checking if that&apos;s the case?
&gt; 
&gt; Nope, mainFrame()-&gt;contentRenderer()-&gt;repaint() doesn&apos;t work recursively. Thus it only repaints the RenderView -- which is a dummy element and its size is the layout viewport, but repaints nothing that overflows outside of the layout viewport.
&gt; 
&gt; Lets use mainFrame()-&gt;view()-&gt;repaintContentRectangle()? Do I have to do null check for both mainFrame() and mainFrame()-&gt;view()?

OK. mainFrame() will never be null (and it&apos;s used unguarded in this function) but its view may not be there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771321</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-19 17:57:17 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; (From update of attachment 175073 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175073&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/page/Page.cpp:680
&gt; &gt; &gt; &gt; +    // Transform change on RenderView doesn&apos;t trigger repaint on non-composited contents
&gt; &gt; &gt; 
&gt; &gt; &gt; nit: end sentence with a period
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/page/Page.cpp:681
&gt; &gt; &gt; &gt; +    chrome()-&gt;invalidateContentsAndRootView(IntRect(LayoutRect::infiniteRect()), false);
&gt; &gt; &gt; 
&gt; &gt; &gt; if you go through FrameView::repaintContentRectangle or something that calls it you&apos;ll get the layout test tracking for free, since it&apos;s implemented at that layer.  I think calling repaint() on the mainFrame()-&gt;contentRenderer() will do exactly what you want (although be sure to null-check it before dereferencing it), mind checking if that&apos;s the case?
&gt; &gt; 
&gt; &gt; Nope, mainFrame()-&gt;contentRenderer()-&gt;repaint() doesn&apos;t work recursively. Thus it only repaints the RenderView -- which is a dummy element and its size is the layout viewport, but repaints nothing that overflows outside of the layout viewport.
&gt; &gt; 
&gt; &gt; Lets use mainFrame()-&gt;view()-&gt;repaintContentRectangle()? Do I have to do null check for both mainFrame() and mainFrame()-&gt;view()?
&gt; 
&gt; OK. mainFrame() will never be null (and it&apos;s used unguarded in this function) but its view may not be there.

Sorry I&apos;m wrong - a Frame&apos;s view() will never be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771349</commentid>
    <comment_count>23</comment_count>
      <attachid>175105</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-19 18:20:04 -0800</bug_when>
    <thetext>Created attachment 175105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771381</commentid>
    <comment_count>24</comment_count>
      <attachid>175105</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-19 18:50:24 -0800</bug_when>
    <thetext>Comment on attachment 175105
Patch

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

&gt; Source/WebCore/page/Page.cpp:681
&gt; +    mainFrame()-&gt;view()-&gt;repaintContentRectangle(IntRect(LayoutRect::infiniteRect()), false);

what &apos;bout just calling mainFrame()-&gt;view()-&gt;invalidateRect(..); ? I realize this doesn&apos;t go through the FrameView repaint rect tracking code today, but that seems somewhat easier to fix when we add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771382</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-19 18:51:19 -0800</bug_when>
    <thetext>I think this is close but the friending is a bit ugly.  I&apos;m going on vacation but have cc&apos;d a few folks who can hopefully help you finish this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771407</commentid>
    <comment_count>26</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-19 19:32:00 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 175105 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175105&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:681
&gt; &gt; +    mainFrame()-&gt;view()-&gt;repaintContentRectangle(IntRect(LayoutRect::infiniteRect()), false);
&gt; 
&gt; what &apos;bout just calling mainFrame()-&gt;view()-&gt;invalidateRect(..); ? I realize this doesn&apos;t go through the FrameView repaint rect tracking code today, but that seems somewhat easier to fix when we add tests.

Sounds good. Actually I considered invalidateRect() too but found it doesn&apos;t go through repaint tracking. If the you&apos;re planning to extend repaint tracking to invalidateRect(), I think it is exactly the function we want to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771409</commentid>
    <comment_count>27</comment_count>
      <attachid>175117</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-19 19:36:08 -0800</bug_when>
    <thetext>Created attachment 175117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771437</commentid>
    <comment_count>28</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-11-19 20:24:46 -0800</bug_when>
    <thetext>Adam, could you finish the review?  This bugfix is a blocker for our dev release next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771561</commentid>
    <comment_count>29</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-19 23:17:34 -0800</bug_when>
    <thetext>Why exactly can&apos;t this be tested?  Is there at least a manual test case that can be run?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772235</commentid>
    <comment_count>30</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-20 15:47:14 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Why exactly can&apos;t this be tested?  Is there at least a manual test case that can be run?

Okay it&apos;s actually not as difficult as I expected. Just managed to repro this in a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772244</commentid>
    <comment_count>31</comment_count>
      <attachid>175294</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-20 15:55:56 -0800</bug_when>
    <thetext>Created attachment 175294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772251</commentid>
    <comment_count>32</comment_count>
      <attachid>175297</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-20 15:58:37 -0800</bug_when>
    <thetext>Created attachment 175297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772266</commentid>
    <comment_count>33</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-20 16:19:20 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; Why exactly can&apos;t this be tested?  Is there at least a manual test case that can be run?
&gt; 
&gt; Okay it&apos;s actually not as difficult as I expected. Just managed to repro this in a layout test.

Does it reproduce in all ports?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772268</commentid>
    <comment_count>34</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-20 16:21:30 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #30)
&gt; &gt; (In reply to comment #29)
&gt; &gt; &gt; Why exactly can&apos;t this be tested?  Is there at least a manual test case that can be run?
&gt; &gt; 
&gt; &gt; Okay it&apos;s actually not as difficult as I expected. Just managed to repro this in a layout test.
&gt; 
&gt; Does it reproduce in all ports?

I haven&apos;t tried it other than Linux and Android, but I would guess so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772275</commentid>
    <comment_count>35</comment_count>
      <attachid>175297</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-20 16:34:26 -0800</bug_when>
    <thetext>Comment on attachment 175297
Patch

Attachment 175297 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14934422

New failing tests:
compositing/repaint/page-scale-repaint.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772343</commentid>
    <comment_count>36</comment_count>
      <attachid>175314</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-11-20 17:59:02 -0800</bug_when>
    <thetext>Created attachment 175314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773299</commentid>
    <comment_count>37</comment_count>
      <attachid>175314</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-21 14:34:07 -0800</bug_when>
    <thetext>Comment on attachment 175314
Patch

I&apos;m not an expert on this code, but from the discussion it sounds like jamesr is happy with this approach and he&apos;s not able to complete the review because he&apos;s on vacation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773307</commentid>
    <comment_count>38</comment_count>
      <attachid>175314</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 14:43:10 -0800</bug_when>
    <thetext>Comment on attachment 175314
Patch

Clearing flags on attachment: 175314

Committed r135439: &lt;http://trac.webkit.org/changeset/135439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773308</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 14:43:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775142</commentid>
    <comment_count>40</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-25 22:09:46 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 175314 [details])
&gt; I&apos;m not an expert on this code, but from the discussion it sounds like jamesr is happy with this approach and he&apos;s not able to complete the review because he&apos;s on vacation.

That&apos;s correct.  Thanks for doing the review, Adam, and for persisting and adding a test, Tien-Ren!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171355</attachid>
            <date>2012-10-29 18:31:06 -0700</date>
            <delta_ts>2012-11-19 16:36:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100718-20121029182932.patch</filename>
            <type>text/plain</type>
            <size>3296</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDBjZDdlYTliZThhNmU4OTZiYzgxNjg3YTZjZDhmNzMyMmUwMGQ3NzkuLjdiNjc1YjliYmExMzIz
NmQwYzJlMGRlMGI5YjIzMTQ4OGRlYTk2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTItMTAtMjkgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEludmFsaWRhdGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBob3N0
IHdoZW4gcGFnZSBzY2FsZSBmYWN0b3IgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNvbXBvc2l0b3IgZG9lc24ndCBpbnZhbGlkYXRl
IHRoZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIgd2hlbiBwYWdlIHNjYWxlCisgICAgICAgIGZhY3Rv
ciBjaGFuZ2VzIGlmIHRoZSBzY2FsZSBpcyBub3QgYXBwbGllZCBpbiB0aGUgY29tcG9zaXRvciAo
dGh1cyBjb250ZW50CisgICAgICAgIHNjYWxlIGRvZXNuJ3QgY2hhbmdlKS4gTm9uLWNvbXBvc2l0
ZWQgY29udGVudCBob3N0IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIGFzCisgICAgICAgIGEgc3Bl
Y2lhbCBjYXNlIHNpbmNlIGl0IGRvZXNuJ3QgZ2V0IG5vdGlmaWVkIGJ5IHRoZSBXZWJDb3JlOjpQ
YWdlLgorCisgICAgICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6ZGlkUGFnZVNjYWxlQ2hhbmdl
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5oOgorICAgICAgICAoTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFn
ZVNjYWxlRmFjdG9yKToKKwogMjAxMi0xMC0yOSAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzI4NDUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmNwcAppbmRleCAyMWI5NzI1YjBlYTVkMDBhMDhiYTM2NDE2ZTViODA1YzBmM2ZlYmUx
Li44NTg5MDNjNWJiZGY4ODYwOTdjODZlM2NhNjFlZmIxMWFjNmZkZDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHAKQEAgLTIwMSw0ICsyMDEsOSBAQCBib29sIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2hv
d1JlcGFpbnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAordm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmRpZFBhZ2VTY2Fs
ZUNoYW5nZSgpCit7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCmluZGV4IDA4ZTljNjliMmY3Y2ExZjNl
NGM4MDBlODkyMjgxOWMyZTk1NmJjYjQuLjNkYzlkOTgxYjBmMmQ4M2IxNTRlMDUwMzRhNjA0NzRh
ZjFjYmViZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHNldFZp
ZXdwb3J0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xs
UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JvbGxPcmlnaW4pOwogICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHRvcExldmVsUm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9ncmFwaGljc0xheWVyLmdldCgpOyB9CisgICAgdm9pZCBkaWRQYWdlU2NhbGVDaGFuZ2UoKTsK
IAogICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVycyhib29sKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDkzM2ZmM2FkNDAwZTE4MTc1NGZiZjg5
NTQ4NTBiNGVhYjEwMmYxYTkuLjQ5YjUwYjljZTNmOTBjYTJjNWJjZTQ2MmNhYTEyOWU2ZjcwYTFh
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI4
NzEsNiArMjg3MSwxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxv
YXQgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYlBvaW50JiBvcmlnaW4pCiAgICAgICAgIHNjcm9sbE9m
ZnNldCA9IG9mZnNldDsKICAgICB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisgICAgaWYgKHBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCkgIT0gc2NhbGVGYWN0b3IpCisgICAg
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5kaWRQYWdlU2NhbGVDaGFuZ2UoKTsKKyNl
bmRpZgogICAgIHBhZ2UoKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBzY3JvbGxP
ZmZzZXQpOwogICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQgPSB0cnVlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175073</attachid>
            <date>2012-11-19 16:36:31 -0800</date>
            <delta_ts>2012-11-19 18:20:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100718-20121119163421.patch</filename>
            <type>text/plain</type>
            <size>1629</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwYzEzYzI5ZTdmMzhi
Y2JmZGU5N2JiYzk4MmUyY2M3M2I2NzAyNy4uMjJlYWUyODU0MTIzZGZhZmJkNzEyMjRkMDM1ODhm
NDBmNjQ1MmY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTE5ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnZhbGlkYXRlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB3aGVuIHBhZ2Ugc2NhbGUgZmFjdG9yIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDcxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1cmluZyBh
IHNjYWxlIGNoYW5nZSwgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBsYXllciBkb2Vzbid0IGdldCBp
bnZhbGlkYXRlZAorICAgICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBj
aGFuZ2Ugb24gUmVuZGVyVmlldy4gTmVlZCB0byBmb3JjZQorICAgICAgICB1cGRhdGUgbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMgb3Vyc2VsZi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5lZWQg
dG8gYWRkIHRlc3RzIGluIGEgbGF0ZXIgcGF0Y2guCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKwogMjAxMi0x
MS0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGlkbERvY3VtZW50OjpjbGFzc2VzIHRvIGlkbERvY3VtZW50OjppbnRlcmZhY2VzIGluIHRo
ZSBJREwgcGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyNTA0MjE0NGVjZmJiZDFjMmUyZWU0
ZmE4YTFjNWNjMTM4YmRlMDhhLi5iZGEzN2MyZmYwMWI5OGNjMDFiNjQyYzljOTU1MjA1OTA4Mjg5
MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY3Nyw2ICs2NzcsOSBAQCB2b2lkIFBhZ2U6OnNl
dFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAog
ICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKKyAgICAvLyBUcmFuc2Zv
cm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMKKyAgICBjaHJvbWUoKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9v
dFZpZXcoSW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSksIGZhbHNlKTsKKwogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBtYWluRnJhbWUoKS0+ZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175105</attachid>
            <date>2012-11-19 18:20:04 -0800</date>
            <delta_ts>2012-11-19 19:36:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100718-20121119181754.patch</filename>
            <type>text/plain</type>
            <size>2114</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwYzEzYzI5ZTdmMzhi
Y2JmZGU5N2JiYzk4MmUyY2M3M2I2NzAyNy4uMjJlYWUyODU0MTIzZGZhZmJkNzEyMjRkMDM1ODhm
NDBmNjQ1MmY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTE5ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnZhbGlkYXRlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB3aGVuIHBhZ2Ugc2NhbGUgZmFjdG9yIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDcxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1cmluZyBh
IHNjYWxlIGNoYW5nZSwgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBsYXllciBkb2Vzbid0IGdldCBp
bnZhbGlkYXRlZAorICAgICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBj
aGFuZ2Ugb24gUmVuZGVyVmlldy4gTmVlZCB0byBmb3JjZQorICAgICAgICB1cGRhdGUgbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMgb3Vyc2VsZi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5lZWQg
dG8gYWRkIHRlc3RzIGluIGEgbGF0ZXIgcGF0Y2guCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKwogMjAxMi0x
MS0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGlkbERvY3VtZW50OjpjbGFzc2VzIHRvIGlkbERvY3VtZW50OjppbnRlcmZhY2VzIGluIHRo
ZSBJREwgcGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBkYWI0NmFlMzExNDViMzk4
ZjYwYmU4ZjQ3MzE4NmFiODRhMTNjNmM1Li45ZTU2MWZjNmNhNzUzODM5YjZlYjUwYWFmMzI2MjVl
ZDk2OTM5NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU5LDYgKzU5LDcgQEAgdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0YW1wOwogCiBjbGFzcyBGcmFtZVZpZXcg
OiBwdWJsaWMgU2Nyb2xsVmlldyB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIFBhZ2U7IC8v
IGZvciByZXBhaW50Q29udGVudFJlY3RhbmdsZSgpLgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJW
aWV3OwogICAgIGZyaWVuZCBjbGFzcyBJbnRlcm5hbHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IDI1MDQyMTQ0ZWNmYmJkMWMyZTJlZTRmYThhMWM1Y2MxMzhiZGUwOGEuLjM0ZjNmZTllZWVkZWZm
NWY1ODY4ZDA3Y2FhN2Y1OGYyNTk3MmMwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjc3LDYg
KzY3Nyw5IEBAIHZvaWQgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlLCBjb25z
dCBJbnRQb2ludCYgb3JpZ2luKQogCiAgICAgZG9jdW1lbnQtPnJlY2FsY1N0eWxlKE5vZGU6OkZv
cmNlKTsKIAorICAgIC8vIFRyYW5zZm9ybSBjaGFuZ2Ugb24gUmVuZGVyVmlldyBkb2Vzbid0IHRy
aWdnZXIgcmVwYWludCBvbiBub24tY29tcG9zaXRlZCBjb250ZW50cy4KKyAgICBtYWluRnJhbWUo
KS0+dmlldygpLT5yZXBhaW50Q29udGVudFJlY3RhbmdsZShJbnRSZWN0KExheW91dFJlY3Q6Omlu
ZmluaXRlUmVjdCgpKSwgZmFsc2UpOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIG1haW5GcmFtZSgpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175117</attachid>
            <date>2012-11-19 19:36:08 -0800</date>
            <delta_ts>2012-11-20 15:55:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100718-20121119193358.patch</filename>
            <type>text/plain</type>
            <size>1619</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwYzEzYzI5ZTdmMzhi
Y2JmZGU5N2JiYzk4MmUyY2M3M2I2NzAyNy4uMjJlYWUyODU0MTIzZGZhZmJkNzEyMjRkMDM1ODhm
NDBmNjQ1MmY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTE5ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnZhbGlkYXRlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB3aGVuIHBhZ2Ugc2NhbGUgZmFjdG9yIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDcxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1cmluZyBh
IHNjYWxlIGNoYW5nZSwgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBsYXllciBkb2Vzbid0IGdldCBp
bnZhbGlkYXRlZAorICAgICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBj
aGFuZ2Ugb24gUmVuZGVyVmlldy4gTmVlZCB0byBmb3JjZQorICAgICAgICB1cGRhdGUgbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMgb3Vyc2VsZi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5lZWQg
dG8gYWRkIHRlc3RzIGluIGEgbGF0ZXIgcGF0Y2guCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKwogMjAxMi0x
MS0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGlkbERvY3VtZW50OjpjbGFzc2VzIHRvIGlkbERvY3VtZW50OjppbnRlcmZhY2VzIGluIHRo
ZSBJREwgcGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyNTA0MjE0NGVjZmJiZDFjMmUyZWU0
ZmE4YTFjNWNjMTM4YmRlMDhhLi45ZDUzNTk3NjEyYTJhMDk1MTBlZmJiZjY1NWU1YWFkOGRhYjVl
Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY3Nyw2ICs2NzcsOSBAQCB2b2lkIFBhZ2U6OnNl
dFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAog
ICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKKyAgICAvLyBUcmFuc2Zv
cm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMuCisgICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1haW5GcmFtZSgpLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175294</attachid>
            <date>2012-11-20 15:55:56 -0800</date>
            <delta_ts>2012-11-20 15:58:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100718-20121120155344.patch</filename>
            <type>text/plain</type>
            <size>7454</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwYzEzYzI5ZTdmMzhi
Y2JmZGU5N2JiYzk4MmUyY2M3M2I2NzAyNy4uMmQ5Y2FjMzFjM2ZjMTdmYTVlNzg2YWNlMTk2ZmUz
ZTRhMDE4M2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTIwICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnZhbGlkYXRlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB3aGVuIHBhZ2Ugc2NhbGUgZmFjdG9yIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDcxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1cmluZyBh
IHNjYWxlIGNoYW5nZSwgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBsYXllciBkb2Vzbid0IGdldCBp
bnZhbGlkYXRlZAorICAgICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBj
aGFuZ2Ugb24gUmVuZGVyVmlldy4gTmVlZCB0byBmb3JjZQorICAgICAgICB1cGRhdGUgbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMgb3Vyc2VsZi4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9y
ZXBhaW50L3BhZ2Utc2NhbGUtcmVwYWludC5odG1sCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKwogMjAxMi0x
MS0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGlkbERvY3VtZW50OjpjbGFzc2VzIHRvIGlkbERvY3VtZW50OjppbnRlcmZhY2VzIGluIHRo
ZSBJREwgcGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyNTA0MjE0NGVjZmJiZDFjMmUyZWU0
ZmE4YTFjNWNjMTM4YmRlMDhhLi45ZDUzNTk3NjEyYTJhMDk1MTBlZmJiZjY1NWU1YWFkOGRhYjVl
Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY3Nyw2ICs2NzcsOSBAQCB2b2lkIFBhZ2U6OnNl
dFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAog
ICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKKyAgICAvLyBUcmFuc2Zv
cm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMuCisgICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1haW5GcmFtZSgpLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDViZDZhNTZlYmY3YmU3ZTM3Y2M3NjNkMWFh
NGNjZmNlY2M1ZGM3N2MuLjQxM2YxNDYzZWNlZDgxNGRjYTg2MzA4NzVhY2Q1MmUyOWFmN2E0NDEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0yMCAgVGllbi1SZW4gQ2hlbiAgPHRyY2hl
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW52YWxpZGF0ZSBub24tY29tcG9zaXRlZCBjb250
ZW50IGhvc3Qgd2hlbiBwYWdlIHNjYWxlIGZhY3RvciBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXJpbmcgYSBzY2FsZSBjaGFuZ2UsIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgbGF5ZXIgZG9lc24ndCBnZXQgaW52YWxpZGF0ZWQKKyAgICAg
ICAgYXV0b21hdGljYWxseSBieSB0aGUgdHJhbnNmb3JtYXRpb24gY2hhbmdlIG9uIFJlbmRlclZp
ZXcuIE5lZWQgdG8gZm9yY2UKKyAgICAgICAgdXBkYXRlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnRz
IG91cnNlbGYuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9yZXBhaW50L3BhZ2Utc2NhbGUtcmVw
YWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21w
b3NpdGluZy9yZXBhaW50L3BhZ2Utc2NhbGUtcmVwYWludC1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFn
ZS1zY2FsZS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMTEtMTkgIEppYW4g
TGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIE1hcmsgMiB0
ZXN0cyBhcyBmYWlsZWQgb24gY2hyb21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9yZXBhaW50L3BhZ2Utc2NhbGUtcmVwYWludC5odG1sIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDJk
MTZmMDQzZThjYzc0ZjRlYjE3ODAyNDdiOTU1ZmFkNDFlNTVjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQuaHRtbApA
QCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHkgc3R5bGU9Imhl
aWdodDoxMDAwMHB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKCdyZXNvdXJjZXMvZ3JpZC5wbmcnKSIg
b25sb2FkPSJydW5UZXN0KCk7Ij4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0UGFnZVNjYWxlRmFjdG9yKDAuNSwgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzxkaXYgc3R5
bGU9Ii13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7Ij48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Nv
bXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1zY2FsZS1yZXBhaW50LWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1z
Y2FsZS1yZXBhaW50LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTgwYTZhYWRkYzgxMGUzYWMw
N2E3MjQzMTMyMjdmOGRmMTk5YTc0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5NzI5CnpjbWVJ
MmVOZlZROT47JmBkZndFbiZmSykhKmMwMCZtWTBmWURyUVExd1k3KihYRXZvU2w5U1lXc0hvdSsz
KDtQKQp6PVg4XnJYcCZ7eFR0MVlXeTYwI1ZEN05kWVBoMmBkJHxUfiRBclcjfEB7akBvX2R8YUNh
PDA4VXdtYmowOXIodT8Kel9eUkt9IX10QXB5PzxYVyRIeU1+YUtufWowMDRaNXtwPzVyMEp3WSUw
TTRnPT0/dVF9KFdafWZnRmsjSXBQcihlCnpgR1I8Y2JVckB8MnN4NyR5Z3hLTzFSYW5UZjw2O08r
P1QlcFl9JnJpITFWbmcwZkdEVzEheHQtS0xFaFQwUVNmeQp6aUFBLWxObGFQZEMqckFEWnRVM0w8
KE5hS0ZDRUVyUFdMSyF7Uj1OJnJSMXduPT9+WHw9VDAtM25WMHJ3RlYjeT0KekgoZVRlRns3YSRf
dSNic3Z0cCpYdG4zNU0yXkdlfHZLU0U0V15SNUFEWGpMcTwhWSFVZ2UyJXRNWFBta2wjaD9rCnpK
JldaVER+e3xFUHtTfjU+UElibyhtdzlWZEpNMWxVPlMpZ2soLW4mLV9ee3VnPDRua0JtbnVQZVRx
RVplS34pRQp6Xn5RTCQ8blJkVl5Lb0NsbjxIS2M7RVVUfWtXUFFGaG9sYGgyJmxNWnUyTytCRnpk
WFlRQGtzZk95JmdBSEN8R0wKem1ONzc8JTYre1NAe1pBRk1vZX5DPCE0d2RSPmg/MSRtWlprMjRL
blNIeXQoYEV5TWErOypjZHdYNU1MMEY8I2BCCnphVEwrTk1Jdz0xeE9waktTK3U8M3c4SG0lbGA2
eFNqTHAqNz4qT1c8PnRwQWJtY2A+eVFCaStuWiNzbVI3N1k+VQp6aEd9RDhTaC14djVSbmYrfEVE
OUB0en5OdUYoYXdFZiNfUiZBY2RLQT8kXzRYQENtP309T1l7ejheYTNCYjg4OTgKelY9PFhHe0Uy
aCFpUmI0MGs7dmVUNFkmUHc2QG0qRDMxPzNvJTBJZFEjdyU8RC1kJV92OV44SStXRHBQVExqZGpy
CnpUS007R0ZWMF8/WTswJn4hWnxeSWFtXytiUllpRkd0cU57Yyl3MmVsaT0ySyUwZldsZlVLP3FG
VmpsazAjPUZeXwp6KXM0aVNnPWxlcDhiQGIpfEt4Xy1vdzd5LTA2ZDtQT0VjO0I3QUlmZEc0aEJw
eFAoWm10Y0skdk1EfEV6RV5lPEEKemBiIUdpQk47U0ooS1pve0o4QmZeRjlpK1okPTFTcyokQipV
REd8ek9OdSNWVGx4a19HTUBlbl9FQDZ5NEg0XnVZCnpkJFJ2P1JkMkN1a3JmWXRrPmhOYz0+e189
TV9MbnhKcX50X1JKRHNnQVU9N21vJm9nJlFSPCE7WUxJRyVhZX1+Vgp6dCYrcWFkSnVIRTNRVH4l
NTFjOF9NPXROeVdXUUBYWWMqMzhwQ0k0YzJjVmopUHd9Sl9FKyNfYTl7WUNKZXxBal8KelAzOCth
UVZXfEBvQiM+YzdSX0dRX3pBVEQwe31EUkFmOT5VK0NqZik1QlZmISZSQmpRJWVUak00Xj08NHAj
STlHCnokbWdlPkZqMGt+Mn07ZXE+PU1eYXA7UXQqcVgqZTQoUEAhJVkjY013LXJDTVRsNip4JUQl
aX4kQ2ZyKCFael5PYAp6KWk9WVZuNihHT3Z7KT1kV19hUVp4LU1DfHhhTnJVNnRPbkpaR0w2KUR8
YDM4dDtyNE55WnFIUT1UdiFhaFBzIXMKektFLVJ4PHcpeDV2Zll+RFQ/aDYjZHV6KVhEXmZrOSRa
O0BNI21hRm85MHg8aTFQP35iKT5kJTd3VEJBfUBZa349CnpZeyZlWF5QYTM/MXApd0d2cG9xNmI1
en50cmpxanUyKHtfaGNtdlVYO0g/fWBzREpGI1U5fnRYYERQUmBlUT9KPgp6QGJyU2xvTnUwcSZK
KjNWJTUkbzlLRncwWDI7Ji19M1RMRGJfVSk3XzJQcn5HR1pOVy0mVlNrMyk1WXRZVnZhOVIKejRO
UDljWmZ3WGNZeTxjenomYiVBVlhaMXJke0NndzdaMkc3cm5KYTdzOXQ8P0xNRT89ZShVKXxtJDZk
d2E8YGg8CnpjP0RAUU95cSZeVnE8e351PkshaWN2cX52VzFPQjVTQkUjPUl6VmtSblheOHNDUEdV
VjteTnFzZ3omQ3cod3hSaAp6JDImVWppKjk5YntpRTQrdElAb1BhO2tkSnRAUXdhVyR+NEUzPERY
clFQPnhAPGVAazNUN0AhKmFybihfRV5QKSMKejliU0lERmVXYzI/PGtrdkFUSmVMNGxyYE9BMVB6
M140eEJQb0UlT3FOfiFPNyhgYnNFbzR1O1pQbHF3N01WI2pKCnpMK01tOUEoQE9ONi1MbXAxVk49
MiV4TTVMNjRvWjRRXmYqaHpTfllhWk1vZ19iYlhQck1YZWN5PXE/bGR7M3dIIwp6VDh2SFpYSWBM
WmcqYDhUJDw5VkU2cld2JUA3QVFVMzc4THJmQz9PLUhsVl88UHdffiMqLU9wTTtfbnBqdUMzXkcK
emwkNFlfdHtteWF8RTRMJDc3ZDZ6UTdOZWdIdm19ND5LRTFiR01tM3YlKz94OVhxSmxMM14qPkdP
ZW5AajxeVSluCnp0IVFhcEdaMCFua28keWY+fUs0O3BlcllKLWN9KzdEWGM5UWpVUXBAWGh9eEYx
JXhfaFA9NnAkVnUjKV8pd2RWXwp6YWdeTU9ZR3BUY2FxRDt1QzxUQFlsTkE3VXtAVWNAaGpDeXhy
YGtuYmdyMTcqcG1venY9PUY5VTNqc2dCZ05iYksKel9WUFB9P2QzaEYlP3lYOEltaUllT29vWWFP
LS15UVdgfHIqQ21fZ21nQF5iNXZVdEk8WUA8LTluJGcwJHdzUH5HCnpFPystb3s8KD5eamx4ITJH
QHoreV5oMjNrMEtnbX5SZ015ZGd4X20oTW9mbyFtY2JqSGE5anFwTGdrTUBVdHxTRgp6YzdMaFVP
SyVRSEFIRVJOcitQO2F3YiV0fXJQV2A2NmVkRX5gcGZ4TC1oRnlUdVNZUkBqPCZyZittMSlgMSpa
PD4Kei1lSGZrIyMwMG5fJjk9cXJTJSVKbE5IRDx3JDVMaGUxOTFkPn1KJWVEKiRQU3cyaDJOaWsj
eEx0Z1A1a2IhKnttCnomUW5ERiR5OD9iLXg+Jm5sLUxKdnI0RE5Jd3wzeSlDP0IhfFItSiVxdk9k
TXooa3dQOTZhX2czYy1KNXxiRGt6dwp6U0wtLUlTKSM4TTxGO3IoV2Z4U2wldVdFbnhWZm00eDZm
c3lRUEZicSZTXiReT2ZubzdVOVQtKmQyRC0oXkYmUGIKejcqLWFhTk9NMmVzM0tueDxRXmtsZyp+
OGAhPlg9WGF9fj9kNUYtZlZ5dzImOGdXS3xXV3puSmIpWn5aei1oVEtyCnpNVHR9VFd2SlNrUTNA
UURuUWs4LXBnaHw7ZXtKJHZZOXtFOVIkWWN3KVB1e3w8LVEwcTtsdT9xRzxLPj0he2Ezewp6JVNa
UjN1PjRia19JQUpCViFJXz5BQiotciNWWng2JXZ3cX5uaHgoODxZdmhpZW1GaT1RdTlGaEp3PDdZ
MjJ9UDgKektGJElGN2tpJjk4I0VgP29kRlM2PE5nWk07cTM+PCNpTFFWZF5oKSojdyNBTFF0OVU5
N21NZ05lTD8rRnlUPEp0CnpsUklTe3hadHBQN1ZPXjQqTFQjUk5ROC0zaGorTSM1c28jJVEtSEk1
Yk51QVhSJFpnNnkwYnRlV05ERVIqYmNrVAp6Mkliay1gRD5FamduTWk4dGZJYlVLenl2YW9aYkZB
NEQzfDx4OEtkeTQjPTt1S3pwcWFpSzs3TUFHJHNrJkVjO2QKentAVjgzen5RZiVIe1IwJns7MG9w
KmErSio0fkxDIyphK35edyE9b2k/IWFMcTk1dz1jUFZjWjB8TWc5ZSEkdnI0CnoxYSRyQXhUYnNX
Skp6NClISndOQm1UbXhXRXdPJFY7QWU3Vz1kY3RHT00hRlRPeFcqSjlHMnEkIyFeXjNPOCt8MApX
X3ArbGI5e2YlaGZjLVN+TlphcEV8TEk+QzxuQ2t1CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21wb3NpdGlu
Zy9yZXBhaW50L3BhZ2Utc2NhbGUtcmVwYWludC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21wb3NpdGluZy9yZXBhaW50L3BhZ2Utc2NhbGUtcmVw
YWludC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3NjM3NDdjN2IwOGMzNzQ0Njk2NWY4ZWE1
NzM5YjM0ZTk2OGFjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1zY2FsZS1yZXBhaW50LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDEwMDE2Cisg
IFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDc4
NXgxMDAxNgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4MTAwMTYKKyAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXgxMDAwMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175297</attachid>
            <date>2012-11-20 15:58:37 -0800</date>
            <delta_ts>2012-11-20 17:58:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100718-20121120155625.patch</filename>
            <type>text/plain</type>
            <size>8092</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwYzEzYzI5ZTdmMzhi
Y2JmZGU5N2JiYzk4MmUyY2M3M2I2NzAyNy4uMmQ5Y2FjMzFjM2ZjMTdmYTVlNzg2YWNlMTk2ZmUz
ZTRhMDE4M2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTIwICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnZhbGlkYXRlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB3aGVuIHBhZ2Ugc2NhbGUgZmFjdG9yIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDcxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1cmluZyBh
IHNjYWxlIGNoYW5nZSwgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBsYXllciBkb2Vzbid0IGdldCBp
bnZhbGlkYXRlZAorICAgICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBj
aGFuZ2Ugb24gUmVuZGVyVmlldy4gTmVlZCB0byBmb3JjZQorICAgICAgICB1cGRhdGUgbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMgb3Vyc2VsZi4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9y
ZXBhaW50L3BhZ2Utc2NhbGUtcmVwYWludC5odG1sCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKwogMjAxMi0x
MS0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGlkbERvY3VtZW50OjpjbGFzc2VzIHRvIGlkbERvY3VtZW50OjppbnRlcmZhY2VzIGluIHRo
ZSBJREwgcGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyNTA0MjE0NGVjZmJiZDFjMmUyZWU0
ZmE4YTFjNWNjMTM4YmRlMDhhLi45ZDUzNTk3NjEyYTJhMDk1MTBlZmJiZjY1NWU1YWFkOGRhYjVl
Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY3Nyw2ICs2NzcsOSBAQCB2b2lkIFBhZ2U6OnNl
dFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAog
ICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKKyAgICAvLyBUcmFuc2Zv
cm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMuCisgICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1haW5GcmFtZSgpLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDViZDZhNTZlYmY3YmU3ZTM3Y2M3NjNkMWFh
NGNjZmNlY2M1ZGM3N2MuLmJlMWI5ZTFlZjMzYzYxNDc0MGFlZjE2NGJlN2I0NGI4NjQzNDg4Njkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMS0yMCAgVGllbi1SZW4gQ2hlbiAgPHRyY2hl
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW52YWxpZGF0ZSBub24tY29tcG9zaXRlZCBjb250
ZW50IGhvc3Qgd2hlbiBwYWdlIHNjYWxlIGZhY3RvciBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXJpbmcgYSBzY2FsZSBjaGFuZ2UsIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgbGF5ZXIgZG9lc24ndCBnZXQgaW52YWxpZGF0ZWQKKyAgICAg
ICAgYXV0b21hdGljYWxseSBieSB0aGUgdHJhbnNmb3JtYXRpb24gY2hhbmdlIG9uIFJlbmRlclZp
ZXcuIE5lZWQgdG8gZm9yY2UKKyAgICAgICAgdXBkYXRlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnRz
IG91cnNlbGYuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9yZXBhaW50L3BhZ2Utc2NhbGUtcmVw
YWludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9yZXBhaW50L3Jlc291cmNl
cy9ncmlkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29t
cG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21wb3NpdGluZy9yZXBhaW50L3Bh
Z2Utc2NhbGUtcmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTExLTE5ICBKaWFu
IExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBNYXJrIDIg
dGVzdHMgYXMgZmFpbGVkIG9uIGNocm9taXVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1zY2FsZS1yZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQy
ZDE2ZjA0M2U4Y2M3NGY0ZWIxNzgwMjQ3Yjk1NWZhZDQxZTU1YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1zY2FsZS1yZXBhaW50Lmh0bWwK
QEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IHN0eWxlPSJo
ZWlnaHQ6MTAwMDBweDtiYWNrZ3JvdW5kLWltYWdlOnVybCgncmVzb3VyY2VzL2dyaWQucG5nJyki
IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldFBhZ2VTY2FsZUZhY3RvcigwLjUsIDAsIDApOworfQorPC9zY3JpcHQ+Cis8ZGl2IHN0
eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOyI+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L3Jlc291
cmNlcy9ncmlkLnBuZyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvcmVzb3VyY2Vz
L2dyaWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjNiYTJkODQ3NmZlNDU4ZTk0YmNmNDBiZTBiMjA3YzM1
Y2Y1NmIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDIzNwp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHZwXk1qKl89MVNCV00lMEJ+QWpLeDlqUDdMZUwkLUQkfEkxNC0/aXkwV1cKemcrWjgrVmImWjhw
ZGZwUnI+YHNmOWQxcldQMWIzMG9IanJxJHI5SXk2NmdIZit8O31oMklyI0cjRkVxJGg0UmRqCnoz
PFk7ai0rPUgmSzU/TDtDe0d2MWtjaCk/dU5WcCpGeUxXdnc0UVJyYX1FIyp2Nk1hVT5IWnNiUiYz
Vm5OTCMmXwp6dT5HJWRgYE9vQC0lJTYrMWdGb2c+RW9DaFVhNnlfMTA/c2l3emUrKXIxZ0lMaDdC
Nys7LTJvYzVmaSh7fEM+U00KWCFqc1FHYl8mRzxaREhfcV4+YlAwbCtYa0t0QTxUOwoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbGludXgvY29tcG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQtZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29tcG9zaXRpbmcvcmVw
YWludC9wYWdlLXNjYWxlLXJlcGFpbnQtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ODBhNmFh
ZGRjODEwZTNhYzA3YTcyNDMxMzIyN2Y4ZGYxOTlhNzQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDk3MjkKemNtZUkyZU5mVlE5PjsmYGRmd0VuJmZLKSEqYzAwJm1ZMGZZRHJRUTF3WTcqKFhFdm9T
bDlTWVdzSG91KzMoO1ApCno9WDheclhwJnt4VHQxWVd5NjAjVkQ3TmRZUGgyYGQkfFR+JEFyVyN8
QHtqQG9fZHxhQ2E8MDhVd21iajA5cih1Pwp6X15SS30hfXRBcHk/PFhXJEh5TX5hS259ajAwNFo1
e3A/NXIwSndZJTBNNGc9PT91UX0oV1p9ZmdGayNJcFByKGUKemBHUjxjYlVyQHwyc3g3JHlneEtP
MVJhblRmPDY7Tys/VCVwWX0mcmkhMVZuZzBmR0RXMSF4dC1LTEVoVDBRU2Z5CnppQUEtbE5sYVBk
QypyQURadFUzTDwoTmFLRkNFRXJQV0xLIXtSPU4mclIxd249P35YfD1UMC0zblYwcndGViN5PQp6
SChlVGVGezdhJF91I2JzdnRwKlh0bjM1TTJeR2V8dktTRTRXXlI1QURYakxxPCFZIVVnZTIldE1Y
UG1rbCNoP2sKekomV1pURH57fEVQe1N+NT5QSWJvKG13OVZkSk0xbFU+UylnaygtbiYtX157dWc8
NG5rQm1udVBlVHFFWmVLfilFCnpeflFMJDxuUmRWXktvQ2xuPEhLYztFVVR9a1dQUUZob2xgaDIm
bE1adTJPK0JGemRYWVFAa3NmT3kmZ0FIQ3xHTAp6bU43NzwlNit7U0B7WkFGTW9lfkM8ITR3ZFI+
aD8xJG1aWmsyNEtuU0h5dChgRXlNYSs7KmNkd1g1TUwwRjwjYEIKemFUTCtOTUl3PTF4T3BqS1Mr
dTwzdzhIbSVsYDZ4U2pMcCo3PipPVzw+dHBBYm1jYD55UUJpK25aI3NtUjc3WT5VCnpoR31EOFNo
LXh2NVJuZit8RUQ5QHR6fk51Rihhd0VmI19SJkFjZEtBPyRfNFhAQ20/fT1PWXt6OF5hM0JiODg5
OAp6Vj08WEd7RTJoIWlSYjQwazt2ZVQ0WSZQdzZAbSpEMzE/M28lMElkUSN3JTxELWQlX3Y5XjhJ
K1dEcFBUTGpkanIKelRLTTtHRlYwXz9ZOzAmfiFafF5JYW1fK2JSWWlGR3RxTntjKXcyZWxpPTJL
JTBmV2xmVUs/cUZWamxrMCM9Rl5fCnopczRpU2c9bGVwOGJAYil8S3hfLW93N3ktMDZkO1BPRWM7
QjdBSWZkRzRoQnB4UChabXRjSyR2TUR8RXpFXmU8QQp6YGIhR2lCTjtTSihLWm97SjhCZl5GOWkr
WiQ9MVNzKiRCKlVER3x6T051I1ZUbHhrX0dNQGVuX0VANnk0SDRedVkKemQkUnY/UmQyQ3VrcmZZ
dGs+aE5jPT57Xz1NX0xueEpxfnRfUkpEc2dBVT03bW8mb2cmUVI8ITtZTElHJWFlfX5WCnp0Jitx
YWRKdUhFM1FUfiU1MWM4X009dE55V1dRQFhZYyozOHBDSTRjMmNWailQd31KX0UrI19hOXtZQ0pl
fEFqXwp6UDM4K2FRVld8QG9CIz5jN1JfR1FfekFURDB7fURSQWY5PlUrQ2pmKTVCVmYhJlJCalEl
ZVRqTTRePTw0cCNJOUcKeiRtZ2U+Rmowa34yfTtlcT49TV5hcDtRdCpxWCplNChQQCElWSNjTXct
ckNNVGw2KnglRCVpfiRDZnIoIVp6Xk9gCnopaT1ZVm42KEdPdnspPWRXX2FRWngtTUN8eGFOclU2
dE9uSlpHTDYpRHxgMzh0O3I0TnlacUhRPVR2IWFoUHMhcwp6S0UtUng8dyl4NXZmWX5EVD9oNiNk
dXopWEReZms5JFo7QE0jbWFGbzkweDxpMVA/fmIpPmQlN3dUQkF9QFlrfj0Kell7JmVYXlBhMz8x
cCl3R3Zwb3E2YjV6fnRyanFqdTIoe19oY212VVg7SD99YHNESkYjVTl+dFhgRFBSYGVRP0o+CnpA
YnJTbG9OdTBxJkoqM1YlNSRvOUtGdzBYMjsmLX0zVExEYl9VKTdfMlByfkdHWk5XLSZWU2szKTVZ
dFlWdmE5Ugp6NE5QOWNaZndYY1l5PGN6eiZiJUFWWFoxcmR7Q2d3N1oyRzdybkphN3M5dDw/TE1F
Pz1lKFUpfG0kNmR3YTxgaDwKemM/REBRT3lxJl5WcTx7fnU+SyFpY3ZxfnZXMU9CNVNCRSM9SXpW
a1JuWF44c0NQR1VWO15OcXNneiZDdyh3eFJoCnokMiZVamkqOTlie2lFNCt0SUBvUGE7a2RKdEBR
d2FXJH40RTM8RFhyUVA+eEA8ZUBrM1Q3QCEqYXJuKF9FXlApIwp6OWJTSURGZVdjMj88a2t2QVRK
ZUw0bHJgT0ExUHozXjR4QlBvRSVPcU5+IU83KGBic0VvNHU7WlBscXc3TVYjakoKekwrTW05QShA
T042LUxtcDFWTj0yJXhNNUw2NG9aNFFeZipoelN+WWFaTW9nX2JiWFByTVhlY3k9cT9sZHszd0gj
CnpUOHZIWlhJYExaZypgOFQkPDlWRTZyV3YlQDdBUVUzNzhMcmZDP08tSGxWXzxQd19+IyotT3BN
O19ucGp1QzNeRwp6bCQ0WV90e215YXxFNEwkNzdkNnpRN05lZ0h2bX00PktFMWJHTW0zdiUrP3g5
WHFKbEwzXio+R09lbkBqPF5VKW4KenQhUWFwR1owIW5rbyR5Zj59SzQ7cGVyWUotY30rN0RYYzlR
alVRcEBYaH14RjEleF9oUD02cCRWdSMpXyl3ZFZfCnphZ15NT1lHcFRjYXFEO3VDPFRAWWxOQTdV
e0BVY0BoakN5eHJga25iZ3IxNypwbW96dj09RjlVM2pzZ0JnTmJiSwp6X1ZQUH0/ZDNoRiU/eVg4
SW1pSWVPb29ZYU8tLXlRV2B8cipDbV9nbWdAXmI1dlV0STxZQDwtOW4kZzAkd3NQfkcKekU/Ky1v
ezwoPl5qbHghMkdAeit5XmgyM2swS2dtflJnTXlkZ3hfbShNb2ZvIW1jYmpIYTlqcXBMZ2tNQFV0
fFNGCnpjN0xoVU9LJVFIQUhFUk5yK1A7YXdiJXR9clBXYDY2ZWRFfmBwZnhMLWhGeVR1U1lSQGo8
JnJmK20xKWAxKlo8Pgp6LWVIZmsjIzAwbl8mOT1xclMlJUpsTkhEPHckNUxoZTE5MWQ+fUolZUQq
JFBTdzJoMk5payN4THRnUDVrYiEqe20KeiZRbkRGJHk4P2IteD4mbmwtTEp2cjRETkl3fDN5KUM/
QiF8Ui1KJXF2T2RNeihrd1A5NmFfZzNjLUo1fGJEa3p3CnpTTC0tSVMpIzhNPEY7cihXZnhTbCV1
V0VueFZmbTR4NmZzeVFQRmJxJlNeJF5PZm5vN1U5VC0qZDJELSheRiZQYgp6NyotYWFOT00yZXMz
S254PFFea2xnKn44YCE+WD1YYX1+P2Q1Ri1mVnl3MiY4Z1dLfFdXem5KYilaflp6LWhUS3IKek1U
dH1UV3ZKU2tRM0BRRG5RazgtcGdofDtle0okdlk5e0U5UiRZY3cpUHV7fDwtUTBxO2x1P3FHPEs+
PSF7YTN7CnolU1pSM3U+NGJrX0lBSkJWIUlfPkFCKi1yI1ZaeDYldndxfm5oeCg4PFl2aGllbUZp
PVF1OUZoSnc8N1kyMn1QOAp6S0YkSUY3a2kmOTgjRWA/b2RGUzY8TmdaTTtxMz48I2lMUVZkXmgp
KiN3I0FMUXQ5VTk3bU1nTmVMPytGeVQ8SnQKemxSSVN7eFp0cFA3Vk9eNCpMVCNSTlE4LTNoaitN
IzVzbyMlUS1ISTViTnVBWFIkWmc2eTBidGVXTkRFUipiY2tUCnoySWJrLWBEPkVqZ25NaTh0Zkli
VUt6eXZhb1piRkE0RDN8PHg4S2R5NCM9O3VLenBxYWlLOzdNQUckc2smRWM7ZAp6e0BWODN6flFm
JUh7UjAmezswb3AqYStKKjR+TEMjKmErfl53IT1vaT8hYUxxOTV3PWNQVmNaMHxNZzllISR2cjQK
ejFhJHJBeFRic1dKSno0KUhKd05CbVRteFdFd08kVjtBZTdXPWRjdEdPTSFGVE94VypKOUcycSQj
IV5eM084K3wwCldfcCtsYjl7ZiVoZmMtU35OWmFwRXxMST5DPG5Da3UKCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1zY2FsZS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFn
ZS1zY2FsZS1yZXBhaW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzc2Mzc0N2M3YjA4YzM3
NDQ2OTY1ZjhlYTU3MzliMzRlOTY4YWM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29tcG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJl
cGFpbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3
ODV4MTAwMTYKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4NXg2MDAKK2xheWVyIGF0ICgw
LDApIHNpemUgNzg1eDEwMDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4
NXgxMDAxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDEwMDAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175314</attachid>
            <date>2012-11-20 17:59:02 -0800</date>
            <delta_ts>2012-11-21 14:43:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100718-20121120175649.patch</filename>
            <type>text/plain</type>
            <size>7924</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwYzEzYzI5ZTdmMzhi
Y2JmZGU5N2JiYzk4MmUyY2M3M2I2NzAyNy4uMmQ5Y2FjMzFjM2ZjMTdmYTVlNzg2YWNlMTk2ZmUz
ZTRhMDE4M2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTIwICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnZhbGlkYXRlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB3aGVuIHBhZ2Ugc2NhbGUgZmFjdG9yIGNoYW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDcxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1cmluZyBh
IHNjYWxlIGNoYW5nZSwgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBsYXllciBkb2Vzbid0IGdldCBp
bnZhbGlkYXRlZAorICAgICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBj
aGFuZ2Ugb24gUmVuZGVyVmlldy4gTmVlZCB0byBmb3JjZQorICAgICAgICB1cGRhdGUgbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMgb3Vyc2VsZi4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9y
ZXBhaW50L3BhZ2Utc2NhbGUtcmVwYWludC5odG1sCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKwogMjAxMi0x
MS0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGlkbERvY3VtZW50OjpjbGFzc2VzIHRvIGlkbERvY3VtZW50OjppbnRlcmZhY2VzIGluIHRo
ZSBJREwgcGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyNTA0MjE0NGVjZmJiZDFjMmUyZWU0
ZmE4YTFjNWNjMTM4YmRlMDhhLi45ZDUzNTk3NjEyYTJhMDk1MTBlZmJiZjY1NWU1YWFkOGRhYjVl
Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY3Nyw2ICs2NzcsOSBAQCB2b2lkIFBhZ2U6OnNl
dFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKIAog
ICAgIGRvY3VtZW50LT5yZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CiAKKyAgICAvLyBUcmFuc2Zv
cm0gY2hhbmdlIG9uIFJlbmRlclZpZXcgZG9lc24ndCB0cmlnZ2VyIHJlcGFpbnQgb24gbm9uLWNv
bXBvc2l0ZWQgY29udGVudHMuCisgICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdChMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSkpOworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1haW5GcmFtZSgpLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDViZDZhNTZlYmY3YmU3ZTM3Y2M3NjNkMWFh
NGNjZmNlY2M1ZGM3N2MuLjdjMTkxMzA1N2ZhNDExY2RhNjZlYmQzZTQ2OGNiM2EyMGNhNGQxZjAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMS0yMCAgVGllbi1SZW4gQ2hlbiAgPHRyY2hl
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW52YWxpZGF0ZSBub24tY29tcG9zaXRlZCBjb250
ZW50IGhvc3Qgd2hlbiBwYWdlIHNjYWxlIGZhY3RvciBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXJpbmcgYSBzY2FsZSBjaGFuZ2UsIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgbGF5ZXIgZG9lc24ndCBnZXQgaW52YWxpZGF0ZWQKKyAgICAg
ICAgYXV0b21hdGljYWxseSBieSB0aGUgdHJhbnNmb3JtYXRpb24gY2hhbmdlIG9uIFJlbmRlclZp
ZXcuIE5lZWQgdG8gZm9yY2UKKyAgICAgICAgdXBkYXRlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnRz
IG91cnNlbGYuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9yZXBhaW50L3BhZ2Utc2NhbGUtcmVw
YWludC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQv
cGFnZS1zY2FsZS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9z
aXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
Y29tcG9zaXRpbmcvcmVwYWludC9yZXNvdXJjZXMvZ3JpZC5wbmc6IEFkZGVkLgorCiAyMDEyLTEx
LTE5ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LiBNYXJrIDIgdGVzdHMgYXMgZmFpbGVkIG9uIGNocm9taXVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQtZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQtZXhw
ZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ODBhNmFhZGRjODEwZTNhYzA3YTcyNDMxMzIyN2Y4ZGYx
OTlhNzQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk3MjkKemNtZUkyZU5mVlE5PjsmYGRmd0Vu
JmZLKSEqYzAwJm1ZMGZZRHJRUTF3WTcqKFhFdm9TbDlTWVdzSG91KzMoO1ApCno9WDheclhwJnt4
VHQxWVd5NjAjVkQ3TmRZUGgyYGQkfFR+JEFyVyN8QHtqQG9fZHxhQ2E8MDhVd21iajA5cih1Pwp6
X15SS30hfXRBcHk/PFhXJEh5TX5hS259ajAwNFo1e3A/NXIwSndZJTBNNGc9PT91UX0oV1p9ZmdG
ayNJcFByKGUKemBHUjxjYlVyQHwyc3g3JHlneEtPMVJhblRmPDY7Tys/VCVwWX0mcmkhMVZuZzBm
R0RXMSF4dC1LTEVoVDBRU2Z5CnppQUEtbE5sYVBkQypyQURadFUzTDwoTmFLRkNFRXJQV0xLIXtS
PU4mclIxd249P35YfD1UMC0zblYwcndGViN5PQp6SChlVGVGezdhJF91I2JzdnRwKlh0bjM1TTJe
R2V8dktTRTRXXlI1QURYakxxPCFZIVVnZTIldE1YUG1rbCNoP2sKekomV1pURH57fEVQe1N+NT5Q
SWJvKG13OVZkSk0xbFU+UylnaygtbiYtX157dWc8NG5rQm1udVBlVHFFWmVLfilFCnpeflFMJDxu
UmRWXktvQ2xuPEhLYztFVVR9a1dQUUZob2xgaDImbE1adTJPK0JGemRYWVFAa3NmT3kmZ0FIQ3xH
TAp6bU43NzwlNit7U0B7WkFGTW9lfkM8ITR3ZFI+aD8xJG1aWmsyNEtuU0h5dChgRXlNYSs7KmNk
d1g1TUwwRjwjYEIKemFUTCtOTUl3PTF4T3BqS1MrdTwzdzhIbSVsYDZ4U2pMcCo3PipPVzw+dHBB
Ym1jYD55UUJpK25aI3NtUjc3WT5VCnpoR31EOFNoLXh2NVJuZit8RUQ5QHR6fk51Rihhd0VmI19S
JkFjZEtBPyRfNFhAQ20/fT1PWXt6OF5hM0JiODg5OAp6Vj08WEd7RTJoIWlSYjQwazt2ZVQ0WSZQ
dzZAbSpEMzE/M28lMElkUSN3JTxELWQlX3Y5XjhJK1dEcFBUTGpkanIKelRLTTtHRlYwXz9ZOzAm
fiFafF5JYW1fK2JSWWlGR3RxTntjKXcyZWxpPTJLJTBmV2xmVUs/cUZWamxrMCM9Rl5fCnopczRp
U2c9bGVwOGJAYil8S3hfLW93N3ktMDZkO1BPRWM7QjdBSWZkRzRoQnB4UChabXRjSyR2TUR8RXpF
XmU8QQp6YGIhR2lCTjtTSihLWm97SjhCZl5GOWkrWiQ9MVNzKiRCKlVER3x6T051I1ZUbHhrX0dN
QGVuX0VANnk0SDRedVkKemQkUnY/UmQyQ3VrcmZZdGs+aE5jPT57Xz1NX0xueEpxfnRfUkpEc2dB
VT03bW8mb2cmUVI8ITtZTElHJWFlfX5WCnp0JitxYWRKdUhFM1FUfiU1MWM4X009dE55V1dRQFhZ
YyozOHBDSTRjMmNWailQd31KX0UrI19hOXtZQ0plfEFqXwp6UDM4K2FRVld8QG9CIz5jN1JfR1Ff
ekFURDB7fURSQWY5PlUrQ2pmKTVCVmYhJlJCalElZVRqTTRePTw0cCNJOUcKeiRtZ2U+Rmowa34y
fTtlcT49TV5hcDtRdCpxWCplNChQQCElWSNjTXctckNNVGw2KnglRCVpfiRDZnIoIVp6Xk9gCnop
aT1ZVm42KEdPdnspPWRXX2FRWngtTUN8eGFOclU2dE9uSlpHTDYpRHxgMzh0O3I0TnlacUhRPVR2
IWFoUHMhcwp6S0UtUng8dyl4NXZmWX5EVD9oNiNkdXopWEReZms5JFo7QE0jbWFGbzkweDxpMVA/
fmIpPmQlN3dUQkF9QFlrfj0Kell7JmVYXlBhMz8xcCl3R3Zwb3E2YjV6fnRyanFqdTIoe19oY212
VVg7SD99YHNESkYjVTl+dFhgRFBSYGVRP0o+CnpAYnJTbG9OdTBxJkoqM1YlNSRvOUtGdzBYMjsm
LX0zVExEYl9VKTdfMlByfkdHWk5XLSZWU2szKTVZdFlWdmE5Ugp6NE5QOWNaZndYY1l5PGN6eiZi
JUFWWFoxcmR7Q2d3N1oyRzdybkphN3M5dDw/TE1FPz1lKFUpfG0kNmR3YTxgaDwKemM/REBRT3lx
Jl5WcTx7fnU+SyFpY3ZxfnZXMU9CNVNCRSM9SXpWa1JuWF44c0NQR1VWO15OcXNneiZDdyh3eFJo
CnokMiZVamkqOTlie2lFNCt0SUBvUGE7a2RKdEBRd2FXJH40RTM8RFhyUVA+eEA8ZUBrM1Q3QCEq
YXJuKF9FXlApIwp6OWJTSURGZVdjMj88a2t2QVRKZUw0bHJgT0ExUHozXjR4QlBvRSVPcU5+IU83
KGBic0VvNHU7WlBscXc3TVYjakoKekwrTW05QShAT042LUxtcDFWTj0yJXhNNUw2NG9aNFFeZipo
elN+WWFaTW9nX2JiWFByTVhlY3k9cT9sZHszd0gjCnpUOHZIWlhJYExaZypgOFQkPDlWRTZyV3Yl
QDdBUVUzNzhMcmZDP08tSGxWXzxQd19+IyotT3BNO19ucGp1QzNeRwp6bCQ0WV90e215YXxFNEwk
NzdkNnpRN05lZ0h2bX00PktFMWJHTW0zdiUrP3g5WHFKbEwzXio+R09lbkBqPF5VKW4KenQhUWFw
R1owIW5rbyR5Zj59SzQ7cGVyWUotY30rN0RYYzlRalVRcEBYaH14RjEleF9oUD02cCRWdSMpXyl3
ZFZfCnphZ15NT1lHcFRjYXFEO3VDPFRAWWxOQTdVe0BVY0BoakN5eHJga25iZ3IxNypwbW96dj09
RjlVM2pzZ0JnTmJiSwp6X1ZQUH0/ZDNoRiU/eVg4SW1pSWVPb29ZYU8tLXlRV2B8cipDbV9nbWdA
XmI1dlV0STxZQDwtOW4kZzAkd3NQfkcKekU/Ky1vezwoPl5qbHghMkdAeit5XmgyM2swS2dtflJn
TXlkZ3hfbShNb2ZvIW1jYmpIYTlqcXBMZ2tNQFV0fFNGCnpjN0xoVU9LJVFIQUhFUk5yK1A7YXdi
JXR9clBXYDY2ZWRFfmBwZnhMLWhGeVR1U1lSQGo8JnJmK20xKWAxKlo8Pgp6LWVIZmsjIzAwbl8m
OT1xclMlJUpsTkhEPHckNUxoZTE5MWQ+fUolZUQqJFBTdzJoMk5payN4THRnUDVrYiEqe20KeiZR
bkRGJHk4P2IteD4mbmwtTEp2cjRETkl3fDN5KUM/QiF8Ui1KJXF2T2RNeihrd1A5NmFfZzNjLUo1
fGJEa3p3CnpTTC0tSVMpIzhNPEY7cihXZnhTbCV1V0VueFZmbTR4NmZzeVFQRmJxJlNeJF5PZm5v
N1U5VC0qZDJELSheRiZQYgp6NyotYWFOT00yZXMzS254PFFea2xnKn44YCE+WD1YYX1+P2Q1Ri1m
Vnl3MiY4Z1dLfFdXem5KYilaflp6LWhUS3IKek1UdH1UV3ZKU2tRM0BRRG5RazgtcGdofDtle0ok
dlk5e0U5UiRZY3cpUHV7fDwtUTBxO2x1P3FHPEs+PSF7YTN7CnolU1pSM3U+NGJrX0lBSkJWIUlf
PkFCKi1yI1ZaeDYldndxfm5oeCg4PFl2aGllbUZpPVF1OUZoSnc8N1kyMn1QOAp6S0YkSUY3a2km
OTgjRWA/b2RGUzY8TmdaTTtxMz48I2lMUVZkXmgpKiN3I0FMUXQ5VTk3bU1nTmVMPytGeVQ8SnQK
emxSSVN7eFp0cFA3Vk9eNCpMVCNSTlE4LTNoaitNIzVzbyMlUS1ISTViTnVBWFIkWmc2eTBidGVX
TkRFUipiY2tUCnoySWJrLWBEPkVqZ25NaTh0ZkliVUt6eXZhb1piRkE0RDN8PHg4S2R5NCM9O3VL
enBxYWlLOzdNQUckc2smRWM7ZAp6e0BWODN6flFmJUh7UjAmezswb3AqYStKKjR+TEMjKmErfl53
IT1vaT8hYUxxOTV3PWNQVmNaMHxNZzllISR2cjQKejFhJHJBeFRic1dKSno0KUhKd05CbVRteFdF
d08kVjtBZTdXPWRjdEdPTSFGVE94VypKOUcycSQjIV5eM084K3wwCldfcCtsYjl7ZiVoZmMtU35O
WmFwRXxMST5DPG5Da3UKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1zY2FsZS1yZXBhaW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvcGFnZS1zY2FsZS1yZXBhaW50LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzc2Mzc0N2M3YjA4YzM3NDQ2OTY1ZjhlYTU3MzliMzRl
OTY4YWM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWlu
dC9wYWdlLXNjYWxlLXJlcGFpbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA3ODV4MTAwMTYKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4NXg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDEwMDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDc4NXgxMDAxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzY5eDEwMDAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50
L3BhZ2Utc2NhbGUtcmVwYWludC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWlu
dC9wYWdlLXNjYWxlLXJlcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDJkMTZmMDQzZThjYzc0ZjRl
YjE3ODAyNDdiOTU1ZmFkNDFlNTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVwYWludC9wYWdlLXNjYWxlLXJlcGFpbnQuaHRtbApAQCAtMCwwICsxLDE0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHkgc3R5bGU9ImhlaWdodDoxMDAwMHB4O2Jh
Y2tncm91bmQtaW1hZ2U6dXJsKCdyZXNvdXJjZXMvZ3JpZC5wbmcnKSIgb25sb2FkPSJydW5UZXN0
KCk7Ij4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGFnZVNjYWxl
RmFjdG9yKDAuNSwgMCwgMCk7Cit9Cis8L3NjcmlwdD4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtdHJh
bnNmb3JtOnRyYW5zbGF0ZVooMCk7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvcmVzb3VyY2VzL2dyaWQucG5nIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9yZXNvdXJjZXMvZ3JpZC5wbmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODIyM2JhMmQ4NDc2ZmU0NThlOTRiY2Y0MGJlMGIyMDdjMzVjZjU2YgpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMjM3CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeTWoqXz0xU0JXTSUw
Qn5Bakt4OWpQN0xlTCQtRCR8STE0LT9peTBXVwp6ZytaOCtWYiZaOHBkZnBScj5gc2Y5ZDFyV1Ax
YjMwb0hqcnEkcjlJeTY2Z0hmK3w7fWgySXIjRyNGRXEkaDRSZGoKejM8WTtqLSs9SCZLNT9MO0N7
R3Yxa2NoKT91TlZwKkZ5TFd2dzRRUnJhfUUjKnY2TWFVPkhac2JSJjNWbk5MIyZfCnp1PkclZGBg
T29ALSUlNisxZ0ZvZz5Fb0NoVWE2eV8xMD9zaXd6ZSspcjFnSUxoN0I3KzstMm9jNWZpKHt8Qz5T
TQpYIWpzUUdiXyZHPFpESF9xXj5iUDBsK1hrS3RBPFQ7CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>