<?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>26991</bug_id>
          
          <creation_ts>2009-07-06 08:15:56 -0700</creation_ts>
          <short_desc>[Gtk] get_n_selections and get_selection fail when selecting text across object boundaries</short_desc>
          <delta_ts>2010-09-12 04:16:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>30883</dependson>
          <blocked>25531</blocked>
    
    <blocked>25673</blocked>
    
    <blocked>43919</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>walker.willie</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129952</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-07-06 08:15:56 -0700</bug_when>
    <thetext>Steps to reproduce:

1. In a paragraph with a link, start selecting several characters just before the link and then continue the selection several characters into the link.

2. Using Accerciser&apos;s iPython console, try getNSelections() and getSelection(0) for each of the above accessible text objects.

Expected results:

1. getNSelections would return 1 in both cases.

2. getSelection(0) would return the correct start and end offsets for the selected text in each object.

Actual results:

1. getNSelections returns 1 for the first text object but 0 for the second (i.e. the link).

2. getSelection(0) returns (start offset for object 1, end offset for object 2) for the first object and (0, 0) for the second object.

Hopefully this will be the last of the selection bugs. :-) The good news is that I discovered this one while testing Orca&apos;s new (but in my sandbox) ability to present selected text in Epiphany.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176113</commentid>
    <comment_count>1</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-12-30 19:25:33 -0800</bug_when>
    <thetext>Making a depends on 30883 because in that bug I&apos;m flattening the hierarchy w.r.t. text objects. Those changes may just fix this bug completely, but if they do not, they will still most certainly impact this bug as the offending text objects in this bug will no longer exist. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262562</commentid>
    <comment_count>2</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-08-10 02:04:35 -0700</bug_when>
    <thetext>I&apos;m working on this and I found that currently one of the big issues to properly implement this is to reliably determine when a VisibleSelection belongs to the selected AccessibleObject, since such a selection is got right away from the frame (in a global fashion) and hence there&apos;s no API to actually do something like &quot;get the node for that selection&quot;.

Hence, I was playing with some possibilities but all of them failed so far. Basically they were:

  - Get the containerNode for the selection (what current code does): doesn&apos;t work, as the returned node has nothing to do with DOM nodes (it&apos;s a node which parent is the #document node).

  - Check the absolute coords for the selection and check them against the extents of the selected node: I don&apos;t think that&apos;s a good way to do it since it could leave to false positives when different nodes are rendered in the same places (overlay text with CSS, for instance).

  - Trying to get the AccessibleObject from the renderer() associated to the base/extent/start/end of the VisibleSelection, and match it against the node associated to the selected object: in progress (still need to figure out what exactly those base/extent/start/end things mean and how to work with them)

So this is just a temporary braindump while I&apos;m working on this. Perhaps someone wants to share something that shed some light on the topic :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263213</commentid>
    <comment_count>3</comment_count>
      <attachid>64105</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-08-11 06:24:23 -0700</bug_when>
    <thetext>Created attachment 64105
Patch to fix this issue

[Disclaimer: this is WIP, not a patch to be reviewed at this moment]

After working on this stuff I think I finally got a reliable way to check whether a global selection belongs (even partially only) to a accessible object inside the Atk wrapper&apos;s code, thus allowing to return the right values when executing getNSelections() in the kind of scenarios as those described by Joanmarie, and even in other cases I&apos;ve tested (such as selecting text accross diferent paragraphs at the same level, with more and more nested elements inside of it and so on).

However, or the implementation of getSelection, I need to add some more code (but based on the new code in selectionBelongsToObject()) to allow getting the exact values for the start and end offsets of a selection *for a given object* (so if you have a full paragraph selected and just ask a link inside of it for the offsets they are relative to such link), and I have to say it works pretty fine in all the cases I&apos;ve tested.

Hence, I guess now the next step here would be to write some unit tests (or even layout tests?) for this new code, so I&apos;ll focus on that. However, as I was chatting to Joanmarie on IRC, I couldn&apos;t find an obvious way to select and unselect text so I could write those unit tests, so perhaps it could be worth it to try to fix bug 25673 first and then write unit tests for both the setSelection and getSelection stuff.

Now attaching a patch with the code I&apos;ve working now, in case you want to test it or comment on top of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263860</commentid>
    <comment_count>4</comment_count>
      <attachid>64234</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-08-12 10:09:49 -0700</bug_when>
    <thetext>Created attachment 64234
Patch proposal

Now attaching a true patch and asking for review over it. The current new patch contains basically the same thing than the previous one but slightly cleaned up and got some fixes about some things that were not 100% correct in the previous version.

(In reply to comment #3)
&gt; [...]
&gt; Hence, I guess now the next step here would be to write
&gt; some unit tests (or even layout tests?) for this new code,
&gt; so I&apos;ll focus on that.

At last, I did this but in a separate (new filed) bug (bug 43919), set as dependent on bug 26991 and bug 25673, as I thought it was the best way considering that both bugs needed to be fixed first before being able to actually implement good unit tests in testatk.c for both of them (see more reasons in https://bugs.webkit.org/show_bug.cgi?id=43919#c0)

&gt; However, as I was chatting to Joanmarie on IRC, I couldn&apos;t
&gt; find an obvious way to select and unselect text so I could
&gt; write those unit tests, so perhaps it could be worth it to
&gt; try to fix bug 25673 first and then write unit tests for
&gt; both the setSelection and getSelection stuff.

Done that way, which is great since we get rid of two bugs for the prize of one
(See bug 25673 and 43919 for more details)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265123</commentid>
    <comment_count>5</comment_count>
      <attachid>64234</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-08-16 08:51:29 -0700</bug_when>
    <thetext>Comment on attachment 64234
Patch proposal

&gt;         [Gtk] get_n_selections and get_selection fail when selecting text across object boundaries
&gt;         https://bugs.webkit.org/show_bug.cgi?id=26991
&gt; 
&gt;         Fix AtkText getNSelections() and getSelection() to work properly
&gt; 
&gt;         Changed the implementation of the selectionBelongsToObject()
&gt;         function in the Atk wrapper to return a reliable value by
&gt;         carefully checking that the selection belongs to the selected
&gt;         object or some of its descendants.
&gt; 
&gt;         Implemented a new function to get the start and end offsets of a
&gt;         selection for a given accessible object.
&gt; 
&gt;         Made it so webkit_accessible_text_get_selection returns zero when
&gt;         both start and end offsets are equal, following GAIL&apos;s lead.
&gt; 
&gt;         * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
&gt;         (selectionBelongsToObject):
&gt;         (getSelectionOffsetsForObject): New.
&gt;         (webkit_accessible_text_get_selection):
You should put your descriptions of the functions inline with the
ChangeLog file and method names. It makes the result more readable.

Take a look at the existing ChangeLog entries in WebCore.

&gt; +        * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
&gt; +        (selectionBelongsToObject):
&gt; +        (getSelectionOffsetsForObject): New.
&gt; +        (webkit_accessible_text_get_selection):

Same here.

&gt; +    // Make range for the given selection
&gt; +    RefPtr&lt;Range&gt; range = makeRange(selection.visibleStart(), selection.visibleEnd());
&gt; +    if (!range)
&gt; +        return false;

Comments like this really don&apos;t add anything. Your comments should aways
answer &apos;Why?&apos; and not just &apos;What?&apos;

&gt; +    // Check whether selected node is the selection&apos;s owner

For instance here, I&apos;m unsure why a node owns a selection if it is
inside the selection range.

&gt; +    Node* node = coreObject-&gt;node();
&gt; +    for (TextIterator it(range.get()); !it.atEnd(); it.advance()) {
&gt; +        Node* nodeInRange = it.range()-&gt;startContainer();
&gt; +        if (nodeInRange &amp;&amp; nodeInRange-&gt;isDescendantOf(node))
&gt; +            return true;
&gt; +    }
&gt; +
&gt; +    // Default
&gt; +    return false;
&gt; +}

&gt; +    // Get the offsets of the selection for the selected object
&gt; +    AccessibilityObject* coreObject = core(text);
&gt; +    VisibleSelection selection = coreObject-&gt;selection();
&gt; +    getSelectionOffsetsForObject(coreObject, selection, *start_offset, *end_offset);

Perhaps I simply do not understand this section of code, but couldn&apos;t
you simply call core(text)-&gt;doAXStringForRange(coreObject-&gt;selectedTextRange()) and
return that? That would allow you to get rid of most of the code above.

&gt; +    // Return the text selected between the offsets if different or zero otherwise
&gt; +    if (*start_offset != *end_offset)
&gt; +        return webkit_accessible_text_get_text(text, *start_offset, *end_offset);
&gt; -    return webkit_accessible_text_get_text(text, *start_offset, *end_offset);
&gt; +    return 0;

It is my preference that the failure case &quot;return 0&quot; is the early return.
Also, the comment doesn&apos;t add much and doesn&apos;t explain why NULL is returned
instead of &quot;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272040</commentid>
    <comment_count>6</comment_count>
      <attachid>66035</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-08-31 04:56:28 -0700</bug_when>
    <thetext>Created attachment 66035
Patch proposal

Attaching new patch addressing the issues pointed out in comment #5.

See my comments below:

(In reply to comment #5)
&gt; [...]
&gt; You should put your descriptions of the functions inline with the
&gt; ChangeLog file and method names. It makes the result more readable.
&gt; 
&gt; Take a look at the existing ChangeLog entries in WebCore.

Done.

&gt; &gt; +    // Make range for the given selection
&gt; &gt; +    RefPtr&lt;Range&gt; range = makeRange(selection.visibleStart(), selection.visibleEnd());
&gt; &gt; +    if (!range)
&gt; &gt; +        return false;
&gt; 
&gt; Comments like this really don&apos;t add anything. Your comments should aways
&gt; answer &apos;Why?&apos; and not just &apos;What?&apos;
&gt; 
&gt; &gt; +    // Check whether selected node is the selection&apos;s owner
&gt; 
&gt; For instance here, I&apos;m unsure why a node owns a selection if it is
&gt; inside the selection range.

I agree with you, sorry for the confusion. Changed :-)
 
&gt; &gt; +    Node* node = coreObject-&gt;node();
&gt; &gt; +    for (TextIterator it(range.get()); !it.atEnd(); it.advance()) {
&gt; &gt; +        Node* nodeInRange = it.range()-&gt;startContainer();
&gt; &gt; +        if (nodeInRange &amp;&amp; nodeInRange-&gt;isDescendantOf(node))
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    // Default
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; 
&gt; &gt; +    // Get the offsets of the selection for the selected object
&gt; &gt; +    AccessibilityObject* coreObject = core(text);
&gt; &gt; +    VisibleSelection selection = coreObject-&gt;selection();
&gt; &gt; +    getSelectionOffsetsForObject(coreObject, selection, *start_offset, *end_offset);
&gt; 
&gt; Perhaps I simply do not understand this section of code, but couldn&apos;t
&gt; you simply call core(text)-&gt;doAXStringForRange(coreObject-&gt;selectedTextRange()) and
&gt; return that? That would allow you to get rid of most of the code above.

I know what you mean, but in this case I think that wouldn&apos;t be enough, since we need both to return the selected text and the offsets *relative to the AtkObject* where we are asking for a text selection. That&apos;s the reason behind the getSelectionOffsetsForObject() method.
 
&gt; &gt; +    // Return the text selected between the offsets if different or zero otherwise
&gt; &gt; +    if (*start_offset != *end_offset)
&gt; &gt; +        return webkit_accessible_text_get_text(text, *start_offset, *end_offset);
&gt; &gt; -    return webkit_accessible_text_get_text(text, *start_offset, *end_offset);
&gt; &gt; +    return 0;
&gt; 
&gt; It is my preference that the failure case &quot;return 0&quot; is the early return.
&gt; Also, the comment doesn&apos;t add much and doesn&apos;t explain why NULL is returned
&gt; instead of &quot;&quot;.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272046</commentid>
    <comment_count>7</comment_count>
      <attachid>66039</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-08-31 05:16:05 -0700</bug_when>
    <thetext>Created attachment 66039
Patch proposal

(In reply to comment #6)
&gt; Created an attachment (id=66035) [details]
&gt; Patch proposal
&gt; 
&gt; Attaching new patch addressing the issues pointed out in comment #5.

Sorry, I messed things up with git (forgot to squash patches).

Now attaching the right one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272049</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-31 05:20:25 -0700</bug_when>
    <thetext>Attachment 66039 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1405:  Use 0 instead of NULL.  [readability/null] [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>275116</commentid>
    <comment_count>9</comment_count>
      <attachid>66734</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-07 10:11:33 -0700</bug_when>
    <thetext>Created attachment 66734
Patch proposal

Attaching new up-to-date version now we (Martin and I) decided to bundle unit tests for this stuff along with patch for bug 256773 (instead of using a new bug just for that, like bug 43919)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275316</commentid>
    <comment_count>10</comment_count>
      <attachid>66734</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-07 14:52:35 -0700</bug_when>
    <thetext>Comment on attachment 66734
Patch proposal

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

Looks good, but I have a few concerns.

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1336
&gt; +        return false;
Any reason you aren&apos;t using selection.firstRange() or selection.toNormalizedRange() here?

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1341
&gt; +    for (TextIterator it(range.get()); !it.atEnd(); it.advance()) {
Would it be possible to replace this loop with Range::intersectsNode?

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1360
&gt; +    RefPtr&lt;Range&gt; range = makeRange(selection.visibleStart(), selection.visibleEnd());
Again it seems like this should be selection.firstRange() or selection.toNormalizedRange().

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1376
&gt; +            break;
Tricky loop logic. :/ I admit I&apos;m not sure exactly what the range return value is supposed to represent, but could you take a non-loop approach, such as the one used in AccessibilityRenderObject::ariaSelectedTextDOMRange in WebCore/accessibility/AccessibilityRenderObject.cpp?

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1397
&gt; +    if (selection_num)
There are lots of non-WebKit style variable names in this file, but we should be converting them gradually to WebKit style. Please do this for all other arguments of this method as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277298</commentid>
    <comment_count>11</comment_count>
      <attachid>67204</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-10 10:56:42 -0700</bug_when>
    <thetext>Created attachment 67204
Patch proposal

(In reply to comment #10)
&gt; (From update of attachment 66734 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=66734&amp;action=prettypatch
&gt; 
&gt; Looks good, but I have a few concerns.

Thanks for the review, I&apos;ve been working on this addressing these issues and I have to say I learnt quite a lot of interesting things in the way, so here you have a new patch, hopefully better :-)

&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1336
&gt; &gt; +        return false;
&gt; Any reason you aren&apos;t using selection.firstRange() or selection.toNormalizedRange() here?

I didn&apos;t know of those :-). selection.toNormalizedRange() works fine in this case so I used that one in this new patch

&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1341
&gt; &gt; +    for (TextIterator it(range.get()); !it.atEnd(); it.advance()) {
&gt; Would it be possible to replace this loop with Range::intersectsNode?

In this case intersectsNode() *almost* works ok but it fails when the selection is right touching one of the boundaries of the selected node so that wouldn&apos;t be enough. Anyway, I still could replace the loop with a combination of intersectsNode() + 2 extra checks to make sure we don&apos;t return TRUE if the situation with the boundaries happened. Thanks for the tip.

&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1360
&gt; &gt; +    RefPtr&lt;Range&gt; range = makeRange(selection.visibleStart(), selection.visibleEnd());
&gt; Again it seems like this should be selection.firstRange() or selection.toNormalizedRange().

Changed to selection.toNormalizedRange().

&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1376
&gt; &gt; +            break;
&gt; Tricky loop logic. :/ I admit I&apos;m not sure exactly what the range return value is supposed to represent, but could you take a non-loop approach, such as the one used in AccessibilityRenderObject::ariaSelectedTextDOMRange in WebCore/accessibility/AccessibilityRenderObject.cpp?

It is not exactly the same thing because we need to return the offsets of the selection relative to the selected object, so some manual calculation, at least for the endoffset is still needed.

However, I was able to improve the code (I think) making it more readable (easier to understand) and efficient (still a loop but with far less iterations), allowing to determine starOffset in a much more logical fashion, and keeping a small loop just to compute the length of the intermediate nodes to build the &quot;effective&quot; value for endOffset

&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1397
&gt; &gt; +    if (selection_num)
&gt; There are lots of non-WebKit style variable names in this file, but we should be converting them gradually to WebKit style. Please do this for all other arguments of this method as well.

I fixed those as well in this new patch, compiled and tested against the very vest version of trunk :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277301</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-10 10:58:39 -0700</bug_when>
    <thetext>Attachment 67204 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1433:  webkit_accessible_text_get_selection is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [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>277342</commentid>
    <comment_count>13</comment_count>
      <attachid>67213</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-10 11:53:47 -0700</bug_when>
    <thetext>Created attachment 67213
Patch proposal

(In reply to comment #11)
&gt; Thanks for the review, I&apos;ve been working on this addressing these issues and I have to say I learnt quite a lot of interesting things in the way, so here you have a new patch, hopefully better :-)

This is *the right patch*, sorry for the noise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277345</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-10 11:56:03 -0700</bug_when>
    <thetext>Attachment 67213 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1434:  webkit_accessible_text_get_selection is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [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>277388</commentid>
    <comment_count>15</comment_count>
      <attachid>67213</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-10 13:01:41 -0700</bug_when>
    <thetext>Comment on attachment 67213
Patch proposal

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

Okay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277852</commentid>
    <comment_count>16</comment_count>
      <attachid>67213</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-12 03:52:28 -0700</bug_when>
    <thetext>Comment on attachment 67213
Patch proposal

Have to set cq+...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277853</commentid>
    <comment_count>17</comment_count>
      <attachid>67213</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-12 04:16:37 -0700</bug_when>
    <thetext>Comment on attachment 67213
Patch proposal

Clearing flags on attachment: 67213

Committed r67320: &lt;http://trac.webkit.org/changeset/67320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277854</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-12 04:16:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64105</attachid>
            <date>2010-08-11 06:24:23 -0700</date>
            <delta_ts>2010-08-12 10:20:51 -0700</delta_ts>
            <desc>Patch to fix this issue</desc>
            <filename>0001-Fix-AtkText-getNSelections-and-getSelection-to-work-.patch</filename>
            <type>text/plain</type>
            <size>4161</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAxYTgzZTI2YmZlN2M1ZmY4MjBmMzU4MDA1ZTUyNzUzZWJlZjFkOGZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUdWUsIDEwIEF1ZyAyMDEwIDA5OjQ1OjQwICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gRml4IEF0a1RleHQgZ2V0TlNlbGVjdGlvbnMoKSBhbmQgZ2V0U2VsZWN0aW9uKCkgdG8gd29y
ayBwcm9wZXJseQoKQmFzaWNhbGx5LCBpdCB3YXMgbmVlZGVkIHRvIGNoYW5nZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhlCnNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCgpIGZ1bmN0aW9uIGluIHRo
ZSBBdGsgd3JhcHBlciB0byByZXR1cm4gYQpyZWxpYWJsZSB2YWx1ZSwgYXMgd2VsbCBhcyBpbXBs
ZW1lbnQgYSBuZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzdGFydCBhbmQKZW5kIG9mZnNldHMgb2Yg
YSBzZWxlY3Rpb24gZm9yIGEgZ2l2ZW4gYWNjZXNzaWJsZSBvYmplY3QuCi0tLQogLi4uL2d0ay9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAgfCAgIDYwICsrKysrKysr
KysrKysrKystLS0tCiAxIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDEyIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggZmQ1ZDZiYi4uYzdkYWRhYyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC0xMzMwLDggKzEzMzEsNTAgQEAgc3Rh
dGljIGJvb2wgc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVPYmplY3QsIFZpc2libGVTZWwKICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOb2RlKiBub2Rl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KGNvcmVPYmplY3QpLT5y
ZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgcmV0dXJuIG5vZGUgPT0gc2VsZWN0aW9uLmJhc2UoKS5j
b250YWluZXJOb2RlKCk7CisgICAgLy8gTWFrZSByYW5nZSBmb3IgdGhlIGdpdmVuIHNlbGVjdGlv
bgorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uoc2VsZWN0aW9uLnZpc2libGVT
dGFydCgpLCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB3aGV0aGVyIHNlbGVjdGVkIG5vZGUgaXMg
dGhlIHNlbGVjdGlvbidzIG93bmVyCisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUo
KTsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBp
dC5hZHZhbmNlKCkpIHsKKyAgICAgICAgTm9kZSogbm9kZUluUmFuZ2UgPSBpdC5yYW5nZSgpLT5z
dGFydENvbnRhaW5lcigpOworICAgICAgICBpZiAobm9kZUluUmFuZ2UgJiYgbm9kZUluUmFuZ2Ut
PmlzRGVzY2VuZGFudE9mKG5vZGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgLy8gRGVmYXVsdAorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgZ2V0
U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
LCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGdpbnQmIHN0YXJ0T2Zmc2V0LCBnaW50JiBl
bmRPZmZzZXQpCit7CisgICAgLy8gRGVmYXVsdCB2YWx1ZXMsIHVubGVzcyB0aGUgY29udHJhcnkg
aXMgcHJvdmVkCisgICAgc3RhcnRPZmZzZXQgPSBlbmRPZmZzZXQgPSAwOworCisgICAgaWYgKCFj
b3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gTWFrZSByYW5nZSBmb3IgdGhlIGdpdmVuIHNlbGVjdGlvbgorICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBzZWxl
Y3Rpb24udmlzaWJsZUVuZCgpKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0cyBmb3IgdGhlIHNlbGVjdGVkIG5vZGUKKyAgICBOb2Rl
KiBub2RlID0gY29yZU9iamVjdC0+bm9kZSgpOworICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAg
ICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZh
bmNlKCkpIHsKKyAgICAgICAgTm9kZSogbm9kZUluUmFuZ2UgPSBpdC5yYW5nZSgpLT5zdGFydENv
bnRhaW5lcigpOworICAgICAgICBpZiAobm9kZUluUmFuZ2UgJiYgbm9kZUluUmFuZ2UtPmlzRGVz
Y2VuZGFudE9mKG5vZGUpKSB7CisgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAg
ICAgICAgc3RhcnRPZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOworICAgICAgICAg
ICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVuZE9mZnNl
dCArPSBpdC5yYW5nZSgpLT5lbmRPZmZzZXQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChmb3VuZCkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vz
c2libGVfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKEF0a1RleHQqIHRleHQpCkBAIC0xMzU0LDE4ICsx
Mzk3LDExIEBAIHN0YXRpYyBnY2hhciogd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfc2VsZWN0
aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0aW9uCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24gPSBjb3JlT2JqZWN0LT5zZWxlY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmUgZG9l
cyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24sIHNvIGFueXRoaW5nIGJ1dCAwIGRvZXMg
bm90IG1ha2Ugc2Vuc2UgZm9yIG5vdy4KLSAgICAvLyBBbHNvLCB3ZSBkb24ndCB3YW50IHRvIGRv
IGFueXRoaW5nIGlmIHRoZSBzZWxlY3Rpb24gZG9lcyBub3QKLSAgICAvLyBiZWxvbmcgdG8gdGhl
IGN1cnJlbnRseSBzZWxlY3RlZCBvYmplY3QuIFdlIGhhdmUgdG8gY2hlY2sgc2luY2UKLSAgICAv
LyB0aGVyZSdzIG5vIHdheSB0byBnZXQgdGhlIHNlbGVjdGlvbiBmb3IgYSBnaXZlbiBvYmplY3Qs
IG9ubHkKLSAgICAvLyB0aGUgZ2xvYmFsIG9uZSAodGhlIEFQSSBpcyBhIGJpdCBjb25mdXNpbmcp
Ci0gICAgaWYgKHNlbGVjdGlvbl9udW0gIT0gMCB8fCAhc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0
KGNvcmVPYmplY3QsIHNlbGVjdGlvbikpIHsKLSAgICAgICAgKnN0YXJ0X29mZnNldCA9ICplbmRf
b2Zmc2V0ID0gMDsKKyAgICBpZiAoc2VsZWN0aW9uX251bSAhPSAwKQogICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICAqc3RhcnRfb2Zmc2V0ID0gc2VsZWN0aW9uLnN0YXJ0KCkub2Zmc2V0
SW5Db250YWluZXJOb2RlKCk7Ci0gICAgKmVuZF9vZmZzZXQgPSBzZWxlY3Rpb24uZW5kKCkub2Zm
c2V0SW5Db250YWluZXJOb2RlKCk7CiAKKyAgICAvLyBHZXQgdGhlIG9mZnNldHMgYW5kIHJldHVy
biB0aGUgc2VsZWN0aW9uIGp1c3QgZm9yIHRoZSBzZWxlY3RlZCBvYmplY3QKKyAgICBnZXRTZWxl
Y3Rpb25PZmZzZXRzRm9yT2JqZWN0KGNvcmVPYmplY3QsIHNlbGVjdGlvbiwgKnN0YXJ0X29mZnNl
dCwgKmVuZF9vZmZzZXQpOwogICAgIHJldHVybiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90
ZXh0KHRleHQsICpzdGFydF9vZmZzZXQsICplbmRfb2Zmc2V0KTsKIH0KIAotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64234</attachid>
            <date>2010-08-12 10:09:49 -0700</date>
            <delta_ts>2010-08-31 04:56:28 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-08-12-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>6819</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA5YjgwZjRkZDlhZDBlNzc5ZTc1NGM2MTRiN2YyNGYyYmM1MjJiZmZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEyIEF1ZyAyMDEwIDE2OjUwOjI4ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0wOC0xMiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR3RrXSBnZXRf
bl9zZWxlY3Rpb25zIGFuZCBnZXRfc2VsZWN0aW9uIGZhaWwgd2hlbiBzZWxlY3RpbmcgdGV4dCBh
Y3Jvc3Mgb2JqZWN0IGJvdW5kYXJpZXMKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjY5OTEKCiAgICAgICAgRml4IEF0a1RleHQgZ2V0TlNlbGVjdGlvbnMo
KSBhbmQgZ2V0U2VsZWN0aW9uKCkgdG8gd29yayBwcm9wZXJseQoKICAgICAgICBDaGFuZ2VkIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KCkKICAgICAg
ICBmdW5jdGlvbiBpbiB0aGUgQXRrIHdyYXBwZXIgdG8gcmV0dXJuIGEgcmVsaWFibGUgdmFsdWUg
YnkKICAgICAgICBjYXJlZnVsbHkgY2hlY2tpbmcgdGhhdCB0aGUgc2VsZWN0aW9uIGJlbG9uZ3Mg
dG8gdGhlIHNlbGVjdGVkCiAgICAgICAgb2JqZWN0IG9yIHNvbWUgb2YgaXRzIGRlc2NlbmRhbnRz
LgoKICAgICAgICBJbXBsZW1lbnRlZCBhIG5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIHN0YXJ0IGFu
ZCBlbmQgb2Zmc2V0cyBvZiBhCiAgICAgICAgc2VsZWN0aW9uIGZvciBhIGdpdmVuIGFjY2Vzc2li
bGUgb2JqZWN0LgoKICAgICAgICBNYWRlIGl0IHNvIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0
X3NlbGVjdGlvbiByZXR1cm5zIHplcm8gd2hlbgogICAgICAgIGJvdGggc3RhcnQgYW5kIGVuZCBv
ZmZzZXRzIGFyZSBlcXVhbCwgZm9sbG93aW5nIEdBSUwncyBsZWFkLgoKICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKICAgICAgICAo
c2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KToKICAgICAgICAoZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zv
ck9iamVjdCk6IE5ldy4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfc2VsZWN0
aW9uKToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjUgKysrKysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAgICAgICAgICAgfCAgIDcwICsrKysrKysrKysrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdl
ZCwgODAgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMDQyZjc1Li44ZDU3OWM1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDEwLTA4LTEyICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpA
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbR3RrXSBnZXRfbl9zZWxlY3Rpb25zIGFuZCBnZXRfc2VsZWN0aW9uIGZhaWwgd2hlbiBz
ZWxlY3RpbmcgdGV4dCBhY3Jvc3Mgb2JqZWN0IGJvdW5kYXJpZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTkxCisKKyAgICAgICAgRml4IEF0a1Rl
eHQgZ2V0TlNlbGVjdGlvbnMoKSBhbmQgZ2V0U2VsZWN0aW9uKCkgdG8gd29yayBwcm9wZXJseQor
CisgICAgICAgIENoYW5nZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzZWxlY3Rpb25CZWxv
bmdzVG9PYmplY3QoKQorICAgICAgICBmdW5jdGlvbiBpbiB0aGUgQXRrIHdyYXBwZXIgdG8gcmV0
dXJuIGEgcmVsaWFibGUgdmFsdWUgYnkKKyAgICAgICAgY2FyZWZ1bGx5IGNoZWNraW5nIHRoYXQg
dGhlIHNlbGVjdGlvbiBiZWxvbmdzIHRvIHRoZSBzZWxlY3RlZAorICAgICAgICBvYmplY3Qgb3Ig
c29tZSBvZiBpdHMgZGVzY2VuZGFudHMuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYSBuZXcgZnVu
Y3Rpb24gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kIG9mZnNldHMgb2YgYQorICAgICAgICBzZWxl
Y3Rpb24gZm9yIGEgZ2l2ZW4gYWNjZXNzaWJsZSBvYmplY3QuCisKKyAgICAgICAgTWFkZSBpdCBz
byB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9zZWxlY3Rpb24gcmV0dXJucyB6ZXJvIHdoZW4K
KyAgICAgICAgYm90aCBzdGFydCBhbmQgZW5kIG9mZnNldHMgYXJlIGVxdWFsLCBmb2xsb3dpbmcg
R0FJTCdzIGxlYWQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAgICAgIChzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3Qp
OgorICAgICAgICAoZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCk6IE5ldy4KKyAgICAgICAg
KHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3NlbGVjdGlvbik6CisKIDIwMTAtMDgtMTEgIFRv
bnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3Rr
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAppbmRleCBiMTYyMzQ2Li42MWMzOWI4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAtMTMz
MCw4ICsxMzMxLDUwIEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmxlU2VsCiAgICAgaWYgKCFjb3JlT2Jq
ZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgTm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QqPihjb3JlT2JqZWN0KS0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIHJldHVybiBub2RlID09
IHNlbGVjdGlvbi5iYXNlKCkuY29udGFpbmVyTm9kZSgpOworICAgIC8vIE1ha2UgcmFuZ2UgZm9y
IHRoZSBnaXZlbiBzZWxlY3Rpb24KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdl
KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnZpc2libGVFbmQoKSk7CisgICAg
aWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgd2hldGhl
ciBzZWxlY3RlZCBub2RlIGlzIHRoZSBzZWxlY3Rpb24ncyBvd25lcgorICAgIE5vZGUqIG5vZGUg
PSBjb3JlT2JqZWN0LT5ub2RlKCk7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0
KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIE5vZGUqIG5vZGVJblJh
bmdlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgaWYgKG5vZGVJblJh
bmdlICYmIG5vZGVJblJhbmdlLT5pc0Rlc2NlbmRhbnRPZihub2RlKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIC8vIERlZmF1bHQKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0
eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBnaW50JiBz
dGFydE9mZnNldCwgZ2ludCYgZW5kT2Zmc2V0KQoreworICAgIC8vIERlZmF1bHQgdmFsdWVzLCB1
bmxlc3MgdGhlIGNvbnRyYXJ5IGlzIHByb3ZlZAorICAgIHN0YXJ0T2Zmc2V0ID0gZW5kT2Zmc2V0
ID0gMDsKKworICAgIGlmICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1ha2UgcmFuZ2UgZm9yIHRoZSBnaXZlbiBz
ZWxlY3Rpb24KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdlKHNlbGVjdGlvbi52
aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnZpc2libGVFbmQoKSk7CisgICAgaWYgKCFyYW5nZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2FsY3VsYXRlIG9mZnNldHMgZm9yIHRoZSBzZWxl
Y3RlZCBub2RlCisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUoKTsKKyAgICBib29s
IGZvdW5kID0gZmFsc2U7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOyAh
aXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIE5vZGUqIG5vZGVJblJhbmdlID0g
aXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgaWYgKG5vZGVJblJhbmdlICYm
IG5vZGVJblJhbmdlLT5pc0Rlc2NlbmRhbnRPZihub2RlKSkgeworICAgICAgICAgICAgaWYgKCFm
b3VuZCkgeworICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gaXQucmFuZ2UoKS0+c3RhcnRP
ZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbmRPZmZzZXQgKz0gaXQucmFuZ2UoKS0+ZW5kT2Zmc2V0KCk7CisgICAgICAg
IH0gZWxzZSBpZiAoZm91bmQpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHN0YXRp
YyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X25fc2VsZWN0aW9ucyhBdGtUZXh0KiB0
ZXh0KQpAQCAtMTM1MCwyMyArMTM5MywyMCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJs
ZV90ZXh0X2dldF9uX3NlbGVjdGlvbnMoQXRrVGV4dCogdGV4dCkKIAogc3RhdGljIGdjaGFyKiB3
ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9zZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCBz
ZWxlY3Rpb25fbnVtLCBnaW50KiBzdGFydF9vZmZzZXQsIGdpbnQqIGVuZF9vZmZzZXQpCiB7Ci0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7Ci0gICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBjb3JlT2JqZWN0LT5zZWxlY3Rpb24oKTsKLQogICAg
IC8vIFdlYkNvcmUgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24sIHNvIGFueXRo
aW5nIGJ1dCAwIGRvZXMgbm90IG1ha2Ugc2Vuc2UgZm9yIG5vdy4KLSAgICAvLyBBbHNvLCB3ZSBk
b24ndCB3YW50IHRvIGRvIGFueXRoaW5nIGlmIHRoZSBzZWxlY3Rpb24gZG9lcyBub3QKLSAgICAv
LyBiZWxvbmcgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvYmplY3QuIFdlIGhhdmUgdG8gY2hl
Y2sgc2luY2UKLSAgICAvLyB0aGVyZSdzIG5vIHdheSB0byBnZXQgdGhlIHNlbGVjdGlvbiBmb3Ig
YSBnaXZlbiBvYmplY3QsIG9ubHkKLSAgICAvLyB0aGUgZ2xvYmFsIG9uZSAodGhlIEFQSSBpcyBh
IGJpdCBjb25mdXNpbmcpCi0gICAgaWYgKHNlbGVjdGlvbl9udW0gIT0gMCB8fCAhc2VsZWN0aW9u
QmVsb25nc1RvT2JqZWN0KGNvcmVPYmplY3QsIHNlbGVjdGlvbikpIHsKLSAgICAgICAgKnN0YXJ0
X29mZnNldCA9ICplbmRfb2Zmc2V0ID0gMDsKKyAgICBpZiAoc2VsZWN0aW9uX251bSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQogCi0gICAgKnN0YXJ0X29mZnNldCA9IHNlbGVjdGlvbi5zdGFy
dCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpOwotICAgICplbmRfb2Zmc2V0ID0gc2VsZWN0aW9u
LmVuZCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpOworICAgIC8vIEdldCB0aGUgb2Zmc2V0cyBv
ZiB0aGUgc2VsZWN0aW9uIGZvciB0aGUgc2VsZWN0ZWQgb2JqZWN0CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24gPSBjb3JlT2JqZWN0LT5zZWxlY3Rpb24oKTsKKyAgICBnZXRTZWxlY3Rpb25PZmZz
ZXRzRm9yT2JqZWN0KGNvcmVPYmplY3QsIHNlbGVjdGlvbiwgKnN0YXJ0X29mZnNldCwgKmVuZF9v
ZmZzZXQpOworCisgICAgLy8gUmV0dXJuIHRoZSB0ZXh0IHNlbGVjdGVkIGJldHdlZW4gdGhlIG9m
ZnNldHMgaWYgZGlmZmVyZW50IG9yIHplcm8gb3RoZXJ3aXNlCisgICAgaWYgKCpzdGFydF9vZmZz
ZXQgIT0gKmVuZF9vZmZzZXQpCisgICAgICAgIHJldHVybiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0
X2dldF90ZXh0KHRleHQsICpzdGFydF9vZmZzZXQsICplbmRfb2Zmc2V0KTsKIAotICAgIHJldHVy
biB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KHRleHQsICpzdGFydF9vZmZzZXQsICpl
bmRfb2Zmc2V0KTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF9h
Y2Nlc3NpYmxlX3RleHRfYWRkX3NlbGVjdGlvbihBdGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0X29m
ZnNldCwgZ2ludCBlbmRfb2Zmc2V0KQotLSAKMS43LjAuNAoK
</data>
<flag name="review"
          id="52757"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66035</attachid>
            <date>2010-08-31 04:56:28 -0700</date>
            <delta_ts>2010-08-31 05:16:05 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-08-31-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>4945</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBkN2JmZTliYWY4NGY3MDFkODQzMzQ3NGNlZDM3ZGVlNTE5OTRmNDU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUdWUsIDMxIEF1ZyAyMDEwIDEzOjUwOjQ3ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0wOC0zMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR3RrXSBnZXRf
bl9zZWxlY3Rpb25zIGFuZCBnZXRfc2VsZWN0aW9uIGZhaWwgd2hlbiBzZWxlY3RpbmcgdGV4dCBh
Y3Jvc3Mgb2JqZWN0IGJvdW5kYXJpZXMKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjY5OTEKCiAgICAgICAgRml4IEF0a1RleHQgZ2V0TlNlbGVjdGlvbnMo
KSBhbmQgZ2V0U2VsZWN0aW9uKCkgdG8gd29yayBwcm9wZXJseQoKICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKICAgICAgICAoc2Vs
ZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogUmV0dXJuIGEgcmVsaWFibGUgdmFsdWUgYnkgY2FyZWZ1
bGx5CiAgICAgICAgY2hlY2tpbmcgdGhhdCB0aGUgc2VsZWN0aW9uIGJlbG9uZ3MgdG8gdGhlIHNl
bGVjdGVkIG9iamVjdCBvciBzb21lCiAgICAgICAgb2YgaXRzIGRlc2NlbmRhbnRzLCBpbnN0ZWFk
IG9mIGp1c3QgdHJ5aW5nIHRvIG1hdGNoIHRoZSByZW5kZXJlcidzCiAgICAgICAgbm9kZSB3aXRo
IHRoZSBjb250YWluZXJOb2RlIG9mIHRoZSBzZWxlY3Rpb24ncyBiYXNlLgogICAgICAgIChnZXRT
ZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KTogTmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUgc3RhcnQg
YW5kCiAgICAgICAgZW5kIG9mZnNldHMgb2YgYSBzZWxlY3Rpb24gZm9yIGEgZ2l2ZW4gYWNjZXNz
aWJsZSBvYmplY3QuCiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3NlbGVjdGlv
bik6IFJldHVybiB6ZXJvIHdoZW4gYm90aAogICAgICAgIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cyBh
cmUgZXF1YWwsIGZvbGxvd2luZyB0aGUgbGVhZCBvZiBHQUlMLgotLS0KIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNCArKysrKysrLS0tLS0t
LS0tLS0tCiAuLi4vZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCAgICAgICAg
ICB8ICAgMTMgKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAy
MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFhZTI5ZDIuLmJkMThmMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsNCBAQAotMjAxMC0wOC0x
MiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisyMDEwLTA4LTMx
ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIApAQCAtNywyMSArNywxNSBAQAogCiAgICAgICAg
IEZpeCBBdGtUZXh0IGdldE5TZWxlY3Rpb25zKCkgYW5kIGdldFNlbGVjdGlvbigpIHRvIHdvcmsg
cHJvcGVybHkKIAotICAgICAgICBDaGFuZ2VkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2Vs
ZWN0aW9uQmVsb25nc1RvT2JqZWN0KCkKLSAgICAgICAgZnVuY3Rpb24gaW4gdGhlIEF0ayB3cmFw
cGVyIHRvIHJldHVybiBhIHJlbGlhYmxlIHZhbHVlIGJ5Ci0gICAgICAgIGNhcmVmdWxseSBjaGVj
a2luZyB0aGF0IHRoZSBzZWxlY3Rpb24gYmVsb25ncyB0byB0aGUgc2VsZWN0ZWQKLSAgICAgICAg
b2JqZWN0IG9yIHNvbWUgb2YgaXRzIGRlc2NlbmRhbnRzLgotCi0gICAgICAgIEltcGxlbWVudGVk
IGEgbmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZCBvZmZzZXRzIG9mIGEKLSAg
ICAgICAgc2VsZWN0aW9uIGZvciBhIGdpdmVuIGFjY2Vzc2libGUgb2JqZWN0LgotCi0gICAgICAg
IE1hZGUgaXQgc28gd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfc2VsZWN0aW9uIHJldHVybnMg
emVybyB3aGVuCi0gICAgICAgIGJvdGggc3RhcnQgYW5kIGVuZCBvZmZzZXRzIGFyZSBlcXVhbCwg
Zm9sbG93aW5nIEdBSUwncyBsZWFkLgotCiAgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgotICAgICAgICAoc2VsZWN0aW9uQmVsb25n
c1RvT2JqZWN0KToKLSAgICAgICAgKGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOiBOZXcu
Ci0gICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9zZWxlY3Rpb24pOgorICAgICAg
ICAoc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogUmV0dXJuIGEgcmVsaWFibGUgdmFsdWUgYnkg
Y2FyZWZ1bGx5CisgICAgICAgIGNoZWNraW5nIHRoYXQgdGhlIHNlbGVjdGlvbiBiZWxvbmdzIHRv
IHRoZSBzZWxlY3RlZCBvYmplY3Qgb3Igc29tZQorICAgICAgICBvZiBpdHMgZGVzY2VuZGFudHMs
IGluc3RlYWQgb2YganVzdCB0cnlpbmcgdG8gbWF0Y2ggdGhlIHJlbmRlcmVyJ3MKKyAgICAgICAg
bm9kZSB3aXRoIHRoZSBjb250YWluZXJOb2RlIG9mIHRoZSBzZWxlY3Rpb24ncyBiYXNlLgorICAg
ICAgICAoZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCk6IE5ldyBmdW5jdGlvbiB0byBnZXQg
dGhlIHN0YXJ0IGFuZAorICAgICAgICBlbmQgb2Zmc2V0cyBvZiBhIHNlbGVjdGlvbiBmb3IgYSBn
aXZlbiBhY2Nlc3NpYmxlIG9iamVjdC4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRf
Z2V0X3NlbGVjdGlvbik6IFJldHVybiB6ZXJvIHdoZW4gYm90aAorICAgICAgICBzdGFydCBhbmQg
ZW5kIG9mZnNldHMgYXJlIGVxdWFsLCBmb2xsb3dpbmcgdGhlIGxlYWQgb2YgR0FJTC4KIAogMjAx
MC0wOC0zMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
Y3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckF0ay5jcHAKaW5kZXggNjFjMzliOC4uYmY4MmM2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAK
QEAgLTEzMzEsMTIgKzEzMzEsMTIgQEAgc3RhdGljIGJvb2wgc2VsZWN0aW9uQmVsb25nc1RvT2Jq
ZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libGVTZWwKICAgICBpZiAo
IWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBNYWtlIHJhbmdlIGZvciB0aGUgZ2l2ZW4gc2VsZWN0aW9uCiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzZWxlY3Rpb24udmlzaWJsZVN0YXJ0
KCksIHNlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vIENoZWNrIHdoZXRoZXIgc2VsZWN0ZWQgbm9kZSBpcyB0aGUg
c2VsZWN0aW9uJ3Mgb3duZXIKKyAgICAvLyBDaGVjayB0aGUgbm9kZXMgcmVsYXRlZCB0byBhIGdp
dmVuIHNlbGVjdGlvbiB0byBjaGVjayB3aGV0aGVyCisgICAgLy8gdGhlIG5vZGUgYXNzb2NpYXRl
ZCB0byB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3QgaXMgb25lIG9mIHRoZW0KICAgICBOb2RlKiBu
b2RlID0gY29yZU9iamVjdC0+bm9kZSgpOwogICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdl
LmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICBOb2RlKiBub2Rl
SW5SYW5nZSA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7CkBAIC0xNDAyLDExICsxNDAy
LDEyIEBAIHN0YXRpYyBnY2hhciogd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfc2VsZWN0aW9u
KEF0a1RleHQqIHRleHQsIGdpbnQgc2VsZWN0aW9uCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxl
Y3Rpb24gPSBjb3JlT2JqZWN0LT5zZWxlY3Rpb24oKTsKICAgICBnZXRTZWxlY3Rpb25PZmZzZXRz
Rm9yT2JqZWN0KGNvcmVPYmplY3QsIHNlbGVjdGlvbiwgKnN0YXJ0X29mZnNldCwgKmVuZF9vZmZz
ZXQpOwogCi0gICAgLy8gUmV0dXJuIHRoZSB0ZXh0IHNlbGVjdGVkIGJldHdlZW4gdGhlIG9mZnNl
dHMgaWYgZGlmZmVyZW50IG9yIHplcm8gb3RoZXJ3aXNlCi0gICAgaWYgKCpzdGFydF9vZmZzZXQg
IT0gKmVuZF9vZmZzZXQpCi0gICAgICAgIHJldHVybiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dl
dF90ZXh0KHRleHQsICpzdGFydF9vZmZzZXQsICplbmRfb2Zmc2V0KTsKKyAgICAvLyBSZXR1cm4g
TlVMTCBpbnN0ZWFkIG9mICIiLCBhcyB0aGF0J3MgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IKKyAg
ICAvLyB0aGlzIEF0a1RleHQgbWV0aG9kIHdoZW4gdGhlcmUncyBubyBzZWxlY3Rpb24KKyAgICBp
ZiAoKnN0YXJ0X29mZnNldCA9PSAqZW5kX29mZnNldCkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4dCh0
ZXh0LCAqc3RhcnRfb2Zmc2V0LCAqZW5kX29mZnNldCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2FkZF9zZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCBz
dGFydF9vZmZzZXQsIGdpbnQgZW5kX29mZnNldCkKLS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66039</attachid>
            <date>2010-08-31 05:16:05 -0700</date>
            <delta_ts>2010-09-07 10:11:33 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-08-31-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>6529</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA3MGFlYzBlODM5MWZhYjA1YjNiN2VjMTEwNzVlNWJjODExMDdmNWYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEyIEF1ZyAyMDEwIDE2OjUwOjI4ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzNdIDIwMTAtMDgtMzEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10g
Z2V0X25fc2VsZWN0aW9ucyBhbmQgZ2V0X3NlbGVjdGlvbiBmYWlsIHdoZW4gc2VsZWN0aW5nIHRl
eHQgYWNyb3NzIG9iamVjdCBib3VuZGFyaWVzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2OTkxCgogICAgICAgIEZpeCBBdGtUZXh0IGdldE5TZWxlY3Rp
b25zKCkgYW5kIGdldFNlbGVjdGlvbigpIHRvIHdvcmsgcHJvcGVybHkKCiAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAg
KHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCk6IFJldHVybiBhIHJlbGlhYmxlIHZhbHVlIGJ5IGNh
cmVmdWxseQogICAgICAgIGNoZWNraW5nIHRoYXQgdGhlIHNlbGVjdGlvbiBiZWxvbmdzIHRvIHRo
ZSBzZWxlY3RlZCBvYmplY3Qgb3Igc29tZQogICAgICAgIG9mIGl0cyBkZXNjZW5kYW50cywgaW5z
dGVhZCBvZiBqdXN0IHRyeWluZyB0byBtYXRjaCB0aGUgcmVuZGVyZXIncwogICAgICAgIG5vZGUg
d2l0aCB0aGUgY29udGFpbmVyTm9kZSBvZiB0aGUgc2VsZWN0aW9uJ3MgYmFzZS4KICAgICAgICAo
Z2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCk6IE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIHN0
YXJ0IGFuZAogICAgICAgIGVuZCBvZmZzZXRzIG9mIGEgc2VsZWN0aW9uIGZvciBhIGdpdmVuIGFj
Y2Vzc2libGUgb2JqZWN0LgogICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9zZWxl
Y3Rpb24pOiBSZXR1cm4gemVybyB3aGVuIGJvdGgKICAgICAgICBzdGFydCBhbmQgZW5kIG9mZnNl
dHMgYXJlIGVxdWFsLCBmb2xsb3dpbmcgdGhlIGxlYWQgb2YgR0FJTC4KLS0tCiBXZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysrKysrCiAu
Li4vZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCAgICAgICAgICB8ICAgNjcg
KysrKysrKysrKysrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwg
MTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA5YzBiYjYxLi5iZDE4ZjI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA4
LTMxICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR3RrXSBnZXRfbl9zZWxl
Y3Rpb25zIGFuZCBnZXRfc2VsZWN0aW9uIGZhaWwgd2hlbiBzZWxlY3RpbmcgdGV4dCBhY3Jvc3Mg
b2JqZWN0IGJvdW5kYXJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2OTkxCisKKyAgICAgICAgRml4IEF0a1RleHQgZ2V0TlNlbGVjdGlvbnMoKSBh
bmQgZ2V0U2VsZWN0aW9uKCkgdG8gd29yayBwcm9wZXJseQorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgorICAgICAgICAoc2Vs
ZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogUmV0dXJuIGEgcmVsaWFibGUgdmFsdWUgYnkgY2FyZWZ1
bGx5CisgICAgICAgIGNoZWNraW5nIHRoYXQgdGhlIHNlbGVjdGlvbiBiZWxvbmdzIHRvIHRoZSBz
ZWxlY3RlZCBvYmplY3Qgb3Igc29tZQorICAgICAgICBvZiBpdHMgZGVzY2VuZGFudHMsIGluc3Rl
YWQgb2YganVzdCB0cnlpbmcgdG8gbWF0Y2ggdGhlIHJlbmRlcmVyJ3MKKyAgICAgICAgbm9kZSB3
aXRoIHRoZSBjb250YWluZXJOb2RlIG9mIHRoZSBzZWxlY3Rpb24ncyBiYXNlLgorICAgICAgICAo
Z2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdCk6IE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIHN0
YXJ0IGFuZAorICAgICAgICBlbmQgb2Zmc2V0cyBvZiBhIHNlbGVjdGlvbiBmb3IgYSBnaXZlbiBh
Y2Nlc3NpYmxlIG9iamVjdC4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3Nl
bGVjdGlvbik6IFJldHVybiB6ZXJvIHdoZW4gYm90aAorICAgICAgICBzdGFydCBhbmQgZW5kIG9m
ZnNldHMgYXJlIGVxdWFsLCBmb2xsb3dpbmcgdGhlIGxlYWQgb2YgR0FJTC4KKwogMjAxMC0wOC0z
MSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0
ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggYjE2MjM0Ni4uYmY4MmM2
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJUZXh0
RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTEz
MzAsOCArMTMzMSw1MCBAQCBzdGF0aWMgYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbAogICAgIGlmICghY29yZU9i
amVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIE5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Kj4oY29yZU9iamVjdCktPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICByZXR1cm4gbm9kZSA9
PSBzZWxlY3Rpb24uYmFzZSgpLmNvbnRhaW5lck5vZGUoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gbWFrZVJhbmdlKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnZpc2li
bGVFbmQoKSk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gQ2hlY2sgdGhlIG5vZGVzIHJlbGF0ZWQgdG8gYSBnaXZlbiBzZWxlY3Rpb24gdG8gY2hlY2sg
d2hldGhlcgorICAgIC8vIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhlIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IGlzIG9uZSBvZiB0aGVtCisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUo
KTsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBp
dC5hZHZhbmNlKCkpIHsKKyAgICAgICAgTm9kZSogbm9kZUluUmFuZ2UgPSBpdC5yYW5nZSgpLT5z
dGFydENvbnRhaW5lcigpOworICAgICAgICBpZiAobm9kZUluUmFuZ2UgJiYgbm9kZUluUmFuZ2Ut
PmlzRGVzY2VuZGFudE9mKG5vZGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgLy8gRGVmYXVsdAorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgZ2V0
U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
LCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGdpbnQmIHN0YXJ0T2Zmc2V0LCBnaW50JiBl
bmRPZmZzZXQpCit7CisgICAgLy8gRGVmYXVsdCB2YWx1ZXMsIHVubGVzcyB0aGUgY29udHJhcnkg
aXMgcHJvdmVkCisgICAgc3RhcnRPZmZzZXQgPSBlbmRPZmZzZXQgPSAwOworCisgICAgaWYgKCFj
b3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gTWFrZSByYW5nZSBmb3IgdGhlIGdpdmVuIHNlbGVjdGlvbgorICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBzZWxl
Y3Rpb24udmlzaWJsZUVuZCgpKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0cyBmb3IgdGhlIHNlbGVjdGVkIG5vZGUKKyAgICBOb2Rl
KiBub2RlID0gY29yZU9iamVjdC0+bm9kZSgpOworICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAg
ICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZh
bmNlKCkpIHsKKyAgICAgICAgTm9kZSogbm9kZUluUmFuZ2UgPSBpdC5yYW5nZSgpLT5zdGFydENv
bnRhaW5lcigpOworICAgICAgICBpZiAobm9kZUluUmFuZ2UgJiYgbm9kZUluUmFuZ2UtPmlzRGVz
Y2VuZGFudE9mKG5vZGUpKSB7CisgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAg
ICAgICAgc3RhcnRPZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOworICAgICAgICAg
ICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVuZE9mZnNl
dCArPSBpdC5yYW5nZSgpLT5lbmRPZmZzZXQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChmb3VuZCkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vz
c2libGVfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKEF0a1RleHQqIHRleHQpCkBAIC0xMzUwLDIxICsx
MzkzLDE5IEBAIHN0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X25fc2VsZWN0
aW9ucyhBdGtUZXh0KiB0ZXh0KQogCiBzdGF0aWMgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX3Rl
eHRfZ2V0X3NlbGVjdGlvbihBdGtUZXh0KiB0ZXh0LCBnaW50IHNlbGVjdGlvbl9udW0sIGdpbnQq
IHN0YXJ0X29mZnNldCwgZ2ludCogZW5kX29mZnNldCkKIHsKKyAgICAvLyBXZWJDb3JlIGRvZXMg
bm90IHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9uLCBzbyBhbnl0aGluZyBidXQgMCBkb2VzIG5v
dCBtYWtlIHNlbnNlIGZvciBub3cuCisgICAgaWYgKHNlbGVjdGlvbl9udW0pCisgICAgICAgIHJl
dHVybiAwOworCisgICAgLy8gR2V0IHRoZSBvZmZzZXRzIG9mIHRoZSBzZWxlY3Rpb24gZm9yIHRo
ZSBzZWxlY3RlZCBvYmplY3QKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0g
Y29yZSh0ZXh0KTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGNvcmVPYmplY3Qt
PnNlbGVjdGlvbigpOworICAgIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QoY29yZU9iamVj
dCwgc2VsZWN0aW9uLCAqc3RhcnRfb2Zmc2V0LCAqZW5kX29mZnNldCk7CiAKLSAgICAvLyBXZWJD
b3JlIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9uLCBzbyBhbnl0aGluZyBidXQg
MCBkb2VzIG5vdCBtYWtlIHNlbnNlIGZvciBub3cuCi0gICAgLy8gQWxzbywgd2UgZG9uJ3Qgd2Fu
dCB0byBkbyBhbnl0aGluZyBpZiB0aGUgc2VsZWN0aW9uIGRvZXMgbm90Ci0gICAgLy8gYmVsb25n
IHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb2JqZWN0LiBXZSBoYXZlIHRvIGNoZWNrIHNpbmNl
Ci0gICAgLy8gdGhlcmUncyBubyB3YXkgdG8gZ2V0IHRoZSBzZWxlY3Rpb24gZm9yIGEgZ2l2ZW4g
b2JqZWN0LCBvbmx5Ci0gICAgLy8gdGhlIGdsb2JhbCBvbmUgKHRoZSBBUEkgaXMgYSBiaXQgY29u
ZnVzaW5nKQotICAgIGlmIChzZWxlY3Rpb25fbnVtICE9IDAgfHwgIXNlbGVjdGlvbkJlbG9uZ3NU
b09iamVjdChjb3JlT2JqZWN0LCBzZWxlY3Rpb24pKSB7Ci0gICAgICAgICpzdGFydF9vZmZzZXQg
PSAqZW5kX29mZnNldCA9IDA7CisgICAgLy8gUmV0dXJuIE5VTEwgaW5zdGVhZCBvZiAiIiwgYXMg
dGhhdCdzIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yCisgICAgLy8gdGhpcyBBdGtUZXh0IG1ldGhv
ZCB3aGVuIHRoZXJlJ3Mgbm8gc2VsZWN0aW9uCisgICAgaWYgKCpzdGFydF9vZmZzZXQgPT0gKmVu
ZF9vZmZzZXQpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgICpzdGFydF9vZmZzZXQg
PSBzZWxlY3Rpb24uc3RhcnQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKLSAgICAqZW5kX29m
ZnNldCA9IHNlbGVjdGlvbi5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKIAogICAgIHJl
dHVybiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KHRleHQsICpzdGFydF9vZmZzZXQs
ICplbmRfb2Zmc2V0KTsKIH0KLS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66734</attachid>
            <date>2010-09-07 10:11:33 -0700</date>
            <delta_ts>2010-09-10 10:56:42 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-09-07-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>6520</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAxNzRmZjZkYmMxNTM2MjE1OWFiZjRhZGQ4ZjNiNjQxMDE4M2EyM2E1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEyIEF1ZyAyMDEwIDE2OjUwOjI4ICswMjAwClN1YmplY3Q6IDIwMTAt
MDktMDcgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gZ2V0X25fc2VsZWN0
aW9ucyBhbmQgZ2V0X3NlbGVjdGlvbiBmYWlsIHdoZW4gc2VsZWN0aW5nIHRleHQgYWNyb3NzIG9i
amVjdCBib3VuZGFyaWVzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI2OTkxCgogICAgICAgIEZpeCBBdGtUZXh0IGdldE5TZWxlY3Rpb25zKCkgYW5kIGdl
dFNlbGVjdGlvbigpIHRvIHdvcmsgcHJvcGVybHkKCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0
ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAgKHNlbGVjdGlvbkJl
bG9uZ3NUb09iamVjdCk6IFJldHVybiBhIHJlbGlhYmxlIHZhbHVlIGJ5IGNhcmVmdWxseQogICAg
ICAgIGNoZWNraW5nIHRoYXQgdGhlIHNlbGVjdGlvbiBiZWxvbmdzIHRvIHRoZSBzZWxlY3RlZCBv
YmplY3Qgb3Igc29tZQogICAgICAgIG9mIGl0cyBkZXNjZW5kYW50cywgaW5zdGVhZCBvZiBqdXN0
IHRyeWluZyB0byBtYXRjaCB0aGUgcmVuZGVyZXIncwogICAgICAgIG5vZGUgd2l0aCB0aGUgY29u
dGFpbmVyTm9kZSBvZiB0aGUgc2VsZWN0aW9uJ3MgYmFzZS4KICAgICAgICAoZ2V0U2VsZWN0aW9u
T2Zmc2V0c0Zvck9iamVjdCk6IE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIHN0YXJ0IGFuZAogICAg
ICAgIGVuZCBvZmZzZXRzIG9mIGEgc2VsZWN0aW9uIGZvciBhIGdpdmVuIGFjY2Vzc2libGUgb2Jq
ZWN0LgogICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9zZWxlY3Rpb24pOiBSZXR1
cm4gemVybyB3aGVuIGJvdGgKICAgICAgICBzdGFydCBhbmQgZW5kIG9mZnNldHMgYXJlIGVxdWFs
LCBmb2xsb3dpbmcgdGhlIGxlYWQgb2YgR0FJTC4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysrKysrCiAuLi4vZ3RrL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCAgICAgICAgICB8ICAgNjcgKysrKysrKysrKysr
KysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA5N2U5ZmEzLi5hZDM5ZDhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA5LTA3ICBNYXJpbyBT
YW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR3RrXSBnZXRfbl9zZWxlY3Rpb25zIGFuZCBn
ZXRfc2VsZWN0aW9uIGZhaWwgd2hlbiBzZWxlY3RpbmcgdGV4dCBhY3Jvc3Mgb2JqZWN0IGJvdW5k
YXJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
OTkxCisKKyAgICAgICAgRml4IEF0a1RleHQgZ2V0TlNlbGVjdGlvbnMoKSBhbmQgZ2V0U2VsZWN0
aW9uKCkgdG8gd29yayBwcm9wZXJseQorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgorICAgICAgICAoc2VsZWN0aW9uQmVsb25n
c1RvT2JqZWN0KTogUmV0dXJuIGEgcmVsaWFibGUgdmFsdWUgYnkgY2FyZWZ1bGx5CisgICAgICAg
IGNoZWNraW5nIHRoYXQgdGhlIHNlbGVjdGlvbiBiZWxvbmdzIHRvIHRoZSBzZWxlY3RlZCBvYmpl
Y3Qgb3Igc29tZQorICAgICAgICBvZiBpdHMgZGVzY2VuZGFudHMsIGluc3RlYWQgb2YganVzdCB0
cnlpbmcgdG8gbWF0Y2ggdGhlIHJlbmRlcmVyJ3MKKyAgICAgICAgbm9kZSB3aXRoIHRoZSBjb250
YWluZXJOb2RlIG9mIHRoZSBzZWxlY3Rpb24ncyBiYXNlLgorICAgICAgICAoZ2V0U2VsZWN0aW9u
T2Zmc2V0c0Zvck9iamVjdCk6IE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIHN0YXJ0IGFuZAorICAg
ICAgICBlbmQgb2Zmc2V0cyBvZiBhIHNlbGVjdGlvbiBmb3IgYSBnaXZlbiBhY2Nlc3NpYmxlIG9i
amVjdC4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3NlbGVjdGlvbik6IFJl
dHVybiB6ZXJvIHdoZW4gYm90aAorICAgICAgICBzdGFydCBhbmQgZW5kIG9mZnNldHMgYXJlIGVx
dWFsLCBmb2xsb3dpbmcgdGhlIGxlYWQgb2YgR0FJTC4KKwogMjAxMC0wOS0wNiAgWm9sdGFuIEhl
cmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsg
U2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggYjE2MjM0Ni4uNWFkZGRjYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTEzMzAsOCAr
MTMzMSw1MCBAQCBzdGF0aWMgYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbAogICAgIGlmICghY29yZU9iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIE5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4o
Y29yZU9iamVjdCktPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICByZXR1cm4gbm9kZSA9PSBzZWxl
Y3Rpb24uYmFzZSgpLmNvbnRhaW5lck5vZGUoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
bWFrZVJhbmdlKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnZpc2libGVFbmQo
KSk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hl
Y2sgdGhlIG5vZGVzIHJlbGF0ZWQgdG8gYSBnaXZlbiBzZWxlY3Rpb24gdG8gY2hlY2sgd2hldGhl
cgorICAgIC8vIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhlIGFjY2Vzc2liaWxpdHkgb2JqZWN0
IGlzIG9uZSBvZiB0aGVtCisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUoKTsKKyAg
ICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZh
bmNlKCkpIHsKKyAgICAgICAgTm9kZSogbm9kZUluUmFuZ2UgPSBpdC5yYW5nZSgpLT5zdGFydENv
bnRhaW5lcigpOworICAgICAgICBpZiAobm9kZUluUmFuZ2UgJiYgbm9kZUluUmFuZ2UtPmlzRGVz
Y2VuZGFudE9mKG5vZGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
Ly8gRGVmYXVsdAorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgZ2V0U2VsZWN0
aW9uT2Zmc2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGdpbnQmIHN0YXJ0T2Zmc2V0LCBnaW50JiBlbmRPZmZz
ZXQpCit7CisgICAgLy8gRGVmYXVsdCB2YWx1ZXMsIHVubGVzcyB0aGUgY29udHJhcnkgaXMgcHJv
dmVkCisgICAgc3RhcnRPZmZzZXQgPSBlbmRPZmZzZXQgPSAwOworCisgICAgaWYgKCFjb3JlT2Jq
ZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gTWFrZSByYW5nZSBmb3IgdGhlIGdpdmVuIHNlbGVjdGlvbgorICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBzZWxlY3Rpb24u
dmlzaWJsZUVuZCgpKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBDYWxjdWxhdGUgb2Zmc2V0cyBmb3IgdGhlIHNlbGVjdGVkIG5vZGUKKyAgICBOb2RlKiBub2Rl
ID0gY29yZU9iamVjdC0+bm9kZSgpOworICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBmb3Ig
KFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkp
IHsKKyAgICAgICAgTm9kZSogbm9kZUluUmFuZ2UgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5l
cigpOworICAgICAgICBpZiAobm9kZUluUmFuZ2UgJiYgbm9kZUluUmFuZ2UtPmlzRGVzY2VuZGFu
dE9mKG5vZGUpKSB7CisgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAgICAgICAg
c3RhcnRPZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOworICAgICAgICAgICAgICAg
IGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVuZE9mZnNldCArPSBp
dC5yYW5nZSgpLT5lbmRPZmZzZXQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChmb3VuZCkKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVf
dGV4dF9nZXRfbl9zZWxlY3Rpb25zKEF0a1RleHQqIHRleHQpCkBAIC0xMzUwLDIxICsxMzkzLDE5
IEBAIHN0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X25fc2VsZWN0aW9ucyhB
dGtUZXh0KiB0ZXh0KQogCiBzdGF0aWMgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0
X3NlbGVjdGlvbihBdGtUZXh0KiB0ZXh0LCBnaW50IHNlbGVjdGlvbl9udW0sIGdpbnQqIHN0YXJ0
X29mZnNldCwgZ2ludCogZW5kX29mZnNldCkKIHsKKyAgICAvLyBXZWJDb3JlIGRvZXMgbm90IHN1
cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9uLCBzbyBhbnl0aGluZyBidXQgMCBkb2VzIG5vdCBtYWtl
IHNlbnNlIGZvciBub3cuCisgICAgaWYgKHNlbGVjdGlvbl9udW0pCisgICAgICAgIHJldHVybiAw
OworCisgICAgLy8gR2V0IHRoZSBvZmZzZXRzIG9mIHRoZSBzZWxlY3Rpb24gZm9yIHRoZSBzZWxl
Y3RlZCBvYmplY3QKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0
ZXh0KTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGNvcmVPYmplY3QtPnNlbGVj
dGlvbigpOworICAgIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QoY29yZU9iamVjdCwgc2Vs
ZWN0aW9uLCAqc3RhcnRfb2Zmc2V0LCAqZW5kX29mZnNldCk7CiAKLSAgICAvLyBXZWJDb3JlIGRv
ZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9uLCBzbyBhbnl0aGluZyBidXQgMCBkb2Vz
IG5vdCBtYWtlIHNlbnNlIGZvciBub3cuCi0gICAgLy8gQWxzbywgd2UgZG9uJ3Qgd2FudCB0byBk
byBhbnl0aGluZyBpZiB0aGUgc2VsZWN0aW9uIGRvZXMgbm90Ci0gICAgLy8gYmVsb25nIHRvIHRo
ZSBjdXJyZW50bHkgc2VsZWN0ZWQgb2JqZWN0LiBXZSBoYXZlIHRvIGNoZWNrIHNpbmNlCi0gICAg
Ly8gdGhlcmUncyBubyB3YXkgdG8gZ2V0IHRoZSBzZWxlY3Rpb24gZm9yIGEgZ2l2ZW4gb2JqZWN0
LCBvbmx5Ci0gICAgLy8gdGhlIGdsb2JhbCBvbmUgKHRoZSBBUEkgaXMgYSBiaXQgY29uZnVzaW5n
KQotICAgIGlmIChzZWxlY3Rpb25fbnVtICE9IDAgfHwgIXNlbGVjdGlvbkJlbG9uZ3NUb09iamVj
dChjb3JlT2JqZWN0LCBzZWxlY3Rpb24pKSB7Ci0gICAgICAgICpzdGFydF9vZmZzZXQgPSAqZW5k
X29mZnNldCA9IDA7CisgICAgLy8gUmV0dXJuIDAgaW5zdGVhZCBvZiAiIiwgYXMgdGhhdCdzIHRo
ZSBleHBlY3RlZCByZXN1bHQgZm9yCisgICAgLy8gdGhpcyBBdGtUZXh0IG1ldGhvZCB3aGVuIHRo
ZXJlJ3Mgbm8gc2VsZWN0aW9uCisgICAgaWYgKCpzdGFydF9vZmZzZXQgPT0gKmVuZF9vZmZzZXQp
CiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgICpzdGFydF9vZmZzZXQgPSBzZWxlY3Rp
b24uc3RhcnQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKLSAgICAqZW5kX29mZnNldCA9IHNl
bGVjdGlvbi5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKIAogICAgIHJldHVybiB3ZWJr
aXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KHRleHQsICpzdGFydF9vZmZzZXQsICplbmRfb2Zm
c2V0KTsKIH0KLS0gCjEuNy4wLjQKCg==
</data>
<flag name="review"
          id="55837"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67204</attachid>
            <date>2010-09-10 10:56:42 -0700</date>
            <delta_ts>2010-09-10 11:53:47 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-09-10-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>9106</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBiZWIwMDJmMWZkMGNiM2ExYzAxYjJjNzk2MDlkODBjM2VjMTY4ZTc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEyIEF1ZyAyMDEwIDE2OjUwOjI4ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIDIwMTAtMDktMTAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10g
Z2V0X25fc2VsZWN0aW9ucyBhbmQgZ2V0X3NlbGVjdGlvbiBmYWlsIHdoZW4gc2VsZWN0aW5nIHRl
eHQgYWNyb3NzIG9iamVjdCBib3VuZGFyaWVzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2OTkxCgogICAgICAgIEZpeCBBdGtUZXh0IGdldE5TZWxlY3Rp
b25zKCkgYW5kIGdldFNlbGVjdGlvbigpIHRvIHdvcmsgcHJvcGVybHkKCiAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAg
KHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCk6IENoZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9u
IGludGVyc2VjdHMKICAgICAgICB0aGUgbm9kZSBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5v
dCBqdXN0ICJ0b3VjaGluZyIgb25lIG9mIHRoZQogICAgICAgIGJvdW5kYXJpZXMgZm9yIHRoZSBz
ZWxlY3RlZCBub2RlLiBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIgdGhlCiAgICAgICAgbm9kZSBp
cyBhY3R1YWxseSBpbnNpZGUgdGhlIHJlZ2lvbiwgYXQgbGVhc3QgcGFydGlhbGx5CiAgICAgICAg
KGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBz
dGFydCBhbmQKICAgICAgICBlbmQgb2Zmc2V0cyBvZiBhIHNlbGVjdGlvbiBmb3IgYSBnaXZlbiBh
Y2Nlc3NpYmxlIG9iamVjdC4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfc2Vs
ZWN0aW9uKTogUmV0dXJuIHplcm8gd2hlbiBib3RoCiAgICAgICAgc3RhcnQgYW5kIGVuZCBvZmZz
ZXRzIGFyZSBlcXVhbCwgZm9sbG93aW5nIHRoZSBsZWFkIG9mIEdBSUwuCi0tLQogV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysKIC4u
Li9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAgIHwgIDEwMSAr
KysrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwg
MTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA4MTI4ZmJkLi4zYzIxZTAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA5
LTEwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR3RrXSBnZXRfbl9zZWxl
Y3Rpb25zIGFuZCBnZXRfc2VsZWN0aW9uIGZhaWwgd2hlbiBzZWxlY3RpbmcgdGV4dCBhY3Jvc3Mg
b2JqZWN0IGJvdW5kYXJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2OTkxCisKKyAgICAgICAgRml4IEF0a1RleHQgZ2V0TlNlbGVjdGlvbnMoKSBh
bmQgZ2V0U2VsZWN0aW9uKCkgdG8gd29yayBwcm9wZXJseQorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgorICAgICAgICAoc2Vs
ZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogQ2hlY2sgdGhhdCBib3RoIHRoZSBzZWxlY3Rpb24gaW50
ZXJzZWN0cworICAgICAgICB0aGUgbm9kZSBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBq
dXN0ICJ0b3VjaGluZyIgb25lIG9mIHRoZQorICAgICAgICBib3VuZGFyaWVzIGZvciB0aGUgc2Vs
ZWN0ZWQgbm9kZS4gV2Ugd2FudCB0byBjaGVjayB3aGV0aGVyIHRoZQorICAgICAgICBub2RlIGlz
IGFjdHVhbGx5IGluc2lkZSB0aGUgcmVnaW9uLCBhdCBsZWFzdCBwYXJ0aWFsbHkKKyAgICAgICAg
KGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBz
dGFydCBhbmQKKyAgICAgICAgZW5kIG9mZnNldHMgb2YgYSBzZWxlY3Rpb24gZm9yIGEgZ2l2ZW4g
YWNjZXNzaWJsZSBvYmplY3QuCisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9z
ZWxlY3Rpb24pOiBSZXR1cm4gemVybyB3aGVuIGJvdGgKKyAgICAgICAgc3RhcnQgYW5kIGVuZCBv
ZmZzZXRzIGFyZSBlcXVhbCwgZm9sbG93aW5nIHRoZSBsZWFkIG9mIEdBSUwuCisKIDIwMTAtMDkt
MTAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRHVtaXRydSBEYW5pbGl1Yy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggOTBm
MzYzZi4uYjY2YzM4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIApAQCAtMTM0Miw4ICsxMzQzLDczIEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkJlbG9u
Z3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmxlU2VsCiAg
ICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QqPihjb3JlT2JqZWN0KS0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAg
IHJldHVybiBub2RlID09IHNlbGVjdGlvbi5iYXNlKCkuY29udGFpbmVyTm9kZSgpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXZSB3YW50IHRvIGNo
ZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9uIGludGVyc2VjdHMgdGhlIG5vZGUKKyAgICAvLyBB
TkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBqdXN0ICJ0b3VjaGluZyIgb25lIG9mIHRoZQor
ICAgIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBzZWxlY3RlZCBub2RlLiBXZSB3YW50IHRvIGNoZWNr
IHdoZXRoZXIgdGhlCisgICAgLy8gbm9kZSBpcyBhY3R1YWxseSBpbnNpZGUgdGhlIHJlZ2lvbiwg
YXQgbGVhc3QgcGFydGlhbGx5CisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUoKTsK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICByZXR1cm4gKHJhbmdlLT5pbnRlcnNlY3Rz
Tm9kZShub2RlLCBlYykKKyAgICAgICAgICAgICYmIChyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0g
bm9kZSB8fCByYW5nZS0+ZW5kT2Zmc2V0KCkpCisgICAgICAgICAgICAmJiAocmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkgIT0gbm9kZSB8fCByYW5nZS0+c3RhcnRPZmZzZXQoKSAhPSBsYXN0T2Zmc2V0
SW5Ob2RlKG5vZGUpKSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JP
YmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uLCBnaW50JiBzdGFydE9mZnNldCwgZ2ludCYgZW5kT2Zmc2V0KQoreworICAgIGlm
ICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEVhcmx5IHJldHVybiBpZiB0aGUgc2VsZWN0aW9uIGRvZXNuJ3QgYWZm
ZWN0IHRoZSBzZWxlY3RlZCBub2RlCisgICAgaWYgKCFzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3Qo
Y29yZU9iamVjdCwgc2VsZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgbmVl
ZCB0byBmaW5kIHRoZSBleGFjdCBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucyBpbiB0aGUKKyAgICAv
LyBzZWxlY3RlZCBub2RlIHRoYXQgaW50ZXJzZWN0cyB0aGUgc2VsZWN0aW9uLCB0byBsYXRlciBv
biBnZXQKKyAgICAvLyB0aGUgcmlnaHQgdmFsdWVzIGZvciB0aGUgZWZmZWN0aXZlIHN0YXJ0IGFu
ZCBlbmQgb2Zmc2V0cworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFBvc2l0aW9uIG5v
ZGVSYW5nZVN0YXJ0OworICAgIFBvc2l0aW9uIG5vZGVSYW5nZUVuZDsKKyAgICBOb2RlKiBub2Rl
ID0gY29yZU9iamVjdC0+bm9kZSgpOworICAgIFJlZlB0cjxSYW5nZT4gc2VsUmFuZ2UgPSBzZWxl
Y3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKworICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gYWZm
ZWN0cyB0aGUgc2VsZWN0ZWQgbm9kZSBhbmQgaXRzIGZpcnN0CisgICAgLy8gcG9zc2libGUgcG9z
aXRpb24gaXMgYWxzbyBpbiB0aGUgc2VsZWN0aW9uLCB3ZSBtdXN0IHNldAorICAgIC8vIG5vZGVS
YW5nZVN0YXJ0IHRvIHRoYXQgcG9zaXRpb24sIG90aGVyd2lzZSB0byB0aGUgc2VsZWN0aW9uJ3MK
KyAgICAvLyBzdGFydCBwb3NpdGlvbiAoaXQgd291bGQgYmVsb25nIHRvIHRoZSBub2RlIGFueXdh
eSkKKyAgICBOb2RlKiBmaXJzdExlYWZOb2RlID0gbm9kZS0+Zmlyc3REZXNjZW5kYW50KCk7Cisg
ICAgaWYgKHNlbFJhbmdlLT5pc1BvaW50SW5SYW5nZShmaXJzdExlYWZOb2RlLCAwLCBlYykpCisg
ICAgICAgIG5vZGVSYW5nZVN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluTm9kZShmaXJzdExlYWZOb2Rl
KTsKKyAgICBlbHNlCisgICAgICAgIG5vZGVSYW5nZVN0YXJ0ID0gc2VsUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKTsKKworICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gYWZmZWN0cyB0aGUgc2VsZWN0ZWQg
bm9kZSBhbmQgaXRzIGxhc3QKKyAgICAvLyBwb3NzaWJsZSBwb3NpdGlvbiBpcyBhbHNvIGluIHRo
ZSBzZWxlY3Rpb24sIHdlIG11c3Qgc2V0CisgICAgLy8gbm9kZVJhbmdlRW5kIHRvIHRoYXQgcG9z
aXRpb24sIG90aGVyd2lzZSB0byB0aGUgc2VsZWN0aW9uJ3MKKyAgICAvLyBlbmQgcG9zaXRpb24g
KGl0IHdvdWxkIGJlbG9uZyB0byB0aGUgbm9kZSBhbnl3YXkpCisgICAgTm9kZSogbGFzdExlYWZO
b2RlID0gbm9kZS0+bGFzdERlc2NlbmRhbnQoKTsKKyAgICBpZiAoc2VsUmFuZ2UtPmlzUG9pbnRJ
blJhbmdlKGxhc3RMZWFmTm9kZSwgbGFzdE9mZnNldEluTm9kZShsYXN0TGVhZk5vZGUpLCBlYykp
CisgICAgICAgIG5vZGVSYW5nZUVuZCA9IGxhc3RQb3NpdGlvbkluTm9kZShsYXN0TGVhZk5vZGUp
OworICAgIGVsc2UKKyAgICAgICAgbm9kZVJhbmdlRW5kID0gc2VsUmFuZ2UtPmVuZFBvc2l0aW9u
KCk7CisKKyAgICAvLyBTZXQgcHJlbGltaW5hciB2YWx1ZXMgZm9yIHN0YXJ0IGFuZCBlbmQgb2Zm
c2V0cworICAgIHN0YXJ0T2Zmc2V0ID0gbm9kZVJhbmdlU3RhcnQub2Zmc2V0SW5Db250YWluZXJO
b2RlKCk7CisgICAgZW5kT2Zmc2V0ID0gbm9kZVJhbmdlRW5kLm9mZnNldEluQ29udGFpbmVyTm9k
ZSgpOworCisgICAgLy8gSWYgdGhlIGVuZCBub2RlIGlzIGRpZmZlcmVudCB0aGVuIHRoZSBzdGFy
dCBub2RlLCBpdGVyYXRlIG92ZXIKKyAgICAvLyB0aG9zZSBhbW9uZyB0aGVtIHRvIGJ1aWxkIHRo
ZSBlZmZlY3RpdmUgdmFsdWUgZm9yIGVuZE9mZnNldAorICAgIGlmIChub2RlUmFuZ2VTdGFydC5h
bmNob3JOb2RlKCkgIT0gbm9kZVJhbmdlRW5kLmFuY2hvck5vZGUoKSkgeworICAgICAgICBSZWZQ
dHI8UmFuZ2U+IG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9k
ZVJhbmdlU3RhcnQsIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlUmFuZ2VFbmQuYW5jaG9yTm9kZSgp
KSk7CisgICAgICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KG5vZGVSYW5nZS5nZXQoKSk7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBpdC5yYW5nZSgpOworICAgICAgICAgICAgaWYgKHJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5p
c1RleHROb2RlKCkpCisgICAgICAgICAgICAgICAgZW5kT2Zmc2V0ICs9IHJhbmdlLT5lbmRPZmZz
ZXQoKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2li
bGVfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKEF0a1RleHQqIHRleHQpCkBAIC0xMzUxLDYgKzE0MTcs
MTAgQEAgc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfbl9zZWxlY3Rpb25z
KEF0a1RleHQqIHRleHQpCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNv
cmUodGV4dCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBjb3JlT2JqZWN0LT5z
ZWxlY3Rpb24oKTsKIAorICAgIC8vIE9ubHkgcmFuZ2Ugc2VsZWN0aW9ucyBhcmUgbmVlZGVkIGZv
ciB0aGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZAorICAgIGlmICghc2VsZWN0aW9uLmlzUmFuZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG11bHRpcGxl
IHNlbGVjdGlvbnMgZm9yIG5vdywgc28gdGhlcmUncyBvbmx5CiAgICAgLy8gdHdvIHBvc3NpYmls
aXRpZXMKICAgICAvLyBBbHNvLCB3ZSBkb24ndCB3YW50IHRvIGRvIGFueXRoaW5nIGlmIHRoZSBz
ZWxlY3Rpb24gZG9lcyBub3QKQEAgLTEzNjAsMjUgKzE0MzAsMjYgQEAgc3RhdGljIGdpbnQgd2Vi
a2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKEF0a1RleHQqIHRleHQpCiAgICAg
cmV0dXJuICFzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoY29yZU9iamVjdCwgc2VsZWN0aW9uKSB8
fCBzZWxlY3Rpb24uaXNOb25lKCkgPyAwIDogMTsKIH0KIAotc3RhdGljIGdjaGFyKiB3ZWJraXRf
YWNjZXNzaWJsZV90ZXh0X2dldF9zZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCBzZWxlY3Rp
b25fbnVtLCBnaW50KiBzdGFydF9vZmZzZXQsIGdpbnQqIGVuZF9vZmZzZXQpCitzdGF0aWMgZ2No
YXIqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3NlbGVjdGlvbihBdGtUZXh0KiB0ZXh0LCBn
aW50IHNlbGVjdGlvbk51bSwgZ2ludCogc3RhcnRPZmZzZXQsIGdpbnQqIGVuZE9mZnNldCkKIHsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0ZXh0KTsKLSAgICBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGNvcmVPYmplY3QtPnNlbGVjdGlvbigpOworICAg
IC8vIERlZmF1bHQgdmFsdWVzLCB1bmxlc3MgdGhlIGNvbnRyYXJ5IGlzIHByb3ZlZAorICAgICpz
dGFydE9mZnNldCA9ICplbmRPZmZzZXQgPSAwOwogCiAgICAgLy8gV2ViQ29yZSBkb2VzIG5vdCBz
dXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbiwgc28gYW55dGhpbmcgYnV0IDAgZG9lcyBub3QgbWFr
ZSBzZW5zZSBmb3Igbm93LgotICAgIC8vIEFsc28sIHdlIGRvbid0IHdhbnQgdG8gZG8gYW55dGhp
bmcgaWYgdGhlIHNlbGVjdGlvbiBkb2VzIG5vdAotICAgIC8vIGJlbG9uZyB0byB0aGUgY3VycmVu
dGx5IHNlbGVjdGVkIG9iamVjdC4gV2UgaGF2ZSB0byBjaGVjayBzaW5jZQotICAgIC8vIHRoZXJl
J3Mgbm8gd2F5IHRvIGdldCB0aGUgc2VsZWN0aW9uIGZvciBhIGdpdmVuIG9iamVjdCwgb25seQot
ICAgIC8vIHRoZSBnbG9iYWwgb25lICh0aGUgQVBJIGlzIGEgYml0IGNvbmZ1c2luZykKLSAgICBp
ZiAoc2VsZWN0aW9uX251bSAhPSAwIHx8ICFzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoY29yZU9i
amVjdCwgc2VsZWN0aW9uKSkgewotICAgICAgICAqc3RhcnRfb2Zmc2V0ID0gKmVuZF9vZmZzZXQg
PSAwOworICAgIGlmIChzZWxlY3Rpb25OdW0pCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAot
ICAgICpzdGFydF9vZmZzZXQgPSBzZWxlY3Rpb24uc3RhcnQoKS5vZmZzZXRJbkNvbnRhaW5lck5v
ZGUoKTsKLSAgICAqZW5kX29mZnNldCA9IHNlbGVjdGlvbi5lbmQoKS5vZmZzZXRJbkNvbnRhaW5l
ck5vZGUoKTsKKyAgICAvLyBHZXQgdGhlIG9mZnNldHMgb2YgdGhlIHNlbGVjdGlvbiBmb3IgdGhl
IHNlbGVjdGVkIG9iamVjdAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBj
b3JlKHRleHQpOworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gY29yZU9iamVjdC0+
c2VsZWN0aW9uKCk7CisgICAgZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdChjb3JlT2JqZWN0
LCBzZWxlY3Rpb24sICpzdGFydE9mZnNldCwgKmVuZE9mZnNldCk7CisKKyAgICAvLyBSZXR1cm4g
MCBpbnN0ZWFkIG9mICIiLCBhcyB0aGF0J3MgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IKKyAgICAv
LyB0aGlzIEF0a1RleHQgbWV0aG9kIHdoZW4gdGhlcmUncyBubyBzZWxlY3Rpb24KKyAgICBpZiAo
KnN0YXJ0T2Zmc2V0ID09ICplbmRPZmZzZXQpCisgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQodGV4dCwgKnN0YXJ0X29mZnNldCwg
KmVuZF9vZmZzZXQpOworICAgIHJldHVybiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0
KHRleHQsICpzdGFydE9mZnNldCwgKmVuZE9mZnNldCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2FkZF9zZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCBz
dGFydF9vZmZzZXQsIGdpbnQgZW5kX29mZnNldCkKLS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67213</attachid>
            <date>2010-09-10 11:53:47 -0700</date>
            <delta_ts>2010-09-12 04:16:37 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-09-10-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>9178</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBlMDEyNzBkZjU1NjI3ZDdiYTM0NTJiYTc3NjRmYWJjMmM0YjNhZDVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEyIEF1ZyAyMDEwIDE2OjUwOjI4ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIDIwMTAtMDktMTAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10g
Z2V0X25fc2VsZWN0aW9ucyBhbmQgZ2V0X3NlbGVjdGlvbiBmYWlsIHdoZW4gc2VsZWN0aW5nIHRl
eHQgYWNyb3NzIG9iamVjdCBib3VuZGFyaWVzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2OTkxCgogICAgICAgIEZpeCBBdGtUZXh0IGdldE5TZWxlY3Rp
b25zKCkgYW5kIGdldFNlbGVjdGlvbigpIHRvIHdvcmsgcHJvcGVybHkKCiAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAg
KHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCk6IENoZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9u
IGludGVyc2VjdHMKICAgICAgICB0aGUgbm9kZSBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5v
dCBqdXN0ICJ0b3VjaGluZyIgb25lIG9mIHRoZQogICAgICAgIGJvdW5kYXJpZXMgZm9yIHRoZSBz
ZWxlY3RlZCBub2RlLiBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIgdGhlCiAgICAgICAgbm9kZSBp
cyBhY3R1YWxseSBpbnNpZGUgdGhlIHJlZ2lvbiwgYXQgbGVhc3QgcGFydGlhbGx5CiAgICAgICAg
KGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBz
dGFydCBhbmQKICAgICAgICBlbmQgb2Zmc2V0cyBvZiBhIHNlbGVjdGlvbiBmb3IgYSBnaXZlbiBh
Y2Nlc3NpYmxlIG9iamVjdC4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfc2Vs
ZWN0aW9uKTogUmV0dXJuIHplcm8gd2hlbiBib3RoCiAgICAgICAgc3RhcnQgYW5kIGVuZCBvZmZz
ZXRzIGFyZSBlcXVhbCwgZm9sbG93aW5nIHRoZSBsZWFkIG9mIEdBSUwuCi0tLQogV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysKIC4u
Li9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAgIHwgIDEwMiAr
KysrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwg
MTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA4MTI4ZmJkLi4zYzIxZTAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA5
LTEwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR3RrXSBnZXRfbl9zZWxl
Y3Rpb25zIGFuZCBnZXRfc2VsZWN0aW9uIGZhaWwgd2hlbiBzZWxlY3RpbmcgdGV4dCBhY3Jvc3Mg
b2JqZWN0IGJvdW5kYXJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2OTkxCisKKyAgICAgICAgRml4IEF0a1RleHQgZ2V0TlNlbGVjdGlvbnMoKSBh
bmQgZ2V0U2VsZWN0aW9uKCkgdG8gd29yayBwcm9wZXJseQorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgorICAgICAgICAoc2Vs
ZWN0aW9uQmVsb25nc1RvT2JqZWN0KTogQ2hlY2sgdGhhdCBib3RoIHRoZSBzZWxlY3Rpb24gaW50
ZXJzZWN0cworICAgICAgICB0aGUgbm9kZSBBTkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBq
dXN0ICJ0b3VjaGluZyIgb25lIG9mIHRoZQorICAgICAgICBib3VuZGFyaWVzIGZvciB0aGUgc2Vs
ZWN0ZWQgbm9kZS4gV2Ugd2FudCB0byBjaGVjayB3aGV0aGVyIHRoZQorICAgICAgICBub2RlIGlz
IGFjdHVhbGx5IGluc2lkZSB0aGUgcmVnaW9uLCBhdCBsZWFzdCBwYXJ0aWFsbHkKKyAgICAgICAg
KGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBz
dGFydCBhbmQKKyAgICAgICAgZW5kIG9mZnNldHMgb2YgYSBzZWxlY3Rpb24gZm9yIGEgZ2l2ZW4g
YWNjZXNzaWJsZSBvYmplY3QuCisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9z
ZWxlY3Rpb24pOiBSZXR1cm4gemVybyB3aGVuIGJvdGgKKyAgICAgICAgc3RhcnQgYW5kIGVuZCBv
ZmZzZXRzIGFyZSBlcXVhbCwgZm9sbG93aW5nIHRoZSBsZWFkIG9mIEdBSUwuCisKIDIwMTAtMDkt
MTAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRHVtaXRydSBEYW5pbGl1Yy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggOTBm
MzYzZi4uZTgxODExMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIApAQCAtMTM0Miw4ICsxMzQzLDc0IEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkJlbG9u
Z3NUb09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmxlU2VsCiAg
ICAgaWYgKCFjb3JlT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QqPihjb3JlT2JqZWN0KS0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAg
IHJldHVybiBub2RlID09IHNlbGVjdGlvbi5iYXNlKCkuY29udGFpbmVyTm9kZSgpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXZSB3YW50IHRvIGNo
ZWNrIHRoYXQgYm90aCB0aGUgc2VsZWN0aW9uIGludGVyc2VjdHMgdGhlIG5vZGUKKyAgICAvLyBB
TkQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5vdCBqdXN0ICJ0b3VjaGluZyIgb25lIG9mIHRoZQor
ICAgIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBzZWxlY3RlZCBub2RlLiBXZSB3YW50IHRvIGNoZWNr
IHdoZXRoZXIgdGhlCisgICAgLy8gbm9kZSBpcyBhY3R1YWxseSBpbnNpZGUgdGhlIHJlZ2lvbiwg
YXQgbGVhc3QgcGFydGlhbGx5CisgICAgTm9kZSogbm9kZSA9IGNvcmVPYmplY3QtPm5vZGUoKTsK
KyAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCA9IG5vZGUtPmxhc3REZXNjZW5kYW50KCk7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgcmV0dXJuIChyYW5nZS0+aW50ZXJzZWN0c05vZGUo
bm9kZSwgZWMpCisgICAgICAgICAgICAmJiAocmFuZ2UtPmVuZENvbnRhaW5lcigpICE9IG5vZGUg
fHwgcmFuZ2UtPmVuZE9mZnNldCgpKQorICAgICAgICAgICAgJiYgKHJhbmdlLT5zdGFydENvbnRh
aW5lcigpICE9IGxhc3REZXNjZW5kYW50IHx8IHJhbmdlLT5zdGFydE9mZnNldCgpICE9IGxhc3RP
ZmZzZXRJbk5vZGUobGFzdERlc2NlbmRhbnQpKSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFNlbGVj
dGlvbk9mZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBnaW50JiBzdGFydE9mZnNldCwgZ2ludCYgZW5kT2Zm
c2V0KQoreworICAgIGlmICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEVhcmx5IHJldHVybiBpZiB0aGUgc2VsZWN0
aW9uIGRvZXNuJ3QgYWZmZWN0IHRoZSBzZWxlY3RlZCBub2RlCisgICAgaWYgKCFzZWxlY3Rpb25C
ZWxvbmdzVG9PYmplY3QoY29yZU9iamVjdCwgc2VsZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gV2UgbmVlZCB0byBmaW5kIHRoZSBleGFjdCBzdGFydCBhbmQgZW5kIHBvc2l0aW9u
cyBpbiB0aGUKKyAgICAvLyBzZWxlY3RlZCBub2RlIHRoYXQgaW50ZXJzZWN0cyB0aGUgc2VsZWN0
aW9uLCB0byBsYXRlciBvbiBnZXQKKyAgICAvLyB0aGUgcmlnaHQgdmFsdWVzIGZvciB0aGUgZWZm
ZWN0aXZlIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIFBvc2l0aW9uIG5vZGVSYW5nZVN0YXJ0OworICAgIFBvc2l0aW9uIG5vZGVSYW5nZUVuZDsK
KyAgICBOb2RlKiBub2RlID0gY29yZU9iamVjdC0+bm9kZSgpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKworICAgIC8vIElmIHRo
ZSBzZWxlY3Rpb24gYWZmZWN0cyB0aGUgc2VsZWN0ZWQgbm9kZSBhbmQgaXRzIGZpcnN0CisgICAg
Ly8gcG9zc2libGUgcG9zaXRpb24gaXMgYWxzbyBpbiB0aGUgc2VsZWN0aW9uLCB3ZSBtdXN0IHNl
dAorICAgIC8vIG5vZGVSYW5nZVN0YXJ0IHRvIHRoYXQgcG9zaXRpb24sIG90aGVyd2lzZSB0byB0
aGUgc2VsZWN0aW9uJ3MKKyAgICAvLyBzdGFydCBwb3NpdGlvbiAoaXQgd291bGQgYmVsb25nIHRv
IHRoZSBub2RlIGFueXdheSkKKyAgICBOb2RlKiBmaXJzdExlYWZOb2RlID0gbm9kZS0+Zmlyc3RE
ZXNjZW5kYW50KCk7CisgICAgaWYgKHNlbFJhbmdlLT5pc1BvaW50SW5SYW5nZShmaXJzdExlYWZO
b2RlLCAwLCBlYykpCisgICAgICAgIG5vZGVSYW5nZVN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluTm9k
ZShmaXJzdExlYWZOb2RlKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGVSYW5nZVN0YXJ0ID0gc2Vs
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKKworICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gYWZmZWN0
cyB0aGUgc2VsZWN0ZWQgbm9kZSBhbmQgaXRzIGxhc3QKKyAgICAvLyBwb3NzaWJsZSBwb3NpdGlv
biBpcyBhbHNvIGluIHRoZSBzZWxlY3Rpb24sIHdlIG11c3Qgc2V0CisgICAgLy8gbm9kZVJhbmdl
RW5kIHRvIHRoYXQgcG9zaXRpb24sIG90aGVyd2lzZSB0byB0aGUgc2VsZWN0aW9uJ3MKKyAgICAv
LyBlbmQgcG9zaXRpb24gKGl0IHdvdWxkIGJlbG9uZyB0byB0aGUgbm9kZSBhbnl3YXkpCisgICAg
Tm9kZSogbGFzdExlYWZOb2RlID0gbm9kZS0+bGFzdERlc2NlbmRhbnQoKTsKKyAgICBpZiAoc2Vs
UmFuZ2UtPmlzUG9pbnRJblJhbmdlKGxhc3RMZWFmTm9kZSwgbGFzdE9mZnNldEluTm9kZShsYXN0
TGVhZk5vZGUpLCBlYykpCisgICAgICAgIG5vZGVSYW5nZUVuZCA9IGxhc3RQb3NpdGlvbkluTm9k
ZShsYXN0TGVhZk5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbm9kZVJhbmdlRW5kID0gc2VsUmFu
Z2UtPmVuZFBvc2l0aW9uKCk7CisKKyAgICAvLyBTZXQgcHJlbGltaW5hciB2YWx1ZXMgZm9yIHN0
YXJ0IGFuZCBlbmQgb2Zmc2V0cworICAgIHN0YXJ0T2Zmc2V0ID0gbm9kZVJhbmdlU3RhcnQub2Zm
c2V0SW5Db250YWluZXJOb2RlKCk7CisgICAgZW5kT2Zmc2V0ID0gbm9kZVJhbmdlRW5kLm9mZnNl
dEluQ29udGFpbmVyTm9kZSgpOworCisgICAgLy8gSWYgdGhlIGVuZCBub2RlIGlzIGRpZmZlcmVu
dCB0aGVuIHRoZSBzdGFydCBub2RlLCBpdGVyYXRlIG92ZXIKKyAgICAvLyB0aG9zZSBhbW9uZyB0
aGVtIHRvIGJ1aWxkIHRoZSBlZmZlY3RpdmUgdmFsdWUgZm9yIGVuZE9mZnNldAorICAgIGlmIChu
b2RlUmFuZ2VTdGFydC5hbmNob3JOb2RlKCkgIT0gbm9kZVJhbmdlRW5kLmFuY2hvck5vZGUoKSkg
eworICAgICAgICBSZWZQdHI8UmFuZ2U+IG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+
ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQsIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlUmFuZ2VF
bmQuYW5jaG9yTm9kZSgpKSk7CisgICAgICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KG5vZGVSYW5n
ZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBpdC5yYW5nZSgpOworICAgICAgICAgICAgaWYgKHJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLT5pc1RleHROb2RlKCkpCisgICAgICAgICAgICAgICAgZW5kT2Zmc2V0ICs9
IHJhbmdlLT5lbmRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogc3RhdGljIGdpbnQg
d2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKEF0a1RleHQqIHRleHQpCkBA
IC0xMzUxLDYgKzE0MTgsMTAgQEAgc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF9n
ZXRfbl9zZWxlY3Rpb25zKEF0a1RleHQqIHRleHQpCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZU9iamVjdCA9IGNvcmUodGV4dCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24g
PSBjb3JlT2JqZWN0LT5zZWxlY3Rpb24oKTsKIAorICAgIC8vIE9ubHkgcmFuZ2Ugc2VsZWN0aW9u
cyBhcmUgbmVlZGVkIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZAorICAgIGlmICghc2Vs
ZWN0aW9uLmlzUmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICAvLyBXZSBkb24ndCBz
dXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbnMgZm9yIG5vdywgc28gdGhlcmUncyBvbmx5CiAgICAg
Ly8gdHdvIHBvc3NpYmlsaXRpZXMKICAgICAvLyBBbHNvLCB3ZSBkb24ndCB3YW50IHRvIGRvIGFu
eXRoaW5nIGlmIHRoZSBzZWxlY3Rpb24gZG9lcyBub3QKQEAgLTEzNjAsMjUgKzE0MzEsMjYgQEAg
c3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKEF0a1Rl
eHQqIHRleHQpCiAgICAgcmV0dXJuICFzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoY29yZU9iamVj
dCwgc2VsZWN0aW9uKSB8fCBzZWxlY3Rpb24uaXNOb25lKCkgPyAwIDogMTsKIH0KIAotc3RhdGlj
IGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9zZWxlY3Rpb24oQXRrVGV4dCogdGV4
dCwgZ2ludCBzZWxlY3Rpb25fbnVtLCBnaW50KiBzdGFydF9vZmZzZXQsIGdpbnQqIGVuZF9vZmZz
ZXQpCitzdGF0aWMgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3NlbGVjdGlvbihB
dGtUZXh0KiB0ZXh0LCBnaW50IHNlbGVjdGlvbk51bSwgZ2ludCogc3RhcnRPZmZzZXQsIGdpbnQq
IGVuZE9mZnNldCkKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29y
ZSh0ZXh0KTsKLSAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGNvcmVPYmplY3QtPnNl
bGVjdGlvbigpOworICAgIC8vIERlZmF1bHQgdmFsdWVzLCB1bmxlc3MgdGhlIGNvbnRyYXJ5IGlz
IHByb3ZlZAorICAgICpzdGFydE9mZnNldCA9ICplbmRPZmZzZXQgPSAwOwogCiAgICAgLy8gV2Vi
Q29yZSBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbiwgc28gYW55dGhpbmcgYnV0
IDAgZG9lcyBub3QgbWFrZSBzZW5zZSBmb3Igbm93LgotICAgIC8vIEFsc28sIHdlIGRvbid0IHdh
bnQgdG8gZG8gYW55dGhpbmcgaWYgdGhlIHNlbGVjdGlvbiBkb2VzIG5vdAotICAgIC8vIGJlbG9u
ZyB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9iamVjdC4gV2UgaGF2ZSB0byBjaGVjayBzaW5j
ZQotICAgIC8vIHRoZXJlJ3Mgbm8gd2F5IHRvIGdldCB0aGUgc2VsZWN0aW9uIGZvciBhIGdpdmVu
IG9iamVjdCwgb25seQotICAgIC8vIHRoZSBnbG9iYWwgb25lICh0aGUgQVBJIGlzIGEgYml0IGNv
bmZ1c2luZykKLSAgICBpZiAoc2VsZWN0aW9uX251bSAhPSAwIHx8ICFzZWxlY3Rpb25CZWxvbmdz
VG9PYmplY3QoY29yZU9iamVjdCwgc2VsZWN0aW9uKSkgewotICAgICAgICAqc3RhcnRfb2Zmc2V0
ID0gKmVuZF9vZmZzZXQgPSAwOworICAgIGlmIChzZWxlY3Rpb25OdW0pCiAgICAgICAgIHJldHVy
biAwOwotICAgIH0KIAotICAgICpzdGFydF9vZmZzZXQgPSBzZWxlY3Rpb24uc3RhcnQoKS5vZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKTsKLSAgICAqZW5kX29mZnNldCA9IHNlbGVjdGlvbi5lbmQoKS5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKKyAgICAvLyBHZXQgdGhlIG9mZnNldHMgb2YgdGhlIHNl
bGVjdGlvbiBmb3IgdGhlIHNlbGVjdGVkIG9iamVjdAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcmVPYmplY3QgPSBjb3JlKHRleHQpOworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
ID0gY29yZU9iamVjdC0+c2VsZWN0aW9uKCk7CisgICAgZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9i
amVjdChjb3JlT2JqZWN0LCBzZWxlY3Rpb24sICpzdGFydE9mZnNldCwgKmVuZE9mZnNldCk7CisK
KyAgICAvLyBSZXR1cm4gMCBpbnN0ZWFkIG9mICIiLCBhcyB0aGF0J3MgdGhlIGV4cGVjdGVkIHJl
c3VsdCBmb3IKKyAgICAvLyB0aGlzIEF0a1RleHQgbWV0aG9kIHdoZW4gdGhlcmUncyBubyBzZWxl
Y3Rpb24KKyAgICBpZiAoKnN0YXJ0T2Zmc2V0ID09ICplbmRPZmZzZXQpCisgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQodGV4dCwg
KnN0YXJ0X29mZnNldCwgKmVuZF9vZmZzZXQpOworICAgIHJldHVybiB3ZWJraXRfYWNjZXNzaWJs
ZV90ZXh0X2dldF90ZXh0KHRleHQsICpzdGFydE9mZnNldCwgKmVuZE9mZnNldCk7CiB9CiAKIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2FkZF9zZWxlY3Rpb24oQXRrVGV4
dCogdGV4dCwgZ2ludCBzdGFydF9vZmZzZXQsIGdpbnQgZW5kX29mZnNldCkKLS0gCjEuNy4wLjQK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>