<?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>52655</bug_id>
          
          <creation_ts>2011-01-18 12:57:15 -0800</creation_ts>
          <short_desc>Hidden composited iframes cause infinite loop</short_desc>
          <delta_ts>2011-10-21 11:06:42 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.eppendorfna.com/int/index.php?l=131&amp;sitemap=2.1&amp;pb=eb2865b986417e54&amp;action=products&amp;contentid=1&amp;catalognode=9879&amp;productpage=3</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="Patrick">phanna</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>fsamuel</cc>
    
    <cc>jamesr</cc>
    
    <cc>jeffm</cc>
    
    <cc>mitz</cc>
    
    <cc>rjkroege</cc>
    
    <cc>robin.webkit</cc>
    
    <cc>sadrul</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336027</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick">phanna</who>
    <bug_when>2011-01-18 12:57:15 -0800</bug_when>
    <thetext>This happens on platforms that do not support independently composited iframes.

What I think is happening is that a style change causes a layer in the hidden iframe to composite which bubbles up to the owner element.  On the Mac platform pre-WebKit2, allowsIndependentlyCompositedIFrames returns true which stops propagation to the parent&apos;s compsitor.

On a platform like Android (or if you return false from allowsIndependentlyCompositedIFrames), the parent compositor is turned on which schedules a style change.  The parent compositor traverses all the layers and turns off compositing because the iframe layer is not part of any layer list.

I have attached a basic test that I used to reproduce the infinite loop on Safari.  I had to edit RenderLayerCompositor.cpp to not allow independently composited iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336028</commentid>
    <comment_count>1</comment_count>
      <attachid>79314</attachid>
    <who name="Patrick">phanna</who>
    <bug_when>2011-01-18 12:59:25 -0800</bug_when>
    <thetext>Created attachment 79314
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358354</commentid>
    <comment_count>2</comment_count>
      <attachid>83918</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-25 19:28:35 -0800</bug_when>
    <thetext>Created attachment 83918
Patch

Add a check if an iframe is visible when deciding if it requires a compositing layer.
Without the check we would create a compositing layer, but no backing and that caused the looping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358358</commentid>
    <comment_count>3</comment_count>
      <attachid>83918</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-25 19:48:44 -0800</bug_when>
    <thetext>Comment on attachment 83918
Patch

This seems like a specific case of the more general issue that visibility:hidden and compositing don&apos;t play nicely together. Bug 29984 covers that.

This patch is not correct because it needs to consider ancestor elements of the iframe that are composited and have visibility:hidden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358511</commentid>
    <comment_count>4</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-26 07:47:08 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 83918 [details])
&gt; This seems like a specific case of the more general issue that visibility:hidden and compositing don&apos;t play nicely together. Bug 29984 covers that.
&gt; 
&gt; This patch is not correct because it needs to consider ancestor elements of the iframe that are composited and have visibility:hidden.

Thank you for your review.
I should work on adding a check for the iframe&apos;s ancestors&apos; visibility.

I tested bugs 29984 and 26770, and they seem to affect only the mac port for Safari. The Chrome port on Linux and on mac handles the test cases properly. Do you have an idea why is that?
thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364810</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-03-09 14:59:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I tested bugs 29984 and 26770, and they seem to affect only the mac port for Safari. The Chrome port on Linux and on mac handles the test cases properly. Do you have an idea why is that?
I was actually wrong. If I leave only one of the divs in the test from https://bug-29984-attachments.webkit.org/attachment.cgi?id=40479, I see the same infinite loop in QtTestBrower. And there are no iframes in that test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471541</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-09-22 07:06:32 -0700</bug_when>
    <thetext>*** Bug 68605 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471732</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-22 11:27:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/9485360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471735</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-22 11:31:48 -0700</bug_when>
    <thetext>There&apos;s a general issue with visibility and compositing that I hope to work on soon. iframe-specific patches are only bandaids at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483352</commentid>
    <comment_count>9</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-13 11:48:03 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; There&apos;s a general issue with visibility and compositing that I hope to work on soon. iframe-specific patches are only bandaids at this point.

I ran into this problem locally. I was wondering if you had filed a more general bug report against this issue? Have you begun work on this? Is this something I can help looking into? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484354</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-14 15:23:18 -0700</bug_when>
    <thetext>Looking at this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484419</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-14 17:08:44 -0700</bug_when>
    <thetext>Here&apos;s the smoking gun. Inside of recalcStyle(), notifyIFramesOfCompositingChange() is calling scheduleSetNeedsStyleRecalc(), so we never get out of updateStyleForAllDocuments.


#0  WebCore::ContainerNode::scheduleSetNeedsStyleRecalc (this=0x1001d4f00, changeType=WebCore::SyntheticStyleChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/ContainerNode.cpp:759
#1  0x00000001038ceeb0 in WebCore::RenderLayerCompositor::notifyIFramesOfCompositingChange (this=0x10017f850) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:1900
#2  0x00000001038ce58c in WebCore::RenderLayerCompositor::enableCompositingMode (this=0x10017f850, enable=true) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:125
#3  0x00000001038d14a4 in WebCore::RenderLayerCompositor::updateBacking (this=0x10017f850, layer=0x1001dcb28, shouldRepaint=WebCore::RenderLayerCompositor::CompositingChangeRepaintNow) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:340
#4  0x00000001038d1b93 in WebCore::RenderLayerCompositor::updateLayerCompositingState (this=0x10017f850, layer=0x1001dcb28, shouldRepaint=WebCore::RenderLayerCompositor::CompositingChangeRepaintNow) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:410
#5  0x00000001038bc222 in WebCore::RenderLayer::styleChanged (this=0x1001dcb28, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayer.cpp:4204
#6  0x000000010384c48b in WebCore::RenderBoxModelObject::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderBoxModelObject.cpp:373
#7  0x0000000103834bc0 in WebCore::RenderBox::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderBox.cpp:345
#8  0x00000001039121fd in WebCore::RenderReplaced::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderReplaced.cpp:71
#9  0x00000001039f269d in WebCore::RenderWidget::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderWidget.cpp:215
#10 0x0000000103902023 in WebCore::RenderObject::setStyle (this=0x1001dc818, style=@0x7fff5fbfd160) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderObject.cpp:1727
#11 0x000000010390177b in WebCore::RenderObject::setAnimatableStyle (this=0x1001dc818, style=@0x7fff5fbfd1a0) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderObject.cpp:1640
#12 0x000000010370a9e3 in WebCore::Node::setRenderStyle (this=0x1001d4f00, s=@0x7fff5fbfd2d0) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Node.cpp:1493
#13 0x0000000102d77b49 in WebCore::Element::recalcStyle (this=0x1001d4f00, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1124
#14 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x1001d46f0, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
#15 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x1001d2f90, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
#16 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x1001d27b0, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
#17 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x110e4aa40, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
#18 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x100182c10, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
#19 0x0000000102ba7161 in WebCore::Document::recalcStyle (this=0x10082ce00, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Document.cpp:1562
#20 0x0000000102ba81d9 in WebCore::Document::updateStyleIfNeeded (this=0x10082ce00) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Document.cpp:1616
#21 0x0000000102ba82e2 in WebCore::Document::updateStyleForAllDocuments () at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Document.cpp:1633
#22 0x0000000103a40a6e in WebCore::ScheduledAction::execute (this=0x1006b3ec0, document=0x10082ce00) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/bindings/js/ScheduledAction.cpp:131
#23 0x0000000103a40894 in WebCore::ScheduledAction::execute (this=0x1006b3ec0, context=0x10082cff8) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/bindings/js/ScheduledAction.cpp:80
#24 0x0000000102d10636 in WebCore::DOMTimer::fired (this=0x1006b3d80) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/page/DOMTimer.cpp:148
#25 0x0000000103c95bd7 in WebCore::ThreadTimers::sharedTimerFiredInternal (this=0x107a17910) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/platform/ThreadTimers.cpp:115
#26 0x0000000103c959a9 in WebCore::ThreadTimers::sharedTimerFired () at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/platform/ThreadTimers.cpp:93</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485147</commentid>
    <comment_count>12</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-17 08:00:02 -0700</bug_when>
    <thetext>What&apos;s the right solution for this? A flag that indicates we&apos;re in the process of recalculating style so that scheduleSetNeedsStyleRecalc() is not called?

(In reply to comment #11)
&gt; Here&apos;s the smoking gun. Inside of recalcStyle(), notifyIFramesOfCompositingChange() is calling scheduleSetNeedsStyleRecalc(), so we never get out of updateStyleForAllDocuments.
&gt; 
&gt; 
&gt; #0  WebCore::ContainerNode::scheduleSetNeedsStyleRecalc (this=0x1001d4f00, changeType=WebCore::SyntheticStyleChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/ContainerNode.cpp:759
&gt; #1  0x00000001038ceeb0 in WebCore::RenderLayerCompositor::notifyIFramesOfCompositingChange (this=0x10017f850) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:1900
&gt; #2  0x00000001038ce58c in WebCore::RenderLayerCompositor::enableCompositingMode (this=0x10017f850, enable=true) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:125
&gt; #3  0x00000001038d14a4 in WebCore::RenderLayerCompositor::updateBacking (this=0x10017f850, layer=0x1001dcb28, shouldRepaint=WebCore::RenderLayerCompositor::CompositingChangeRepaintNow) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:340
&gt; #4  0x00000001038d1b93 in WebCore::RenderLayerCompositor::updateLayerCompositingState (this=0x10017f850, layer=0x1001dcb28, shouldRepaint=WebCore::RenderLayerCompositor::CompositingChangeRepaintNow) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayerCompositor.cpp:410
&gt; #5  0x00000001038bc222 in WebCore::RenderLayer::styleChanged (this=0x1001dcb28, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderLayer.cpp:4204
&gt; #6  0x000000010384c48b in WebCore::RenderBoxModelObject::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderBoxModelObject.cpp:373
&gt; #7  0x0000000103834bc0 in WebCore::RenderBox::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderBox.cpp:345
&gt; #8  0x00000001039121fd in WebCore::RenderReplaced::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderReplaced.cpp:71
&gt; #9  0x00000001039f269d in WebCore::RenderWidget::styleDidChange (this=0x1001dc818, diff=WebCore::StyleDifferenceEqual, oldStyle=0x123481310) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderWidget.cpp:215
&gt; #10 0x0000000103902023 in WebCore::RenderObject::setStyle (this=0x1001dc818, style=@0x7fff5fbfd160) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderObject.cpp:1727
&gt; #11 0x000000010390177b in WebCore::RenderObject::setAnimatableStyle (this=0x1001dc818, style=@0x7fff5fbfd1a0) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/rendering/RenderObject.cpp:1640
&gt; #12 0x000000010370a9e3 in WebCore::Node::setRenderStyle (this=0x1001d4f00, s=@0x7fff5fbfd2d0) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Node.cpp:1493
&gt; #13 0x0000000102d77b49 in WebCore::Element::recalcStyle (this=0x1001d4f00, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1124
&gt; #14 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x1001d46f0, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
&gt; #15 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x1001d2f90, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
&gt; #16 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x1001d27b0, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
&gt; #17 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x110e4aa40, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
&gt; #18 0x0000000102d77e3f in WebCore::Element::recalcStyle (this=0x100182c10, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Element.cpp:1158
&gt; #19 0x0000000102ba7161 in WebCore::Document::recalcStyle (this=0x10082ce00, change=WebCore::Node::NoChange) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Document.cpp:1562
&gt; #20 0x0000000102ba81d9 in WebCore::Document::updateStyleIfNeeded (this=0x10082ce00) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Document.cpp:1616
&gt; #21 0x0000000102ba82e2 in WebCore::Document::updateStyleForAllDocuments () at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/dom/Document.cpp:1633
&gt; #22 0x0000000103a40a6e in WebCore::ScheduledAction::execute (this=0x1006b3ec0, document=0x10082ce00) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/bindings/js/ScheduledAction.cpp:131
&gt; #23 0x0000000103a40894 in WebCore::ScheduledAction::execute (this=0x1006b3ec0, context=0x10082cff8) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/bindings/js/ScheduledAction.cpp:80
&gt; #24 0x0000000102d10636 in WebCore::DOMTimer::fired (this=0x1006b3d80) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/page/DOMTimer.cpp:148
&gt; #25 0x0000000103c95bd7 in WebCore::ThreadTimers::sharedTimerFiredInternal (this=0x107a17910) at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/platform/ThreadTimers.cpp:115
&gt; #26 0x0000000103c959a9 in WebCore::ThreadTimers::sharedTimerFired () at /Volumes/SSData/Development/OSX/webkit/OpenSource/Source/WebCore/platform/ThreadTimers.cpp:93</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485184</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-17 08:47:27 -0700</bug_when>
    <thetext>I don&apos;t know yet. Still working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486215</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-18 12:12:19 -0700</bug_when>
    <thetext>The real issue here is that we enter compositing via RenderLayerCompositor::updateLayerCompositingState(), but then drop out of compositing again at the end of RenderLayerCompositor::computeCompositingRequirements(), because we didn&apos;t hit the composited layer because of visibility:hidden.

The larger question is whether we should be in compositing mode if some hidden layer wants to be composited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486279</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-18 13:36:21 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; The larger question is whether we should be in compositing mode if some hidden layer wants to be composited.

Seems like a simple tradeoff:

1) Making the layer visible will be smoother if we keep the page in compositing mode.

2) If the layer stays hidden, then performance and memory use will be better if we keep the page out of compositing mode.

Is there anything else I’m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488020</commentid>
    <comment_count>16</comment_count>
      <attachid>111878</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-20 17:21:09 -0700</bug_when>
    <thetext>Created attachment 111878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488028</commentid>
    <comment_count>17</comment_count>
      <attachid>111878</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-20 17:28:18 -0700</bug_when>
    <thetext>Comment on attachment 111878
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:155
&gt; +    void layerBecameComposited(const RenderLayer*) { ++m_compositedLayerCount; }
&gt; +    void layerBecameNonComposited(const RenderLayer*)

why are you passing a layer here if you just keep a count? Is the idea to expand this to keeping a Set&lt;&gt; sometimes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488030</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-20 17:31:48 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 111878 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111878&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.h:155
&gt; &gt; +    void layerBecameComposited(const RenderLayer*) { ++m_compositedLayerCount; }
&gt; &gt; +    void layerBecameNonComposited(const RenderLayer*)
&gt; 
&gt; why are you passing a layer here if you just keep a count? Is the idea to expand this to keeping a Set&lt;&gt; sometimes?

No, I just thought it made sense for a delegate-type method. It might be useful in future, but I had no specific plans for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488060</commentid>
    <comment_count>19</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-10-20 18:10:12 -0700</bug_when>
    <thetext>The function name should start with &quot;has&quot; rather than &quot;have&quot; for consistency with the previously-declared function and with the subject of the phrase (a RenderLayerCompositor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488064</commentid>
    <comment_count>20</comment_count>
      <attachid>111878</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-20 18:14:14 -0700</bug_when>
    <thetext>Comment on attachment 111878
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:251
&gt; +    int nonRootCompositedLayerCount = m_compositedLayerCount;
&gt; +    if (rootLayer-&gt;isComposited())
&gt; +        --nonRootCompositedLayerCount;
&gt; +
&gt; +    return nonRootCompositedLayerCount;

I would write this as:

    // We want to return true if only the root layer is composited.
    return m_compositedLayerCount == rootLayer-&gt;isComposited();

Maybe that’s not as clear to you, but it seems pretty clear to me.

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.h:155
&gt;&gt;&gt; +    void layerBecameNonComposited(const RenderLayer*)
&gt;&gt; 
&gt;&gt; why are you passing a layer here if you just keep a count? Is the idea to expand this to keeping a Set&lt;&gt; sometimes?
&gt; 
&gt; No, I just thought it made sense for a delegate-type method. It might be useful in future, but I had no specific plans for it.

In debug builds you should keep a HashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488067</commentid>
    <comment_count>21</comment_count>
      <attachid>111878</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-20 18:15:35 -0700</bug_when>
    <thetext>Comment on attachment 111878
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:322
&gt; +            if (childList.isEmpty() &amp;&amp; !haveAnyCompositedLayers(updateRoot))

I think a comment should say something about why haveAnyCompositedLayers needs to be called.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:788
&gt;      // If we&apos;re back at the root, and no other layers need to be composited, and the root layer itself doesn&apos;t need
&gt;      // to be composited, then we can drop out of compositing mode altogether.
&gt; -    if (layer-&gt;isRootLayer() &amp;&amp; !childState.m_subtreeIsCompositing &amp;&amp; !requiresCompositingLayer(layer) &amp;&amp; !m_forceCompositingMode) {
&gt; +    if (layer-&gt;isRootLayer() &amp;&amp; !childState.m_subtreeIsCompositing &amp;&amp; !requiresCompositingLayer(layer) &amp;&amp; !m_forceCompositingMode &amp;&amp; !haveAnyCompositedLayers(layer)) {

I think a comment should say something about why haveAnyCompositedLayers needs to be called.

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:259
&gt; +    bool haveAnyCompositedLayers(const RenderLayer* rootLayer) const;

It’s not clear to me at least that the root layer is not considered when asking if there are any composited layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488107</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-20 20:01:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/98060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488458</commentid>
    <comment_count>23</comment_count>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-10-21 10:21:51 -0700</bug_when>
    <thetext>This broke the Windows build, Visual Studio doesn&apos;t like this:


bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const
{
    return m_compositedLayerCount &gt; rootLayer-&gt;isComposited();
}


5&gt;c:\cygwin\home\jeffm\opensource\source\webcore\rendering\RenderLayerCompositor.cpp(247) : error C2220: warning treated as error - no &apos;object&apos; file generated
5&gt;c:\cygwin\home\jeffm\opensource\source\webcore\rendering\RenderLayerCompositor.cpp(247) : warning C4804: &apos;&gt;&apos; : unsafe use of type &apos;bool&apos; in operation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488466</commentid>
    <comment_count>24</comment_count>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-10-21 10:28:51 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; This broke the Windows build, Visual Studio doesn&apos;t like this:
&gt; 
&gt; 
&gt; bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const
&gt; {
&gt;     return m_compositedLayerCount &gt; rootLayer-&gt;isComposited();
&gt; }
&gt; 
&gt; 
&gt; 5&gt;c:\cygwin\home\jeffm\opensource\source\webcore\rendering\RenderLayerCompositor.cpp(247) : error C2220: warning treated as error - no &apos;object&apos; file generated
&gt; 5&gt;c:\cygwin\home\jeffm\opensource\source\webcore\rendering\RenderLayerCompositor.cpp(247) : warning C4804: &apos;&gt;&apos; : unsafe use of type &apos;bool&apos; in operation

VS seems OK with this construct:

    return m_compositedLayerCount &gt; (rootLayer-&gt;isComposited() ? 1 : 0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488502</commentid>
    <comment_count>25</comment_count>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-10-21 11:06:42 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; This broke the Windows build, Visual Studio doesn&apos;t like this:
&gt; &gt; 
&gt; &gt; 
&gt; &gt; bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const
&gt; &gt; {
&gt; &gt;     return m_compositedLayerCount &gt; rootLayer-&gt;isComposited();
&gt; &gt; }
&gt; &gt; 
&gt; &gt; 
&gt; &gt; 5&gt;c:\cygwin\home\jeffm\opensource\source\webcore\rendering\RenderLayerCompositor.cpp(247) : error C2220: warning treated as error - no &apos;object&apos; file generated
&gt; &gt; 5&gt;c:\cygwin\home\jeffm\opensource\source\webcore\rendering\RenderLayerCompositor.cpp(247) : warning C4804: &apos;&gt;&apos; : unsafe use of type &apos;bool&apos; in operation
&gt; 
&gt; VS seems OK with this construct:
&gt; 
&gt;     return m_compositedLayerCount &gt; (rootLayer-&gt;isComposited() ? 1 : 0);

Simon fixed this in &lt;http://trac.webkit.org/changeset/98112&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>79314</attachid>
            <date>2011-01-18 12:59:25 -0800</date>
            <delta_ts>2011-01-18 12:59:25 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>hidden_iframe.tar</filename>
            <type>application/x-tar</type>
            <size>10240</size>
            <attacher name="Patrick">phanna</attacher>
            
              <data encoding="base64">aGlkZGVuLmh0bWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDAAMDA0MDEx
NwAwMDExNjEwADAwMDAwMDAwNDM2ADExNTE1Mzc2NzUzADAxMjAwNwAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHBoYW5uYQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAZW5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8
aHRtbD4KICA8Ym9keT4KICAgIDxpZnJhbWUgc3JjPSJzcmMuaHRtbCIgd2lkdGg9IjEwIiBoZWln
aHQ9IjEwIgogICAgICBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7
dG9wOjBweDtsZWZ0Oi0xMDBweDsiPjwvaWZyYW1lPgogICAgPCEtLSBqdXN0IHNvIHNvbWV0aGlu
ZyBhY3R1YWwgZHJhd3MgLS0+CiAgICA8ZGl2CiAgICAgIHN0eWxlPSJ3aWR0aDoyMDBweDtoZWln
aHQ6NDAwcHg7YmFja2dyb3VuZC1jb2xvcjpibHVlIj48L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNy
Yy5odG1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQwADAwNDAxMTcA
MDAxMTYxMAAwMDAwMDAwMDU2NQAxMTUxNTM3NjcxNQAwMTEzNDQAIDAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABwaGFubmEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGVuZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGh0
bWw+CiAgPGhlYWQ+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgIGZ1
bmN0aW9uIGRvX2l0KCkgewogICAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteV9kaXYiKTsKICAgICAg
ICAgICAgZWxlbS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InJvdGF0ZTNkKDAsMCwxLDEwZGVnKSI7
CiAgICAgICAgICAgIH0sIDEwMDApOwogICAgICB9CiAgICA8L3NjcmlwdD4KICA8L2hlYWQ+CiAg
PGJvZHkgb25sb2FkPSJkb19pdCgpIj4KICAgIDx0ZXh0YXJlYSBpZD0ibXlfZGl2Ij4KICAgIDwv
dGV4dGFyZWE+CiAgPC9ib2R5Pgo8L2h0bWw+CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83918</attachid>
            <date>2011-02-25 19:28:35 -0800</date>
            <delta_ts>2011-10-20 17:21:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>52655.patch</filename>
            <type>text/plain</type>
            <size>4465</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc5NzU3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDItMjUgIFlhZWwgQWhhcm9uICA8eWFl
bC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEhpZGRlbiBjb21wb3NpdGVkIGlmcmFtZXMgY2F1c2UgaW5maW5pdGUgbG9v
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2NTUK
KworICAgICAgICAqIGNvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWhpZGRlbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWhpZGRlbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9pZnJhbWVzL3Jlc291cmNlcy9pZnJh
bWUtaGlkZGVuLmh0bWw6IEFkZGVkLgorCiAyMDExLTAyLTI1ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNocm9taXVtIGV4cGVjdGF0aW9u
cyBhbmQgYWRkIG5ldyBjaHJvbWl1bSBhbmQgbWFjLWxlb3BhcmQgYmFzZWxpbmVzIGZvciBuZXcg
dGVzdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1oaWRk
ZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lm
cmFtZS1oaWRkZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2lmcmFtZXMvaWZyYW1lLWhpZGRlbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisg
ICAgeworICAgICAgICAvLyBGb3Igc29tZSByZWFzb24gdGhpcyBkZWxheSBpcyByZXF1aXJlZCBm
b3IgQXBwS2l0IHRvIG5vdCBzaG9ydC1jaXJjdWl0IHRoZSBkaXNwbGF5LgorICAgICAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
aXNwbGF5KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9LCAyMCk7CisgICAgfQorCisgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+Cisg
IDxib2R5PgorICAgIDwhLS0ganVzdCBzbyBzb21ldGhpbmcgYWN0dWFsIGRyYXdzIC0tPgorICAg
IDxkaXYgaWQ9ImxheWVycyI+Tm8gbGF5ZXJzIHRvIGRpc3BsYXkgaW4gRFJULjwvZGl2PgorCisg
ICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9pZnJhbWUtaGlkZGVuLmh0bWwiIHdpZHRoPSIxMCIg
aGVpZ2h0PSIxMCIKKyAgICAgIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjtwb3NpdGlvbjphYnNv
bHV0ZTt0b3A6MHB4O2xlZnQ6LTEwMHB4OyI+PC9pZnJhbWU+CisgIDwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaGlkZGVuLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVz
L2lmcmFtZS1oaWRkZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaGlkZGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyIEBACitObyBsYXllcnMgdG8gZGlzcGxheSBpbiBEUlQuCisKSW5kZXg6
IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1oaWRkZW4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtaGlkZGVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9pZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtaGlkZGVuLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKyAgPGhlYWQ+Cisg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgZnVuY3Rpb24gZG9faXQo
KSB7CisgICAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGVs
ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlfZGl2Iik7CisgICAgICAgICAgICBlbGVt
LnN0eWxlLndlYmtpdFRyYW5zZm9ybT0icm90YXRlM2QoMCwwLDEsMTBkZWcpIjsKKyAgICAgICAg
ICAgIH0sIDApOworICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5IG9u
bG9hZD0iZG9faXQoKSI+CisgICAgPHRleHRhcmVhIGlkPSJteV9kaXYiPgorICAgIDwvdGV4dGFy
ZWE+CisgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NzU3KQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDItMjUgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhpZGRlbiBjb21w
b3NpdGVkIGlmcmFtZXMgY2F1c2UgaW5maW5pdGUgbG9vcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2NTUKKworICAgICAgICBBZGQgYSBjaGVjayBp
ZiBhbiBpZnJhbWUgaXMgdmlzaWJsZSB3aGVuIGRlY2lkaW5nIGlmIGl0IHJlcXVpcmVkIGEgY29t
cG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJh
bWUtaGlkZGVuLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0NvbXBvc2l0aW5nRm9ySUZyYW1lKToKKwogMjAxMS0wMi0yNSAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCShyZXZpc2lvbiA3OTc0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQzLDYgKzEz
NDMsOCBAQAogICAgIGlmIChyZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJu
IGlmcmFtZVJlbmRlcmVyLT5oYXNMYXllcigpICYmIGlmcmFtZVJlbmRlcmVyLT5sYXllcigpLT5p
c0NvbXBvc2l0ZWQoKTsKICAgICAKKyAgICBpZiAoIXJlbmRlcmVyLT5zdHlsZSgpIHx8IHJlbmRl
cmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gSElEREVOKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgLy8gRG9uJ3QgZ28gaW50byBjb21wb3NpdGluZyBtb2RlIGlmIGhlaWdodCBvciB3
aWR0aCBhcmUgemVyby4KICAgICBJbnRSZWN0IGNvbnRlbnRCb3ggPSBpZnJhbWVSZW5kZXJlci0+
Y29udGVudEJveFJlY3QoKTsKICAgICByZXR1cm4gY29udGVudEJveC5oZWlnaHQoKSAqIGNvbnRl
bnRCb3gud2lkdGgoKSA+IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111878</attachid>
            <date>2011-10-20 17:21:09 -0700</date>
            <delta_ts>2011-10-20 18:15:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52655-20111020172108.patch</filename>
            <type>text/plain</type>
            <size>9482</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgwMzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYmFiZTI1Y2NjYjlhNTU4
MjBmMGZjMzJmZjMwOTNjNTQ5MjY4ZTc3Li42MTEzNWJmYmI5OWU0OTQ2ZDI2OTZhYzAyYjQ3ZjU0
N2U5OWYxMDk2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMTAtMjAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgSGlkZGVuIGNvbXBv
c2l0ZWQgaWZyYW1lcyBjYXVzZSBpbmZpbml0ZSBsb29wCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgdmlzaWJpbGl0eTpoaWRkZW4gaXMgcHJv
YmxlbWF0aWMgZm9yIGNvbXBvc2l0aW5nLCBiZWNhdXNlIGl0IGNhdXNlcworICAgICAgICBSZW5k
ZXJMYXllcnMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB6LW9yZGVyIGxheWVyIHRyZWUuIFRoaXMg
Y29uZnVzZXMKKyAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIGluIHNldmVyYWwgd2F5czsg
aXQgbmV2ZXIgc2VlcyB0aGVzZSBsYXllcnMKKyAgICAgICAgd2hlbiB0cmF2ZXJzaW5nIHRoZSB0
cmVlIGFzIGl0IGNvbXB1dGVzIGNvbXBvc2l0aW5nIHJlcXVpcmVtZW50cywgb3IKKyAgICAgICAg
cmVidWlsZHMgdGhlIGxheWVyIHRyZWUuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgcGFy
dGljdWxhciBwcm9ibGVtIHdpdGggY29tcG9zaXRlZCBpZnJhbWVzLiBXaGVuIGFuIGlmcmFtZQor
ICAgICAgICBiZWNvbWVzIGNvbXBvc2l0ZWQsIHNjaGVkdWxlU2V0TmVlZHNTdHlsZVJlY2FsYygp
IGlzIGNhbGxlZCBvbiB0aGF0CisgICAgICAgIGlmcmFtZSdzIG93bmVyRWxlbWVudCBpbiB0aGUg
cGFyZW50IGRvY3VtZW50LiBJZiB0aGlzIGhhcHBlbnMgaW5zaWRlCisgICAgICAgIERvY3VtZW50
Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpLCB3ZSBnZXQgaW50byBhbiBpbmZpbml0ZSBs
b29wCisgICAgICAgIGJlY2F1c2Ugbm90aWZ5SUZyYW1lc09mQ29tcG9zaXRpbmdDaGFuZ2UoKSBx
dWV1ZXMgdXAgc3R5bGUgdXBkYXRlIGFzIHdlCisgICAgICAgIGJvdW5jZSBpbiBhbmQgb3V0IG9m
IGNvbXBvc2l0aW5nIG1vZGUsIHNvIGRvY3VtZW50c1RoYXROZWVkU3R5bGVSZWNhbGMKKyAgICAg
ICAgbmV2ZXIgZW1wdGllcyBvdXQuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGFuIGluaXRp
YWwsIGNvbnNlcnZhdGl2ZSBmaXggdGhhdCBkb2Vzbid0IGF0dGVtcHQgdG8gZml4IGFsbAorICAg
ICAgICB0aGUgaXNzdWVzIHdpdGggdmlzaWJpbGl0eS4gSXQgY2hhbmdlcyBSZW5kZXJMYXllckNv
bXBvc2l0b3IgdG8gY291bnQKKyAgICAgICAgdGhlIG51bWJlciBvZiBjb21wb3NpdGluZyBSZW5k
ZXJMYXllcnMsIGFuZCB0byBub3QgbGVhdmUgY29tcG9zaXRpbmcKKyAgICAgICAgbW9kZSBpZiB0
aGVyZSBhcmUgYW55IChldmVuIGlmIHRoZXkgYXJlIGhpZGRlbiwgc28gbm90IGhpdCB3aGlsZQor
ICAgICAgICB0cmF2ZXJzaW5nIHRoZSB6LW9yZGVyIHRyZWUpLiBUaGlzIGF2b2lkcyB0aGUgaW5m
aW5pdGUgbG9vcC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy92aXNpYmlsaXR5L2hpZGRl
bi1pZnJhbWUuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjplbnN1cmVCYWNraW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjbGVhckJhY2tpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpoYXZlQW55Q29tcG9zaXRlZExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0
aW5nUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyQmVj
YW1lQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZCk6CisKIDIwMTEtMTAtMjAgIFJheW1vbmQgVG95ICA8
cnRveUBnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBTU0UgZGVub3JtYWwgZGlzYWJs
ZXIgZm9yIHdpbmRvd3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCBhNGMyNGI2ZDhkOTJiNmMzMjQyMzA2NTcwMWEzYTdlMmRkYjNmOTM5Li5hMTMzZmMxODlh
YjMwYWI3M2I5YTdiMTU4MjIxM2I3YmY2Yzk2NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTM3ODgsMTMgKzM3ODgsMTcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y2xlYXJDbGlwUmVjdHMoKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFJl
bmRlckxheWVyQmFja2luZyogUmVuZGVyTGF5ZXI6OmVuc3VyZUJhY2tpbmcoKQogewotICAgIGlm
ICghbV9iYWNraW5nKQorICAgIGlmICghbV9iYWNraW5nKSB7CiAgICAgICAgIG1fYmFja2luZyA9
IGFkb3B0UHRyKG5ldyBSZW5kZXJMYXllckJhY2tpbmcodGhpcykpOworICAgICAgICBjb21wb3Np
dG9yKCktPmxheWVyQmVjYW1lQ29tcG9zaXRlZCh0aGlzKTsKKyAgICB9CiAgICAgcmV0dXJuIG1f
YmFja2luZy5nZXQoKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJCYWNraW5nKCkKIHsK
KyAgICBpZiAobV9iYWNraW5nICYmICFyZW5kZXJlcigpLT5kb2N1bWVudEJlaW5nRGVzdHJveWVk
KCkpCisgICAgICAgIGNvbXBvc2l0b3IoKS0+bGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKHRoaXMp
OwogICAgIG1fYmFja2luZy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGYyNjI3ZGU2NjEyYjk3Nzhk
OWUzMTM2NTllZGMyZGVmYjA1NDYzMmEuLmNjNTVjMTZkNjU3N2FlNjdmNWQ5MGUwOWM4MjYwYTAw
ZDljOWZjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC05NSw2ICs5NSw3IEBAIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiAgICAgLCBtX3Vw
ZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzVGltZXIodGhpcywgJlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lckZpcmVkKQogICAgICwgbV9oYXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKHRydWUpCiAgICAgLCBtX2NvbXBvc2l0aW5nVHJpZ2dlcnMoc3RhdGljX2Nh
c3Q8Q2hyb21lQ2xpZW50OjpDb21wb3NpdGluZ1RyaWdnZXJGbGFncz4oQ2hyb21lQ2xpZW50OjpB
bGxUcmlnZ2VycykpCisgICAgLCBtX2NvbXBvc2l0ZWRMYXllckNvdW50KDApCiAgICAgLCBtX3No
b3dEZWJ1Z0JvcmRlcnMoZmFsc2UpCiAgICAgLCBtX3Nob3dSZXBhaW50Q291bnRlcihmYWxzZSkK
ICAgICAsIG1fY29tcG9zaXRpbmdDb25zdWx0c092ZXJsYXAodHJ1ZSkKQEAgLTI0MSw2ICsyNDIs
MTUgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJz
VGltZXJGaXJlZChUaW1lcjxSZW5kZXJMYXllckMKICAgICB1cGRhdGVDb21wb3NpdGluZ0xheWVy
cygpOwogfQogCitib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aGF2ZUFueUNvbXBvc2l0ZWRM
YXllcnMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllcikgY29uc3QKK3sKKyAgICBpbnQgbm9u
Um9vdENvbXBvc2l0ZWRMYXllckNvdW50ID0gbV9jb21wb3NpdGVkTGF5ZXJDb3VudDsKKyAgICBp
ZiAocm9vdExheWVyLT5pc0NvbXBvc2l0ZWQoKSkKKyAgICAgICAgLS1ub25Sb290Q29tcG9zaXRl
ZExheWVyQ291bnQ7CisKKyAgICByZXR1cm4gbm9uUm9vdENvbXBvc2l0ZWRMYXllckNvdW50Owor
fQorCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMo
Q29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZVR5cGUsIFJlbmRlckxheWVyKiB1cGRhdGVSb290
KQogewogICAgIG1fdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lci5zdG9wKCk7CkBAIC0zMDks
NyArMzE5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5n
TGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGUKIAogICAgICAgICAvLyBIb3N0IHRo
ZSBkb2N1bWVudCBsYXllciBpbiB0aGUgUmVuZGVyVmlldydzIHJvb3QgbGF5ZXIuCiAgICAgICAg
IGlmICh1cGRhdGVSb290ID09IHJvb3RSZW5kZXJMYXllcigpKSB7Ci0gICAgICAgICAgICBpZiAo
Y2hpbGRMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChjaGlsZExpc3QuaXNFbXB0eSgp
ICYmICFoYXZlQW55Q29tcG9zaXRlZExheWVycyh1cGRhdGVSb290KSkKICAgICAgICAgICAgICAg
ICBkZXN0cm95Um9vdExheWVyKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
bV9yb290Q29udGVudExheWVyLT5zZXRDaGlsZHJlbihjaGlsZExpc3QpOwpAQCAtNzc1LDcgKzc4
NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1
aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGxheWVyLCBPCiAKICAgICAvLyBJZiB3ZSdyZSBiYWNrIGF0
IHRoZSByb290LCBhbmQgbm8gb3RoZXIgbGF5ZXJzIG5lZWQgdG8gYmUgY29tcG9zaXRlZCwgYW5k
IHRoZSByb290IGxheWVyIGl0c2VsZiBkb2Vzbid0IG5lZWQKICAgICAvLyB0byBiZSBjb21wb3Np
dGVkLCB0aGVuIHdlIGNhbiBkcm9wIG91dCBvZiBjb21wb3NpdGluZyBtb2RlIGFsdG9nZXRoZXIu
Ci0gICAgaWYgKGxheWVyLT5pc1Jvb3RMYXllcigpICYmICFjaGlsZFN0YXRlLm1fc3VidHJlZUlz
Q29tcG9zaXRpbmcgJiYgIXJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihsYXllcikgJiYgIW1fZm9y
Y2VDb21wb3NpdGluZ01vZGUpIHsKKyAgICBpZiAobGF5ZXItPmlzUm9vdExheWVyKCkgJiYgIWNo
aWxkU3RhdGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyAmJiAhcmVxdWlyZXNDb21wb3NpdGluZ0xh
eWVyKGxheWVyKSAmJiAhbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSAmJiAhaGF2ZUFueUNvbXBvc2l0
ZWRMYXllcnMobGF5ZXIpKSB7CiAgICAgICAgIGVuYWJsZUNvbXBvc2l0aW5nTW9kZShmYWxzZSk7
CiAgICAgICAgIHdpbGxCZUNvbXBvc2l0ZWQgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggZmUwMTg4ZGFk
YWRiZmMxMThkMmNlNGRmOTliYjJiOTQzMjNhYWYzMC4uMjllYTYzN2E2OTM2YjM1Mjc3ZDFiMjAx
NzNlYmI0MmI3YzE1OTExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMTUxLDYgKzE1MSwxMyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyQmFja2luZ0ZvckFsbExheWVycygpOwogICAgIAorICAgIHZvaWQgbGF5ZXJCZWNh
bWVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKikgeyArK21fY29tcG9zaXRlZExheWVyQ291
bnQ7IH0KKyAgICB2b2lkIGxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXll
ciopCisgICAgeworICAgICAgICBBU1NFUlQobV9jb21wb3NpdGVkTGF5ZXJDb3VudCA+IDApOwor
ICAgICAgICAtLW1fY29tcG9zaXRlZExheWVyQ291bnQ7CisgICAgfQorICAgIAogICAgIHZvaWQg
ZGlkU3RhcnRBY2NlbGVyYXRlZEFuaW1hdGlvbihDU1NQcm9wZXJ0eUlEKTsKICAgICAKICNpZiBF
TkFCTEUoVklERU8pCkBAIC0yNDgsNiArMjU1LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbGF5
ZXJIYXMzRENvbnRlbnQoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKICAgICBib29sIGhhc05v
bklkZW50aXR5M0RUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgCisgICAgYm9v
bCBoYXZlQW55Q29tcG9zaXRlZExheWVycyhjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyKSBj
b25zdDsKIAogICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKCk7CiAgICAgdm9pZCBkZXN0cm95Um9v
dExheWVyKCk7CkBAIC0yOTAsNiArMjk5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZzsKICAgICBDaHJvbWVDbGllbnQ6OkNvbXBvc2l0aW5nVHJpZ2dl
ckZsYWdzIG1fY29tcG9zaXRpbmdUcmlnZ2VyczsKIAorICAgIGludCBtX2NvbXBvc2l0ZWRMYXll
ckNvdW50OwogICAgIGJvb2wgbV9zaG93RGVidWdCb3JkZXJzOwogICAgIGJvb2wgbV9zaG93UmVw
YWludENvdW50ZXI7CiAgICAgYm9vbCBtX2NvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFwOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDg1ZWUyYmJjNGY4YmU4NmY0MjA5M2FmZDU0Nzc4NTJlMDU1ZDFiNjMuLmZkMWMwMTNjNDA2
Y2YxOTMwMmM0MTgzY2FjNzI5Yzk1ZDdlZTdjNmMgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAx
MS0xMC0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAg
ICBIaWRkZW4gY29tcG9zaXRlZCBpZnJhbWVzIGNhdXNlIGluZmluaXRlIGxvb3AKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUZXN0IHdpdGgg
YSB2aXNpYmlsaXR5OmhpZGRlbiBpZnJhbWUsIHdob3NlIHN1YmZyYW1lIGJlY29tZXMgY29tcG9z
aXRlZC4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvaGlkZGVuLWlmcmFtZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvaGlk
ZGVuLWlmcmFtZS5odG1sOiBBZGRlZC4KKworMjAxMS0xMC0yMCAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KKwogICAgICAgICBGaXggdHdvIGNvbXBvc2l0aW5nIGlmcmFt
ZXMgdGVzdHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwNTQzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Zpc2liaWxpdHkv
aGlkZGVuLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNp
YmlsaXR5L2hpZGRlbi1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMDBmZWVhNDE3
MWQyZGE2NzJhZDljNGY4YmMwMDc0YzA4Nzc2NGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L2hpZGRlbi1pZnJhbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorUEFTUzogdGVzdCBkaWQgbm90IGhhbmcuCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS9oaWRkZW4taWZyYW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy92aXNpYmlsaXR5L2hpZGRlbi1pZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZDNlNmQwOWFhNTkzOWVjZDFjMTY1NmE5NmRkMTZkNGY2YTUzOWY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlzaWJpbGl0eS9oaWRkZW4taWZy
YW1lLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDxzdHlsZT4K
KyAgICAgIGlmcmFtZSB7CisgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgfQorCisgICAgICAvLyBDYWxsZWQgZnJvbSBzdWJm
cmFtZS4KKyAgICAgIGZ1bmN0aW9uIHRlc3REb25lKCkKKyAgICAgIHsKKyAgICAgICAgLy8gVGhp
cyB0aW1lb3V0IGlzIG5lY2Vzc2FyeSB0byBkZXRlY3QgdGhlIGhhbmcuCisgICAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHRzJykuaW5uZXJUZXh0ID0gJ1BBU1M6IHRlc3QgZGlkIG5vdCBoYW5nLic7Cisg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSwgMCk7CisgICAgICB9
CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHAgaWQ9InJlc3VsdHMi
PlRoaXMgdGVzdCBzaG91bGQgbm90IGhhbmcuPC9wPgorICAgIDxpZnJhbWUgc3JjPSIuLi9pZnJh
bWVzL3Jlc291cmNlcy9lbnRlci1jb21wb3NpdGluZy1zdWJmcmFtZS5odG1sIj48L2lmcmFtZT4K
KyAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="109809"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>