<?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>20780</bug_id>
          
          <creation_ts>2008-09-11 06:03:09 -0700</creation_ts>
          <short_desc>when choosing an auto-completed value in a text input field the javascript &apos;change&apos; event is not fired.</short_desc>
          <delta_ts>2009-12-23 10:38:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.joomlapolis.com/component/option,com_comprofiler/task,lostPassword/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beat">brunner</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>adele</cc>
    
    <cc>brunner</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>michelangelo</cc>
    
    <cc>ojan</cc>
    
    <cc>sullivan</cc>
    
    <cc>thomas.godart_wk</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90850</commentid>
    <comment_count>0</comment_count>
    <who name="Beat">brunner</who>
    <bug_when>2008-09-11 06:03:09 -0700</bug_when>
    <thetext>Steps to reproduce:

1) open any url with a form on any page (which doesn&apos;t have autocomplete=&quot;off&quot; attribute)
2) fill in the form and submit it
3) open same url again
4) type-in same first letter then view autocompletion possibility, and with arrow key down+tab complete the field (or clicking the autocomplete proposal and then pressing TAB key has same effect)

the &apos;onchange&apos;/&apos;change&apos; event isn&apos;t fired.

You can try that on the url in &apos;URL&apos;, which fires a jQuery change event to do an ajax email-check. If you type in with keyboard a new value, it fires change, but not with auto-complete.

Same thing when you have only one autocomplete value, even with typing with keyboard there is no change even fired if you accept the value by hitting tab.

This report, although with the same page as url, is different from the private security report 20778.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106072</commentid>
    <comment_count>1</comment_count>
      <attachid>26798</attachid>
    <who name="Stephen">stephen.stewart</who>
    <bug_when>2009-01-16 09:45:44 -0800</bug_when>
    <thetext>Created attachment 26798
Simple HTML file with inline SCRIPT test

Demonstrates that in Safari/Webkit Version 3.2.1 (5525.27.1) no change event is triggered when a value is selected from a drop down provided via autocomplete.

&quot;The change event occurs when a control loses the input focus and its value has been modified since gaining focus.&quot; http://www.w3.org/TR/DOM-Level-2-Events/events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152234</commentid>
    <comment_count>2</comment_count>
    <who name="">thomas.godart_wk</who>
    <bug_when>2009-10-05 00:51:44 -0700</bug_when>
    <thetext>related chromium bug: http://code.google.com/p/chromium/issues/detail?id=10879
related live test case: http://data.ici-bas.fr/chromiumissue10879/
would you please confirm this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152241</commentid>
    <comment_count>3</comment_count>
    <who name="Beat">brunner</who>
    <bug_when>2009-10-05 02:11:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; related chromium bug: http://code.google.com/p/chromium/issues/detail?id=10879
&gt; related live test case: http://data.ici-bas.fr/chromiumissue10879/
&gt; would you please confirm this bug?

Most probably same bug, I can use that demo to show that the changed didn&apos;t get fired with following steps:


Steps

First click in the pseudo field, type &quot;mypseudo&quot;, click submit or hit enter - the onchange event works

Then click in the pseudo field, type &quot;newvalue&quot; do NOT submit, just CLICK outside the box - onchange is shown.

Then click in the pseudo field, type &quot;my&quot; and select &quot;mypseudo&quot; from dropdown list 

THEN just click outside the box - the onchange event does not work in Webkit / Safari 4 too....

So i can confirm it with that demo too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155527</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-18 15:13:14 -0700</bug_when>
    <thetext>Thanks Beat, Stephen, and Thomas for reporting this issue.

I have confirmed this issue is still present in the latest nightly build r49748.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155528</commentid>
    <comment_count>5</comment_count>
      <attachid>41387</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-18 15:18:24 -0700</bug_when>
    <thetext>Created attachment 41387
Patch (work in progress)

Work in progress.

Need to confirm that this is the right fix. Also, will need a test, probably a manual test will have to do since I doubt we have anything in DRT to test this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156754</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-21 19:02:29 -0700</bug_when>
    <thetext>Confirmed this also affects the Windows build (r49984).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156755</commentid>
    <comment_count>7</comment_count>
      <attachid>41629</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-21 19:50:44 -0700</bug_when>
    <thetext>Created attachment 41629
Patch with manual test

We cannot test this with DRT since DRT cannot emulate autocompletion. So, a manual test is included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157015</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-22 14:42:08 -0700</bug_when>
    <thetext>Remarks:

Whenever you press a key on the keyboard:
RenderTextControl::subtreeHasChanged is called, which sets m_edited, m_userEdited = true. 

When autocompletion kicks in the call flow is:
DOMHTML::_replaceCharactersInRange-&gt;HTMLInputElement::setValue-&gt;RenderTextControlSingleLine::updateFromElement-&gt;RenderTextControl::setInnerTextValue

Note, RenderTextControl::setInnerTextValue always sets m_edited, m_userEdited = false.

Since a user must type at least one character before the field is autocompleted (if applicable), RenderTextControl::setInnerTextValue should not explicitly set m_edited = false. Instead, RenderTextControl::setInnerTextValue should not touch this field.

On another note, the field RenderTextControl::m_userEdited seems to imply whether the field was edited by the user. Since the auto-completed result is not typed by the user, I believe m_userEdited should be set to false in RenderTextControl::setInnerTextValue (as it is currently).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157226</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 11:57:28 -0700</bug_when>
    <thetext>CCing folks who might know this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157632</commentid>
    <comment_count>10</comment_count>
      <attachid>41629</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-25 16:10:08 -0700</bug_when>
    <thetext>Comment on attachment 41629
Patch with manual test

claim that DumpRenderTree cannot emulate autocompletion, but I am not sure this is true. My reading of Safari&apos;s auto-fill code indicates that it works identically to setting the value attribute from JavaScript would. Can you reproduce the same problem with code that sets the value in JavaScript? If not, why not?

I&apos;m definitely not clear on whether this change is always correct for setInnerTextValue. That&apos;s a quite-low-level function used in many different cases. For example, is this correct for the case where the placeholder is visible and RenderTextControlMultiLine::updateFromElement calls setInnerTextValue?

review- and please answer my questions -- it&apos;s possible we may be able to land this patch as is once you do, but I suspect this is not sufficiently researched and tested

Further, I think the code you are modifying needs a comment. It&apos;s not obvious why m_userEdited should be set to false there and why m_edited should not be. With a comment we might have a fighting chance of getting it right in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159491</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-30 15:42:17 -0700</bug_when>
    <thetext>Please excuse the length of my response. It is very long, as I tried to fully explain my proposed change. I&apos;ve made an attempt to answer your questions at the very beginning of each response, as well as put all my assumptions and claims in the third and sixth paragraphs (demarcated as well) so that you can &quot;bail out&quot; before finishing if you disagree with my assumptions/claims.

(In reply to comment #10)
&gt; claim that DumpRenderTree cannot emulate autocompletion, but I am not sure this
&gt; is true. My reading of Safari&apos;s auto-fill code indicates that it works
&gt; identically to setting the value attribute from JavaScript would. Can you
&gt; reproduce the same problem with code that sets the value in JavaScript? If not,
&gt; why not?

So far, I cannot reproduce the same problem with code that sets the value in JavaScript, because in addition to the call to RenderTextControl::setInnerTextValue there is another call from the keyboard key press that causes the state of RenderTextControl to change. (I guess once I figure out how to do DOM keyboard events to simulate a key press then I may be able to create a JavaScript based Layout Test for this issue - I was able to whip up a quick example for Firefox using their DOM keyboard events API and it looks promising). Regardless, the following fix I proposed is still needed.

The context of this bug is when the user has typed at least one character into the text input before it is auto-completed (either by the auto-fill code or via some JavaScript action). For your reference, we are interested in conforming to section 18.2.3 &quot;Intrinsic events&quot; of the HTML 4.01 spec. &lt;http://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.2.3&gt;, which states that: &quot;The onchange event occurs when a control loses the input focus and its value has been modified since gaining focus&quot; ($).

ASSUMPTION: My interpretation of ($), is that the user must explicitly focus the input (by clicking on it) and choose to lose focus on the input (by clicking outside of the field). That is, the onchange event should not fire if all of this is done programmatically via JavaScript without at least one DOM keyboard event to simulate pressing a key. From my testing in Firefox, it seem to agree with this interpretation of the spec. If you have or anyone else has an opinion on this, please let me know. The remainder of my response assumes this interpretation.

From tracing the execution in a debugger, RenderTextControl::m_edited is only set to true in RenderTextControl::subtreeHasChanged() (**). And, RenderTextControl::subtreeHasChanged() is only called when an event that changes the editable content (i.e. the value of the field) is fired (such as a key press by the user - line 128 of TextControlInnerTextElement.cpp, &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/TextControlInnerElements.cpp?rev=46815#L128&gt;) (***).

(*) Currently, RenderTextControl::setInnerTextValue sets m_edited = false. And, both the auto-fill code and setting the value attribute from JavaScript call this method.

CLAIM: I claim there is an issue with the definition of what it means for a field to have been edited. The solution I proposed in my patch corrects this bug by re-defining this definition to be: A field is said to been edited by a person if and only if the person explicitly inserted, deleted, or substituted at least one character.

Lets look at the current definition and the one I propose:

Extracting the current definition from the code, I have: A field is said to been edited by a person if and only if the person explicitly inserted, deleted, or substituted every character. Why &quot;every&quot; character? By (*), since if one change is made via the auto-fill code or JavaScript, RenderTextControl::m_edited is set to false (i.e the field has not been edited).

I believe this definition needs to be relaxed a bit to correct this bug. Let A be a text input field on the page. Assume that a person neither selects View-&gt;AutoFill Form nor causes some JavaScript to fill in A. Suppose that the person types at least one character into A and that the auto-fill code completes what they were typing. Then (I claim) the field should be considered to have been edited, because the person typed at least one character into A. Therefore, the definition of a field that has been edited should be: A field is said to been edited by a person if and only if the person explicitly inserted, deleted, or substituted at least one character. ((%) Notice, this definition produces the correct result if we suppose that a person selects View-&gt;AutoFill Form or causes some JavaScript to fill in A. That is, the field is said to have NOT been edited - at least not by a human).

Translating this definition into implementation code and noticing that RenderTextControl initializes m_edited to false (in its constructor &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderTextControl.cpp?rev=48792#L73&gt;), we see that we should remove line 198 of RenderTextControl.cpp &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderTextControl.cpp?rev=48792#L198&gt; (#). A side-effect of making this change is that once RenderTextControl::m_edited is set to true by (**) it is never is reset to false. This would be problematic if it wasn&apos;t for the fact that every caller that calls B := RenderTextControl::isEdited() to get the value of m_edited subsequently calls RenderTextControl::setEdited(false) (if B == true), which sets RenderTextControl::m_edited to false. So, we have moved the responsibility of re-setting RenderTextControl::m_edited to false to the caller, but this is already being done (see below files)! Hence, we can remove (#).

For your reference, isEdited() is called in files:
Line 283 of WebCore/wml/WMLInputElement.cpp &lt;http://trac.webkit.org/browser/trunk/WebCore/wml/WMLInputElement.cpp?rev=48792#L283&gt;
Line 2657 of WebCore/dom/Document.cpp &lt;http://trac.webkit.org/browser/trunk/WebCore/dom/Document.cpp?rev=50351#L2657&gt;
Line 1545 of WebCore/html/HTMLInputElement.cpp &lt;http://trac.webkit.org/browser/trunk/WebCore/html/HTMLInputElement.cpp?rev=50132#L1545&gt;

(##) Line 153 of WebCore/rendering/RenderTextControlSingleLine.cpp &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderTextControlSingleLine.cpp#L153&gt;

With regards to (##), by making the change (#) we correct another bug with respect to the RenderTextControlSingleLine::subtreeHasChanged(). Notice, we call Frame::textFieldDidBeginEditing if the field is auto-completed and then the user changes the value by pressing a key on the keyboard. To see this do the following: Run the test for this bug, when the auto-fill code triggers and completes the word apple, press some other key on the keyboard, say &quot;d&quot;. Notice, you still have focus of the input. When you press &quot;d&quot;, (##) evaluates to false! And thus the code will call Frame::textFieldDidBeginEditing (on line 172 &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderTextControlSingleLine.cpp#L172&gt;). Instead, Frame::textDidChangeInTextField should have been called (line 177 &lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderTextControlSingleLine.cpp#L177&gt;), because we just made a change.

&gt; I&apos;m definitely not clear on whether this change is always correct for
&gt; setInnerTextValue. That&apos;s a quite-low-level function used in many different
&gt; cases. For example, is this correct for the case where the placeholder is
&gt; visible and RenderTextControlMultiLine::updateFromElement calls
&gt; setInnerTextValue?

Yes, it is correct because of (***). Notice, class RenderTextControlMultiLine extends class RenderTextControl. By default RenderTextControl::m_edited is false. Only when the user explicitly types a key into the input, does RenderTextControl::m_edited become true. Using a debugger, it can can be observed that whenever a key is pressed, RenderTextControlMultiLine::subtreeHasChanged always fires before RenderTextControlMultiLine::updateFromElement, which combined with (#) yields the correct behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159539</commentid>
    <comment_count>12</comment_count>
      <attachid>42248</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-10-30 20:25:01 -0700</bug_when>
    <thetext>Created attachment 42248
Alternative patch with manual test

After further thought, I came up with an alternative patch that doesn&apos;t have to touch the low-level details of RenderTextControl.

Instead, I have modified the corresponding routine called by the auto-fill code in the Mac and Windows builds to store the value of whether the RenderTextControl has already been edited (such as if the user started typing the value that is going to be auto-completed) and to restore the edited state after the we set the field to the auto-completed value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159655</commentid>
    <comment_count>13</comment_count>
      <attachid>42279</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-01 12:51:02 -0800</bug_when>
    <thetext>Created attachment 42279
Patch with manual test

I updated the original patch based on Darin&apos;s comments.

I also added a comment to to RenderTextControl.h to remind developers to call setEdited(false) after they fire an onchange event. From searching the code, this is already being done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159672</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-01 14:01:42 -0800</bug_when>
    <thetext>Given that m_edited is used only for change events, I am sure that the change in your patch is correct.

Pointing me at the related code I realize that there are things that would make the code clearer:

    1) The three copies of the code to dispatch a change event if a text control was edited should share code. RenderTextControl could have a public function to do this and the isEdited and setEdited functions could be either eliminated or made private.

    2) The rule for when a change event is dispatched seems wrong. I would think there are other times we&apos;d have to dispatch a change event. For example, if the form is submitted some way other than by hitting return and there was an edited &lt;input&gt; element in that form. Or if you are leaving the page for some other reason, although the form element still has focus. We should write more test cases and file bugs if we differ from other browsers.

    3) The Document::setFocusedNode and WMLInputElement::defaultEventHandler functions should use the dispatchFormControlChangeEvent function.

    4) The code in Document::setFocusedNode to specifically deal with the text controls should instead be in setFocus function overrides in the two classes that can have text controls (HTMLInputElement, HTMLTextAreaElement), three counting WMLInputElement. It is bad factoring to have element-specific code in Document::setFocusedNode, even though it does save a few lines of code.

    5) The call to setEdited(false) should be done before dispatching the event. It’s not clear to me that there’s any benefit to how it’s done now and I think we might be able to construct a test case demonstrating some minor bug. Even if we don&apos;t put code to dispatch the event into RenderTextControl as I suggest in (3) above, perhaps we should at least make the function that returns the bit also clear it as a side effect.

    6) For m_edited I would prefer a name that makes the relationship with the change event clear. Perhaps m_wasChangedSinceLastChangedEvent. For the same reason, m_userEdited could be renamed m_wasEditedSinceSetProgrammatically. Or better, shorter names with a similar meaning. Both of my suggested names are wordy, but m_edited and m_userEdited are too vague.

None of these changes need to go into your bug fix -- just things I noticed because I had to read the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159674</commentid>
    <comment_count>15</comment_count>
      <attachid>42279</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-01 14:06:11 -0800</bug_when>
    <thetext>Comment on attachment 42279
Patch with manual test

I&apos;m now comfortable with the code change after your explanation.

I&apos;m still slightly puzzled that we can&apos;t exercise this code path any way in DumpRenderTree, but you say so and I&apos;ll take your word for it. Maybe there&apos;s something simple we can do in DumpRenderTree so it can simulate the auto-fill code path just enough so this can be regression tested.

&gt; -        m_edited = false;
&gt; +        // We set m_userEdited to false so that we do not ignore the HTML 5 autofocus attribute on this form control.

This seems like a really mysterious comment. I don&apos;t understand how autofocus is related to this.

&gt; +        // Why do we set this directly as opposed to calling setUserEdited(false) here?

This comment isn&apos;t needed. It&apos;s common to set data members inside a class rather than calling functions, and that&apos;s probably a good idiom.

In fact, I think it would be best to eliminate the setUserEdited function entirely. As far as I can tell nobody calls it.

&gt; +    // Note, after you fire an onchange event, remember to call setEdited(false) to reset the edited state of this control.
&gt;      bool isEdited() const { return m_edited; }
&gt;      void setEdited(bool isEdited) { m_edited = isEdited; }

This comment points out the need for a design change. We don&apos;t want to make functions you can &quot;use wrong&quot; if we can avoid it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159676</commentid>
    <comment_count>16</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-01 14:50:36 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 42279 [details])
&gt; I&apos;m now comfortable with the code change after your explanation.

Great! Thank you for taking the time to look over this.

&gt; I&apos;m still slightly puzzled that we can&apos;t exercise this code path any way in
&gt; DumpRenderTree, but you say so and I&apos;ll take your word for it. Maybe there&apos;s
&gt; something simple we can do in DumpRenderTree so it can simulate the auto-fill
&gt; code path just enough so this can be regression tested.

I&apos;ll take a look.

&gt; 
&gt; &gt; -        m_edited = false;
&gt; &gt; +        // We set m_userEdited to false so that we do not ignore the HTML 5 autofocus attribute on this form control.
&gt; 
&gt; This seems like a really mysterious comment. I don&apos;t understand how autofocus
&gt; is related to this.

(*) Notice, RenderTextControl::setUserEdited sets m_userEdited AND calls Document::setIgnoreAutofocus.

This comment was derived from the comment above Document::setIgnoreAutofocus in file Document.h &lt;http://trac.webkit.org/browser/trunk/WebCore/dom/Document.h?rev=49998#L557&gt;.

From my understanding and testing, Document::setIgnoreAutofocus is part of the implementation used to support the HTML 5 autofocus attribute &lt;http://dev.w3.org/html5/spec/Overview.html#autofocusing-a-form-control&gt;.

&gt; 
&gt; &gt; +        // Why do we set this directly as opposed to calling setUserEdited(false) here?
&gt; 
&gt; This comment isn&apos;t needed. It&apos;s common to set data members inside a class
&gt; rather than calling functions, and that&apos;s probably a good idiom.

See notice (*) above. I added this comment because it is unclear to me why we are explicitly setting the value of a data member here when RenderTextControl::setUserEdited also sets this data member plus calls Document::setIgnoreAutofocus. Why aren&apos;t we calling Document::setIgnoreAutofocus here?

&gt; 
&gt; In fact, I think it would be best to eliminate the setUserEdited function
&gt; entirely. As far as I can tell nobody calls it.
&gt; 
&gt; &gt; +    // Note, after you fire an onchange event, remember to call setEdited(false) to reset the edited state of this control.
&gt; &gt;      bool isEdited() const { return m_edited; }
&gt; &gt;      void setEdited(bool isEdited) { m_edited = isEdited; }
&gt; 
&gt; This comment points out the need for a design change. We don&apos;t want to make
&gt; functions you can &quot;use wrong&quot; if we can avoid it.

I agree, I also do not like functions that you can &quot;use wrong&quot;. This is the reason that lead me to come up with the Alternative patch with manual test &lt;https://bugs.webkit.org/attachment.cgi?id=42248&gt;.

I am still reading through you earlier comment which suggests cleaning up the code in the caller functions. Let me finish reading through and processing your earlier comment. Maybe we can find a clean solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159677</commentid>
    <comment_count>17</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-01 14:56:17 -0800</bug_when>
    <thetext>(In reply to comment #15)

&gt; 
&gt; In fact, I think it would be best to eliminate the setUserEdited function
&gt; entirely. As far as I can tell nobody calls it.

Forgot to address this bit in my last comment. Yeah, we could remove it as I don&apos;t see anyone calling this in the code. Probably best in a separate bug? I&apos;ll get back to you about this and the rest of your earlier comment shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159678</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-01 14:57:36 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (*) Notice, RenderTextControl::setUserEdited sets m_userEdited AND calls
&gt; Document::setIgnoreAutofocus.

Since nobody calls it, that doesn’t matter. We should go back and find the change where someone modified the setUserEdited function and see if there’s a test case that should be failing. It seems like the autofocus work was done incorrectly since modifying a function that nobody calls clearly can’t have an effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159702</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-01 18:29:39 -0800</bug_when>
    <thetext>I think it would probably be best if this function was removed in a separate bug. Let me know if you think we should remove this function in this patch.

For your reference:

RenderTextControl::setUserEdited was first added in r24652 &lt;http://trac.webkit.org/changeset/24652&gt; as part of the patch for bug &lt;rdar://problem/5359921&gt; (I don&apos;t know what the issue was other than what is implied from the change log comment, since I don&apos;t have rdar access).

Then in r34626 &lt;http://trac.webkit.org/changeset/34626&gt;, RenderTextControl::setUserEdited was changed to include the the line &quot;document()-&gt;setIgnoreAutofocus(isUserEdited)&quot; as part of the patch for bug #18887.

The following test cases were added mentioned in the change log for bug #18887:
fast/forms/autofocus-attribute.html
fast/forms/autofocus-opera-001.html
fast/forms/autofocus-opera-002.html
fast/forms/autofocus-opera-003.html
fast/forms/autofocus-opera-004.html
fast/forms/autofocus-opera-005.html
fast/forms/autofocus-opera-006.html
fast/forms/autofocus-opera-007.html
fast/forms/autofocus-opera-008.html

CC&apos;ing Michelangelo De Simone, as he may have some insight into r34626, including the change to RenderTextControl::setUserEdited and the autofocus code.

(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (*) Notice, RenderTextControl::setUserEdited sets m_userEdited AND calls
&gt; &gt; Document::setIgnoreAutofocus.
&gt; 
&gt; Since nobody calls it, that doesn’t matter. We should go back and find the
&gt; change where someone modified the setUserEdited function and see if there’s a
&gt; test case that should be failing. It seems like the autofocus work was done
&gt; incorrectly since modifying a function that nobody calls clearly can’t have an
&gt; effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159703</commentid>
    <comment_count>20</comment_count>
      <attachid>42289</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-01 18:44:37 -0800</bug_when>
    <thetext>Created attachment 42289
Patch with manual test

Updated according to Darin&apos;s suggestions. 

Asked Mark to clarify &lt;rdar://problem/5359921&gt; so that I could write a more descriptive comment above the line &quot;m_userEdited = false&quot; in RenderTextControl::setInnerTextValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159722</commentid>
    <comment_count>21</comment_count>
      <attachid>42289</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-01 20:07:47 -0800</bug_when>
    <thetext>Comment on attachment 42289
Patch with manual test

Forgot to rename m_edited/m_userEdited as per Darin&apos;s comment, to make it clear what their purpose is</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159773</commentid>
    <comment_count>22</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-11-02 03:39:08 -0800</bug_when>
    <thetext>(In reply to comment #19)

&gt; Then in r34626 &lt;http://trac.webkit.org/changeset/34626&gt;,
&gt; RenderTextControl::setUserEdited was changed to include the the line
&gt; &quot;document()-&gt;setIgnoreAutofocus(isUserEdited)&quot; as part of the patch for bug
&gt; #18887.

Thanks for your feedback. Please, feel free to eliminate that line of code (&quot;document()-&gt;setIgnoreAutofocus(isUserEdited)&quot;) from RenderTextControl::setUserEdited if you need it.

I&apos;ll address this issue in another bug and I&apos;m gonna eliminate such line anyway. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160374</commentid>
    <comment_count>23</comment_count>
      <attachid>42464</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-04 01:24:51 -0800</bug_when>
    <thetext>Created attachment 42464
Patch with manual test

Renamed RenderTextControl::m_edited to m_wasEditedSinceLastChangeEvent and RenderTextControl::m_userEdited to m_wasLastEditedByAUser, to reflect that whether the text control was changed since the last change event fired and whether a human performed the last edit (as opposed to being done programmatically), respectively. Also, renamed their corresponding getters and setters.

Let me know if these names are not sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160858</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-05 10:11:26 -0800</bug_when>
    <thetext>Typically it&apos;s best to address new issues in a separate bug. The naming issue is not the one this bug describes. And the automated commit queue tool works best when each bug is resolved with a single patch.

(In reply to comment #23)
&gt; Renamed RenderTextControl::m_edited to m_wasEditedSinceLastChangeEvent

Maybe it should be m_wasChangedSinceLastChangeEvent. I’m not sure setting the text of a control counts as &quot;being edited&quot;.

&gt; RenderTextControl::m_userEdited to m_wasLastEditedByAUser

I don’t think &quot;a user&quot; is good here. We normally leave our articles from our names. I also think that we should not call setting the text &quot;being edited&quot;. Perhaps m_wasEditedByUser is all we need for a good name here. Or maybe m_lastChangeWasUserEdit. Maybe there&apos;s a better idea for the name. But in general I think we should call changes done by the HTML editing commands &quot;editing&quot; and other changes not be called editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160935</commentid>
    <comment_count>25</comment_count>
      <attachid>42464</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-05 13:39:21 -0800</bug_when>
    <thetext>Comment on attachment 42464
Patch with manual test

As per Darin&apos;s comment, it would be cleaner if we rename the fields as part of a separate bug. So, I am removing the review flag on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160936</commentid>
    <comment_count>26</comment_count>
      <attachid>42289</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-05 13:40:10 -0800</bug_when>
    <thetext>Comment on attachment 42289
Patch with manual test

Marking this patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160941</commentid>
    <comment_count>27</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-05 13:46:51 -0800</bug_when>
    <thetext>Filed a new bug #31186, to address the renaming of the fields in RenderTextControl. We will probably need to file some more cleanup bugs to address some of the other issues that Darin brought up in comment #14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161386</commentid>
    <comment_count>28</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-11-07 18:46:12 -0800</bug_when>
    <thetext>Committed r50618: &lt;http://trac.webkit.org/changeset/50618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174480</commentid>
    <comment_count>29</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2009-12-22 16:52:04 -0800</bug_when>
    <thetext>This change introduced a subtle bug in Safari&apos;s autocomplete that&apos;s tracked by &lt;rdar://problem/7470529&gt;. It&apos;s not completely clear to me yet whether Safari was relying on undefined or incorrect behavior, or whether this change introduced incorrect behavior. I&apos;m looking into this more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174607</commentid>
    <comment_count>30</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2009-12-23 10:38:39 -0800</bug_when>
    <thetext>It turns out that the regression in Safari&apos;s autocomplete behavior was caused by a combination of this change and an earlier one, &lt;https://bugs.webkit.org/show_bug.cgi?id=32904&gt;. Reverting this change alone doesn&apos;t fix the general problem, though it makes some cases work better.

However, it&apos;s not clear to me that this change is conceptually incorrect, and in any case I will work around the introduced problems in Safari.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>26798</attachid>
            <date>2009-01-16 09:45:44 -0800</date>
            <delta_ts>2009-01-16 09:45:44 -0800</delta_ts>
            <desc>Simple HTML file with inline SCRIPT test</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>1168</size>
            <attacher name="Stephen">stephen.stewart</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgi
PgogICAgPHRpdGxlPkV2ZW50czwvdGl0bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+SW4g
U2FmYXJpLCBpZiB5b3Ugc2VsZWN0IGEgdmFsdWUgZnJvbSBhbiBhdXRvY29tcGxldGUgZHJvcGRv
d24gaW4gdGhlIFVJLCBubyBjaGFuZ2UgZXZlbnQgaXMgdHJpZ2dlcmVkLjwvcD4KICAgIDxmb3Jt
IG5hbWU9ImZvbyIgYWN0aW9uPSIjIj4KICAgICAgPGxhYmVsIGZvcj0iZnVsbG5hbWUiPkZvbzo8
L2xhYmVsPgogICAgICA8aW5wdXQgaWQ9ImZ1bGxuYW1lIiB0eXBlPSJ0ZXh0Ij4KICAgIDwvZm9y
bT4KICAgIDxmb3JtPgogICAgICA8dGV4dGFyZWEgbmFtZT0idGV4dGFyZWEiIHJvd3M9IjIwIiBj
b2xzPSI1MCI+PC90ZXh0YXJlYT4KICAgIDwvZm9ybT4KICAgIDxzY3JpcHQ+CiAgICAgIGZ1bmN0
aW9uIHJlcG9ydChlbGVtZW50LCBldmVudCkgewogICAgICAgIHZhbHVlID0gZWxlbWVudC52YWx1
ZTsKICAgICAgICB2YXIgbXNnID0gZXZlbnQgKyAiOiAiICsgZWxlbWVudC5uYW1lICsgIiAoIiAr
IHZhbHVlICsgIilcbiI7CiAgICAgICAgdmFyIHQgPSBkb2N1bWVudC5mb3Jtc1sxXS50ZXh0YXJl
YTsKICAgICAgICB0LnZhbHVlID0gdC52YWx1ZSttc2c7CiAgICAgIH0KICAgICAgZnVuY3Rpb24g
YWRkaGFuZGxlcnMoZikgewogICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmLmVsZW1lbnRzLmxl
bmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgZSA9IGYuZWxlbWVudHNbaV07CiAgICAgICAgICBl
Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgcmVwb3J0KHRoaXMsICdDbGljaycpO30KICAgICAgICAg
IGUub25jaGFuZ2UgPSBmdW5jdGlvbigpIHsgcmVwb3J0KHRoaXMsICdDaGFuZ2UnKTt9CiAgICAg
ICAgICBlLm9uZm9jdXMgPSBmdW5jdGlvbigpIHsgcmVwb3J0KHRoaXMsICdGb2N1cycpO30KICAg
ICAgICAgIGUub25ibHVyID0gZnVuY3Rpb24oKSB7IHJlcG9ydCh0aGlzLCAnQmx1cicpO30KICAg
ICAgICAgIGUub25zZWxlY3QgPSBmdW5jdGlvbigpIHsgcmVwb3J0KHRoaXMsICdTZWxlY3QnKTt9
CiAgICAgICAgfQogICAgICB9CiAgICAgIGFkZGhhbmRsZXJzKGRvY3VtZW50LmZvcm1zWzBdKTsK
ICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41387</attachid>
            <date>2009-10-18 15:18:24 -0700</date>
            <delta_ts>2009-10-21 19:50:44 -0700</delta_ts>
            <desc>Patch (work in progress)</desc>
            <filename>bug20780fix.patch</filename>
            <type>text/plain</type>
            <size>361</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDQ5
NjQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTUsNyArMTk1LDYgQEAKICAgICAgICAgICAgIEFTU0VSVCghZWMpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9lZGl0ZWQgPSBmYWxzZTsKICAgICAgICAgbV91c2VyRWRpdGVk
ID0gZmFsc2U7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41629</attachid>
            <date>2009-10-21 19:50:44 -0700</date>
            <delta_ts>2009-11-01 12:51:02 -0800</delta_ts>
            <desc>Patch with manual test</desc>
            <filename>Bug20780.patch</filename>
            <type>text/plain</type>
            <size>3033</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTkyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMTAtMjEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MAorICAgICAgICAKKyAg
ICAgICAgRml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIG9uY2hhbmdlIGV2ZW50IGhhbmRsZXIgaXMg
bm90IGZpcmVkIHdoZW4gdGhlIAorICAgICAgICBpbnB1dCBmaWVsZCBpcyBhdXRvY29tcGxldGVk
LgorICAgICAgICAKKyAgICAgICAgV2UgY2Fubm90IHRlc3QgdGhpcyB1c2luZyBEUlQgc2luY2Ug
RFJUIGNhbm5vdCBlbXVsYXRlIGF1dG9jb21wbGV0aW9uLgorICAgICAgICBTbywgYSBtYW51YWwt
dGVzdCBpcyBpbmNsdWRlZC4KKworICAgICAgICBUZXN0czogbWFudWFsLXRlc3RzL2F1dG9jb21w
bGV0aW9uLWZpcmUtb25jaGFuZ2UuaHRtbAorCisgICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9j
b21wbGV0aW9uLWZpcmUtb25jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sOjpzZXRJbm5lclRleHRWYWx1ZSk6CisKIDIwMDktMTAtMjEgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN3ZWRpc2ggc2VhcmNoIChhbmQgb3RoZXIgbGFuZ3Vh
Z2VzIGFzIHdlbGwpIGlzIGJyb2tlbiB3aGlsZSBmaXhpbmcgSmFwYW5lc2Ugc2VhcmNoCkluZGV4
OiBXZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29tcGxldGlvbi1maXJlLW9uY2hhbmdlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmlyZS1v
bmNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2Nv
bXBsZXRpb24tZmlyZS1vbmNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFRoaXMgdGVzdCBjYXNlIGlzIGJhc2VkIG9u
IHRoZSB0ZXN0IGNhc2UgaHR0cDovL2RhdGEuaWNpLWJhcy5mci9jaHJvbWl1bWlzc3VlMTA4Nzkv
Lgord2luZG93LmNoYW5nZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIGNoZWNrRm9yQ2hhbmdlKCkKK3sK
KyAgICBpZiAoIWxvY2F0aW9uLnNlYXJjaCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IAorICAgIGlmICghd2luZG93LmNoYW5nZWQgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZp
ZWxkIikudmFsdWUgIT0gIiIpCisgICAgICAgIGxvZygiRkFJTCIpOworICAgIGVsc2UKKyAgICAg
ICAgbG9nKCJQQVNTIik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBsb2cobXNn
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBvbiBh
dXRvY29tcGxldGlvbiB0aGUgJ29uY2hhbmdlJyBldmVudCBpcyBmaXJlZC48L3A+Cis8cD5TdGVw
cyB0byByZXByb2R1Y2U6PC9wPgorPG9sPgorICA8bGk+SW4gdGhlIGlucHV0IGZpZWxkLCB0eXBl
IHRoZSB3b3JkICZxdW90O2FwcGxlJnF1b3Q7ICh3aXRob3V0IHF1b3RlcykuIFRoZW4gY2xpY2sg
dGhlIGJ1dHRvbiBTdWJtaXQgb3IgaGl0IHRoZSByZXR1cm4vZW50ZXIgCisgIGtleSBvbiB5b3Vy
IGtleWJvYXJkPC9saT4KKyAgPGxpPk9uY2UgdGhlIHBhZ2UgcmVsb2FkcywgaW4gdGhlIGlucHV0
IGZpZWxkLCB0eXBlICZxdW90O2FwJnF1b3Q7ICh3aXRob3V0IHF1b3RlcykgYW5kIGxldCB0aGUg
YnJvd3NlciBhdXRvY29tcGxldGUgdGhlIHdvcmQgKG9yIHNlbGVjdCAKKyAgJnF1b3Q7YXBwbGUm
cXVvdDsgZnJvbSB0aGUgYXV0b2NvbXBsZXRpb24gZHJvcC1kb3duIGxpc3QgY29udGV4dHVhbCBt
ZW51KS4gVGhlbiBjbGljayB0aGUgYnV0dG9uIFN1Ym1pdCBvciBoaXQgdGhlIHJldHVybi9lbnRl
ciAKKyAga2V5IG9uIHlvdXIga2V5Ym9hcmQuPC9saT4KKzwvb2w+Cis8Zm9ybSBtZXRob2Q9Imdl
dCIgb25zdWJtaXQ9InJldHVybiBjaGVja0ZvckNoYW5nZSgpIj4KKyAgICA8cD48aW5wdXQgdHlw
ZT0idGV4dCIgbmFtZT0iZmllbGQiIGlkPSJmaWVsZCIgdmFsdWU9IiIgb25jaGFuZ2U9IndpbmRv
dy5jaGFuZ2VkID0gdHJ1ZSIvPjwvcD4KKyAgICA8cD48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1
ZT0iU3VibWl0Ii8+PC9wPgorPC9mb3JtPgorPHByZSBpZD0ibG9nIj48L3ByZT4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJl
dmlzaW9uIDQ5ODEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyArMTk1LDYgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJv
bDo6c2V0SW5uZXJUZXh0VmFsdQogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0K
IAotICAgICAgICBtX2VkaXRlZCA9IGZhbHNlOwogICAgICAgICBtX3VzZXJFZGl0ZWQgPSBmYWxz
ZTsKICAgICB9CiAK
</data>
<flag name="review"
          id="23125"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42248</attachid>
            <date>2009-10-30 20:25:01 -0700</date>
            <delta_ts>2009-11-01 18:44:37 -0800</delta_ts>
            <desc>Alternative patch with manual test</desc>
            <filename>Bug20780_alt.patch</filename>
            <type>text/plain</type>
            <size>5973</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMTAtMzAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MAorCisgICAgICAgIEZp
eGVzIGFuIGlzc3VlIHdoZXJlIHRoZSBvbmNoYW5nZSBldmVudCBoYW5kbGVyIGlzIG5vdCBmaXJl
ZCB3aGVuIHRoZSAKKyAgICAgICAgaW5wdXQgZmllbGQgaXMgYXV0b2NvbXBsZXRlZC4KKworICAg
ICAgICBXZSBjYW5ub3QgdGVzdCB0aGlzIHVzaW5nIERSVCBzaW5jZSBEUlQgY2Fubm90IGVtdWxh
dGUgYXV0b2NvbXBsZXRpb24uCisgICAgICAgIFNvLCBhIG1hbnVhbC10ZXN0IGlzIGluY2x1ZGVk
LgorCisgICAgICAgIFRlc3RzOiBtYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmlyZS1vbmNo
YW5nZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06CisgICAgICAg
ICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQgX3JlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTp3aXRoU3Ry
aW5nOnNlbGVjdGluZ0Zyb21JbmRleDpdKToKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvYXV0b2Nv
bXBsZXRpb24tZmlyZS1vbmNoYW5nZS5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0zMCAgWm9sdGFu
IEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCShyZXZpc2lvbiA1MDEzMSkK
KysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsMTAgKzEyNCwyMyBAQAogewogICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IGNvcmUoc2VsZik7CiAgICAgaWYgKGlucHV0RWxlbWVudCkgeworICAgICAgICAv
LyBROiBXaHkgZG8gd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGlucHV0IGVsZW1lbnQgd2FzIGVk
aXRlZD8KKyAgICAgICAgLy8KKyAgICAgICAgLy8gQTogSWYgdGhpcyBtZXRob2Qgd2FzIGNhbGxl
ZCB0byBhdXRvLWNvbXBsZXRlIHRoZSB2YWx1ZSB0aGUgdXNlciBzdGFydGVkIHR5cGluZworICAg
ICAgICAvLyAgICB0aGVuIHdlIHNob3VsZCBzdGlsbCBmaXJlIHRoZSBvbmNoYW5nZSBldmVudCBz
aW5jZSB0aGlzIGZpZWxkIHdhcyBpbml0aWFsbHkgCisgICAgICAgIC8vICAgIGVkaXRlZCBieSB0
aGUgdXNlci4gV2Ugc3RvcmUgd2hldGhlciB0aGUgZmllbGQgd2FzIGVkaXRlZCBieSB0aGUgdXNl
ciBiZWZvcmUKKyAgICAgICAgLy8gICAgd2UgKHRoZSBjb21wdXRlcikgY2hhbmdlIHRoZSB2YWx1
ZSwgc28gdGhhdCB3ZSBjYW4gcHJvcGVybHkgcmVzdG9yZSB0aGUgc3RhdGUKKyAgICAgICAgLy8g
ICAgb2YgdGhlIGZpZWxkIGFmdGVyIG91ciBjaGFuZ2UuCisgICAgICAgIFdlYkNvcmU6OlJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dEVsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgICAgIGJv
b2wgd2FzRWRpdGVkID0gcmVuZGVyZXI/IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIpLT5p
c0VkaXRlZCgpIDogZmFsc2U7CisKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIG5ld1ZhbHVlID0g
aW5wdXRFbGVtZW50LT52YWx1ZSgpOwogICAgICAgICBuZXdWYWx1ZS5yZXBsYWNlKHRhcmdldFJh
bmdlLmxvY2F0aW9uLCB0YXJnZXRSYW5nZS5sZW5ndGgsIHJlcGxhY2VtZW50U3RyaW5nKTsKICAg
ICAgICAgaW5wdXRFbGVtZW50LT5zZXRWYWx1ZShuZXdWYWx1ZSk7CiAgICAgICAgIGlucHV0RWxl
bWVudC0+c2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxlbmd0aCgpKTsKKworICAg
ICAgICBpZiAocmVuZGVyZXIpCisgICAgICAgICAgICB0b1JlbmRlclRleHRDb250cm9sKHJlbmRl
cmVyKS0+c2V0RWRpdGVkKHdhc0VkaXRlZCk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL21h
bnVhbC10ZXN0cy9hdXRvY29tcGxldGlvbi1maXJlLW9uY2hhbmdlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmlyZS1vbmNoYW5nZS5odG1s
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmly
ZS1vbmNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKy8vIFRoaXMgdGVzdCBjYXNlIGlzIGJhc2VkIG9uIHRoZSB0ZXN0IGNh
c2UgaHR0cDovL2RhdGEuaWNpLWJhcy5mci9jaHJvbWl1bWlzc3VlMTA4NzkvLgord2luZG93LmNo
YW5nZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIGNoZWNrRm9yQ2hhbmdlKCkKK3sKKyAgICBpZiAoIWxv
Y2F0aW9uLnNlYXJjaCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgIGlmICgh
d2luZG93LmNoYW5nZWQgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpZWxkIikudmFsdWUg
IT0gIiIpCisgICAgICAgIGxvZygiRkFJTCIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJQQVNT
Iik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtc2cgKyAiXG4iKSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBvbiBhdXRvY29tcGxldGlv
biB0aGUgJ29uY2hhbmdlJyBldmVudCBpcyBmaXJlZC48L3A+Cis8cD5TdGVwcyB0byByZXByb2R1
Y2U6PC9wPgorPG9sPgorICA8bGk+SW4gdGhlIGlucHV0IGZpZWxkLCB0eXBlIHRoZSB3b3JkICZx
dW90O2FwcGxlJnF1b3Q7ICh3aXRob3V0IHF1b3RlcykuIFRoZW4gY2xpY2sgdGhlIGJ1dHRvbiBT
dWJtaXQgb3IgaGl0IHRoZSByZXR1cm4vZW50ZXIgCisgIGtleSBvbiB5b3VyIGtleWJvYXJkPC9s
aT4KKyAgPGxpPk9uY2UgdGhlIHBhZ2UgcmVsb2FkcywgaW4gdGhlIGlucHV0IGZpZWxkLCB0eXBl
ICZxdW90O2FwJnF1b3Q7ICh3aXRob3V0IHF1b3RlcykgYW5kIGxldCB0aGUgYnJvd3NlciBhdXRv
Y29tcGxldGUgdGhlIHdvcmQgKG9yIHNlbGVjdCAKKyAgJnF1b3Q7YXBwbGUmcXVvdDsgZnJvbSB0
aGUgYXV0b2NvbXBsZXRpb24gZHJvcC1kb3duIGxpc3QgY29udGV4dHVhbCBtZW51KS4gVGhlbiBj
bGljayB0aGUgYnV0dG9uIFN1Ym1pdCBvciBoaXQgdGhlIHJldHVybi9lbnRlciAKKyAga2V5IG9u
IHlvdXIga2V5Ym9hcmQuPC9saT4KKzwvb2w+Cis8Zm9ybSBtZXRob2Q9ImdldCIgb25zdWJtaXQ9
InJldHVybiBjaGVja0ZvckNoYW5nZSgpIj4KKyAgICA8cD48aW5wdXQgdHlwZT0idGV4dCIgbmFt
ZT0iZmllbGQiIGlkPSJmaWVsZCIgdmFsdWU9IiIgb25jaGFuZ2U9IndpbmRvdy5jaGFuZ2VkID0g
dHJ1ZSIvPjwvcD4KKyAgICA8cD48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0Ii8+
PC9wPgorPC9mb3JtPgorPHByZSBpZD0ibG9nIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiA1MDM3NykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMzAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MAorCisgICAg
ICAgIEZpeGVzIGFuIGlzc3VlIHdoZXJlIHRoZSBvbmNoYW5nZSBldmVudCBoYW5kbGVyIGlzIG5v
dCBmaXJlZCB3aGVuIHRoZSAKKyAgICAgICAgaW5wdXQgZmllbGQgaXMgYXV0b2NvbXBsZXRlZC4K
KworICAgICAgICBXZSBjYW5ub3QgdGVzdCB0aGlzIHVzaW5nIERSVCBzaW5jZSBEUlQgY2Fubm90
IGVtdWxhdGUgYXV0b2NvbXBsZXRpb24uCisgICAgICAgIFNvLCBhIG1hbnVhbC10ZXN0IGlzIGlu
Y2x1ZGVkLgorCisgICAgICAgIFRlc3RzOiBtYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmly
ZS1vbmNoYW5nZS5odG1sCisKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAg
IChET01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZSk6CisKIDIwMDktMTAtMjkgIEpvbiBIb25l
eWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBNU0FBOiBBY2Nlc3NpYmls
aXR5IG9mIGhlYWRpbmdzIGlzIG5vdCBjb3JyZWN0CkluZGV4OiBXZWJLaXQvd2luL0RPTUhUTUxD
bGFzc2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAko
cmV2aXNpb24gNTAxMzEpCisrKyBXZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1Nyw3ICsxMTU3LDIxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTElucHV0RWwKIHsKICAgICBBU1NFUlQobV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aGFz
VGFnTmFtZShpbnB1dFRhZykpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihtX2VsZW1lbnQpOworCisgICAgLy8gUTog
V2h5IGRvIHdlIGRldGVybWluZSB3aGV0aGVyIHRoZSBpbnB1dCBlbGVtZW50IHdhcyBlZGl0ZWQ/
CisgICAgLy8KKyAgICAvLyBBOiBJZiB0aGlzIG1ldGhvZCB3YXMgY2FsbGVkIHRvIGF1dG8tY29t
cGxldGUgdGhlIHZhbHVlIHRoZSB1c2VyIHN0YXJ0ZWQgdHlwaW5nCisgICAgLy8gICAgdGhlbiB3
ZSBzaG91bGQgc3RpbGwgZmlyZSB0aGUgb25jaGFuZ2UgZXZlbnQgc2luY2UgdGhpcyBmaWVsZCB3
YXMgaW5pdGlhbGx5IAorICAgIC8vICAgIGVkaXRlZCBieSB0aGUgdXNlci4gV2Ugc3RvcmUgd2hl
dGhlciB0aGUgZmllbGQgd2FzIGVkaXRlZCBieSB0aGUgdXNlciBiZWZvcmUKKyAgICAvLyAgICB3
ZSAodGhlIGNvbXB1dGVyKSBjaGFuZ2UgdGhlIHZhbHVlLCBzbyB0aGF0IHdlIGNhbiBwcm9wZXJs
eSByZXN0b3JlIHRoZSBzdGF0ZQorICAgIC8vICAgIG9mIHRoZSBmaWVsZCBhZnRlciBvdXIgY2hh
bmdlLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbnB1dEVsZW1lbnQtPnJlbmRlcmVy
KCk7CisgICAgYm9vbCB3YXNFZGl0ZWQgPSByZW5kZXJlcj8gdG9SZW5kZXJUZXh0Q29udHJvbChy
ZW5kZXJlciktPmlzRWRpdGVkKCkgOiBmYWxzZTsKKwogICAgIGlucHV0RWxlbWVudC0+c2V0VmFs
dWUoU3RyaW5nKChVQ2hhciopIHZhbHVlLCBTeXNTdHJpbmdMZW4odmFsdWUpKSk7CisKKyAgICBp
ZiAocmVuZGVyZXIpCisgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIpLT5zZXRF
ZGl0ZWQod2FzRWRpdGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42279</attachid>
            <date>2009-11-01 12:51:02 -0800</date>
            <delta_ts>2009-11-01 18:44:37 -0800</delta_ts>
            <desc>Patch with manual test</desc>
            <filename>Bug20780_1.patch</filename>
            <type>text/plain</type>
            <size>3861</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMTEtMDEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MAorCisgICAgICAgIEZp
eGVzIGFuIGlzc3VlIHdoZXJlIHRoZSBvbmNoYW5nZSBldmVudCBoYW5kbGVyIGlzIG5vdCBmaXJl
ZCB3aGVuIHRoZSAKKyAgICAgICAgaW5wdXQgZmllbGQgaXMgYXV0b2NvbXBsZXRlZC4KKworICAg
ICAgICBXZSBjYW5ub3QgdGVzdCB0aGlzIHVzaW5nIERSVCBzaW5jZSBEUlQgY2Fubm90IGVtdWxh
dGUgYXV0b2NvbXBsZXRpb24uCisgICAgICAgIFNvLCBhIG1hbnVhbC10ZXN0IGlzIGluY2x1ZGVk
LgorCisgICAgICAgIFRlc3RzOiBtYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmlyZS1vbmNo
YW5nZS5odG1sCisKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmlyZS1v
bmNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnNldElubmVyVGV4
dFZhbHVlKTogUmVtb3ZlZCBsaW5lIG1fZWRpdGVkID0gZmFsc2UuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmg6IEFkZGVkIGNvbW1lbnQgYWJvdXQgcmVzZXR0aW5nIG1f
ZWRpdGVkLgorCiAyMDA5LTExLTAxICBLZWlzaGkgSGF0dG9yaSAgPGNhc2V5LmhhdHRvcmlAZ21h
aWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJD
b3JlL21hbnVhbC10ZXN0cy9hdXRvY29tcGxldGlvbi1maXJlLW9uY2hhbmdlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmlyZS1vbmNoYW5n
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRp
b24tZmlyZS1vbmNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFRoaXMgdGVzdCBjYXNlIGlzIGJhc2VkIG9uIHRoZSB0
ZXN0IGNhc2UgaHR0cDovL2RhdGEuaWNpLWJhcy5mci9jaHJvbWl1bWlzc3VlMTA4NzkvLgord2lu
ZG93LmNoYW5nZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIGNoZWNrRm9yQ2hhbmdlKCkKK3sKKyAgICBp
ZiAoIWxvY2F0aW9uLnNlYXJjaCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAg
IGlmICghd2luZG93LmNoYW5nZWQgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpZWxkIiku
dmFsdWUgIT0gIiIpCisgICAgICAgIGxvZygiRkFJTCIpOworICAgIGVsc2UKKyAgICAgICAgbG9n
KCJQQVNTIik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBsb2cobXNnKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBvbiBhdXRvY29t
cGxldGlvbiB0aGUgJ29uY2hhbmdlJyBldmVudCBpcyBmaXJlZC48L3A+Cis8cD5TdGVwcyB0byBy
ZXByb2R1Y2U6PC9wPgorPG9sPgorICA8bGk+SW4gdGhlIGlucHV0IGZpZWxkLCB0eXBlIHRoZSB3
b3JkICZxdW90O2FwcGxlJnF1b3Q7ICh3aXRob3V0IHF1b3RlcykuIFRoZW4gY2xpY2sgdGhlIGJ1
dHRvbiBTdWJtaXQgb3IgaGl0IHRoZSByZXR1cm4vZW50ZXIgCisgIGtleSBvbiB5b3VyIGtleWJv
YXJkPC9saT4KKyAgPGxpPk9uY2UgdGhlIHBhZ2UgcmVsb2FkcywgaW4gdGhlIGlucHV0IGZpZWxk
LCB0eXBlICZxdW90O2FwJnF1b3Q7ICh3aXRob3V0IHF1b3RlcykgYW5kIGxldCB0aGUgYnJvd3Nl
ciBhdXRvY29tcGxldGUgdGhlIHdvcmQgKG9yIHNlbGVjdCAKKyAgJnF1b3Q7YXBwbGUmcXVvdDsg
ZnJvbSB0aGUgYXV0b2NvbXBsZXRpb24gZHJvcC1kb3duIGxpc3QgY29udGV4dHVhbCBtZW51KS4g
VGhlbiBjbGljayB0aGUgYnV0dG9uIFN1Ym1pdCBvciBoaXQgdGhlIHJldHVybi9lbnRlciAKKyAg
a2V5IG9uIHlvdXIga2V5Ym9hcmQuPC9saT4KKzwvb2w+Cis8Zm9ybSBtZXRob2Q9ImdldCIgb25z
dWJtaXQ9InJldHVybiBjaGVja0ZvckNoYW5nZSgpIj4KKyAgICA8cD48aW5wdXQgdHlwZT0idGV4
dCIgbmFtZT0iZmllbGQiIGlkPSJmaWVsZCIgdmFsdWU9IiIgb25jaGFuZ2U9IndpbmRvdy5jaGFu
Z2VkID0gdHJ1ZSIvPjwvcD4KKyAgICA8cD48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3Vi
bWl0Ii8+PC9wPgorPC9mb3JtPgorPHByZSBpZD0ibG9nIj48L3ByZT4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9u
IDUwMTMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTUsNyArMTk1LDggQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0
SW5uZXJUZXh0VmFsdQogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBtX2VkaXRlZCA9IGZhbHNlOworICAgICAgICAvLyBXZSBzZXQgbV91c2VyRWRpdGVkIHRv
IGZhbHNlIHNvIHRoYXQgd2UgZG8gbm90IGlnbm9yZSB0aGUgSFRNTCA1IGF1dG9mb2N1cyBhdHRy
aWJ1dGUgb24gdGhpcyBmb3JtIGNvbnRyb2wuCisgICAgICAgIC8vIFdoeSBkbyB3ZSBzZXQgdGhp
cyBkaXJlY3RseSBhcyBvcHBvc2VkIHRvIGNhbGxpbmcgc2V0VXNlckVkaXRlZChmYWxzZSkgaGVy
ZT8KICAgICAgICAgbV91c2VyRWRpdGVkID0gZmFsc2U7CiAgICAgfQogCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDUwMTMxKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQCBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbCA6IHB1YmxpYyBSZW5kZXJCCiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2woKTsKIAorICAgIC8vIE5vdGUsIGFmdGVyIHlv
dSBmaXJlIGFuIG9uY2hhbmdlIGV2ZW50LCByZW1lbWJlciB0byBjYWxsIHNldEVkaXRlZChmYWxz
ZSkgdG8gcmVzZXQgdGhlIGVkaXRlZCBzdGF0ZSBvZiB0aGlzIGNvbnRyb2wuCiAgICAgYm9vbCBp
c0VkaXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdGVkOyB9CiAgICAgdm9pZCBzZXRFZGl0ZWQo
Ym9vbCBpc0VkaXRlZCkgeyBtX2VkaXRlZCA9IGlzRWRpdGVkOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42289</attachid>
            <date>2009-11-01 18:44:37 -0800</date>
            <delta_ts>2009-11-06 09:44:53 -0800</delta_ts>
            <desc>Patch with manual test</desc>
            <filename>Bug20780_2.patch</filename>
            <type>text/plain</type>
            <size>3145</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMTEtMDEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MAorICAgICAgICAKKyAg
ICAgICAgRml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIG9uY2hhbmdlIGV2ZW50IGhhbmRsZXIgaXMg
bm90IGZpcmVkIHdoZW4gdGhlIAorICAgICAgICBpbnB1dCBmaWVsZCBpcyBhdXRvY29tcGxldGVk
LgorICAgICAgICAKKyAgICAgICAgV2UgY2Fubm90IHRlc3QgdGhpcyB1c2luZyBEUlQgc2luY2Ug
RFJUIGNhbm5vdCBlbXVsYXRlIGF1dG9jb21wbGV0aW9uLgorICAgICAgICBTbywgYSBtYW51YWwt
dGVzdCBpcyBpbmNsdWRlZC4KKworICAgICAgICBUZXN0czogbWFudWFsLXRlc3RzL2F1dG9jb21w
bGV0aW9uLWZpcmUtb25jaGFuZ2UuaHRtbAorCisgICAgICAgICogbWFudWFsLXRlc3RzL2F1dG9j
b21wbGV0aW9uLWZpcmUtb25jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sOjpzZXRJbm5lclRleHRWYWx1ZSk6CisKIDIwMDktMTEtMDEgIEtlaXNoaSBIYXR0b3JpICA8
Y2FzZXkuaGF0dG9yaUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb21wbGV0aW9uLWZpcmUtb25j
aGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy9hdXRvY29tcGxl
dGlvbi1maXJlLW9uY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hbnVhbC10
ZXN0cy9hdXRvY29tcGxldGlvbi1maXJlLW9uY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gVGhpcyB0ZXN0IGNhc2Ug
aXMgYmFzZWQgb24gdGhlIHRlc3QgY2FzZSBodHRwOi8vZGF0YS5pY2ktYmFzLmZyL2Nocm9taXVt
aXNzdWUxMDg3OS8uCit3aW5kb3cuY2hhbmdlZCA9IGZhbHNlOworZnVuY3Rpb24gY2hlY2tGb3JD
aGFuZ2UoKQoreworICAgIGlmICghbG9jYXRpb24uc2VhcmNoKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgCisgICAgaWYgKCF3aW5kb3cuY2hhbmdlZCAmJiBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZmllbGQiKS52YWx1ZSAhPSAiIikKKyAgICAgICAgbG9nKCJGQUlMIik7CisgICAg
ZWxzZQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0
aW9uIGxvZyhtc2cpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IG9uIGF1dG9jb21wbGV0aW9uIHRoZSAnb25jaGFuZ2UnIGV2ZW50IGlzIGZpcmVkLjwv
cD4KKzxwPlN0ZXBzIHRvIHJlcHJvZHVjZTo8L3A+Cis8b2w+CisgIDxsaT5JbiB0aGUgaW5wdXQg
ZmllbGQsIHR5cGUgdGhlIHdvcmQgJnF1b3Q7YXBwbGUmcXVvdDsgKHdpdGhvdXQgcXVvdGVzKS4g
VGhlbiBjbGljayB0aGUgYnV0dG9uIFN1Ym1pdCBvciBoaXQgdGhlIHJldHVybi9lbnRlciAKKyAg
a2V5IG9uIHlvdXIga2V5Ym9hcmQ8L2xpPgorICA8bGk+T25jZSB0aGUgcGFnZSByZWxvYWRzLCBp
biB0aGUgaW5wdXQgZmllbGQsIHR5cGUgJnF1b3Q7YXAmcXVvdDsgKHdpdGhvdXQgcXVvdGVzKSBh
bmQgbGV0IHRoZSBicm93c2VyIGF1dG9jb21wbGV0ZSB0aGUgd29yZCAob3Igc2VsZWN0IAorICAm
cXVvdDthcHBsZSZxdW90OyBmcm9tIHRoZSBhdXRvY29tcGxldGlvbiBkcm9wLWRvd24gbGlzdCBj
b250ZXh0dWFsIG1lbnUpLiBUaGVuIGNsaWNrIHRoZSBidXR0b24gU3VibWl0IG9yIGhpdCB0aGUg
cmV0dXJuL2VudGVyIAorICBrZXkgb24geW91ciBrZXlib2FyZC48L2xpPgorPC9vbD4KKzxmb3Jt
IG1ldGhvZD0iZ2V0IiBvbnN1Ym1pdD0icmV0dXJuIGNoZWNrRm9yQ2hhbmdlKCkiPgorICAgIDxw
PjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWVsZCIgaWQ9ImZpZWxkIiB2YWx1ZT0iIiBvbmNo
YW5nZT0id2luZG93LmNoYW5nZWQgPSB0cnVlIi8+PC9wPgorICAgIDxwPjxpbnB1dCB0eXBlPSJz
dWJtaXQiIHZhbHVlPSJTdWJtaXQiLz48L3A+Cis8L2Zvcm0+Cis8cHJlIGlkPSJsb2ciPjwvcHJl
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmNwcAkocmV2aXNpb24gNTAxMzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sOjpzZXRJbm5lclRleHRWYWx1CiAgICAgICAgICAgICBBU1NFUlQoIWVjKTsK
ICAgICAgICAgfQogCi0gICAgICAgIG1fZWRpdGVkID0gZmFsc2U7CisgICAgICAgIC8vIFdlIHNl
dCBtX3VzZXJFZGl0ZWQgdG8gZmFsc2Ugc2luY2UgdGhpcyBjaGFuZ2Ugd2FzIG5vdCBleHBsaWN0
eSBtYWRlIGJ5IHRoZSB1c2VyIChzYXksIHZpYSB0eXBpbmcgb24gdGhlIGtleWJvYXJkKSwgc2Vl
IDxyZGFyOi8vcHJvYmxlbS81MzU5OTIxPi4KICAgICAgICAgbV91c2VyRWRpdGVkID0gZmFsc2U7
CiAgICAgfQogCg==
</data>
<flag name="review"
          id="24149"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42464</attachid>
            <date>2009-11-04 01:24:51 -0800</date>
            <delta_ts>2009-11-05 13:39:20 -0800</delta_ts>
            <desc>Patch with manual test</desc>
            <filename>Bug20780_4.patch</filename>
            <type>text/plain</type>
            <size>11236</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMDktMTEtMDQgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4MAorCisgICAgICAgIEZp
eGVzIGFuIGlzc3VlIHdoZXJlIHRoZSBvbmNoYW5nZSBldmVudCBoYW5kbGVyIGlzIG5vdCBmaXJl
ZCB3aGVuIHRoZSAKKyAgICAgICAgaW5wdXQgZmllbGQgaXMgYXV0b2NvbXBsZXRlZC4KKyAgICAg
ICAgCisgICAgICAgIEFsc28sIHJlbmFtZWQgV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6Omlz
RWRpdGVkIHRvIHdhc0VkaXRlZFNpbmNlTGFzdENoYW5nZUV2ZW50LAorICAgICAgICBhbmQgV2Vi
Q29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmlzVXNlckVkaXRlZCB0byB3YXNMYXN0RWRpdGVkQnlB
VXNlciBhcyB3ZWxsIGFzIHRoZWlyCisgICAgICAgIGNvcnJlc3BvbmRpbmcgc2V0dGVycy4KKwor
ICAgICAgICBXZSBjYW5ub3QgdGVzdCB0aGlzIHVzaW5nIERSVCBzaW5jZSBEUlQgY2Fubm90IGVt
dWxhdGUgYXV0b2NvbXBsZXRpb24uCisgICAgICAgIFNvLCBhIG1hbnVhbC10ZXN0IGlzIGluY2x1
ZGVkLgorCisgICAgICAgIFRlc3RzOiBtYW51YWwtdGVzdHMvYXV0b2NvbXBsZXRpb24tZmlyZS1v
bmNoYW5nZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06CisgICAg
ICAgICgtW0RPTUhUTUxJbnB1dEVsZW1lbnQgX2lzRWRpdGVkXSk6CisgICAgICAgICgtW0RPTUhU
TUxUZXh0QXJlYUVsZW1lbnQgX2lzRWRpdGVkXSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGb2N1c2VkTm9kZSk6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9h
dXRvY29tcGxldGlvbi1maXJlLW9uY2hhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2w6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sOjpzZXRMYXN0RWRpdGVkQnlBVXNlcik6IEZvcm1lcmx5IG5hbWVkIHNldFVzZXJF
ZGl0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhhc0No
YW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6Ondhc0VkaXRlZFNpbmNlTGFzdENoYW5nZUV2
ZW50KTogRm9ybWVybHkgbmFtZWQgaXNFZGl0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Q29udHJvbDo6c2V0RWRpdGVkU2luY2VMYXN0Q2hhbmdlRXZlbnQpOiBGb3JtZXJseSBuYW1l
ZCBzZXRFZGl0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6d2FzTGFz
dEVkaXRlZEJ5QVVzZXIpOiBGb3JtZXJseSBuYW1lZCBpc1VzZXJFZGl0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2VkKToKKyAg
ICAgICAgKiB3bWwvV01MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTElu
cHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisKIDIwMDktMTEtMDQgIEJlbmphbWlu
IE90dGUgIDxvdHRlQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW4gQWxvbnpv
LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHJldmlzaW9uIDUwNDAyKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsx
NjcsNyBAQAogLSAoQk9PTClfaXNFZGl0ZWQKIHsKICAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3Qg
KnJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVyZXIg
JiYgW3NlbGYgX2lzVGV4dEZpZWxkXSAmJiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbCAqPihyZW5kZXJlciktPmlzVXNlckVkaXRlZCgpOworICAgIHJldHVybiByZW5kZXJl
ciAmJiBbc2VsZiBfaXNUZXh0RmllbGRdICYmIHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sICo+KHJlbmRlcmVyKS0+d2FzTGFzdEVkaXRlZEJ5QVVzZXIoKTsKIH0KIAogQGVu
ZApAQCAtMTc3LDcgKzE3Nyw3IEBACiAtIChCT09MKV9pc0VkaXRlZAogewogICAgIFdlYkNvcmU6
OlJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOwotICAgIHJl
dHVybiByZW5kZXJlciAmJiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbCo+
KHJlbmRlcmVyKS0+aXNVc2VyRWRpdGVkKCk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sKj4ocmVuZGVyZXIpLT53YXNMYXN0RWRp
dGVkQnlBVXNlcigpOwogfQogCiBAZW5kCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1MDQwMikK
KysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1NCwxMSAr
MjY1NCwxMSBAQCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyCiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgIC8vIERpc3BhdGNoIGEgY2hhbmdlIGV2ZW50IGZvciB0ZXh0
IGZpZWxkcyBvciB0ZXh0YXJlYXMgdGhhdCBoYXZlIGJlZW4gZWRpdGVkCiAgICAgICAgIFJlbmRl
ck9iamVjdCogciA9IG9sZEZvY3VzZWROb2RlLT5yZW5kZXJlcigpOwotICAgICAgICBpZiAociAm
JiByLT5pc1RleHRDb250cm9sKCkgJiYgdG9SZW5kZXJUZXh0Q29udHJvbChyKS0+aXNFZGl0ZWQo
KSkgeworICAgICAgICBpZiAociAmJiByLT5pc1RleHRDb250cm9sKCkgJiYgdG9SZW5kZXJUZXh0
Q29udHJvbChyKS0+d2FzRWRpdGVkU2luY2VMYXN0Q2hhbmdlRXZlbnQoKSkgewogICAgICAgICAg
ICAgb2xkRm9jdXNlZE5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2hhbmdlRXZlbnQsIHRydWUsIGZhbHNlKSk7CiAgICAgICAgICAgICByID0gb2xkRm9jdXNl
ZE5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAociAmJiByLT5pc1RleHRDb250cm9s
KCkpCi0gICAgICAgICAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbChyKS0+c2V0RWRpdGVkKGZh
bHNlKTsKKyAgICAgICAgICAgICAgICB0b1JlbmRlclRleHRDb250cm9sKHIpLT5zZXRFZGl0ZWRT
aW5jZUxhc3RDaGFuZ2VFdmVudChmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBEaXNw
YXRjaCB0aGUgYmx1ciBldmVudCBhbmQgbGV0IHRoZSBub2RlIGRvIGFueSBvdGhlciBibHVyIHJl
bGF0ZWQgYWN0aXZpdGllcyAoaW1wb3J0YW50IGZvciB0ZXh0IGZpZWxkcykKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDUwNDAyKQorKysgV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQyLDEyICsxNTQyLDEyIEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGwKICAgICAgICAgfQogICAg
ICAgICAvLyBGaXJlIG9uQ2hhbmdlIGZvciB0ZXh0IGZpZWxkcy4KICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiByID0gcmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKHIgJiYgci0+aXNUZXh0RmllbGQoKSAm
JiB0b1JlbmRlclRleHRDb250cm9sKHIpLT5pc0VkaXRlZCgpKSB7CisgICAgICAgIGlmIChyICYm
IHItPmlzVGV4dEZpZWxkKCkgJiYgdG9SZW5kZXJUZXh0Q29udHJvbChyKS0+d2FzRWRpdGVkU2lu
Y2VMYXN0Q2hhbmdlRXZlbnQoKSkgewogICAgICAgICAgICAgZGlzcGF0Y2hGb3JtQ29udHJvbENo
YW5nZUV2ZW50KCk7CiAgICAgICAgICAgICAvLyBSZWZldGNoIHRoZSByZW5kZXJlciBzaW5jZSBh
cmJpdHJhcnkgSlMgY29kZSBydW4gZHVyaW5nIG9uY2hhbmdlIGNhbiBkbyBhbnl0aGluZywgaW5j
bHVkaW5nIGRlc3Ryb3lpbmcgaXQuCiAgICAgICAgICAgICByID0gcmVuZGVyZXIoKTsKICAgICAg
ICAgICAgIGlmIChyICYmIHItPmlzVGV4dEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgdG9SZW5k
ZXJUZXh0Q29udHJvbChyKS0+c2V0RWRpdGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0b1Jl
bmRlclRleHRDb250cm9sKHIpLT5zZXRFZGl0ZWRTaW5jZUxhc3RDaGFuZ2VFdmVudChmYWxzZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtRm9yU3Vi
bWlzc2lvbiA9IGZvcm0oKTsKSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRlc3RzL2F1dG9jb21wbGV0
aW9uLWZpcmUtb25jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0
cy9hdXRvY29tcGxldGlvbi1maXJlLW9uY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hbnVhbC10ZXN0cy9hdXRvY29tcGxldGlvbi1maXJlLW9uY2hhbmdlLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gVGhp
cyB0ZXN0IGNhc2UgaXMgYmFzZWQgb24gdGhlIHRlc3QgY2FzZSBodHRwOi8vZGF0YS5pY2ktYmFz
LmZyL2Nocm9taXVtaXNzdWUxMDg3OS8uCit3aW5kb3cuY2hhbmdlZCA9IGZhbHNlOworZnVuY3Rp
b24gY2hlY2tGb3JDaGFuZ2UoKQoreworICAgIGlmICghbG9jYXRpb24uc2VhcmNoKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgaWYgKCF3aW5kb3cuY2hhbmdlZCAmJiBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZmllbGQiKS52YWx1ZSAhPSAiIikKKyAgICAgICAgbG9nKCJG
QUlMIik7CisgICAgZWxzZQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IG9uIGF1dG9jb21wbGV0aW9uIHRoZSAnb25jaGFuZ2UnIGV2ZW50
IGlzIGZpcmVkLjwvcD4KKzxwPlN0ZXBzIHRvIHJlcHJvZHVjZTo8L3A+Cis8b2w+CisgIDxsaT5J
biB0aGUgaW5wdXQgZmllbGQsIHR5cGUgdGhlIHdvcmQgJnF1b3Q7YXBwbGUmcXVvdDsgKHdpdGhv
dXQgcXVvdGVzKS4gVGhlbiBjbGljayB0aGUgYnV0dG9uIFN1Ym1pdCBvciBoaXQgdGhlIHJldHVy
bi9lbnRlciAKKyAga2V5IG9uIHlvdXIga2V5Ym9hcmQ8L2xpPgorICA8bGk+T25jZSB0aGUgcGFn
ZSByZWxvYWRzLCBpbiB0aGUgaW5wdXQgZmllbGQsIHR5cGUgJnF1b3Q7YXAmcXVvdDsgKHdpdGhv
dXQgcXVvdGVzKSBhbmQgbGV0IHRoZSBicm93c2VyIGF1dG9jb21wbGV0ZSB0aGUgd29yZCAob3Ig
c2VsZWN0IAorICAmcXVvdDthcHBsZSZxdW90OyBmcm9tIHRoZSBhdXRvY29tcGxldGlvbiBkcm9w
LWRvd24gbGlzdCBjb250ZXh0dWFsIG1lbnUpLiBUaGVuIGNsaWNrIHRoZSBidXR0b24gU3VibWl0
IG9yIGhpdCB0aGUgcmV0dXJuL2VudGVyIAorICBrZXkgb24geW91ciBrZXlib2FyZC48L2xpPgor
PC9vbD4KKzxmb3JtIG1ldGhvZD0iZ2V0IiBvbnN1Ym1pdD0icmV0dXJuIGNoZWNrRm9yQ2hhbmdl
KCkiPgorICAgIDxwPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWVsZCIgaWQ9ImZpZWxkIiB2
YWx1ZT0iIiBvbmNoYW5nZT0id2luZG93LmNoYW5nZWQgPSB0cnVlIi8+PC9wPgorICAgIDxwPjxp
bnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiLz48L3A+Cis8L2Zvcm0+Cis8cHJlIGlk
PSJsb2ciPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24gNTA0MDIpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDggQEAg
c3RhdGljIENvbG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbAogUmVuZGVyVGV4dENvbnRy
b2w6OlJlbmRlclRleHRDb250cm9sKE5vZGUqIG5vZGUsIGJvb2wgcGxhY2Vob2xkZXJWaXNpYmxl
KQogICAgIDogUmVuZGVyQmxvY2sobm9kZSkKICAgICAsIG1fcGxhY2Vob2xkZXJWaXNpYmxlKHBs
YWNlaG9sZGVyVmlzaWJsZSkKLSAgICAsIG1fZWRpdGVkKGZhbHNlKQotICAgICwgbV91c2VyRWRp
dGVkKGZhbHNlKQorICAgICwgbV93YXNFZGl0ZWRTaW5jZUxhc3RDaGFuZ2VFdmVudChmYWxzZSkK
KyAgICAsIG1fd2FzTGFzdEVkaXRlZEJ5QVVzZXIoZmFsc2UpCiB7CiB9CiAKQEAgLTE5NSwxNyAr
MTk1LDE3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnNldElubmVyVGV4dFZhbHUKICAgICAg
ICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9lZGl0ZWQgPSBmYWxz
ZTsKLSAgICAgICAgbV91c2VyRWRpdGVkID0gZmFsc2U7CisgICAgICAgIC8vIFdlIHNldCBtX3dh
c0xhc3RFZGl0ZWRCeUFVc2VyIHRvIGZhbHNlIHNpbmNlIHRoaXMgY2hhbmdlIHdhcyBub3QgZXhw
bGljdHkgbWFkZSBieSB0aGUgdXNlciAoc2F5LCB2aWEgdHlwaW5nIG9uIHRoZSBrZXlib2FyZCks
IHNlZSA8cmRhcjovL3Byb2JsZW0vNTM1OTkyMT4uCisgICAgICAgIG1fd2FzTGFzdEVkaXRlZEJ5
QVVzZXIgPSBmYWxzZTsKICAgICB9CiAKICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgp
KS0+c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKIH0KIAotdm9pZCBS
ZW5kZXJUZXh0Q29udHJvbDo6c2V0VXNlckVkaXRlZChib29sIGlzVXNlckVkaXRlZCkKK3ZvaWQg
UmVuZGVyVGV4dENvbnRyb2w6OnNldExhc3RFZGl0ZWRCeUFVc2VyKGJvb2wgbGFzdEVkaXRlZEJ5
QVVzZXIpCiB7Ci0gICAgbV91c2VyRWRpdGVkID0gaXNVc2VyRWRpdGVkOwotICAgIGRvY3VtZW50
KCktPnNldElnbm9yZUF1dG9mb2N1cyhpc1VzZXJFZGl0ZWQpOworICAgIG1fd2FzTGFzdEVkaXRl
ZEJ5QVVzZXIgPSBsYXN0RWRpdGVkQnlBVXNlcjsKKyAgICBkb2N1bWVudCgpLT5zZXRJZ25vcmVB
dXRvZm9jdXMobGFzdEVkaXRlZEJ5QVVzZXIpOwogfQogCiBpbnQgUmVuZGVyVGV4dENvbnRyb2w6
OnNlbGVjdGlvblN0YXJ0KCkKQEAgLTMxMiw4ICszMTIsOCBAQCBpbnQgUmVuZGVyVGV4dENvbnRy
b2w6OmluZGV4Rm9yVmlzaWJsZVBvCiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnN1YnRyZWVI
YXNDaGFuZ2VkKCkKIHsKLSAgICBtX2VkaXRlZCA9IHRydWU7Ci0gICAgbV91c2VyRWRpdGVkID0g
dHJ1ZTsKKyAgICBtX3dhc0VkaXRlZFNpbmNlTGFzdENoYW5nZUV2ZW50ID0gdHJ1ZTsKKyAgICBt
X3dhc0xhc3RFZGl0ZWRCeUFVc2VyID0gdHJ1ZTsKIH0KIAogU3RyaW5nIFJlbmRlclRleHRDb250
cm9sOjpmaW5pc2hUZXh0KFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCkgY29uc3QKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkocmV2aXNpb24gNTA0MDIpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSAr
MzQsMTEgQEAgY2xhc3MgUmVuZGVyVGV4dENvbnRyb2wgOiBwdWJsaWMgUmVuZGVyQgogcHVibGlj
OgogICAgIHZpcnR1YWwgflJlbmRlclRleHRDb250cm9sKCk7CiAKLSAgICBib29sIGlzRWRpdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lZGl0ZWQ7IH0KLSAgICB2b2lkIHNldEVkaXRlZChib29sIGlz
RWRpdGVkKSB7IG1fZWRpdGVkID0gaXNFZGl0ZWQ7IH0KKyAgICBib29sIHdhc0VkaXRlZFNpbmNl
TGFzdENoYW5nZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV93YXNFZGl0ZWRTaW5jZUxhc3RDaGFu
Z2VFdmVudDsgfQorICAgIHZvaWQgc2V0RWRpdGVkU2luY2VMYXN0Q2hhbmdlRXZlbnQoYm9vbCB3
YXNFZGl0ZWRTaW5jZUxhc3RDaGFuZ2VFdmVudCkgeyBtX3dhc0VkaXRlZFNpbmNlTGFzdENoYW5n
ZUV2ZW50ID0gd2FzRWRpdGVkU2luY2VMYXN0Q2hhbmdlRXZlbnQ7IH0KIAotICAgIGJvb2wgaXNV
c2VyRWRpdGVkKCkgY29uc3QgeyByZXR1cm4gbV91c2VyRWRpdGVkOyB9Ci0gICAgdm9pZCBzZXRV
c2VyRWRpdGVkKGJvb2wgaXNVc2VyRWRpdGVkKTsKKyAgICBib29sIHdhc0xhc3RFZGl0ZWRCeUFV
c2VyKCkgY29uc3QgeyByZXR1cm4gbV93YXNMYXN0RWRpdGVkQnlBVXNlcjsgfQorICAgIHZvaWQg
c2V0TGFzdEVkaXRlZEJ5QVVzZXIoYm9vbCBsYXN0RWRpdGVkQnlBVXNlcik7CiAKICAgICBpbnQg
c2VsZWN0aW9uU3RhcnQoKTsKICAgICBpbnQgc2VsZWN0aW9uRW5kKCk7CkBAIC0xMDUsOCArMTA1
LDggQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBmaW5pc2hUZXh0KFZlY3RvcjxVQ2hhcj4mKSBj
b25zdDsKIAotICAgIGJvb2wgbV9lZGl0ZWQ7Ci0gICAgYm9vbCBtX3VzZXJFZGl0ZWQ7CisgICAg
Ym9vbCBtX3dhc0VkaXRlZFNpbmNlTGFzdENoYW5nZUV2ZW50OworICAgIGJvb2wgbV93YXNMYXN0
RWRpdGVkQnlBVXNlcjsKICAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBt
X2lubmVyVGV4dDsKIH07CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkocmV2aXNpb24gNTA0MDIpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmhpZGVQ
bwogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c3VidHJlZUhhc0NoYW5nZWQo
KQogewotICAgIGJvb2wgd2FzRWRpdGVkID0gaXNFZGl0ZWQoKTsKKyAgICBib29sIHdhc0VkaXRl
ZCA9IHdhc0VkaXRlZFNpbmNlTGFzdENoYW5nZUV2ZW50KCk7CiAgICAgUmVuZGVyVGV4dENvbnRy
b2w6OnN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAKICAgICBJbnB1dEVsZW1lbnQqIGlucHV0ID0gaW5w
dXRFbGVtZW50KCk7CkluZGV4OiBXZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDUwNDAy
KQorKysgV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgwLDEzICsyODAsMTMgQEAgdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZQogICAgIGlmIChjbGlja0RlZmF1bHRGb3JtQnV0dG9uKSB7CiAgICAgICAgIC8vIEZpcmUgb25D
aGFuZ2UgZm9yIHRleHQgZmllbGRzLgogICAgICAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJl
cigpOwotICAgICAgICBpZiAociAmJiB0b1JlbmRlclRleHRDb250cm9sKHIpLT5pc0VkaXRlZCgp
KSB7CisgICAgICAgIGlmIChyICYmIHRvUmVuZGVyVGV4dENvbnRyb2wociktPndhc0VkaXRlZFNp
bmNlTGFzdENoYW5nZUV2ZW50KCkpIHsKICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnRO
YW1lcygpLmNoYW5nZUV2ZW50LCB0cnVlLCBmYWxzZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIC8vIFJlZmV0Y2ggdGhlIHJlbmRlcmVyIHNpbmNlIGFyYml0cmFyeSBKUyBjb2RlIHJ1biBk
dXJpbmcgb25jaGFuZ2UgY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcgZGVzdHJveWluZyBpdC4K
ICAgICAgICAgICAgIHIgPSByZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKHIpCi0gICAgICAg
ICAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbChyKS0+c2V0RWRpdGVkKGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICB0b1JlbmRlclRleHRDb250cm9sKHIpLT5zZXRFZGl0ZWRTaW5jZUxhc3RDaGFu
Z2VFdmVudChmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBldnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>