<?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>93939</bug_id>
          
          <creation_ts>2012-08-14 00:46:02 -0700</creation_ts>
          <short_desc>Add support for Skia Magnifier filter to Chromium layers</short_desc>
          <delta_ts>2012-08-17 08:22:59 -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>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>1</everconfirmed>
          <reporter name="Zachary Kuznia">zork</reporter>
          <assigned_to name="Zachary Kuznia">zork</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter</cc>
    
    <cc>peter+ews</cc>
    
    <cc>piman</cc>
    
    <cc>skyostil</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>trchen</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694616</commentid>
    <comment_count>0</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2012-08-14 00:46:02 -0700</bug_when>
    <thetext>Add support for Skia Magnifier filter to Chromium layers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694617</commentid>
    <comment_count>1</comment_count>
      <attachid>158248</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2012-08-14 00:48:00 -0700</bug_when>
    <thetext>Created attachment 158248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694623</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 00:51:09 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694643</commentid>
    <comment_count>3</comment_count>
      <attachid>158248</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 01:21:07 -0700</bug_when>
    <thetext>Comment on attachment 158248
Patch

Attachment 158248 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13492458</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694730</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-08-14 02:55:42 -0700</bug_when>
    <thetext>Alexandre: would this be something Chrome for Android can re-use for Link Preview?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695078</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-14 10:01:49 -0700</bug_when>
    <thetext>What layer is this being applied to in CrOS?  I&apos;m wondering why this isn&apos;t done by manipulating view parameters.

Peter - I doubt it, since this appears to magnify pre-rastered content and thus will be &quot;blurry&quot; when zooming in.  For the link preview content, you want to rasterize at the new scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695889</commentid>
    <comment_count>6</comment_count>
      <attachid>158248</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-15 03:32:15 -0700</bug_when>
    <thetext>Comment on attachment 158248
Patch

Attachment 158248 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13506263</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695890</commentid>
    <comment_count>7</comment_count>
      <attachid>158248</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-15 03:35:41 -0700</bug_when>
    <thetext>Comment on attachment 158248
Patch

Attachment 158248 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13506273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695987</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 07:23:34 -0700</bug_when>
    <thetext>@jamesr this will be applied to a layer over top of some subset of the screen (decided by the user) for accessibility magnification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696186</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-15 11:26:04 -0700</bug_when>
    <thetext>This filter doesn&apos;t seem very useful.  If you&apos;re fine with blurriness, why not do a non-scaling renderpass copy and scale at draw time?

For the link disambiguation zoom, we want to do it at paint-to-tile time to avoid blurriness.  It seems you would want this for accessibility zoom as well in any case.  Is your problem that it&apos;s hard to extend this outside the web content layer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696195</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 11:30:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; This filter doesn&apos;t seem very useful.  If you&apos;re fine with blurriness, why not do a non-scaling renderpass copy and scale at draw time?

Maybe the purpose of it is not clear? This is something for aura to magnify a portion of the screen, UI included, whatever renderers fall within included. So, it does not magnify some subtree of layers, instead it magnifies some area within a number of subtrees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696206</commentid>
    <comment_count>11</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-15 11:38:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; This filter doesn&apos;t seem very useful.  If you&apos;re fine with blurriness, why not do a non-scaling renderpass copy and scale at draw time?
&gt; 
&gt; Maybe the purpose of it is not clear? This is something for aura to magnify a portion of the screen, UI included, whatever renderers fall within included. So, it does not magnify some subtree of layers, instead it magnifies some area within a number of subtrees.

Yes, I surmised that.  Even so, what is achieved by the Skia magnification?  A draw-time matrix can also magnify.  The Skia scaling will be slightly better quality but still mediocre.

It looks like what&apos;s really called for here is a method on LayerChromium to request a repaint of a subset at higher scale.  Layers that can do a high-quality magnify (like the web content layer) would do that, and those that have no option but a bitmap scale would fall back to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696217</commentid>
    <comment_count>12</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 11:47:59 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Yes, I surmised that.  Even so, what is achieved by the Skia magnification?  A draw-time matrix can also magnify.  The Skia scaling will be slightly better quality but still mediocre.
&gt; 
&gt; It looks like what&apos;s really called for here is a method on LayerChromium to request a repaint of a subset at higher scale.  Layers that can do a high-quality magnify (like the web content layer) would do that, and those that have no option but a bitmap scale would fall back to that.

Hm, well, it&apos;s intended to have some nice effects in the future - parabolic zoom on the edges. We&apos;ll need to make use of a Skia filter to do that. I guess we could still do that with enough information via foreground filters on all layers within some hitbox. Is that preferable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696247</commentid>
    <comment_count>13</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-15 12:12:57 -0700</bug_when>
    <thetext>Well, I think any implementation that doesn&apos;t end up rasterizing fonts without blurriness is inadequate -- we aren&apos;t interested in reusing that on Android and I also think you guys would end up rewriting it someday to fix the problem.

I also think there is another completely opposite concern -- to allow pointer-controlled magnifying glass type designs, it would be nice to have very fast drawing to allow moving the magnified area at high framerate.  That argues for implementing your parabolic zoom effect via pixel shader instead of Skia.  So in summary, I think the ideal solution to this has two parts:

1) A mechanism to make high-res-subset-repaint requests to the underlying implementations of many layers, and then to glue the results together inside a new layer.  (No special filtering needed at this stage.)

2) Magnifying-glass effects at draw time via pixel shader and matrices.



Anyway, that is obviously more work than your current approach and I&apos;m not saying you must do all that right now, but I just want to start a design discussion on the correct way to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696257</commentid>
    <comment_count>14</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 12:21:46 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Well, I think any implementation that doesn&apos;t end up rasterizing fonts without blurriness is inadequate -- we aren&apos;t interested in reusing that on Android and I also think you guys would end up rewriting it someday to fix the problem.
&gt; 
&gt; I also think there is another completely opposite concern -- to allow pointer-controlled magnifying glass type designs, it would be nice to have very fast drawing to allow moving the magnified area at high framerate.  That argues for implementing your parabolic zoom effect via pixel shader instead of Skia.  So in summary, I think the ideal solution to this has two parts:
&gt; 
&gt; 1) A mechanism to make high-res-subset-repaint requests to the underlying implementations of many layers, and then to glue the results together inside a new layer.  (No special filtering needed at this stage.)

To be fair, you could indeed get nicer text by doing it this way, but only if the page was zoomed out. Otherwise you&apos;re going to have to increase the contentsScale() of any affected layers and wait for a repaint to get better text. Maybe that&apos;s what you&apos;d want? It&apos;s certainly not fast though.

I think that blurryness was concidered accepted in the way that you can zoom in on a macbook and things become blurry there, but you&apos;re right in that we could potentially do better.

&gt; 2) Magnifying-glass effects at draw time via pixel shader and matrices.

Zach can chime in here, but AIUI the filter is implemented in Skia both in software more and in ganesh, and in this case the ganesh (hardware) implementation would be used, similar to other compositor filters. The issue of tying filters into the compositor more tightly than that is perhaps covered in http://go/cssfilterdoc ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696276</commentid>
    <comment_count>15</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-15 12:37:02 -0700</bug_when>
    <thetext>&gt; &gt; 1) A mechanism to make high-res-subset-repaint requests to the underlying implementations of many layers, and then to glue the results together inside a new layer.  (No special filtering needed at this stage.)
&gt; 
&gt; To be fair, you could indeed get nicer text by doing it this way, but only if the page was zoomed out. Otherwise you&apos;re going to have to increase the contentsScale() of any affected layers and wait for a repaint to get better text. Maybe that&apos;s what you&apos;d want? It&apos;s certainly not fast though.

On Android, we already get the high-quality rendering in our link disambiguation zoom implementation.  We call the PageWidgetDelegate::paint()  method directly, providing a Skia canvas with a scale factor applied.  Given that it only happens at the beginning of the action, the performance is acceptable.

I wasn&apos;t thinking of mutating the contentsScale as such, rather I was thinking of a method on layers that explicitly invokes the underlying paint mechanism into a given canvas.

&gt; 
&gt; I think that blurryness was concidered accepted in the way that you can zoom in on a macbook and things become blurry there, but you&apos;re right in that we could potentially do better.
&gt; 
&gt; &gt; 2) Magnifying-glass effects at draw time via pixel shader and matrices.
&gt; 
&gt; Zach can chime in here, but AIUI the filter is implemented in Skia both in software more and in ganesh, and in this case the ganesh (hardware) implementation would be used, similar to other compositor filters. The issue of tying filters into the compositor more tightly than that is perhaps covered in http://go/cssfilterdoc ?

Even with Ganesh though, is it fast enough to do at 60fps?  That said, I don&apos;t care as much about this part since it&apos;s easy to change later in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696284</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 12:41:17 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; &gt; 1) A mechanism to make high-res-subset-repaint requests to the underlying implementations of many layers, and then to glue the results together inside a new layer.  (No special filtering needed at this stage.)
&gt; &gt; 
&gt; &gt; To be fair, you could indeed get nicer text by doing it this way, but only if the page was zoomed out. Otherwise you&apos;re going to have to increase the contentsScale() of any affected layers and wait for a repaint to get better text. Maybe that&apos;s what you&apos;d want? It&apos;s certainly not fast though.
&gt; 
&gt; On Android, we already get the high-quality rendering in our link disambiguation zoom implementation.  We call the PageWidgetDelegate::paint()  method directly, providing a Skia canvas with a scale factor applied.  Given that it only happens at the beginning of the action, the performance is acceptable.
&gt; 
&gt; I wasn&apos;t thinking of mutating the contentsScale as such, rather I was thinking of a method on layers that explicitly invokes the underlying paint mechanism into a given canvas.

Hm, well a readback/magnify is something we can do on impl. If the contentsScale is modified this is also something we could do directly on impl.

Calling over to the main thread and blocking the UI based on a slow renderer sounds like a nonstarter though.

&gt; &gt; 
&gt; &gt; I think that blurryness was concidered accepted in the way that you can zoom in on a macbook and things become blurry there, but you&apos;re right in that we could potentially do better.
&gt; &gt; 
&gt; &gt; &gt; 2) Magnifying-glass effects at draw time via pixel shader and matrices.
&gt; &gt; 
&gt; &gt; Zach can chime in here, but AIUI the filter is implemented in Skia both in software more and in ganesh, and in this case the ganesh (hardware) implementation would be used, similar to other compositor filters. The issue of tying filters into the compositor more tightly than that is perhaps covered in http://go/cssfilterdoc ?
&gt; 
&gt; Even with Ganesh though, is it fast enough to do at 60fps?  That said, I don&apos;t care as much about this part since it&apos;s easy to change later in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696288</commentid>
    <comment_count>17</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-15 12:51:30 -0700</bug_when>
    <thetext>&gt; Hm, well a readback/magnify is something we can do on impl. If the contentsScale is modified this is also something we could do directly on impl.
&gt; 
&gt; Calling over to the main thread and blocking the UI based on a slow renderer sounds like a nonstarter though.

Right.  But impl-side painting will neatly solve this problem someday.

How about this: how about setting up the structure of this feature so that when  impl-side painting is done, it will be easy to flip a switch and get non-blurry painting.  So we would go ask the renderer impl thread, but not the main thread.  I&apos;m fine with blurriness in the short term, I just would like to avoid having code that can&apos;t possibly get high-quality results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696298</commentid>
    <comment_count>18</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 13:01:41 -0700</bug_when>
    <thetext>Oh right, impl side painting. Keep in mind the maginify is in the host compositor, the layers to be redrawn are in a child compositor. This would also add some level of inter-ubercomp-complexity to the picture, to set things on the child compositor from the host compositor. And passing multiple quads from the child compositor for a layer at different scale factors? I&apos;m not sure how that would entirely work..

I&apos;ll let zork comment with his thoughts of how this might positively/negatively affect the feature to apply it to each layer that intersects from region of the screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696307</commentid>
    <comment_count>19</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-15 13:20:48 -0700</bug_when>
    <thetext>My understanding is that for accessibility magnification purpose, they explicitly don&apos;t want to rasterize at a higher resolution - they want to see the same pixels (scaled up).

At a high level, we want the feature that is the same as a background filter - make a small layer for the maximized area, and when it&apos;s drawn, take whatever is underneath and draw with a transformation.

The infrastructure to do it that way already exists (including support for occlusion, partial update etc., and CCDelegatingRenderer support will follow trivially), so it makes sense to hook it up that way.

Once the API is there, we can easily change the implementation (e.g. build the shader directly without going through skia) if it makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696318</commentid>
    <comment_count>20</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-15 13:34:37 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; My understanding is that for accessibility magnification purpose, they explicitly don&apos;t want to rasterize at a higher resolution - they want to see the same pixels (scaled up).

Maybe there&apos;s some concern I&apos;m not aware of, but why would inferior quality be an explicit desire?

&gt; 
&gt; At a high level, we want the feature that is the same as a background filter - make a small layer for the maximized area, and when it&apos;s drawn, take whatever is underneath and draw with a transformation.
&gt; 
&gt; The infrastructure to do it that way already exists (including support for occlusion, partial update etc., and CCDelegatingRenderer support will follow trivially), so it makes sense to hook it up that way.

I agree it&apos;s much easier to do it that way.

OK, because the final implementation will depend on impl-side painting and that is still in a vague state, I&apos;m okay with going with the blurry thing for now and not worrying too much about it until it&apos;s closer to realization.  Android&apos;s tap disambiguation can just use a separate codepath for now.  Thanks for bearing with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696334</commentid>
    <comment_count>21</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 13:44:35 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; OK, because the final implementation will depend on impl-side painting and that is still in a vague state, I&apos;m okay with going with the blurry thing for now and not worrying too much about it until it&apos;s closer to realization.  Android&apos;s tap disambiguation can just use a separate codepath for now.  Thanks for bearing with me.

Ok, thanks.

@jamesr Can you give this patch a look-over if this is enough information about its intent please? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696369</commentid>
    <comment_count>22</comment_count>
      <attachid>158248</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-15 14:14:30 -0700</bug_when>
    <thetext>Comment on attachment 158248
Patch

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

&gt; Source/Platform/chromium/public/WebFilterOperation.h:74
&gt; +    WebRect zoomRect() const

newline between functions, please

&gt; Source/Platform/chromium/public/WebFilterOperation.h:79
&gt; +    int zoomInset() const

what does this field mean?  What&apos;s a zoom inset?

&gt; Source/Platform/chromium/public/WebFilterOperation.h:108
&gt; +    WebRect m_zoomRect;
&gt; +    int m_zoomInset;

It sucks to grow this by even more - can you make some of the existing fields more generic and share data space?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurfaceFilters.cpp:38
&gt; +#include &quot;SkMagnifierImageFilter.h&quot;

I can&apos;t find this file in my skia checkout - has it not landed yet? Please link the skia rev or codereview so we can make sure the DEPS all happen in order

&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:69
&gt; +        ZOOM,

Why are you patching WebCore::FilterOperation?  Do we need to use this in cross-platform code (i.e. outside of chromium compositor stuff)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696370</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-15 14:15:07 -0700</bug_when>
    <thetext>This doesn&apos;t pass EWS, presumably because the skia code hasn&apos;t landed yet - or if it has, it hasn&apos;t rolled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696927</commentid>
    <comment_count>24</comment_count>
      <attachid>158755</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2012-08-16 02:04:24 -0700</bug_when>
    <thetext>Created attachment 158755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696928</commentid>
    <comment_count>25</comment_count>
      <attachid>158248</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2012-08-16 02:05:24 -0700</bug_when>
    <thetext>Comment on attachment 158248
Patch

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

This filter is used for an accessibility feature on Chrome OS for low vision users.  The intention of this magnifier is to enlarge the image without changing what is being rendered.  Additionally, more complex changes to the rendering tree create more edge cases, which we would ideally prefer to avoid.  The pixel shader for this is added in Skia, so it should be rendered by the gpu.

&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:79
&gt;&gt; +    int zoomInset() const
&gt; 
&gt; what does this field mean?  What&apos;s a zoom inset?

Merged this field with amount.  Inset is the width of the transition effect around the border.

&gt;&gt; Source/Platform/chromium/public/WebFilterOperation.h:108
&gt;&gt; +    int m_zoomInset;
&gt; 
&gt; It sucks to grow this by even more - can you make some of the existing fields more generic and share data space?

Done

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurfaceFilters.cpp:38
&gt;&gt; +#include &quot;SkMagnifierImageFilter.h&quot;
&gt; 
&gt; I can&apos;t find this file in my skia checkout - has it not landed yet? Please link the skia rev or codereview so we can make sure the DEPS all happen in order

It was landed in Skia at r5056.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterOperation.h:69
&gt;&gt; +        ZOOM,
&gt; 
&gt; Why are you patching WebCore::FilterOperation?  Do we need to use this in cross-platform code (i.e. outside of chromium compositor stuff)?

This was needed before I moved the actual graphics code to skia.  I&apos;ve removed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697640</commentid>
    <comment_count>26</comment_count>
      <attachid>158755</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 16:09:00 -0700</bug_when>
    <thetext>Comment on attachment 158755
Patch

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697856</commentid>
    <comment_count>27</comment_count>
      <attachid>158755</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 21:22:30 -0700</bug_when>
    <thetext>Comment on attachment 158755
Patch

Rejecting attachment 158755 from commit-queue.

zork@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698320</commentid>
    <comment_count>28</comment_count>
      <attachid>158755</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-17 07:27:36 -0700</bug_when>
    <thetext>Comment on attachment 158755
Patch

You can set CQ? but not CQ+ if you&apos;re not a committer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698353</commentid>
    <comment_count>29</comment_count>
      <attachid>158755</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 08:22:52 -0700</bug_when>
    <thetext>Comment on attachment 158755
Patch

Clearing flags on attachment: 158755

Committed r125903: &lt;http://trac.webkit.org/changeset/125903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698354</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 08:22:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158248</attachid>
            <date>2012-08-14 00:48:00 -0700</date>
            <delta_ts>2012-08-16 02:05:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93939-20120814164728.patch</filename>
            <type>text/plain</type>
            <size>12709</size>
            <attacher name="Zachary Kuznia">zork</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzZjk3MjIzY2I5NGJj
NWExMzM2Zjc1NzIwYzQ5NjVmOWM3MDQ5MjRkLi43MTg0ZmRkYTMyMjllMGQwNjE0YjNiYWM2ZTQy
ZjA2M2Y2MjBjYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0xNCAg
WmFjaCBLdXpuaWEgIDx6b3JrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgU2tpYSBNYWduaWZpZXIgZmlsdGVyIHRvIENocm9taXVtIGxheWVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHVzZWQgYnkgQ2hyb21l
IE9TIHRvIGltcGxlbWVudCB0aGUgc2NyZWVuIG1hZ25pZmllci4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9uOjp6b29tUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbjo6em9vbUluc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGVab29tRmlsdGVyKToKKyAgICAgICAgKFdlYkZpbHRlck9wZXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6V2ViRmlsdGVyT3BlcmF0aW9uKToKKwogMjAx
Mi0wOC0xMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gTWFrZSBXZWJBbmltYXRpb24gYSBwdXJlIHZpcnR1YWwgaW50ZXJmYWNlIHRv
IGhpZGUgaW1wbGVtZW50YXRpb24gYW5kIGF2b2lkIHVucmVzb2x2ZWQgc3ltYm9scwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDE5ZDFjZTUwMmM2MDY3MTVkNGU0NTEwMzhjNzMxOTUxZTQ2MWYxMWUuLjQ0YzNmNmQy
NjU5MDIxMDZkMGIxNTJhZGRjZTU4NGM1OWMxMTVhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NSBAQAorMjAxMi0wOC0xNCAgWmFjaCBLdXpuaWEgIDx6b3JrQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgU2tpYSBNYWduaWZpZXIgZmlsdGVyIHRvIENocm9taXVtIGxh
eWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGlzIHVzZWQgYnkgQ2hyb21lIE9TIHRvIGltcGxlbWVudCB0aGUgc2NyZWVuIG1hZ25pZmllci4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNU
b1dlYkZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZW5kZXJTdXJmYWNlRmlsdGVyczo6b3B0aW1pemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5k
ZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Olpvb21GaWx0ZXJP
cGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmg6CisgICAgICAgIChab29tRmlsdGVy
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6Wm9vbUZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6
Wm9vbUZpbHRlck9wZXJhdGlvbjo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uOjpab29tRmlsdGVyT3BlcmF0aW9uOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbjo6Wm9vbUZpbHRlck9wZXJhdGlvbjo6eSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246Olpvb21GaWx0ZXJPcGVyYXRpb246OndpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6Wm9vbUZpbHRlck9wZXJhdGlvbjo6aGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6Wm9vbUZpbHRlck9wZXJhdGlvbjo6aW5z
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpab29tRmlsdGVyT3BlcmF0
aW9uOjphZmZlY3RzT3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246
Olpvb21GaWx0ZXJPcGVyYXRpb246Om1vdmVzUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbjo6Wm9vbUZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246Olpvb21GaWx0ZXJPcGVyYXRpb246Olpvb21GaWx0
ZXJPcGVyYXRpb24pOgorICAgICAgICAoRmlsdGVyT3BlcmF0aW9uKToKKwogMjAxMi0wOC0xMiAg
U2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIHJlbmRlclN1cmZhY2UgaW4gaW5jb3JyZWN0IHNwYWNlIGlmIG93bmluZyBsYXllciBoYXMg
ZW1wdHkgYnV0IG5vbi16ZXJvIGJvdW5kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggODUxYTdiOWQ0NWE3ZGFlNDE0
ZWE5MjY1NmJiNmQzN2Y0Y2FmNjAwNy4uZDMwZGNiZDc4YjVjOTRlMzEzYjczNzdjYmNkYzQ5ZmIy
ZWY0YmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJG
aWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkZpbHRlck9wZXJhdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCiAjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJQb2ludC5oIgorI2luY2x1
ZGUgIldlYlJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ3LDYgKzQ4LDcgQEAg
cHVibGljOgogICAgICAgICBGaWx0ZXJUeXBlQmx1ciwKICAgICAgICAgRmlsdGVyVHlwZURyb3BT
aGFkb3csCiAgICAgICAgIEZpbHRlclR5cGVDb2xvck1hdHJpeCwKKyAgICAgICAgRmlsdGVyVHlw
ZVpvb20sCiAgICAgfTsKIAogICAgIEZpbHRlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQpAQCAtNjksNiArNzEsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fbWF0cml4OwogICAgIH0KKyAgICBXZWJSZWN0IHpvb21SZWN0KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIFdFQktJVF9BU1NFUlQobV90eXBlID09IEZpbHRlclR5cGVab29tKTsKKyAgICAgICAg
cmV0dXJuIFdlYlJlY3QobV96b29tUmVjdCk7CisgICAgfQorICAgIGludCB6b29tSW5zZXQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fem9vbUluc2V0OworICAgIH0KIAogI2RlZmlu
ZSBXRUJLSVRfSEFTX05FV19XRUJGSUxURVJPUEVSQVRJT05fQVBJIDEKICAgICBzdGF0aWMgV2Vi
RmlsdGVyT3BlcmF0aW9uIGNyZWF0ZUdyYXlzY2FsZUZpbHRlcihmbG9hdCBhbW91bnQpIHsgcmV0
dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlR3JheXNjYWxlLCBhbW91bnQpOyB9CkBA
IC04Miw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNy
ZWF0ZUJsdXJGaWx0ZXIoZmxvYXQgYW1vdW50KSB7IHJldHVybiBXZWJGaWx0ZXJPcGVyYXRpb24o
RmlsdGVyVHlwZUJsdXIsIGFtb3VudCk7IH0KICAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9u
IGNyZWF0ZURyb3BTaGFkb3dGaWx0ZXIoV2ViUG9pbnQgb2Zmc2V0LCBmbG9hdCBzdGREZXZpYXRp
b24sIFdlYkNvbG9yIGNvbG9yKSB7IHJldHVybiBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlw
ZURyb3BTaGFkb3csIG9mZnNldCwgc3RkRGV2aWF0aW9uLCBjb2xvcik7IH0KICAgICBzdGF0aWMg
V2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZUNvbG9yTWF0cml4RmlsdGVyKFNrU2NhbGFyIG1hdHJp
eFsyMF0pIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlQ29sb3JNYXRyaXgs
IG1hdHJpeCk7IH0KKyAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZVpvb21GaWx0
ZXIoV2ViUmVjdCByZWN0LCBpbnQgaW5zZXQpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihG
aWx0ZXJUeXBlWm9vbSwgcmVjdCwgaW5zZXQpOyB9CiAKICAgICBib29sIGVxdWFscyhjb25zdCBX
ZWJGaWx0ZXJPcGVyYXRpb24mIG90aGVyKSBjb25zdDsKIApAQCAtOTIsNiArMTA0LDggQEAgcHJp
dmF0ZToKICAgICBXZWJQb2ludCBtX2Ryb3BTaGFkb3dPZmZzZXQ7CiAgICAgV2ViQ29sb3IgbV9k
cm9wU2hhZG93Q29sb3I7CiAgICAgU2tTY2FsYXIgbV9tYXRyaXhbMjBdOworICAgIFdlYlJlY3Qg
bV96b29tUmVjdDsKKyAgICBpbnQgbV96b29tSW5zZXQ7CiAKICAgICBXZWJGaWx0ZXJPcGVyYXRp
b24oRmlsdGVyVHlwZSB0eXBlLCBmbG9hdCBhbW91bnQpCiAgICAgewpAQCAtMTExLDYgKzEyNSwx
NSBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBl
LCBTa1NjYWxhciBtYXRyaXhbMjBdKTsKKworICAgIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJU
eXBlIHR5cGUsIFdlYlJlY3QgcmVjdCwgaW50IGluc2V0KQorICAgIHsKKyAgICAgICAgV0VCS0lU
X0FTU0VSVCh0eXBlID09IEZpbHRlclR5cGVab29tKTsKKyAgICAgICAgbV90eXBlID0gdHlwZTsK
KyAgICAgICAgbV9hbW91bnQgPSAwOworICAgICAgICBtX3pvb21SZWN0ID0gcmVjdDsKKyAgICAg
ICAgbV96b29tSW5zZXQgPSBpbnNldDsKKyAgICB9CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiYgYSwgY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9u
JiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYmJhYTkxOGE0
MDc0NThjNDgyYTk3M2RjNjgzYzNmYWEwYmZlYjBjZi4uYjM1NGY0MmFlYjc1ZWViOGE3NzEwMjUy
ZGQ0YzQ2Nzk3ZDI0OTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CkBAIC0zNzMsNiArMzczLDExIEBAIHN0YXRpYyBib29sIGNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0
aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBGaWx0ZXJPcGVyYXRpCiAgICAgICAgICAg
ICB3ZWJGaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZURyb3BTaGFkb3dG
aWx0ZXIoV2ViUG9pbnQoZHJvcFNoYWRvd09wLngoKSwgZHJvcFNoYWRvd09wLnkoKSksIGRyb3BT
aGFkb3dPcC5zdGREZXZpYXRpb24oKSwgZHJvcFNoYWRvd09wLmNvbG9yKCkucmdiKCkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpaT09NOiB7CisgICAgICAgICAgICBjb25zdCBab29tRmlsdGVyT3BlcmF0aW9uJiB6b29tT3Ag
PSAqc3RhdGljX2Nhc3Q8Y29uc3QgWm9vbUZpbHRlck9wZXJhdGlvbio+KCZvcCk7CisgICAgICAg
ICAgICB3ZWJGaWx0ZXJzLmFwcGVuZChXZWJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZVpvb21GaWx0
ZXIoV2ViUmVjdCh6b29tT3AueCgpLCB6b29tT3AueSgpLCB6b29tT3Aud2lkdGgoKSwgem9vbU9w
LmhlaWdodCgpKSwgem9vbU9wLmluc2V0KCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6Q1VTVE9NOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBOb3Qgc3VwcG9ydGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcAppbmRleCBhMDJmZDVm
OGYwZDg0NTg4ZjljNjNkYWY5YTZmMjRlODM3YWMyYjVlLi41MTM0NGQ2YWU5ZTIwMjU2YTNiZjM5
Nzc5NDI5YzBhZDc1ZjVlYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VG
aWx0ZXJzLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0
ZXIuaCIKICNpbmNsdWRlICJTa0dwdURldmljZS5oIgogI2luY2x1ZGUgIlNrR3JUZXh0dXJlUGl4
ZWxSZWYuaCIKKyNpbmNsdWRlICJTa01hZ25pZmllckltYWdlRmlsdGVyLmgiCiAjaW5jbHVkZSA8
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJP
cGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CkBA
IC0zNjYsNiArMzY3LDcgQEAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIENDUmVuZGVyU3Vy
ZmFjZUZpbHRlcnM6Om9wdGltaXplKGNvbnN0IFdlYktpdDo6V2ViRmkKICAgICAgICAgc3dpdGNo
IChvcC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6
RmlsdGVyVHlwZUJsdXI6CiAgICAgICAgIGNhc2UgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246
OkZpbHRlclR5cGVEcm9wU2hhZG93OgorICAgICAgICBjYXNlIFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9uOjpGaWx0ZXJUeXBlWm9vbToKICAgICAgICAgICAgIG5ld0xpc3QuYXBwZW5kKG9wKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9uOjpGaWx0ZXJUeXBlQnJpZ2h0bmVzczoKQEAgLTQyNiw2ICs0MjgsMjAgQEAgU2tCaXRtYXAg
Q0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkoY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXIKICAgICAgICAgICAgIGNhbnZhcy0+ZHJhd0JpdG1hcChzdGF0ZS5zb3Vy
Y2UoKSwgMCwgMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlWm9vbTogeworICAgICAgICAg
ICAgU2tQYWludCBwYWludDsKKyAgICAgICAgICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVy
PiB6b29tRmlsdGVyKAorICAgICAgICAgICAgICAgIG5ldyBTa01hZ25pZmllckltYWdlRmlsdGVy
KAorICAgICAgICAgICAgICAgICAgICBTa1JlY3Q6Ok1ha2VYWVdIKG9wLnpvb21SZWN0KCkueCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC56b29tUmVjdCgpLnksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Auem9vbVJlY3QoKS53aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC56b29tUmVjdCgpLmhlaWdo
dCksCisgICAgICAgICAgICAgICAgICAgIG9wLnpvb21JbnNldCgpKSk7CisgICAgICAgICAgICBw
YWludC5zZXRJbWFnZUZpbHRlcih6b29tRmlsdGVyLmdldCgpKTsKKyAgICAgICAgICAgIGNhbnZh
cy0+c2F2ZUxheWVyKDAsICZwYWludCk7CisgICAgICAgICAgICBjYW52YXMtPmRyYXdCaXRtYXAo
c3RhdGUuc291cmNlKCksIDAsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZUJyaWdodG5l
c3M6CiAgICAgICAgIGNhc2UgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVD
b250cmFzdDoKICAgICAgICAgY2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVy
VHlwZUdyYXlzY2FsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCA2NTY5MjZlMjhlMzU3
ZDYxMWUxMWQ2MzkwOTA4OTJjYTZiZDZjNTEzLi42MGYxN2QyMjNjNzIwZmJhNDk3ZTFkODU5MzVm
ZWI1OTlhMGZiYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC0xNDksNiArMTQ5LDM1
IEBAIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
OjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21D
b2xvciwgbV9jb2xvciwgcHJvZ3Jlc3MpLCBtX3R5cGUpOwogfQogCitQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gWm9vbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorewor
ICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKKyAgICAgICAgcmV0dXJu
IHRoaXM7CisKKyAgICBpZiAoYmxlbmRUb1Bhc3N0aHJvdWdoKQorICAgICAgICByZXR1cm4gWm9v
bUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKAorICAgICAgICAgICAgV2ViQ29yZTo6YmxlbmQobV94
LCAwLCBwcm9ncmVzcyksCisgICAgICAgICAgICBXZWJDb3JlOjpibGVuZChtX3ksIDAsIHByb2dy
ZXNzKSwKKyAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1fd2lkdGgsIDAsIHByb2dyZXNzKSwK
KyAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1faGVpZ2h0LCAwLCBwcm9ncmVzcyksCisgICAg
ICAgICAgICBXZWJDb3JlOjpibGVuZChtX2luc2V0LCAwLCBwcm9ncmVzcyksCisgICAgICAgICAg
ICBtX3R5cGUpOworCisgICAgY29uc3QgWm9vbUZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgWm9vbUZpbHRlck9wZXJhdGlvbio+KGZyb20pOworICAgIGludCBmcm9t
WCA9IGZyb21PcCA/IGZyb21PcC0+eCgpIDogMDsKKyAgICBpbnQgZnJvbVkgPSBmcm9tT3AgPyBm
cm9tT3AtPnkoKSA6IDA7CisgICAgaW50IGZyb21XaWR0aCA9IGZyb21PcCA/IGZyb21PcC0+d2lk
dGgoKSA6IDA7CisgICAgaW50IGZyb21IZWlnaHQgPSBmcm9tT3AgPyBmcm9tT3AtPmhlaWdodCgp
IDogMDsKKyAgICBpbnQgZnJvbUluc2V0ID0gZnJvbU9wID8gZnJvbU9wLT5pbnNldCgpIDogMDsK
KworICAgIHJldHVybiBab29tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoCisgICAgICAgIFdlYkNv
cmU6OmJsZW5kKGZyb21YLCBtX3gsIHByb2dyZXNzKSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQo
ZnJvbVksIG1feSwgcHJvZ3Jlc3MpLAorICAgICAgICBXZWJDb3JlOjpibGVuZChmcm9tV2lkdGgs
IG1fd2lkdGgsIHByb2dyZXNzKSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbUhlaWdodCwg
bV9oZWlnaHQsIHByb2dyZXNzKSwKKyAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbUluc2V0LCBt
X2luc2V0LCBwcm9ncmVzcyksIG1fdHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4
IGU3MjYwMGM0N2UzNjRkYjYyNTZiMzc5ZjNiYTQ2M2NkMzk4ZDI0NDMuLjk5NjliMzNjNDQ1MTc5
MWY0YjVmMWRkMGZiNTBlYWExY2I1YjJiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtNjYs
NiArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIENPTlRSQVNULAogICAgICAgICBCTFVSLAogICAg
ICAgICBEUk9QX1NIQURPVywKKyAgICAgICAgWk9PTSwKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CiAgICAgICAgIENVU1RPTSwKICNlbmRpZgpAQCAtMzU1LDYgKzM1Niw1NyBAQCBwcml2YXRlOgog
ICAgIENvbG9yIG1fY29sb3I7CiB9OwogCitjbGFzcyBab29tRmlsdGVyT3BlcmF0aW9uIDogcHVi
bGljIEZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Wm9v
bUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBpbnQgaW5zZXQsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgWm9vbUZpbHRlck9wZXJhdGlvbih4LCB5LCB3aWR0aCwgaGVpZ2h0LCBp
bnNldCwgdHlwZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Wm9vbUZpbHRlck9wZXJhdGlvbihtX3gsIG1feSwgbV93aWR0aCwgbV9oZWlnaHQsIG1faW5zZXQs
IG1fdHlwZSkpOworICAgIH0KKworCisgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0K
KyAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorICAgIGludCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9o
ZWlnaHQ7IH0KKyAgICBpbnQgaW5zZXQoKSBjb25zdCB7IHJldHVybiBtX2luc2V0OyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdo
ID0gZmFsc2UpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNTYW1lVHlw
ZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29uc3QgWm9vbUZpbHRl
ck9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBab29tRmlsdGVyT3BlcmF0aW9u
Kj4oJm8pOworICAgICAgICByZXR1cm4gbV94ID09IG90aGVyLT5tX3ggJiYgbV95ID09IG90aGVy
LT5tX3kgJiYgbV93aWR0aCA9PSBvdGhlci0+bV93aWR0aCAmJiBtX2hlaWdodCA9PSBvdGhlci0+
bV9oZWlnaHQgJiYgbV9pbnNldCA9PSBvdGhlci0+bV9pbnNldDsKKyAgICB9CisKKyAgICBab29t
RmlsdGVyT3BlcmF0aW9uKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg
aW5zZXQsIE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24odHlw
ZSkKKyAgICAgICAgLCBtX3goeCkKKyAgICAgICAgLCBtX3koeSkKKyAgICAgICAgLCBtX3dpZHRo
KHdpZHRoKQorICAgICAgICAsIG1faGVpZ2h0KGhlaWdodCkKKyAgICAgICAgLCBtX2luc2V0KGlu
c2V0KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgbV94OworICAgIGludCBtX3k7CisgICAgaW50
IG1fd2lkdGg7CisgICAgaW50IG1faGVpZ2h0OworICAgIGludCBtX2luc2V0OworfTsKKworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158755</attachid>
            <date>2012-08-16 02:04:24 -0700</date>
            <delta_ts>2012-08-17 08:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93939-20120816180349.patch</filename>
            <type>text/plain</type>
            <size>6253</size>
            <attacher name="Zachary Kuznia">zork</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3ZWU2NzZmODQwZDM3
NDI2OWM5ZDRlNDlhZDJlNzQ3NzY4Nzk3M2YyLi42N2M4ZTk1OWIzNmZkZWZjZGU0NWFjMzYzM2I2
ODIxZDJhOGU2ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0xNiAg
WmFjaCBLdXpuaWEgIDx6b3JrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgU2tpYSBNYWduaWZpZXIgZmlsdGVyIHRvIENocm9taXVtIGxheWVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHVzZWQgYnkgQ2hyb21l
IE9TIGZvciB0aGUgc2NyZWVuIG1hZ25pZmllcgorCisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b246Onpvb21SZWN0KToKKyAgICAgICAgKFdlYkZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlWm9vbUZpbHRlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6V2ViRmlsdGVyT3BlcmF0aW9uKToKKwogMjAxMi0w
OC0xNCAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBQbHVtYiB0
aHJvdWdoIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4NmFh
NTIxN2E4MTBkMzg1Mzc5YjQ4YmE5M2RjOGQyMmIwMTlmOC4uY2JiNmQwMTZmN2Y1ZGZiODM1NTMz
MDkzZjQzODg3NmFhZWJjNTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4
LTE2ICBaYWNoIEt1em5pYSAgPHpvcmtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBTa2lhIE1hZ25pZmllciBmaWx0ZXIgdG8gQ2hyb21pdW0gbGF5ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzkzOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdXNlZCBieSBD
aHJvbWUgT1MgZm9yIHRoZSBzY3JlZW4gbWFnbmlmaWVyCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZUZpbHRlcnM6Om9wdGltaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KToKKwogMjAxMi0wOC0xNiAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtGb3Jtc10gV2hl
ZWwgZXZlbnQgc3VwcG9ydCBpbiBtdWx0aXBsZSBmaWVsZHMgdGltZSBpbnB1dCBVSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24u
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmgK
aW5kZXggODUxYTdiOWQ0NWE3ZGFlNDE0ZWE5MjY1NmJiNmQzN2Y0Y2FmNjAwNy4uYThkMGVjMjVi
MTczMGMzN2I3MzkwNmExOWI5NTI5YjU0NTNmYjc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNs
dWRlICJXZWJQb2ludC5oIgorI2luY2x1ZGUgIldlYlJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKQEAgLTQ3LDYgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBGaWx0ZXJUeXBlQmx1ciwK
ICAgICAgICAgRmlsdGVyVHlwZURyb3BTaGFkb3csCiAgICAgICAgIEZpbHRlclR5cGVDb2xvck1h
dHJpeCwKKyAgICAgICAgRmlsdGVyVHlwZVpvb20sCiAgICAgfTsKIAogICAgIEZpbHRlclR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtNzAsNiArNzIsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9tYXRyaXg7CiAgICAgfQogCisgICAgV2ViUmVjdCB6b29tUmVj
dCgpIGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJU
eXBlWm9vbSk7CisgICAgICAgIHJldHVybiBXZWJSZWN0KG1fem9vbVJlY3QpOworICAgIH0KKwog
I2RlZmluZSBXRUJLSVRfSEFTX05FV19XRUJGSUxURVJPUEVSQVRJT05fQVBJIDEKICAgICBzdGF0
aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZUdyYXlzY2FsZUZpbHRlcihmbG9hdCBhbW91bnQp
IHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlR3JheXNjYWxlLCBhbW91bnQp
OyB9CiAgICAgc3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVTZXBpYUZpbHRlcihmbG9h
dCBhbW91bnQpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlU2VwaWEsIGFt
b3VudCk7IH0KQEAgLTgyLDYgKzkwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJGaWx0ZXJP
cGVyYXRpb24gY3JlYXRlQmx1ckZpbHRlcihmbG9hdCBhbW91bnQpIHsgcmV0dXJuIFdlYkZpbHRl
ck9wZXJhdGlvbihGaWx0ZXJUeXBlQmx1ciwgYW1vdW50KTsgfQogICAgIHN0YXRpYyBXZWJGaWx0
ZXJPcGVyYXRpb24gY3JlYXRlRHJvcFNoYWRvd0ZpbHRlcihXZWJQb2ludCBvZmZzZXQsIGZsb2F0
IHN0ZERldmlhdGlvbiwgV2ViQ29sb3IgY29sb3IpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlv
bihGaWx0ZXJUeXBlRHJvcFNoYWRvdywgb2Zmc2V0LCBzdGREZXZpYXRpb24sIGNvbG9yKTsgfQog
ICAgIHN0YXRpYyBXZWJGaWx0ZXJPcGVyYXRpb24gY3JlYXRlQ29sb3JNYXRyaXhGaWx0ZXIoU2tT
Y2FsYXIgbWF0cml4WzIwXSkgeyByZXR1cm4gV2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGVD
b2xvck1hdHJpeCwgbWF0cml4KTsgfQorICAgIHN0YXRpYyBXZWJGaWx0ZXJPcGVyYXRpb24gY3Jl
YXRlWm9vbUZpbHRlcihXZWJSZWN0IHJlY3QsIGludCBpbnNldCkgeyByZXR1cm4gV2ViRmlsdGVy
T3BlcmF0aW9uKEZpbHRlclR5cGVab29tLCByZWN0LCBpbnNldCk7IH0KIAogICAgIGJvb2wgZXF1
YWxzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0OwogCkBAIC05Miw2ICsx
MDEsNyBAQCBwcml2YXRlOgogICAgIFdlYlBvaW50IG1fZHJvcFNoYWRvd09mZnNldDsKICAgICBX
ZWJDb2xvciBtX2Ryb3BTaGFkb3dDb2xvcjsKICAgICBTa1NjYWxhciBtX21hdHJpeFsyMF07Cisg
ICAgV2ViUmVjdCBtX3pvb21SZWN0OwogCiAgICAgV2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5
cGUgdHlwZSwgZmxvYXQgYW1vdW50KQogICAgIHsKQEAgLTExMSw2ICsxMjEsMTQgQEAgcHJpdmF0
ZToKICAgICB9CiAKICAgICBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZSwgU2tTY2FsYXIg
bWF0cml4WzIwXSk7CisKKyAgICBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZSB0eXBlLCBX
ZWJSZWN0IHJlY3QsIGZsb2F0IGluc2V0KQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVCh0
eXBlID09IEZpbHRlclR5cGVab29tKTsKKyAgICAgICAgbV90eXBlID0gdHlwZTsKKyAgICAgICAg
bV9hbW91bnQgPSBpbnNldDsKKyAgICAgICAgbV96b29tUmVjdCA9IHJlY3Q7CisgICAgfQogfTsK
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb24mIGEsIGNv
bnN0IFdlYkZpbHRlck9wZXJhdGlvbiYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlRmlsdGVycy5jcHAKaW5kZXggYTAyZmQ1ZjhmMGQ4NDU4OGY5YzYzZGFmOWE2ZjI0ZTgzN2Fj
MmI1ZS4uMWRiYThkMzk4ODQxMjgzNTY4NDc1MjVhMzdlYjlkZTU5MWJkMDc3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVyLmgiCiAjaW5jbHVkZSAiU2tHcHVEZXZpY2Uu
aCIKICNpbmNsdWRlICJTa0dyVGV4dHVyZVBpeGVsUmVmLmgiCisjaW5jbHVkZSAiU2tNYWduaWZp
ZXJJbWFnZUZpbHRlci5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgpAQCAtMzY2LDYgKzM2Nyw3IEBAIFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjpvcHRpbWl6ZShjb25zdCBX
ZWJLaXQ6OldlYkZpCiAgICAgICAgIHN3aXRjaCAob3AudHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVCbHVyOgogICAgICAgICBjYXNl
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlRHJvcFNoYWRvdzoKKyAgICAg
ICAgY2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZVpvb206CiAgICAg
ICAgICAgICBuZXdMaXN0LmFwcGVuZChvcCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZUJyaWdodG5lc3M6CkBA
IC00MjYsNiArNDI4LDIwIEBAIFNrQml0bWFwIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5
KGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyCiAgICAgICAgICAgICBj
YW52YXMtPmRyYXdCaXRtYXAoc3RhdGUuc291cmNlKCksIDAsIDApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbjo6
RmlsdGVyVHlwZVpvb206IHsKKyAgICAgICAgICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgICAgICAg
ICBTa0F1dG9UVW5yZWY8U2tJbWFnZUZpbHRlcj4gem9vbUZpbHRlcigKKyAgICAgICAgICAgICAg
ICBuZXcgU2tNYWduaWZpZXJJbWFnZUZpbHRlcigKKyAgICAgICAgICAgICAgICAgICAgU2tSZWN0
OjpNYWtlWFlXSChvcC56b29tUmVjdCgpLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Auem9vbVJlY3QoKS55LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wLnpvb21SZWN0KCkud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Auem9vbVJlY3QoKS5oZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICBvcC5h
bW91bnQoKSkpOworICAgICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIoem9vbUZpbHRlci5n
ZXQoKSk7CisgICAgICAgICAgICBjYW52YXMtPnNhdmVMYXllcigwLCAmcGFpbnQpOworICAgICAg
ICAgICAgY2FudmFzLT5kcmF3Qml0bWFwKHN0YXRlLnNvdXJjZSgpLCAwLCAwKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb246OkZpbHRlclR5cGVCcmlnaHRuZXNzOgogICAgICAgICBjYXNlIFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlQ29udHJhc3Q6CiAgICAgICAgIGNhc2UgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVHcmF5c2NhbGU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>