<?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>64958</bug_id>
          
          <creation_ts>2011-07-21 09:44:23 -0700</creation_ts>
          <short_desc>Use software rendering for small canvas</short_desc>
          <delta_ts>2011-07-25 11:39:25 -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>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="Alok Priyadarshi">alokp</reporter>
          <assigned_to name="Alok Priyadarshi">alokp</assigned_to>
          <cc>bsalomon</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>junov</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>reed</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tomhudson</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>440455</commentid>
    <comment_count>0</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-21 09:44:23 -0700</bug_when>
    <thetext>chromium bug: http://code.google.com/p/chromium/issues/detail?id=88063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440477</commentid>
    <comment_count>1</comment_count>
      <attachid>101602</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-21 10:37:35 -0700</bug_when>
    <thetext>Created attachment 101602
proposed patch

This patch brings tv.adobe.com frame-rate back to 62. The accelerated path runs at 15 due to all the cufon-text canvases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440480</commentid>
    <comment_count>2</comment_count>
      <attachid>101603</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-21 10:41:02 -0700</bug_when>
    <thetext>Created attachment 101603
proposed patch

Correct patch. The last patch picked up unintended changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440483</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 10:41:48 -0700</bug_when>
    <thetext>Attachment 101602 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:107:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440484</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 10:42:45 -0700</bug_when>
    <thetext>Attachment 101603 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:107:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440486</commentid>
    <comment_count>5</comment_count>
      <attachid>101602</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-07-21 10:46:29 -0700</bug_when>
    <thetext>Comment on attachment 101602
proposed patch

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:100
&gt; +static bool shouldAccelerateCanvas(const HTMLCanvasElement* canvas)

This function should probably be protected by #if ENABLE(ACCELERATED_2D_CANVAS), otherwise it&apos;ll probably give unused function warnings on other ports.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:108
&gt; +        !settings-&gt;legacyAccelerated2dCanvasEnabled())

Not your fault, but the legacy flag doesn&apos;t do anything anymore (the legacy implementation has been removed).  So you don&apos;t need to check it.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:118
&gt; +    static const int nPixelThreshold = 128 * 128;

This should probably be in a constant at the top of the file (along with the comment).

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:164
&gt; +    if (shouldAccelerateCanvas(canvas)) {

WebKit style is to prefer early-returns over nested if&apos;s.  So this should be:

    if (!shouldAccelerateCanvas(canvas)) 
        return;

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:167
&gt; +      if (p &amp;&amp; c) {

As above, these should be early-returns.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:169
&gt; +          if (m_context3D) {

Could be an early-return here too, I think.

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdaterCanvas.cpp:76
&gt; +LayerTextureUpdater::Orientation LayerTextureUpdaterBitmap::orientation()

Is this necessary for this patch, or maybe an accidental inclusion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440488</commentid>
    <comment_count>6</comment_count>
      <attachid>101602</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 10:54:16 -0700</bug_when>
    <thetext>Comment on attachment 101602
proposed patch

Attachment 101602 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9201791</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440497</commentid>
    <comment_count>7</comment_count>
      <attachid>101603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 11:06:30 -0700</bug_when>
    <thetext>Comment on attachment 101603
proposed patch

Attachment 101603 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9191730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440501</commentid>
    <comment_count>8</comment_count>
      <attachid>101608</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-21 11:18:28 -0700</bug_when>
    <thetext>Created attachment 101608
proposed patch

Fixed style issues. Still need to investigate the test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440567</commentid>
    <comment_count>9</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-07-21 12:13:21 -0700</bug_when>
    <thetext>I think we need to put heads together here soon to try to make more of this kind of code (that&apos;s getting put behind ACCELERATED_2D_CANVAS everywhere) cross-platform.

In particular, I have one comment/suggestion here:

If you have this &quot;shouldAccelerateCanvas&quot; function, and you use it elsewhere down in canvas-land - as in, other than just in context creation - then you might have some problems. Consider what happens if you have the page settings change half way through using a canvas and some of the drawing/recreation code (like when someone does canvas.width=blah) ends up depending on this &quot;shouldAccelerateCanvas&quot; to know if it should be accelerated or not.

It seems simpler and more robust to have the choice to accelerate a canvas or not passed in on creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440585</commentid>
    <comment_count>10</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-21 12:44:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I think we need to put heads together here soon to try to make more of this kind of code (that&apos;s getting put behind ACCELERATED_2D_CANVAS everywhere) cross-platform.

Agree.

&gt; In particular, I have one comment/suggestion here:
&gt; 
&gt; If you have this &quot;shouldAccelerateCanvas&quot; function, and you use it elsewhere down in canvas-land - as in, other than just in context creation - then you might have some problems. Consider what happens if you have the page settings change half way through using a canvas and some of the drawing/recreation code (like when someone does canvas.width=blah) ends up depending on this &quot;shouldAccelerateCanvas&quot; to know if it should be accelerated or not.
&gt; 
&gt; It seems simpler and more robust to have the choice to accelerate a canvas or not passed in on creation.

May be I am missing something. I do not see how passing a flag would make it more robust. The canvas may still fail to accelerate for variety of other reasons - insufficient vram, context lost, etc. If you passed &quot;accelerated&quot; choice or if the page-settings has acceleration enabled, you cannot assume that a canvas is accelerated. You need to call Canvas::isAccelerated() to find out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440590</commentid>
    <comment_count>11</comment_count>
      <attachid>101608</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-21 12:48:42 -0700</bug_when>
    <thetext>Comment on attachment 101608
proposed patch

I think you want to do the size check in reset() as well.  This does complicate the state transitions a bit, since right now we depend on initial m_context3D creation to succeed in order to stay in the accelerated path through reset() calls.  With this patch if a canvas is created with width*height &lt; 128^2 but then resized to be larger, it won&apos;t enter the accelerated path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440610</commentid>
    <comment_count>12</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-07-21 13:11:28 -0700</bug_when>
    <thetext>&gt; May be I am missing something. I do not see how passing a flag would make it more robust. The canvas may still fail to accelerate for variety of other reasons - insufficient vram, context lost, etc. If you passed &quot;accelerated&quot; choice or if the page-settings has acceleration enabled, you cannot assume that a canvas is accelerated. You need to call Canvas::isAccelerated() to find out.

Sorry, I wasn&apos;t clear there. I meant to say that:
1) Knowing whether or not a live canvas is accelerated or not should be from isAccelerated() for sure. 
2) Since the decision to *want* to accelerate a canvas or not comes from above (i.e. settings and such), ideally it comes down from above. I don&apos;t think it&apos;s desirable to ask up - explained below.
3) Since canvas internals can be recreated without the canvas itself being recreated, it needs to store the preference passed down on creation and use that for determining if it should try to make accelerated internals.

This really isn&apos;t a big issue, but here&apos;s the case that I think is wonky here.
- Have accelerated canvas turned on. Open a page. Canvas gets accelerated.
- The setting is turned off.
- Current canvas continues along being accelerated.
- The canvas has its width set, internals get recreated, though this time *not* accelerated.
- Now you have a page that *had* an accelerated canvas and now doesn&apos;t. And it&apos;s not clear when that happens.
I find it clearer if the settings used on page open persist for the canvas (would be weird if some canvii on the page became non-accel while others still were accel). This is mostly important for debugging, so again, not a big deal. And if the desired behavior of toggling the setting is to get all canvii on the page to immediately become (non-)accel, then I think a better approach is likely to expose the &quot;should&quot; member bool and do a reset (since you need to anyway) and copy over any state - not sure why you&apos;d want all this though for all the hassle it is...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440614</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-21 13:18:43 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; May be I am missing something. I do not see how passing a flag would make it more robust. The canvas may still fail to accelerate for variety of other reasons - insufficient vram, context lost, etc. If you passed &quot;accelerated&quot; choice or if the page-settings has acceleration enabled, you cannot assume that a canvas is accelerated. You need to call Canvas::isAccelerated() to find out.
&gt; 
&gt; Sorry, I wasn&apos;t clear there. I meant to say that:
&gt; 1) Knowing whether or not a live canvas is accelerated or not should be from isAccelerated() for sure. 
&gt; 2) Since the decision to *want* to accelerate a canvas or not comes from above (i.e. settings and such), ideally it comes down from above. I don&apos;t think it&apos;s desirable to ask up - explained below.
&gt; 3) Since canvas internals can be recreated without the canvas itself being recreated, it needs to store the preference passed down on creation and use that for determining if it should try to make accelerated internals.
&gt; 
&gt; This really isn&apos;t a big issue, but here&apos;s the case that I think is wonky here.
&gt; - Have accelerated canvas turned on. Open a page. Canvas gets accelerated.
&gt; - The setting is turned off.
&gt; - Current canvas continues along being accelerated.
&gt; - The canvas has its width set, internals get recreated, though this time *not* accelerated.
&gt; - Now you have a page that *had* an accelerated canvas and now doesn&apos;t. And it&apos;s not clear when that happens.
&gt; I find it clearer if the settings used on page open persist for the canvas (would be weird if some canvii on the page became non-accel while others still were accel). This is mostly important for debugging, so again, not a big deal. And if the desired behavior of toggling the setting is to get all canvii on the page to immediately become (non-)accel, then I think a better approach is likely to expose the &quot;should&quot; member bool and do a reset (since you need to anyway) and copy over any state - not sure why you&apos;d want all this though for all the hassle it is...

Settings can&apos;t be changed at runtime in chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440706</commentid>
    <comment_count>14</comment_count>
      <attachid>101661</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-21 16:22:42 -0700</bug_when>
    <thetext>Created attachment 101661
proposed patch

Handled the case where changing canvas size triggers change in acceleration state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440709</commentid>
    <comment_count>15</comment_count>
      <attachid>101661</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 16:29:30 -0700</bug_when>
    <thetext>Comment on attachment 101661
proposed patch

Attachment 101661 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9209830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440711</commentid>
    <comment_count>16</comment_count>
      <attachid>101661</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-21 16:33:21 -0700</bug_when>
    <thetext>Comment on attachment 101661
proposed patch

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

I think this looks great.  Not r+&apos;ing because of the compile error on mac, but this is much cleaner and less buggy than the existing code for sure.  I think checking Settings on every canvas creation and reset() is the correct thing to do.

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:250
&gt; +        bool wasAccelerated = context2D-&gt;isAccelerated();

you&apos;ll have to guard this in the #if guards below, or use some form of UNUSED_???() macro in an #else branch to avoid the unused variable warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440724</commentid>
    <comment_count>17</comment_count>
      <attachid>101668</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-21 16:55:54 -0700</bug_when>
    <thetext>Created attachment 101668
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440725</commentid>
    <comment_count>18</comment_count>
      <attachid>101668</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-21 16:57:23 -0700</bug_when>
    <thetext>Comment on attachment 101668
proposed patch

Great, I&apos;ll let the EWS bots munch on this but I think it&apos;s looking fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440952</commentid>
    <comment_count>19</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-22 08:06:12 -0700</bug_when>
    <thetext>The bots seem happy. PTAL - this needs to go in M14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440962</commentid>
    <comment_count>20</comment_count>
      <attachid>101668</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-07-22 08:26:57 -0700</bug_when>
    <thetext>Comment on attachment 101668
proposed patch

Looks good.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441120</commentid>
    <comment_count>21</comment_count>
      <attachid>101668</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-22 13:05:10 -0700</bug_when>
    <thetext>Comment on attachment 101668
proposed patch

Clearing flags on attachment: 101668

Committed r91599: &lt;http://trac.webkit.org/changeset/91599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441121</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-22 13:05:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441146</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-22 14:00:24 -0700</bug_when>
    <thetext>A number of canvas GPU tests went red on this.  It looks like this path is hit by a lot of the philip suite, and we&apos;re now matching the chromium linux skia CPU behavior (which is buggy).  Two thoughts:

1.) Can you fix up the expectations, Alok?
2.) Does this mean that we aren&apos;t actually going to be testing the GPU canvas path with the philip suite any more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441148</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-22 14:00:52 -0700</bug_when>
    <thetext>Dashboard link:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20GPU%20Mesa%20-%20chromium.org&amp;tests=canvas%2Fphilip%2Ftests%2F2d.gradient.radial.cone.cylinder.html%2Ccanvas%2Fphilip%2Ftests%2F2d.line.width.basic.html%2Ccanvas%2Fphilip%2Ftests%2F2d.line.width.transformed.html%2Ccanvas%2Fphilip%2Ftests%2F2d.path.arcTo.shape.curve1.html%2Ccanvas%2Fphilip%2Ftests%2F2d.path.arcTo.shape.curve2.html%2Ccanvas%2Fphilip%2Ftests%2F2d.shadow.enable.blur.html%2Ccanvas%2Fphilip%2Ftests%2F2d.transformation.setTransform.skewed.html%2Ccanvas%2Fphilip%2Ftests%2F2d.transformation.transform.skewed.html%2Ccompositing%2Flayer-creation%2FspanOverlapsCanvas.html%2Cfast%2Fcanvas%2Fcanvas-currentColor.html%2Cfast%2Fcanvas%2Fcanvas-composite.html%2Cfast%2Fcanvas%2Fcanvas-transform-skewed.html%2Cfast%2Fcanvas%2Fcanvas-transforms-during-path.html%2Cfast%2Fcanvas%2Ffillrect_gradient.html%2Cfast%2Fcanvas%2Fimage-pattern-rotate.html%2Cfast%2Fcanvas%2FsetWidthResetAfterForcedRender.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441164</commentid>
    <comment_count>25</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-07-22 14:22:30 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; A number of canvas GPU tests went red on this.  It looks like this path is hit by a lot of the philip suite, and we&apos;re now matching the chromium linux skia CPU behavior (which is buggy).  Two thoughts:
&gt; 
&gt; 1.) Can you fix up the expectations, Alok?
&gt; 2.) Does this mean that we aren&apos;t actually going to be testing the GPU canvas path with the philip suite any more?

We really shouldn&apos;t do that.  This will cut down our code coverage for GPU canvas by a lot.  Perhaps we should add a runtime flag to disable (or change the threshold for) the force-software behaviour, and add that to the bot runs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441170</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-22 14:27:53 -0700</bug_when>
    <thetext>Looking more closely, most of the philip tests use a canvas with the default dimensions (150x300) which won&apos;t trigger this path, but a few do use smaller canvases explicitly.  Additionally some of our layout tests are written assuming that 100x50 canvases are composited.  This test situation is kind of dodgy :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441177</commentid>
    <comment_count>27</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-22 14:32:32 -0700</bug_when>
    <thetext>I do not think we should suppress philip tests. Adjusting expectations is cumbersome too because we might tweak the threshold in future. It seems plumbing a threshold via settings would be the right thing to do. For gpu tests this value could be zero. Do you guys see any problem with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441186</commentid>
    <comment_count>28</comment_count>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-07-22 14:46:03 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; I do not think we should suppress philip tests. Adjusting expectations is cumbersome too because we might tweak the threshold in future. It seems plumbing a threshold via settings would be the right thing to do. For gpu tests this value could be zero. Do you guys see any problem with that.

The flag could also just cause us to ignore the size constraint. I&apos;d definitely prefer something like that to not running those tests on the gpu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441616</commentid>
    <comment_count>29</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-25 05:51:34 -0700</bug_when>
    <thetext>Can we run *all* tests on both GPU and CPU?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441649</commentid>
    <comment_count>30</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-07-25 07:51:36 -0700</bug_when>
    <thetext>A Chrome user created a custom test case to exercise this at http://code.google.com/p/chromium/issues/list?cursor=86287.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441651</commentid>
    <comment_count>31</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-07-25 07:52:36 -0700</bug_when>
    <thetext>(Oops, bad link; this should work better: http://code.google.com/p/chromium/issues/detail?id=86287)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441659</commentid>
    <comment_count>32</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-25 08:16:16 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Can we run *all* tests on both GPU and CPU?

AFAIK we already run all canvas tests on both CPU and GPU.

The compositing tests cannot be run on CPU unless the compositor is written using skia. OTOH we could run *all* tests on GPU with --force-compositing-mode and --enable-accelerated-drawing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441663</commentid>
    <comment_count>33</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-25 08:31:46 -0700</bug_when>
    <thetext>I would just like to run all tests with SW canvas, as if the heuristic always said SW, rather than only for small ones. Likewise, run all tests with HW canvas, even if the heuristic *would have* chosen SW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441665</commentid>
    <comment_count>34</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-25 08:35:05 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; I would just like to run all tests with SW canvas, as if the heuristic always said SW, rather than only for small ones. Likewise, run all tests with HW canvas, even if the heuristic *would have* chosen SW.

Which effectively means - switch off the heuristic? This patch does that - https://bugs.webkit.org/show_bug.cgi?id=65053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441667</commentid>
    <comment_count>35</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-25 08:44:38 -0700</bug_when>
    <thetext>Ah, perfect!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441669</commentid>
    <comment_count>36</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-25 08:45:36 -0700</bug_when>
    <thetext>Now we just need to run out bots 3 times!

- normal setting (the one users will see)
- set minimum to 9999999 so we always use SW canvas
- set minimum to 0 so we always use HW canvas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441763</commentid>
    <comment_count>37</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-25 11:39:25 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Now we just need to run out bots 3 times!
&gt; 
&gt; - normal setting (the one users will see)
&gt; - set minimum to 9999999 so we always use SW canvas
&gt; - set minimum to 0 so we always use HW canvas

We run two of those already, in that we run all the canvas tests in a pure non-GPU mode, which always uses the SW canvas backend, and in a GPU mode with the minimum set to 0 which always uses the HW canvas backend.  What we are lacking is a way to tests the normal settings, that users actually see.  I think we need at least some test coverage for switching a canvas back and forth between HW and SW modes to make sure that all of the setup and teardown works.  We probably don&apos;t need to run the full test suite in this mode.

One way to do this would be to expose this setting through layoutTestController and write a few tests that switch back and forth between HW and SW a few times.  There isn&apos;t a whole ton of code involved with the switch but it&apos;s important to test the path that we ship to users.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101602</attachid>
            <date>2011-07-21 10:37:35 -0700</date>
            <delta_ts>2011-07-21 11:18:28 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>small.patch</filename>
            <type>text/plain</type>
            <size>12210</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjEgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIHNvZnR3YXJlIHJl
bmRlcmluZyBmb3Igc21hbGwgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFjY2VsZXJhdGVDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6b3JpZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6b3JpZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6c2FtcGxl
ZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1Bp
Y3R1cmU6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZUZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oOiBBZGRlZCBwcm9w
ZXJ0eSBzdm46ZW9sLXN0eWxlLgorCiAyMDExLTA3LTIxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQ6IG9uZSBsaW5lciB0eXBvIGZp
eCBpbiBJbnNwZWN0b3IuanNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gOTE0Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywzMSBAQCBzdGF0aWMgYm9vbCBpc09yaWdp
bkNsZWFuKENhY2hlZEltYWdlKiBjCiAgICAgcmV0dXJuICFzZWN1cml0eU9yaWdpbi0+dGFpbnRz
Q2FudmFzKGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLnVybCgpKTsKIH0KIAorc3RhdGljIGJvb2wg
c2hvdWxkQWNjZWxlcmF0ZUNhbnZhcyhjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQor
eworICAgIGNvbnN0IFBhZ2UqIHBhZ2UgPSBjYW52YXMtPmRvY3VtZW50KCktPnBhZ2UoKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFNldHRpbmdz
KiBzZXR0aW5ncyA9IHBhZ2UtPnNldHRpbmdzKCk7CisgICAgaWYgKCFzZXR0aW5ncy0+YWNjZWxl
cmF0ZWQyZENhbnZhc0VuYWJsZWQoKSAmJgorICAgICAgICAhc2V0dGluZ3MtPmxlZ2FjeUFjY2Vs
ZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IERvIG5vdCB1c2UgYWNjZWxlcmF0aW9uIGZvciBzbWFsbCBjYW52YXMuCisgICAgLy8gRm9yIGV2
ZXJ5IGFjY2VsZXJhdGVkIGNhbnZhcyB0aGVyZSBpcyBhbiBleHRyYSBiYWNrLWJ1ZmZlciBhbmQg
YSB0ZXh0dXJlIGNvcHkuCisgICAgLy8gU21hbGwgY2FudmFzZXMgYXJlIGFsc28gd2lkZWx5IHVz
ZWQgZm9yIHN0eWxpemVkIGZvbnRzLiBBbnRpLWFsaWFzaW5nCisgICAgLy8gdGV4dCBpbiBoYXJk
d2FyZSBhdCB0aGF0IHNjYWxlIGlzIGdlbmVyYWxseSBzbG93ZXIuCisgICAgLy8gblBpeGVsVGhy
ZXNob2xkIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGJlbG93IHdoaWNoIHdlIHVzZSBzb2Z0d2Fy
ZQorICAgIC8vIHJlbmRlcmluZy4gVGhpcyBpcyBvYnZpb3VzbHkgYW4gYXJiaXRyYXJ5IG51bWJl
ci4gQSBtb3JlIHByZWNpc2UKKyAgICAvLyBudW1iZXIgd291bGQgZGVwZW5kIG9uIG1hY2hpbmUg
YXJjaGl0ZWN0dXJlIGFuZCBjYW52YXMgY29udGVudHMuCisgICAgc3RhdGljIGNvbnN0IGludCBu
UGl4ZWxUaHJlc2hvbGQgPSAxMjggKiAxMjg7CisgICAgaWYgKGNhbnZhcy0+d2lkdGgoKSAqIGNh
bnZhcy0+aGVpZ2h0KCkgPCBuUGl4ZWxUaHJlc2hvbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBjbGFzcyBDYW52YXNTdHJva2VTdHlsZUFwcGxpZXIg
OiBwdWJsaWMgU3Ryb2tlU3R5bGVBcHBsaWVyIHsKIHB1YmxpYzoKICAgICBDYW52YXNTdHJva2VT
dHlsZUFwcGxpZXIoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjYW52YXNDb250ZXh0KQpAQCAt
MTM2LDIxICsxNjEsMjAgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJp
bgogICAgIHNldExpbmVXaWR0aChsaW5lV2lkdGgoKSk7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQotICAgIFBhZ2UqIHAgPSBjYW52YXMtPmRvY3VtZW50KCktPnBhZ2UoKTsK
LSAgICBpZiAoIXApCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIShwLT5zZXR0aW5ncygpLT5h
Y2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCgpIHx8IHAtPnNldHRpbmdzKCktPmxlZ2FjeUFjY2Vs
ZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKEdyYXBo
aWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgbV9jb250ZXh0M0Qg
PSBwLT5zaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpOwotICAgICAgICBpZiAobV9jb250ZXh0M0Qp
IHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IG1fY29udGV4dDNELT5jcmVhdGVEcmF3
aW5nQnVmZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7Ci0g
ICAgICAgICAgICBpZiAoIW1fZHJhd2luZ0J1ZmZlcikgewotICAgICAgICAgICAgICAgIGMtPnNl
dEdyYXBoaWNzQ29udGV4dDNEKDAsIDAsIEludFNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbV9j
b250ZXh0M0QuY2xlYXIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGMt
PnNldEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dDNELmdldCgpLCBtX2RyYXdpbmdCdWZmZXIu
Z2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7Ci0gICAg
ICAgIH0KKyAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZUNhbnZhcyhjYW52YXMpKSB7CisgICAgICBQ
YWdlKiBwID0gY2FudmFzLT5kb2N1bWVudCgpLT5wYWdlKCk7CisgICAgICBHcmFwaGljc0NvbnRl
eHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOworICAgICAgaWYgKHAgJiYgYykgeworICAgICAgICAg
IG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICAgICAgICBp
ZiAobV9jb250ZXh0M0QpIHsKKyAgICAgICAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250
ZXh0M0QtPmNyZWF0ZURyYXdpbmdCdWZmZXIoY2FudmFzLT5zaXplKCkpOworICAgICAgICAgICAg
ICBpZiAoIW1fZHJhd2luZ0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgYy0+c2V0R3JhcGhp
Y3NDb250ZXh0M0QoMCwgMCwgSW50U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgIG1fY29udGV4
dDNELmNsZWFyKCk7CisgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgYy0+
c2V0R3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIG1fZHJhd2luZ0J1ZmZlci5n
ZXQoKSwgY2FudmFzLT5zaXplKCkpOworICAgICAgICAgIH0KKyAgICAgIH0KICAgICB9CiAjZW5k
aWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3Bw
CShyZXZpc2lvbiA5MTQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw2ICs3MywxMSBAQCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjpMYXllclRleHR1cmVVCiB7
CiB9CiAKK0xheWVyVGV4dHVyZVVwZGF0ZXI6Ok9yaWVudGF0aW9uIExheWVyVGV4dHVyZVVwZGF0
ZXJCaXRtYXA6Om9yaWVudGF0aW9uKCkKK3sKKyAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsKK30KKwogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQogewogICAgIC8vIFRoZSBjb21wb25lbnQgb3JkZXIg
bWF5IGJlIGJncmEgaWYgd2UgdXBsb2FkZWQgYmdyYSBwaXhlbHMgdG8gcmdiYSB0ZXh0dXJlcy4K
QEAgLTEwMyw2ICsxMDgsMTYgQEAgdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjp1cGRh
dGVUZQogfQogCiAjaWYgVVNFKFNLSUEpCisKKy8vIERlYnVnIGNvZGUgdG8gaXNvbGF0ZSBTa1Bp
Y3R1cmUgYW5kIFNrR3B1Q2FudmFzIGlzc3Vlcy4KKy8vIEZpcnN0IExheWVyVGV4dHVyZVVwZGF0
ZXJTa1BpY3R1cmU6OnByZXBhcmVUb1VwZGF0ZSgpIGRyYXdzIHBhZ2UgY29udGVudHMgaW50byBh
biBTa1BpY3R1cmUuCisvLyBMYXRlciBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjp1cGRh
dGVUZXh0dXJlUmVjdCgpIGRyYXdzIHRoZSBTa1BpY3R1cmUgaW50byBhCisvLyBncHUgY2FudmFz
IHRvIHdoaWNoIHRoZSBjb21wb3NpdG9yIHRleHR1cmUgaXMgYXR0YWNoZWQuIElmIFVTRV9TT0ZU
V0FSRV9DQU5WQVMgaXMgZGVmaW5lZCB0bworLy8gYSBub24temVybyB2YWx1ZSwgTGF5ZXJUZXh0
dXJlVXBkYXRlclNrUGljdHVyZTo6dXBkYXRlVGV4dHVyZVJlY3QoKSB3aWxsIGluc3RlYWQgZHJh
dworLy8gdG8gYSBzb2Z0d2FyZSBjYW52YXMgYW5kIHVwbG9hZCB0aGUgcmVzdWx0aW5nIHBpeGVs
cyB0byB0aGUgY29tcG9zaXRvciB0ZXh0dXJlLgorLy8gVGhpcyBmbGFnIGNhbiBiZSB1c2VkIHRv
IGlzb2xhdGUgcGljdHVyZSBhbmQgZ3B1IGNhbnZhcyBpc3N1ZXMuCisjZGVmaW5lIFVTRV9TT0ZU
V0FSRV9DQU5WQVMgMAorCiBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU+
IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgR3JDb250
ZXh0KiBza2lhQ29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVy
ZVVwZGF0ZXJTa1BpY3R1cmUoY29udGV4dCwgcGFpbnRlciwgc2tpYUNvbnRleHQpKTsKQEAgLTEy
MiwxMCArMTM3LDI0IEBAIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6On5MYXllclRleHQK
ICAgICBkZWxldGVGcmFtZUJ1ZmZlcigpOwogfQogCitMYXllclRleHR1cmVVcGRhdGVyOjpPcmll
bnRhdGlvbiBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpvcmllbnRhdGlvbigpCit7Cisj
aWYgVVNFX1NPRlRXQVJFX0NBTlZBUworICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpC
b3R0b21VcE9yaWVudGF0aW9uOworI2Vsc2UKKyAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VG9wRG93bk9yaWVudGF0aW9uOworI2VuZGlmCit9CisKIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdCBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpzYW1wbGVk
VGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKIHsKKyNpZiBVU0VfU09GVFdBUkVf
Q0FOVkFTCisgICAgcmV0dXJuIFBsYXRmb3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0ZXh0
dXJlRm9ybWF0KSA/CisgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4
ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdS
QTsKKyNlbHNlCiAgICAgLy8gSGVyZSB3ZSBkaXJlY3RseSByZW5kZXIgdG8gdGhlIHRleHR1cmUs
IHNvIHRoZSBjb21wb25lbnQgb3JkZXIgaXMgYWx3YXlzIGNvcnJlY3QuCiAgICAgcmV0dXJuIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CisjZW5kaWYKIH0KIAog
dm9pZCBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzKQpAQCAtMTUyLDE5ICsxODEsMjMgQEAgdm9pZCBMYXllclRleHR1cmVVcGRhdGVyU2tQ
aWN0dXJlOjp1cGRhdAogICAgICAgICBjcmVhdGVGcmFtZUJ1ZmZlcigpOwogICAgICAgICBtX2Ny
ZWF0ZUZyYW1lQnVmZmVyID0gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9mYm8pCi0gICAgICAg
IHJldHVybjsKKworI2lmIFVTRV9TT0ZUV0FSRV9DQU5WQVMKKyAgICB0ZXh0dXJlLT5iaW5kVGV4
dHVyZSgpOworI2Vsc2UKKyAgICBBU1NFUlQobV9mYm8pOwogCiAgICAgLy8gQmluZCB0ZXh0dXJl
LgogICAgIGNvbnRleHQoKS0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOwogICAgIHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKCk7CiAg
ICAgQVNTRVJUKGNvbnRleHQoKS0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIpID09IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01Q
TEVURSk7Ci0KICAgICAvLyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRl
eHQuCiAgICAgY29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIC8vIE5vdGlm
eSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgogICAgIG1fc2tpYUNvbnRleHQt
PnJlc2V0Q29udGV4dCgpOworI2VuZGlmCisKICAgICBtX2NhbnZhcy0+c2F2ZSgpOwogICAgIG1f
Y2FudmFzLT5jbGlwUmVjdChTa1JlY3QoZGVzdFJlY3QpKTsKICAgICAvLyBUcmFuc2xhdGUgdGhl
IG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIGRlc3RSZWN0LgpAQCAtMTczLDEyICsy
MDYsMjEgQEAgdm9pZCBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjp1cGRhdAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSArIGRl
c3RSZWN0LnkoKSk7CiAgICAgbV9jYW52YXMtPmRyYXdQaWN0dXJlKG1fcGljdHVyZSk7CiAgICAg
bV9jYW52YXMtPnJlc3RvcmUoKTsKKworI2lmIFVTRV9TT0ZUV0FSRV9DQU5WQVMKKyAgICBjb25z
dCBTa0JpdG1hcCYgYml0bWFwID0gbV9jYW52YXMtPmdldERldmljZSgpLT5hY2Nlc3NCaXRtYXAo
ZmFsc2UpOworICAgIExheWVyVGV4dHVyZVN1YkltYWdlIHRleFN1YkltYWdlKHRydWUpOworICAg
IHRleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZShtX2J1ZmZlclNpemUpOworICAgIHRleFN1Yklt
YWdlLnVwbG9hZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYml0bWFwLmdldFBpeGVscygp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdChJbnRQb2ludCgpLCBtX2J1ZmZlclNp
emUpLCBkZXN0UmVjdCwgZGVzdFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUt
PmZvcm1hdCgpLCBjb250ZXh0KCkpOworI2Vsc2UKICAgICAvLyBGbHVzaCBTS0lBIGNvbnRleHQg
c28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1cmUuCiAg
ICAgbV9za2lhQ29udGV4dC0+Zmx1c2goR3JDb250ZXh0OjprRm9yY2VDdXJyZW50UmVuZGVyVGFy
Z2V0X0ZsdXNoQml0KTsKLQogICAgIC8vIFVuYmluZCB0ZXh0dXJlLgogICAgIGNvbnRleHQoKS0+
ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCAwKTsKICAgICBjb250ZXh0KCktPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIDApOworI2VuZGlmCiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJl
VXBkYXRlclNrUGljdHVyZTo6ZGVsZXRlRnJhbWVCdWZmZXIoKQpAQCAtMjAwLDYgKzI0Miw5IEBA
IGJvb2wgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6Y3JlYXQKICAgICBBU1NFUlQoIW1f
ZmJvKTsKICAgICBBU1NFUlQoIW1fYnVmZmVyU2l6ZS5pc0VtcHR5KCkpOwogCisjaWYgVVNFX1NP
RlRXQVJFX0NBTlZBUworICAgIG1fY2FudmFzID0gYWRvcHRQdHIoc2tpYTo6Q3JlYXRlQml0bWFw
Q2FudmFzKG1fYnVmZmVyU2l6ZS53aWR0aCgpLCBtX2J1ZmZlclNpemUuaGVpZ2h0KCksIGZhbHNl
KSk7CisjZWxzZQogICAgIC8vIFNLSUEgb25seSBuZWVkcyBjb2xvciBhbmQgc3RlbmNpbCBidWZm
ZXJzLCBub3QgZGVwdGggYnVmZmVyLgogICAgIC8vIEJ1dCBpdCBpcyB2ZXJ5IHVuY29tbW9uIGZv
ciBjYXJkcyB0byBzdXBwb3J0IGNvbG9yICsgc3RlbmNpbCBGQk8gY29uZmlnLgogICAgIC8vIFRo
ZSBtb3N0IGNvbW1vbiBjb25maWcgaXMgY29sb3IgKyBwYWNrZWQtZGVwdGgtc3RlbmNpbC4KQEAg
LTIyOSw3ICsyNzQsOCBAQCBib29sIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0
CiAgICAgfQogICAgIGNvbnRleHQoKS0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgY29udGV4dCgpLT5y
ZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEV4dGVu
c2lvbnMzRDo6REVQVEgyNF9TVEVOQ0lMOCwgbV9idWZmZXJTaXplLndpZHRoKCksIG1fYnVmZmVy
U2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29udGV4dCgpLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICBjb250ZXh0KCktPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVu
Y2lsQnVmZmVyKTsKKyAgICBjb250ZXh0KCktPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRU
QUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2tpYSBncHUgY2FudmFzLgogICAgIEdyUGxhdGZv
cm1TdXJmYWNlRGVzYyB0YXJnZXREZXNjOwpAQCAtMjQ2LDYgKzI5Miw4IEBAIGJvb2wgTGF5ZXJU
ZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6Y3JlYXQKICAgICBtX2NhbnZhcyA9IGFkb3B0UHRyKG5l
dyBTa0NhbnZhcyhkZXZpY2UuZ2V0KCkpKTsKIAogICAgIGNvbnRleHQoKS0+YmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCk7CisjZW5kaWYKKwogICAgIHJl
dHVybiB0cnVlOwogfQogI2VuZGlmIC8vIFNLSUEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmgJKHJldmlzaW9uIDkxNDY3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyQml0bWFwPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSk7CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcCgpIHsgfQogCi0gICAg
dmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKCk7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVs
Rm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJl
Y3QoTGF5ZXJUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOwpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIEdyQ29udGV4dCopOwogICAg
IHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUoKTsKIAotICAgIHZpcnR1YWwg
T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpU
b3BEb3duT3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCk7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQg
Ym9yZGVyVGV4ZWxzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoK
</data>
<flag name="commit-queue"
          id="96573"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101603</attachid>
            <date>2011-07-21 10:41:02 -0700</date>
            <delta_ts>2011-07-21 11:18:28 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>small.patch</filename>
            <type>text/plain</type>
            <size>3786</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDctMjEgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIHNvZnR3YXJlIHJl
bmRlcmluZyBmb3Igc21hbGwgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFjY2VsZXJhdGVDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorCiAyMDExLTA3LTIxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQ6
IG9uZSBsaW5lciB0eXBvIGZpeCBpbiBJbnNwZWN0b3IuanNvbi4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAkocmV2aXNpb24gOTE0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywzMSBAQCBz
dGF0aWMgYm9vbCBpc09yaWdpbkNsZWFuKENhY2hlZEltYWdlKiBjCiAgICAgcmV0dXJuICFzZWN1
cml0eU9yaWdpbi0+dGFpbnRzQ2FudmFzKGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLnVybCgpKTsK
IH0KIAorc3RhdGljIGJvb2wgc2hvdWxkQWNjZWxlcmF0ZUNhbnZhcyhjb25zdCBIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzKQoreworICAgIGNvbnN0IFBhZ2UqIHBhZ2UgPSBjYW52YXMtPmRvY3Vt
ZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGNvbnN0IFNldHRpbmdzKiBzZXR0aW5ncyA9IHBhZ2UtPnNldHRpbmdzKCk7CisgICAgaWYg
KCFzZXR0aW5ncy0+YWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoKSAmJgorICAgICAgICAhc2V0
dGluZ3MtPmxlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIERvIG5vdCB1c2UgYWNjZWxlcmF0aW9uIGZvciBzbWFsbCBjYW52
YXMuCisgICAgLy8gRm9yIGV2ZXJ5IGFjY2VsZXJhdGVkIGNhbnZhcyB0aGVyZSBpcyBhbiBleHRy
YSBiYWNrLWJ1ZmZlciBhbmQgYSB0ZXh0dXJlIGNvcHkuCisgICAgLy8gU21hbGwgY2FudmFzZXMg
YXJlIGFsc28gd2lkZWx5IHVzZWQgZm9yIHN0eWxpemVkIGZvbnRzLiBBbnRpLWFsaWFzaW5nCisg
ICAgLy8gdGV4dCBpbiBoYXJkd2FyZSBhdCB0aGF0IHNjYWxlIGlzIGdlbmVyYWxseSBzbG93ZXIu
CisgICAgLy8gblBpeGVsVGhyZXNob2xkIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGJlbG93IHdo
aWNoIHdlIHVzZSBzb2Z0d2FyZQorICAgIC8vIHJlbmRlcmluZy4gVGhpcyBpcyBvYnZpb3VzbHkg
YW4gYXJiaXRyYXJ5IG51bWJlci4gQSBtb3JlIHByZWNpc2UKKyAgICAvLyBudW1iZXIgd291bGQg
ZGVwZW5kIG9uIG1hY2hpbmUgYXJjaGl0ZWN0dXJlIGFuZCBjYW52YXMgY29udGVudHMuCisgICAg
c3RhdGljIGNvbnN0IGludCBuUGl4ZWxUaHJlc2hvbGQgPSAxMjggKiAxMjg7CisgICAgaWYgKGNh
bnZhcy0+d2lkdGgoKSAqIGNhbnZhcy0+aGVpZ2h0KCkgPCBuUGl4ZWxUaHJlc2hvbGQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjbGFzcyBDYW52YXNT
dHJva2VTdHlsZUFwcGxpZXIgOiBwdWJsaWMgU3Ryb2tlU3R5bGVBcHBsaWVyIHsKIHB1YmxpYzoK
ICAgICBDYW52YXNTdHJva2VTdHlsZUFwcGxpZXIoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBj
YW52YXNDb250ZXh0KQpAQCAtMTM2LDIxICsxNjEsMjAgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpDYW52YXNSZW5kZXJpbgogICAgIHNldExpbmVXaWR0aChsaW5lV2lkdGgoKSk7CiAKICNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIFBhZ2UqIHAgPSBjYW52YXMtPmRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXApCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
IShwLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCgpIHx8IHAtPnNldHRp
bmdzKCktPmxlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAg
ICAgICAgbV9jb250ZXh0M0QgPSBwLT5zaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpOwotICAgICAg
ICBpZiAobV9jb250ZXh0M0QpIHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IG1fY29u
dGV4dDNELT5jcmVhdGVEcmF3aW5nQnVmZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52
YXMtPmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZHJhd2luZ0J1ZmZlcikgewotICAg
ICAgICAgICAgICAgIGMtPnNldEdyYXBoaWNzQ29udGV4dDNEKDAsIDAsIEludFNpemUoKSk7Ci0g
ICAgICAgICAgICAgICAgbV9jb250ZXh0M0QuY2xlYXIoKTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIGMtPnNldEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dDNELmdldCgp
LCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMt
PmhlaWdodCgpKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZUNhbnZhcyhj
YW52YXMpKSB7CisgICAgICBQYWdlKiBwID0gY2FudmFzLT5kb2N1bWVudCgpLT5wYWdlKCk7Cisg
ICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOworICAgICAgaWYgKHAg
JiYgYykgeworICAgICAgICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250ZXh0
M0QoKTsKKyAgICAgICAgICBpZiAobV9jb250ZXh0M0QpIHsKKyAgICAgICAgICAgICAgbV9kcmF3
aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmNyZWF0ZURyYXdpbmdCdWZmZXIoY2FudmFzLT5zaXpl
KCkpOworICAgICAgICAgICAgICBpZiAoIW1fZHJhd2luZ0J1ZmZlcikgeworICAgICAgICAgICAg
ICAgICAgYy0+c2V0R3JhcGhpY3NDb250ZXh0M0QoMCwgMCwgSW50U2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgIG1fY29udGV4dDNELmNsZWFyKCk7CisgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgYy0+c2V0R3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCks
IG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgY2FudmFzLT5zaXplKCkpOworICAgICAgICAgIH0KKyAg
ICAgIH0KICAgICB9CiAjZW5kaWYKIH0K
</data>
<flag name="commit-queue"
          id="96578"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101608</attachid>
            <date>2011-07-21 11:18:28 -0700</date>
            <delta_ts>2011-07-21 16:22:42 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>small.patch</filename>
            <type>text/plain</type>
            <size>3645</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDctMjEgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIHNvZnR3YXJlIHJl
bmRlcmluZyBmb3Igc21hbGwgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFjY2VsZXJhdGVDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorCiAyMDExLTA3LTIxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQ6
IG9uZSBsaW5lciB0eXBvIGZpeCBpbiBJbnNwZWN0b3IuanNvbi4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAkocmV2aXNpb24gOTE0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywzMyBAQCBz
dGF0aWMgYm9vbCBpc09yaWdpbkNsZWFuKENhY2hlZEltYWdlKiBjCiAgICAgcmV0dXJuICFzZWN1
cml0eU9yaWdpbi0+dGFpbnRzQ2FudmFzKGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLnVybCgpKTsK
IH0KIAorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisvLyBOdW1iZXIgb2YgcGl4
ZWxzIGluIGEgY2FudmFzIGJlbG93IHdoaWNoIHdlIHVzZSBzb2Z0d2FyZQorLy8gcmVuZGVyaW5n
LiBUaGlzIGlzIG9idmlvdXNseSBhbiBhcmJpdHJhcnkgbnVtYmVyLiBBIG1vcmUgcHJlY2lzZQor
Ly8gbnVtYmVyIHdvdWxkIGRlcGVuZCBvbiBtYWNoaW5lIGFyY2hpdGVjdHVyZSBhbmQgY2FudmFz
IGNvbnRlbnRzLgorc3RhdGljIGNvbnN0IGludCBudW1QaXhlbHNUaHJlc2hvbGQgPSAxMjggKiAx
Mjg7CisKK3N0YXRpYyBib29sIHNob3VsZEFjY2VsZXJhdGVDYW52YXMoY29uc3QgSFRNTENhbnZh
c0VsZW1lbnQqIGNhbnZhcykKK3sKKyAgICBjb25zdCBQYWdlKiBwYWdlID0gY2FudmFzLT5kb2N1
bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MgPSBwYWdlLT5zZXR0aW5ncygpOworICAgIGlm
ICghc2V0dGluZ3MtPmFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIERvIG5vdCB1c2UgYWNjZWxlcmF0aW9uIGZvciBzbWFsbCBjYW52
YXMuCisgICAgLy8gRm9yIGV2ZXJ5IGFjY2VsZXJhdGVkIGNhbnZhcyB0aGVyZSBpcyBhbiBleHRy
YSBiYWNrLWJ1ZmZlciBhbmQgYSB0ZXh0dXJlIGNvcHkuCisgICAgLy8gU21hbGwgY2FudmFzZXMg
YXJlIGFsc28gd2lkZWx5IHVzZWQgZm9yIHN0eWxpemVkIGZvbnRzLiBBbnRpLWFsaWFzaW5nCisg
ICAgLy8gdGV4dCBpbiBoYXJkd2FyZSBhdCB0aGF0IHNjYWxlIGlzIGdlbmVyYWxseSBzbG93ZXIu
CisgICAgaWYgKGNhbnZhcy0+d2lkdGgoKSAqIGNhbnZhcy0+aGVpZ2h0KCkgPCBudW1QaXhlbHNU
aHJlc2hvbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
I2VuZGlmCisKIGNsYXNzIENhbnZhc1N0cm9rZVN0eWxlQXBwbGllciA6IHB1YmxpYyBTdHJva2VT
dHlsZUFwcGxpZXIgewogcHVibGljOgogICAgIENhbnZhc1N0cm9rZVN0eWxlQXBwbGllcihDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNhbnZhc0NvbnRleHQpCkBAIC0xMzYsMjIgKzE2MywyNyBA
QCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluCiAgICAgc2V0TGluZVdp
ZHRoKGxpbmVXaWR0aCgpKTsKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisg
ICAgaWYgKCFzaG91bGRBY2NlbGVyYXRlQ2FudmFzKGNhbnZhcykpCisgICAgICAgIHJldHVybjsK
KwogICAgIFBhZ2UqIHAgPSBjYW52YXMtPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXAp
CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIShwLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZCgpIHx8IHAtPnNldHRpbmdzKCktPmxlZ2FjeUFjY2VsZXJhdGVkMmRDYW52
YXNFbmFibGVkKCkpKQorCisgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQo
KTsKKyAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoR3JhcGhpY3NDb250ZXh0
KiBjID0gZHJhd2luZ0NvbnRleHQoKSkgewotICAgICAgICBtX2NvbnRleHQzRCA9IHAtPnNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEKCk7Ci0gICAgICAgIGlmIChtX2NvbnRleHQzRCkgewotICAgICAg
ICAgICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmNyZWF0ZURyYXdpbmdCdWZmZXIo
SW50U2l6ZShjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKLSAgICAgICAgICAg
IGlmICghbV9kcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgYy0+c2V0R3JhcGhpY3ND
b250ZXh0M0QoMCwgMCwgSW50U2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQzRC5j
bGVhcigpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgYy0+c2V0R3JhcGhp
Y3NDb250ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgSW50
U2l6ZShjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKLSAgICAgICAgfQotICAg
IH0KKworICAgIG1fY29udGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKTsKKyAg
ICBpZiAoIW1fY29udGV4dDNEKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RyYXdpbmdCdWZm
ZXIgPSBtX2NvbnRleHQzRC0+Y3JlYXRlRHJhd2luZ0J1ZmZlcihjYW52YXMtPnNpemUoKSk7Cisg
ICAgaWYgKCFtX2RyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgYy0+c2V0R3JhcGhpY3NDb250ZXh0
M0QoMCwgMCwgSW50U2l6ZSgpKTsKKyAgICAgICAgbV9jb250ZXh0M0QuY2xlYXIoKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYy0+c2V0R3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCks
IG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgY2FudmFzLT5zaXplKCkpOwogI2VuZGlmCiB9CiAK
</data>
<flag name="review"
          id="96581"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101661</attachid>
            <date>2011-07-21 16:22:42 -0700</date>
            <delta_ts>2011-07-21 16:55:54 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>small.patch</filename>
            <type>text/plain</type>
            <size>8295</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNTI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjEgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIHNvZnR3YXJlIHJl
bmRlcmluZyBmb3Igc21hbGwgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRG9lcyBub3QgYWZmZWN0IHJlbmRlcmluZyBv
dXRwdXQsIGp1c3QgY2FudmFzIGJhY2tpbmcuCisgICAgICAgIElmIHRoZXJlIGlzIGEgcmVncmVz
c2lvbiwgdGhleSBzaG91bGQgYmUgY2F1Z2h0IGJ5IGV4aXN0aW5nIGNhbnZhcyB0ZXN0cy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWNjZWxlcmF0
ZUNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNsZWFyQWNjZWxlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRBY2NlbGVyYXRpb24pOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorCiAyMDExLTA3LTIxICBLZW5uZXRo
IFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVcGRhdGUgd2ViZ2xjb250ZXh0
bG9zdCAvIHdlYmdsY29udGV4dHJlc3RvcmVkIGRlbGl2ZXJ5IHRvIG1hdGNoIHNwZWMgY2hhbmdl
cwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkxNDY3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NSw4ICsyNDUsMTYgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6cmVzZXQoKQogICAgICAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPiht
X2NvbnRleHQuZ2V0KCkpLT5yZXNoYXBlKHdpZHRoKCksIGhlaWdodCgpKTsKICNlbmRpZgogCi0g
ICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzMmQoKSkKLSAgICAgICAgc3RhdGljX2Nh
c3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4obV9jb250ZXh0LmdldCgpKS0+cmVzZXQoKTsK
KyAgICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXMyZCgpKSB7CisgICAgICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dDJEID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKj4obV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgYm9vbCB3YXNBY2NlbGVy
YXRlZCA9IGNvbnRleHQyRC0+aXNBY2NlbGVyYXRlZCgpOworICAgICAgICBjb250ZXh0MkQtPnJl
c2V0KCk7CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkgfHwgKEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykp
CisgICAgICAgIC8vIFJlY2FsY3VsYXRlIGNvbXBvc2l0aW5nIHJlcXVpcmVtZW50cyBpZiBhY2Nl
bGVyYXRpb24gc3RhdGUgY2hhbmdlZC4KKyAgICAgICAgaWYgKGNvbnRleHQyRC0+aXNBY2NlbGVy
YXRlZCgpICE9IHdhc0FjY2VsZXJhdGVkKQorICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKG1fcmVu
ZGVyZXJJc0NhbnZhcykgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiA5MTQ2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDMzIEBAIHN0YXRpYyBib29sIGlzT3JpZ2luQ2xl
YW4oQ2FjaGVkSW1hZ2UqIGMKICAgICByZXR1cm4gIXNlY3VyaXR5T3JpZ2luLT50YWludHNDYW52
YXMoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkudXJsKCkpOwogfQogCisjaWYgRU5BQkxFKEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUykKKy8vIE51bWJlciBvZiBwaXhlbHMgaW4gYSBjYW52YXMgYmVsb3cg
d2hpY2ggd2UgdXNlIHNvZnR3YXJlCisvLyByZW5kZXJpbmcuIFRoaXMgaXMgb2J2aW91c2x5IGFu
IGFyYml0cmFyeSBudW1iZXIuIEEgbW9yZSBwcmVjaXNlCisvLyBudW1iZXIgd291bGQgZGVwZW5k
IG9uIG1hY2hpbmUgYXJjaGl0ZWN0dXJlIGFuZCBjYW52YXMgY29udGVudHMuCitzdGF0aWMgY29u
c3QgaW50IG51bVBpeGVsc1RocmVzaG9sZCA9IDEyOCAqIDEyODsKKworc3RhdGljIGJvb2wgc2hv
dWxkQWNjZWxlcmF0ZUNhbnZhcyhjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQorewor
ICAgIGNvbnN0IFBhZ2UqIHBhZ2UgPSBjYW52YXMtPmRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFNldHRpbmdzKiBz
ZXR0aW5ncyA9IHBhZ2UtPnNldHRpbmdzKCk7CisgICAgaWYgKCFzZXR0aW5ncy0+YWNjZWxlcmF0
ZWQyZENhbnZhc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8g
bm90IHVzZSBhY2NlbGVyYXRpb24gZm9yIHNtYWxsIGNhbnZhcy4KKyAgICAvLyBGb3IgZXZlcnkg
YWNjZWxlcmF0ZWQgY2FudmFzIHRoZXJlIGlzIGFuIGV4dHJhIGJhY2stYnVmZmVyIGFuZCBhIHRl
eHR1cmUgY29weS4KKyAgICAvLyBTbWFsbCBjYW52YXNlcyBhcmUgYWxzbyB3aWRlbHkgdXNlZCBm
b3Igc3R5bGl6ZWQgZm9udHMuIEFudGktYWxpYXNpbmcKKyAgICAvLyB0ZXh0IGluIGhhcmR3YXJl
IGF0IHRoYXQgc2NhbGUgaXMgZ2VuZXJhbGx5IHNsb3dlci4KKyAgICBpZiAoY2FudmFzLT53aWR0
aCgpICogY2FudmFzLT5oZWlnaHQoKSA8IG51bVBpeGVsc1RocmVzaG9sZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogY2xhc3MgQ2FudmFz
U3Ryb2tlU3R5bGVBcHBsaWVyIDogcHVibGljIFN0cm9rZVN0eWxlQXBwbGllciB7CiBwdWJsaWM6
CiAgICAgQ2FudmFzU3Ryb2tlU3R5bGVBcHBsaWVyKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCog
Y2FudmFzQ29udGV4dCkKQEAgLTEzNiwyMiArMTYzLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpDYW52YXNSZW5kZXJpbgogICAgIHNldExpbmVXaWR0aChsaW5lV2lkdGgoKSk7CiAKICNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIFBhZ2UqIHAgPSBjYW52YXMtPmRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXApCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
IShwLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCgpIHx8IHAtPnNldHRp
bmdzKCktPmxlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpIHsKLSAg
ICAgICAgbV9jb250ZXh0M0QgPSBwLT5zaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpOwotICAgICAg
ICBpZiAobV9jb250ZXh0M0QpIHsKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IG1fY29u
dGV4dDNELT5jcmVhdGVEcmF3aW5nQnVmZmVyKEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52
YXMtPmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZHJhd2luZ0J1ZmZlcikgewotICAg
ICAgICAgICAgICAgIGMtPnNldEdyYXBoaWNzQ29udGV4dDNEKDAsIDAsIEludFNpemUoKSk7Ci0g
ICAgICAgICAgICAgICAgbV9jb250ZXh0M0QuY2xlYXIoKTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIGMtPnNldEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dDNELmdldCgp
LCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMt
PmhlaWdodCgpKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmVzZXRBY2NlbGVyYXRpb24oKTsK
ICNlbmRpZgogfQogCkBAIC0yMDMsMjIgKzIxNSwxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6cmVzZXQoKQogICAgIG1fc3RhdGVTdGFjay5maXJzdCgpID0gU3RhdGUoKTsKICAg
ICBtX3BhdGguY2xlYXIoKTsKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAg
IGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIGlm
IChtX2NvbnRleHQzRCAmJiBtX2RyYXdpbmdCdWZmZXIpIHsKLSAgICAgICAgICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXItPnJlc2V0KEludFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5o
ZWlnaHQoKSkpKSB7Ci0gICAgICAgICAgICAgICAgYy0+c2V0R3JhcGhpY3NDb250ZXh0M0QobV9j
b250ZXh0M0QuZ2V0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgSW50U2l6ZShjYW52YXMoKS0+
d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGMtPnNldEdyYXBoaWNzQ29udGV4dDNEKDAsIDAsIEludFNpemUoKSk7Ci0g
ICAgICAgICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAg
bV9jb250ZXh0M0QuY2xlYXIoKTsKLSAgICAgICAgICAgIH0KKyAgICByZXNldEFjY2VsZXJhdGlv
bigpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgICAgIFJlbmRl
ckJveCogcmVuZGVyQm94ID0gY2FudmFzKCktPnJlbmRlckJveCgpOwotICAgICAgICAgICAgaWYg
KHJlbmRlckJveCAmJiByZW5kZXJCb3gtPmhhc0xheWVyKCkgJiYgcmVuZGVyQm94LT5sYXllcigp
LT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyQm94
LT5sYXllcigpLT5jb250ZW50Q2hhbmdlZChSZW5kZXJMYXllcjo6Q2FudmFzQ2hhbmdlZCk7Cisg
ICAgUmVuZGVyQm94KiByZW5kZXJCb3ggPSBjYW52YXMoKS0+cmVuZGVyQm94KCk7CisgICAgaWYg
KHJlbmRlckJveCAmJiByZW5kZXJCb3gtPmhhc0xheWVyKCkgJiYgcmVuZGVyQm94LT5sYXllcigp
LT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCisgICAgICAgIHJlbmRlckJveC0+bGF5ZXIo
KS0+Y29udGVudENoYW5nZWQoUmVuZGVyTGF5ZXI6OkNhbnZhc0NoYW5nZWQpOwogI2VuZGlmCi0g
ICAgICAgIH0KLSAgICB9CiAjZW5kaWYKIH0KIApAQCAtMjAyMywxMSArMjAyNSw2MSBAQCBjb25z
dCBGb250JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFjCiAgICAgcmV0dXJuIHN0YXRlKCku
bV9mb250OwogfQogCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogUGxhdGZvcm1MYXllciogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9kcmF3aW5nQnVmZmVyID8gbV9kcmF3aW5nQnVmZmVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwog
fQogI2VuZGlmCiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhckFjY2VsZXJh
dGlvbigpCit7CisgICAgaWYgKEdyYXBoaWNzQ29udGV4dCogY3R4ID0gZHJhd2luZ0NvbnRleHQo
KSkKKyAgICAgICAgY3R4LT5zZXRHcmFwaGljc0NvbnRleHQzRCgwLCAwLCBJbnRTaXplKCkpOwor
CisgICAgbV9kcmF3aW5nQnVmZmVyLmNsZWFyKCk7CisgICAgbV9jb250ZXh0M0QuY2xlYXIoKTsK
K30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0QWNjZWxlcmF0aW9uKCkK
K3sKKyAgICBpZiAoIXNob3VsZEFjY2VsZXJhdGVDYW52YXMoY2FudmFzKCkpKSB7CisgICAgICAg
IGNsZWFyQWNjZWxlcmF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBU
cnkgdG8gYWNjZWxlcmF0ZS4KKyAgICBHcmFwaGljc0NvbnRleHQqIGN0eCA9IGRyYXdpbmdDb250
ZXh0KCk7CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgY2xlYXJBY2NlbGVyYXRpb24oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9jb250ZXh0M0QpIHsKKyAgICAgICAg
UGFnZSogcGFnZSA9IGNhbnZhcygpLT5kb2N1bWVudCgpLT5wYWdlKCk7CisgICAgICAgIG1fY29u
dGV4dDNEID0gcGFnZS0+c2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICAgICAgaWYgKCFt
X2NvbnRleHQzRCkgeworICAgICAgICAgICAgY2xlYXJBY2NlbGVyYXRpb24oKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX2RyYXdpbmdCdWZmZXIp
IHsKKyAgICAgICAgaWYgKCFtX2RyYXdpbmdCdWZmZXItPnJlc2V0KGNhbnZhcygpLT5zaXplKCkp
KSB7CisgICAgICAgICAgICBjbGVhckFjY2VsZXJhdGlvbigpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gbV9j
b250ZXh0M0QtPmNyZWF0ZURyYXdpbmdCdWZmZXIoY2FudmFzKCktPnNpemUoKSk7CisgICAgICAg
IGlmICghbV9kcmF3aW5nQnVmZmVyKSB7CisgICAgICAgICAgICBjbGVhckFjY2VsZXJhdGlvbigp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgY3R4LT5zZXRH
cmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9kcmF3aW5nQnVmZmVyLmdldCgp
LCBjYW52YXMoKS0+c2l6ZSgpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gOTE0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk1
LDYgKzI5NSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNo
Ym9hcmQoQ2FudmFzR3JhZGllbnQqIGdyYWRpZW50KSBjb25zdDsKIAorI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCisgICAgdm9pZCBjbGVhckFjY2VsZXJhdGlvbigpOworICAgIHZv
aWQgcmVzZXRBY2NlbGVyYXRpb24oKTsKKyNlbmRpZgorCiAgICAgVmVjdG9yPFN0YXRlLCAxPiBt
X3N0YXRlU3RhY2s7CiAgICAgYm9vbCBtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlOwog
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
</data>
<flag name="commit-queue"
          id="96648"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101668</attachid>
            <date>2011-07-21 16:55:54 -0700</date>
            <delta_ts>2011-07-22 13:05:10 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>small.patch</filename>
            <type>text/plain</type>
            <size>8341</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNTMwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjEgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNlIHNvZnR3YXJlIHJl
bmRlcmluZyBmb3Igc21hbGwgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRG9lcyBub3QgYWZmZWN0IHJlbmRlcmluZyBv
dXRwdXQsIGp1c3QgY2FudmFzIGJhY2tpbmcuCisgICAgICAgIElmIHRoZXJlIGlzIGEgcmVncmVz
c2lvbiwgdGhleSBzaG91bGQgYmUgY2F1Z2h0IGJ5IGV4aXN0aW5nIGNhbnZhcyB0ZXN0cy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWNjZWxlcmF0
ZUNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6cGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNsZWFyQWNjZWxlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRBY2NlbGVyYXRpb24pOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorCiAyMDExLTA3LTIxICBLZW5uZXRo
IFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVcGRhdGUgd2ViZ2xjb250ZXh0
bG9zdCAvIHdlYmdsY29udGV4dHJlc3RvcmVkIGRlbGl2ZXJ5IHRvIG1hdGNoIHNwZWMgY2hhbmdl
cwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkxNTMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NSw4ICsyNDUsMTggQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6cmVzZXQoKQogICAgICAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPiht
X2NvbnRleHQuZ2V0KCkpLT5yZXNoYXBlKHdpZHRoKCksIGhlaWdodCgpKTsKICNlbmRpZgogCi0g
ICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzMmQoKSkKLSAgICAgICAgc3RhdGljX2Nh
c3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4obV9jb250ZXh0LmdldCgpKS0+cmVzZXQoKTsK
KyAgICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXMyZCgpKSB7CisgICAgICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dDJEID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKj4obV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgYm9vbCB3YXNBY2NlbGVy
YXRlZCA9IGNvbnRleHQyRC0+aXNBY2NlbGVyYXRlZCgpOworICAgICAgICBjb250ZXh0MkQtPnJl
c2V0KCk7CisjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkgfHwgKEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykp
CisgICAgICAgIC8vIFJlY2FsY3VsYXRlIGNvbXBvc2l0aW5nIHJlcXVpcmVtZW50cyBpZiBhY2Nl
bGVyYXRpb24gc3RhdGUgY2hhbmdlZC4KKyAgICAgICAgaWYgKGNvbnRleHQyRC0+aXNBY2NlbGVy
YXRlZCgpICE9IHdhc0FjY2VsZXJhdGVkKQorICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0od2Fz
QWNjZWxlcmF0ZWQpOworI2VuZGlmCisgICAgfQogCiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAgICAgICAgIGlmIChtX3JlbmRlcmVySXNDYW52
YXMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gOTE1MzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Nyw2ICs5NywzMyBAQCBzdGF0aWMgYm9vbCBpc09yaWdpbkNsZWFuKENhY2hlZElt
YWdlKiBjCiAgICAgcmV0dXJuICFzZWN1cml0eU9yaWdpbi0+dGFpbnRzQ2FudmFzKGNhY2hlZElt
YWdlLT5yZXNwb25zZSgpLnVybCgpKTsKIH0KIAorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCisvLyBOdW1iZXIgb2YgcGl4ZWxzIGluIGEgY2FudmFzIGJlbG93IHdoaWNoIHdlIHVz
ZSBzb2Z0d2FyZQorLy8gcmVuZGVyaW5nLiBUaGlzIGlzIG9idmlvdXNseSBhbiBhcmJpdHJhcnkg
bnVtYmVyLiBBIG1vcmUgcHJlY2lzZQorLy8gbnVtYmVyIHdvdWxkIGRlcGVuZCBvbiBtYWNoaW5l
IGFyY2hpdGVjdHVyZSBhbmQgY2FudmFzIGNvbnRlbnRzLgorc3RhdGljIGNvbnN0IGludCBudW1Q
aXhlbHNUaHJlc2hvbGQgPSAxMjggKiAxMjg7CisKK3N0YXRpYyBib29sIHNob3VsZEFjY2VsZXJh
dGVDYW52YXMoY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykKK3sKKyAgICBjb25zdCBQ
YWdlKiBwYWdlID0gY2FudmFzLT5kb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MgPSBw
YWdlLT5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MtPmFjY2VsZXJhdGVkMmRDYW52YXNF
bmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIERvIG5vdCB1c2UgYWNj
ZWxlcmF0aW9uIGZvciBzbWFsbCBjYW52YXMuCisgICAgLy8gRm9yIGV2ZXJ5IGFjY2VsZXJhdGVk
IGNhbnZhcyB0aGVyZSBpcyBhbiBleHRyYSBiYWNrLWJ1ZmZlciBhbmQgYSB0ZXh0dXJlIGNvcHku
CisgICAgLy8gU21hbGwgY2FudmFzZXMgYXJlIGFsc28gd2lkZWx5IHVzZWQgZm9yIHN0eWxpemVk
IGZvbnRzLiBBbnRpLWFsaWFzaW5nCisgICAgLy8gdGV4dCBpbiBoYXJkd2FyZSBhdCB0aGF0IHNj
YWxlIGlzIGdlbmVyYWxseSBzbG93ZXIuCisgICAgaWYgKGNhbnZhcy0+d2lkdGgoKSAqIGNhbnZh
cy0+aGVpZ2h0KCkgPCBudW1QaXhlbHNUaHJlc2hvbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIGNsYXNzIENhbnZhc1N0cm9rZVN0eWxl
QXBwbGllciA6IHB1YmxpYyBTdHJva2VTdHlsZUFwcGxpZXIgewogcHVibGljOgogICAgIENhbnZh
c1N0cm9rZVN0eWxlQXBwbGllcihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNhbnZhc0NvbnRl
eHQpCkBAIC0xMzYsMjIgKzE2Myw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFz
UmVuZGVyaW4KICAgICBzZXRMaW5lV2lkdGgobGluZVdpZHRoKCkpOwogCiAjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBQYWdlKiBwID0gY2FudmFzLT5kb2N1bWVudCgpLT5w
YWdlKCk7Ci0gICAgaWYgKCFwKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCEocC0+c2V0dGlu
Z3MoKS0+YWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoKSB8fCBwLT5zZXR0aW5ncygpLT5sZWdh
Y3lBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
IChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIG1fY29u
dGV4dDNEID0gcC0+c2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoKTsKLSAgICAgICAgaWYgKG1fY29u
dGV4dDNEKSB7Ci0gICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBtX2NvbnRleHQzRC0+Y3Jl
YXRlRHJhd2luZ0J1ZmZlcihJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQo
KSkpOwotICAgICAgICAgICAgaWYgKCFtX2RyYXdpbmdCdWZmZXIpIHsKLSAgICAgICAgICAgICAg
ICBjLT5zZXRHcmFwaGljc0NvbnRleHQzRCgwLCAwLCBJbnRTaXplKCkpOwotICAgICAgICAgICAg
ICAgIG1fY29udGV4dDNELmNsZWFyKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBjLT5zZXRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgbV9kcmF3aW5n
QnVmZmVyLmdldCgpLCBJbnRTaXplKGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSkp
OwotICAgICAgICB9Ci0gICAgfQorICAgIHJlc2V0QWNjZWxlcmF0aW9uKCk7CiAjZW5kaWYKIH0K
IApAQCAtMjAzLDIyICsyMTUsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJl
c2V0KCkKICAgICBtX3N0YXRlU3RhY2suZmlyc3QoKSA9IFN0YXRlKCk7CiAgICAgbV9wYXRoLmNs
ZWFyKCk7CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBpZiAoR3JhcGhp
Y3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKSkgewotICAgICAgICBpZiAobV9jb250ZXh0
M0QgJiYgbV9kcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVy
LT5yZXNldChJbnRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpKSkg
ewotICAgICAgICAgICAgICAgIGMtPnNldEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dDNELmdl
dCgpLCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIEludFNpemUoY2FudmFzKCktPndpZHRoKCksIGNh
bnZhcygpLT5oZWlnaHQoKSkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBjLT5zZXRHcmFwaGljc0NvbnRleHQzRCgwLCAwLCBJbnRTaXplKCkpOwotICAgICAgICAgICAg
ICAgIG1fZHJhd2luZ0J1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fY29udGV4dDNE
LmNsZWFyKCk7Ci0gICAgICAgICAgICB9CisgICAgcmVzZXRBY2NlbGVyYXRpb24oKTsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgICAgICBSZW5kZXJCb3gqIHJlbmRl
ckJveCA9IGNhbnZhcygpLT5yZW5kZXJCb3goKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJCb3gg
JiYgcmVuZGVyQm94LT5oYXNMYXllcigpICYmIHJlbmRlckJveC0+bGF5ZXIoKS0+aGFzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpKQotICAgICAgICAgICAgICAgIHJlbmRlckJveC0+bGF5ZXIoKS0+
Y29udGVudENoYW5nZWQoUmVuZGVyTGF5ZXI6OkNhbnZhc0NoYW5nZWQpOworICAgIFJlbmRlckJv
eCogcmVuZGVyQm94ID0gY2FudmFzKCktPnJlbmRlckJveCgpOworICAgIGlmIChyZW5kZXJCb3gg
JiYgcmVuZGVyQm94LT5oYXNMYXllcigpICYmIHJlbmRlckJveC0+bGF5ZXIoKS0+aGFzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpKQorICAgICAgICByZW5kZXJCb3gtPmxheWVyKCktPmNvbnRlbnRD
aGFuZ2VkKFJlbmRlckxheWVyOjpDYW52YXNDaGFuZ2VkKTsKICNlbmRpZgotICAgICAgICB9Ci0g
ICAgfQogI2VuZGlmCiB9CiAKQEAgLTIwMjMsMTEgKzIwMjUsNjEgQEAgY29uc3QgRm9udCYgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjphYwogICAgIHJldHVybiBzdGF0ZSgpLm1fZm9udDsKIH0K
IAotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZHJhd2luZ0J1
ZmZlciA/IG1fZHJhd2luZ0J1ZmZlci0+cGxhdGZvcm1MYXllcigpIDogMDsKIH0KICNlbmRpZgog
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJBY2NlbGVyYXRpb24oKQorewor
ICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGN0eCA9IGRyYXdpbmdDb250ZXh0KCkpCisgICAgICAg
IGN0eC0+c2V0R3JhcGhpY3NDb250ZXh0M0QoMCwgMCwgSW50U2l6ZSgpKTsKKworICAgIG1fZHJh
d2luZ0J1ZmZlci5jbGVhcigpOworICAgIG1fY29udGV4dDNELmNsZWFyKCk7Cit9CisKK3ZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNldEFjY2VsZXJhdGlvbigpCit7CisgICAgaWYg
KCFzaG91bGRBY2NlbGVyYXRlQ2FudmFzKGNhbnZhcygpKSkgeworICAgICAgICBjbGVhckFjY2Vs
ZXJhdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVHJ5IHRvIGFjY2Vs
ZXJhdGUuCisgICAgR3JhcGhpY3NDb250ZXh0KiBjdHggPSBkcmF3aW5nQ29udGV4dCgpOworICAg
IGlmICghY3R4KSB7CisgICAgICAgIGNsZWFyQWNjZWxlcmF0aW9uKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIW1fY29udGV4dDNEKSB7CisgICAgICAgIFBhZ2UqIHBhZ2Ug
PSBjYW52YXMoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgICAgICBtX2NvbnRleHQzRCA9IHBh
Z2UtPnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgICAgIGlmICghbV9jb250ZXh0M0Qp
IHsKKyAgICAgICAgICAgIGNsZWFyQWNjZWxlcmF0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyKSB7CisgICAgICAg
IGlmICghbV9kcmF3aW5nQnVmZmVyLT5yZXNldChjYW52YXMoKS0+c2l6ZSgpKSkgeworICAgICAg
ICAgICAgY2xlYXJBY2NlbGVyYXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IG1fY29udGV4dDNELT5j
cmVhdGVEcmF3aW5nQnVmZmVyKGNhbnZhcygpLT5zaXplKCkpOworICAgICAgICBpZiAoIW1fZHJh
d2luZ0J1ZmZlcikgeworICAgICAgICAgICAgY2xlYXJBY2NlbGVyYXRpb24oKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN0eC0+c2V0R3JhcGhpY3NDb250
ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgY2FudmFzKCkt
PnNpemUoKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgJKHJldmlzaW9uIDkxNTMwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUsMTEg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZh
c0dyYWRpZW50KiBncmFkaWVudCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRf
Q0FOVkFTKQorICAgIHZvaWQgY2xlYXJBY2NlbGVyYXRpb24oKTsKKyAgICB2b2lkIHJlc2V0QWNj
ZWxlcmF0aW9uKCk7CisjZW5kaWYKKwogICAgIFZlY3RvcjxTdGF0ZSwgMT4gbV9zdGF0ZVN0YWNr
OwogICAgIGJvb2wgbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZTsKICNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>