<?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>65647</bug_id>
          
          <creation_ts>2011-08-03 15:17:51 -0700</creation_ts>
          <short_desc>Use RenderedPosition instead of getInlineBoxAndOffset in Editor and AccessibilityObject</short_desc>
          <delta_ts>2011-08-04 23:26:39 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>446126</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 15:17:51 -0700</bug_when>
    <thetext>Since RenderedPosition has been added by r92286, we should encapsulate the use of getInlineBoxAndOffset by RenderedPosition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446136</commentid>
    <comment_count>1</comment_count>
      <attachid>102839</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 15:28:17 -0700</bug_when>
    <thetext>Created attachment 102839
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446139</commentid>
    <comment_count>2</comment_count>
      <attachid>102841</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 15:32:56 -0700</bug_when>
    <thetext>Created attachment 102841
cleanup; fixed a bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446164</commentid>
    <comment_count>3</comment_count>
      <attachid>102841</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 15:57:16 -0700</bug_when>
    <thetext>Comment on attachment 102841
cleanup; fixed a bug

Attachment 102841 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9301237

New failing tests:
editing/inserting/caret-position.html
fast/text/international/thai-cursor-position.html
platform/chromium-mac/editing/input/ime-candidate-window-position.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446206</commentid>
    <comment_count>4</comment_count>
      <attachid>102855</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 16:32:26 -0700</bug_when>
    <thetext>Created attachment 102855
cleanup; fixed another bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446322</commentid>
    <comment_count>5</comment_count>
      <attachid>102855</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-03 21:36:13 -0700</bug_when>
    <thetext>Comment on attachment 102855
cleanup; fixed another bug

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:295
&gt; +        if (tempPosition.isNull() || tempPosition.isNull())

What is this for?

&gt; Source/WebCore/editing/Editor.cpp:2739
&gt; +    if (startCaretRect == LayoutRect() || endCaretRect == LayoutRect())

One &quot;if&quot; for each of both startCaretRect and endCaretRect looks more obvious - There is no need to compute both if the first one is empty.

&gt; Source/WebCore/editing/RenderedPosition.cpp:40
&gt; +static inline RenderObject* rendererFromPosition(const Position&amp; position)

This might be better to a part of Position class.
... or we can even have Position::getInlineBoxAndOffsetAndRenderer(). 

Another idea is to define VisibilityPosition::toRendered() and Position::toRendered(EAffinity)

&gt; Source/WebCore/editing/RenderedPosition.cpp:104
&gt; +LayoutRect RenderedPosition::absoluteRect(int&amp; extraWidthToEndOfLine)

Code duplication between two absoluteRect()s. Why not just making the out parameter optional? (As you know, pointer would allow that.)

&gt; Source/WebCore/editing/RenderedPosition.h:53
&gt; +    LayoutRect absoluteRect();

const?

&gt; Source/WebCore/editing/RenderedPosition.h:54
&gt; +    LayoutRect absoluteRect(int&amp; extraWidthToEndOfLine);

const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446332</commentid>
    <comment_count>6</comment_count>
      <attachid>102855</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 22:11:12 -0700</bug_when>
    <thetext>Comment on attachment 102855
cleanup; fixed another bug

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:295
&gt;&gt; +        if (tempPosition.isNull() || tempPosition.isNull())
&gt; 
&gt; What is this for?

It&apos;s hard to tell but I&apos;m preserving the original code that checked !tempPosition.deepEquivalent().deprecatedNode() below.

&gt;&gt; Source/WebCore/editing/Editor.cpp:2739

&gt; 
&gt; One &quot;if&quot; for each of both startCaretRect and endCaretRect looks more obvious - There is no need to compute both if the first one is empty.

Good point.  Will do.

&gt;&gt; Source/WebCore/editing/RenderedPosition.cpp:40
&gt;&gt; +static inline RenderObject* rendererFromPosition(const Position&amp; position)
&gt; 
&gt; This might be better to a part of Position class.
&gt; ... or we can even have Position::getInlineBoxAndOffsetAndRenderer(). 
&gt; 
&gt; Another idea is to define VisibilityPosition::toRendered() and Position::toRendered(EAffinity)

Right. In fact, we might be able to replace deprecatedNode with this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446971</commentid>
    <comment_count>7</comment_count>
      <attachid>103022</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-04 19:07:49 -0700</bug_when>
    <thetext>Created attachment 103022
Fixed per comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446973</commentid>
    <comment_count>8</comment_count>
      <attachid>103022</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-04 19:15:28 -0700</bug_when>
    <thetext>Comment on attachment 103022
Fixed per comment

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

&gt; Source/WebCore/editing/RenderedPosition.cpp:40
&gt; +static inline RenderObject* rendererFromPosition(const Position&amp; position)

Why not Position::renderer()?

&gt; Source/WebCore/editing/RenderedPosition.cpp:95
&gt; +LayoutRect RenderedPosition::absoluteRect() const

Could you just call  RenderedPosition::absoluteRect(int&amp; extraWidthToEndOfLine) instead of having almost dupliated code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446975</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-04 19:22:46 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 103022 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103022&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/RenderedPosition.cpp:40
&gt; &gt; +static inline RenderObject* rendererFromPosition(const Position&amp; position)
&gt; 
&gt; Why not Position::renderer()?

Because I don&apos;t think Position should be aware of renderer.  Also, any code that calls such a function is likely to be broken with first-letter.  As the whole point of RenderedPosition being isolating such such compelxity and dependency, I don&apos;t think I want to add such a method to Position.

&gt; &gt; Source/WebCore/editing/RenderedPosition.cpp:95
&gt; &gt; +LayoutRect RenderedPosition::absoluteRect() const
&gt; 
&gt; Could you just call  RenderedPosition::absoluteRect(int&amp; extraWidthToEndOfLine) instead of having almost dupliated code?

Sure. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446977</commentid>
    <comment_count>10</comment_count>
      <attachid>103023</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-04 19:33:05 -0700</bug_when>
    <thetext>Created attachment 103023
Merged two absoluteRects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447066</commentid>
    <comment_count>11</comment_count>
      <attachid>103023</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 23:26:34 -0700</bug_when>
    <thetext>Comment on attachment 103023
Merged two absoluteRects

Clearing flags on attachment: 103023

Committed r92451: &lt;http://trac.webkit.org/changeset/92451&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447067</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 23:26:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102839</attachid>
            <date>2011-08-03 15:28:17 -0700</date>
            <delta_ts>2011-08-03 15:32:53 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-65647-20110803152816.patch</filename>
            <type>text/plain</type>
            <size>7218</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFJlbmRlcmVkUG9zaXRpb24g
aW5zdGVhZCBvZiBnZXRJbmxpbmVCb3hBbmRPZmZzZXQgaW4gRWRpdG9yIGFuZCBBY2Nlc3NpYmls
aXR5T2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVuY2Fwc3VsYXRlZCB0aGUgdXNlIG9mIGdldElubGluZUJveEFuZE9mZnNldCBpbiBFZGl0b3Iu
Y3BwIGFuZCBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBieSBSZW5kZXJlZFBvc2l0aW9uLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnVwZGF0ZUFYTGluZVN0YXJ0Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZpcnN0UmVj
dEZvclJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QpOgorICAgICAgICAq
IGVkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgorCiAyMDExLTA4LTAzICBTYWlsZXNoIEFncmF3
YWwgIDxzYWlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBNYWM6IE1ha2Ugc3Vy
ZSBzY3JvbGxiYXJzIGZsYXNoIHdoZW4gd2ViIHBhZ2UgbG9hZHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2
aXNpb24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVy
V2lkZ2V0LmgiCisjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHRD
aGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiaHRt
bGVkaXRpbmcuaCIKQEAgLTI4OSwyMiArMjkwLDE1IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
dXBkYXRlQVhMaW5lU3RhcnQKICAgICAvLyBTbyBsZXQncyB1cGRhdGUgdGhlIHBvc2l0aW9uIHRv
IGluY2x1ZGUgdGhhdC4KICAgICBWaXNpYmxlUG9zaXRpb24gdGVtcFBvc2l0aW9uOwogICAgIFZp
c2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uOwotICAgIFBvc2l0
aW9uIHA7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcjsKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICB0ZW1wUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLnByZXZpb3VzKCk7Ci0gICAgICAg
IGlmICh0ZW1wUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIGlmICh0ZW1wUG9zaXRpb24uaXNO
dWxsKCkgfHwgdGVtcFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIHAgPSB0ZW1wUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYgKCFwLmRl
cHJlY2F0ZWROb2RlKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmVuZGVyZXIgPSBw
LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgIFBvc2l0aW9uIHAgPSB0ZW1w
UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHAuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJl
ciB8fCAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiAhcC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBJbmxpbmVCb3gqIGJveDsKLSAg
ICAgICAgaW50IGlnbm9yZWRDYXJldE9mZnNldDsKLSAgICAgICAgcC5nZXRJbmxpbmVCb3hBbmRP
ZmZzZXQodGVtcFBvc2l0aW9uLmFmZmluaXR5KCksIGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsK
LSAgICAgICAgaWYgKGJveCkKKyAgICAgICAgaWYgKCFSZW5kZXJlZFBvc2l0aW9uKHRlbXBQb3Np
dGlvbikuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3RhcnRQb3NpdGlv
biA9IHRlbXBQb3NpdGlvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CShyZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgi
CisjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb3VuZC5oIgpA
QCAtMjczMywzMSArMjczNCwxMCBAQCBJbnRSZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2Uo
UmFuZ2UqCiAgICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICBBU1NFUlQo
cmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKIAotICAgIElubGluZUJveCogc3RhcnRJbmxpbmVCb3g7
Ci0gICAgaW50IHN0YXJ0Q2FyZXRPZmZzZXQ7Ci0gICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9
IFZpc2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQb3NpdGlvbigpKS5kZWVwRXF1aXZhbGVudCgp
OwotICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTnVsbCgpKQorICAgIExheW91dFJlY3Qgc3RhcnRD
YXJldFJlY3QgPSBSZW5kZXJlZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQ
b3NpdGlvbigpKS5kZWVwRXF1aXZhbGVudCgpLCBET1dOU1RSRUFNKS5hYnNvbHV0ZVJlY3QoZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICBMYXlvdXRSZWN0IGVuZENhcmV0UmVjdCA9IFJlbmRl
cmVkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKHJhbmdlLT5zdGFydFBvc2l0aW9uKCkpLmRlZXBF
cXVpdmFsZW50KCksIFVQU1RSRUFNKS5hYnNvbHV0ZVJlY3QoKTsKKyAgICBpZiAoc3RhcnRDYXJl
dFJlY3QgPT0gTGF5b3V0UmVjdCgpIHx8IGVuZENhcmV0UmVjdCA9PSBMYXlvdXRSZWN0KCkpCiAg
ICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgc3RhcnRQb3NpdGlvbi5nZXRJbmxpbmVCb3hB
bmRPZmZzZXQoRE9XTlNUUkVBTSwgc3RhcnRJbmxpbmVCb3gsIHN0YXJ0Q2FyZXRPZmZzZXQpOwot
Ci0gICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnRQb3NpdGlvbi5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIEFTU0VSVChzdGFydFJlbmRlcmVyKTsKLSAgICBJ
bnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gc3RhcnRSZW5kZXJlci0+bG9jYWxDYXJldFJlY3Qoc3Rh
cnRJbmxpbmVCb3gsIHN0YXJ0Q2FyZXRPZmZzZXQsICZleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwot
ICAgIGlmIChzdGFydENhcmV0UmVjdCAhPSBJbnRSZWN0KCkpCi0gICAgICAgIHN0YXJ0Q2FyZXRS
ZWN0ID0gc3RhcnRSZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qoc3RhcnRD
YXJldFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwotCi0gICAgSW5saW5lQm94KiBlbmRJ
bmxpbmVCb3g7Ci0gICAgaW50IGVuZENhcmV0T2Zmc2V0OwotICAgIFBvc2l0aW9uIGVuZFBvc2l0
aW9uID0gVmlzaWJsZVBvc2l0aW9uKHJhbmdlLT5lbmRQb3NpdGlvbigpKS5kZWVwRXF1aXZhbGVu
dCgpOwotICAgIGlmIChlbmRQb3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEludFJl
Y3QoKTsKLSAgICBlbmRQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoVVBTVFJFQU0sIGVu
ZElubGluZUJveCwgZW5kQ2FyZXRPZmZzZXQpOwotCi0gICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5k
ZXJlciA9IGVuZFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgQVNT
RVJUKGVuZFJlbmRlcmVyKTsKLSAgICBJbnRSZWN0IGVuZENhcmV0UmVjdCA9IGVuZFJlbmRlcmVy
LT5sb2NhbENhcmV0UmVjdChlbmRJbmxpbmVCb3gsIGVuZENhcmV0T2Zmc2V0KTsKLSAgICBpZiAo
ZW5kQ2FyZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgZW5kQ2FyZXRSZWN0ID0gZW5kUmVu
ZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGVuZENhcmV0UmVjdCkpLmVuY2xv
c2luZ0JvdW5kaW5nQm94KCk7CiAKICAgICBpZiAoc3RhcnRDYXJldFJlY3QueSgpID09IGVuZENh
cmV0UmVjdC55KCkpIHsKICAgICAgICAgLy8gc3RhcnQgYW5kIGVuZCBhcmUgb24gdGhlIHNhbWUg
bGluZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3Bw
CShyZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3Np
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDQgKzQ5LDM0IEBAIFJlbmRlcmVkUG9zaXRp
b246OlJlbmRlcmVkUG9zaXRpb24oY29uc3QKICAgICAgICAgbV9yZW5kZXJlciA9IG1faW5saW5l
Qm94LT5yZW5kZXJlcigpOwogfQogCitSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5KQorICAgIDogbV9y
ZW5kZXJlcigwKQorICAgICwgbV9pbmxpbmVCb3goMCkKKyAgICAsIG1fb2Zmc2V0KDApCit7Cisg
ICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgcG9zaXRpb24u
Z2V0SW5saW5lQm94QW5kT2Zmc2V0KGFmZmluaXR5LCBtX2lubGluZUJveCwgbV9vZmZzZXQpOwor
ICAgIGlmIChtX2lubGluZUJveCkKKyAgICAgICAgbV9yZW5kZXJlciA9IG1faW5saW5lQm94LT5y
ZW5kZXJlcigpOworfQorCitMYXlvdXRSZWN0IFJlbmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVj
dCgpCit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwor
CisgICAgTGF5b3V0UmVjdCBsb2NhbFJlY3QgPSBtX3JlbmRlcmVyLT5sb2NhbENhcmV0UmVjdCht
X2lubGluZUJveCwgbV9vZmZzZXQpOworICAgIHJldHVybiBsb2NhbFJlY3QgPT0gTGF5b3V0UmVj
dCgpID8gTGF5b3V0UmVjdCgpIDogbV9yZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9h
dFJlY3QobG9jYWxSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKK30KKworTGF5b3V0UmVj
dCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QoaW50JiBleHRyYVdpZHRoVG9FbmRPZkxp
bmUpCit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwor
CisgICAgTGF5b3V0UmVjdCBsb2NhbFJlY3QgPSBtX3JlbmRlcmVyLT5sb2NhbENhcmV0UmVjdCht
X2lubGluZUJveCwgbV9vZmZzZXQsICZleHRyYVdpZHRoVG9FbmRPZkxpbmUpOworICAgIHJldHVy
biBsb2NhbFJlY3QgPT0gTGF5b3V0UmVjdCgpID8gTGF5b3V0UmVjdCgpIDogbV9yZW5kZXJlci0+
bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobG9jYWxSZWN0KSkuZW5jbG9zaW5nQm91bmRp
bmdCb3goKTsKK30KKwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5oCShyZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5l
IFJlbmRlcmVkUG9zaXRpb25faAogCiAjaW5jbHVkZSAiSW5saW5lQm94LmgiCisjaW5jbHVkZSAi
TGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDQsMTAgKzQ1LDE0IEBAIGNsYXNzIFJlbmRlcmVkUG9zaXRpb24gewogcHVi
bGljOgogICAgIFJlbmRlcmVkUG9zaXRpb24oKTsKICAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgIGV4cGxpY2l0IFJlbmRlcmVkUG9zaXRp
b24oY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHkpOwogCiAgICAgYm9vbCBpc051bGwoKSB7IHJl
dHVybiAhbV9yZW5kZXJlcjsgfQogICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3goKSB7IHJldHVy
biBtX2lubGluZUJveCA/IG1faW5saW5lQm94LT5yb290KCkgOiAwOyB9CiAKKyAgICBMYXlvdXRS
ZWN0IGFic29sdXRlUmVjdCgpOworICAgIExheW91dFJlY3QgYWJzb2x1dGVSZWN0KGludCYgZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKwogcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1fcmVu
ZGVyZXI7CiAgICAgSW5saW5lQm94KiBtX2lubGluZUJveDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102841</attachid>
            <date>2011-08-03 15:32:56 -0700</date>
            <delta_ts>2011-08-03 16:32:22 -0700</delta_ts>
            <desc>cleanup; fixed a bug</desc>
            <filename>bug-65647-20110803153255.patch</filename>
            <type>text/plain</type>
            <size>7216</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFJlbmRlcmVkUG9zaXRpb24g
aW5zdGVhZCBvZiBnZXRJbmxpbmVCb3hBbmRPZmZzZXQgaW4gRWRpdG9yIGFuZCBBY2Nlc3NpYmls
aXR5T2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVuY2Fwc3VsYXRlZCB0aGUgdXNlIG9mIGdldElubGluZUJveEFuZE9mZnNldCBpbiBFZGl0b3Iu
Y3BwIGFuZCBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBieSBSZW5kZXJlZFBvc2l0aW9uLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnVwZGF0ZUFYTGluZVN0YXJ0Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZpcnN0UmVj
dEZvclJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QpOgorICAgICAgICAq
IGVkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgorCiAyMDExLTA4LTAzICBTYWlsZXNoIEFncmF3
YWwgIDxzYWlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBNYWM6IE1ha2Ugc3Vy
ZSBzY3JvbGxiYXJzIGZsYXNoIHdoZW4gd2ViIHBhZ2UgbG9hZHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2
aXNpb24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVy
V2lkZ2V0LmgiCisjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHRD
aGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiaHRt
bGVkaXRpbmcuaCIKQEAgLTI4OSwyMiArMjkwLDE1IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
dXBkYXRlQVhMaW5lU3RhcnQKICAgICAvLyBTbyBsZXQncyB1cGRhdGUgdGhlIHBvc2l0aW9uIHRv
IGluY2x1ZGUgdGhhdC4KICAgICBWaXNpYmxlUG9zaXRpb24gdGVtcFBvc2l0aW9uOwogICAgIFZp
c2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uOwotICAgIFBvc2l0
aW9uIHA7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcjsKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICB0ZW1wUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLnByZXZpb3VzKCk7Ci0gICAgICAg
IGlmICh0ZW1wUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIGlmICh0ZW1wUG9zaXRpb24uaXNO
dWxsKCkgfHwgdGVtcFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIHAgPSB0ZW1wUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYgKCFwLmRl
cHJlY2F0ZWROb2RlKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmVuZGVyZXIgPSBw
LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgIFBvc2l0aW9uIHAgPSB0ZW1w
UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHAuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJl
ciB8fCAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiAhcC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBJbmxpbmVCb3gqIGJveDsKLSAg
ICAgICAgaW50IGlnbm9yZWRDYXJldE9mZnNldDsKLSAgICAgICAgcC5nZXRJbmxpbmVCb3hBbmRP
ZmZzZXQodGVtcFBvc2l0aW9uLmFmZmluaXR5KCksIGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsK
LSAgICAgICAgaWYgKGJveCkKKyAgICAgICAgaWYgKCFSZW5kZXJlZFBvc2l0aW9uKHRlbXBQb3Np
dGlvbikuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3RhcnRQb3NpdGlv
biA9IHRlbXBQb3NpdGlvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CShyZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgi
CisjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb3VuZC5oIgpA
QCAtMjczMywzMSArMjczNCwxMCBAQCBJbnRSZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2Uo
UmFuZ2UqCiAgICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICBBU1NFUlQo
cmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKIAotICAgIElubGluZUJveCogc3RhcnRJbmxpbmVCb3g7
Ci0gICAgaW50IHN0YXJ0Q2FyZXRPZmZzZXQ7Ci0gICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9
IFZpc2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQb3NpdGlvbigpKS5kZWVwRXF1aXZhbGVudCgp
OwotICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTnVsbCgpKQorICAgIExheW91dFJlY3Qgc3RhcnRD
YXJldFJlY3QgPSBSZW5kZXJlZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQ
b3NpdGlvbigpKS5kZWVwRXF1aXZhbGVudCgpLCBET1dOU1RSRUFNKS5hYnNvbHV0ZVJlY3QoZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICBMYXlvdXRSZWN0IGVuZENhcmV0UmVjdCA9IFJlbmRl
cmVkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKHJhbmdlLT5lbmRQb3NpdGlvbigpKS5kZWVwRXF1
aXZhbGVudCgpLCBVUFNUUkVBTSkuYWJzb2x1dGVSZWN0KCk7CisgICAgaWYgKHN0YXJ0Q2FyZXRS
ZWN0ID09IExheW91dFJlY3QoKSB8fCBlbmRDYXJldFJlY3QgPT0gTGF5b3V0UmVjdCgpKQogICAg
ICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHN0YXJ0UG9zaXRpb24uZ2V0SW5saW5lQm94QW5k
T2Zmc2V0KERPV05TVFJFQU0sIHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0KTsKLQot
ICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0UG9zaXRpb24uZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlQoc3RhcnRSZW5kZXJlcik7Ci0gICAgSW50
UmVjdCBzdGFydENhcmV0UmVjdCA9IHN0YXJ0UmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KHN0YXJ0
SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0LCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKLSAg
ICBpZiAoc3RhcnRDYXJldFJlY3QgIT0gSW50UmVjdCgpKQotICAgICAgICBzdGFydENhcmV0UmVj
dCA9IHN0YXJ0UmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHN0YXJ0Q2Fy
ZXRSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKLQotICAgIElubGluZUJveCogZW5kSW5s
aW5lQm94OwotICAgIGludCBlbmRDYXJldE9mZnNldDsKLSAgICBQb3NpdGlvbiBlbmRQb3NpdGlv
biA9IFZpc2libGVQb3NpdGlvbihyYW5nZS0+ZW5kUG9zaXRpb24oKSkuZGVlcEVxdWl2YWxlbnQo
KTsKLSAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0
KCk7Ci0gICAgZW5kUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zmc2V0KFVQU1RSRUFNLCBlbmRJ
bmxpbmVCb3gsIGVuZENhcmV0T2Zmc2V0KTsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVy
ZXIgPSBlbmRQb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIEFTU0VS
VChlbmRSZW5kZXJlcik7Ci0gICAgSW50UmVjdCBlbmRDYXJldFJlY3QgPSBlbmRSZW5kZXJlci0+
bG9jYWxDYXJldFJlY3QoZW5kSW5saW5lQm94LCBlbmRDYXJldE9mZnNldCk7Ci0gICAgaWYgKGVu
ZENhcmV0UmVjdCAhPSBJbnRSZWN0KCkpCi0gICAgICAgIGVuZENhcmV0UmVjdCA9IGVuZFJlbmRl
cmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChlbmRDYXJldFJlY3QpKS5lbmNsb3Np
bmdCb3VuZGluZ0JveCgpOwogCiAgICAgaWYgKHN0YXJ0Q2FyZXRSZWN0LnkoKSA9PSBlbmRDYXJl
dFJlY3QueSgpKSB7CiAgICAgICAgIC8vIHN0YXJ0IGFuZCBlbmQgYXJlIG9uIHRoZSBzYW1lIGxp
bmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAko
cmV2aXNpb24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw0ICs0OSwzNCBAQCBSZW5kZXJlZFBvc2l0aW9u
OjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0CiAgICAgICAgIG1fcmVuZGVyZXIgPSBtX2lubGluZUJv
eC0+cmVuZGVyZXIoKTsKIH0KIAorUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihj
b25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIEVBZmZpbml0eSBhZmZpbml0eSkKKyAgICA6IG1fcmVu
ZGVyZXIoMCkKKyAgICAsIG1faW5saW5lQm94KDApCisgICAgLCBtX29mZnNldCgwKQoreworICAg
IGlmIChwb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBvc2l0aW9uLmdl
dElubGluZUJveEFuZE9mZnNldChhZmZpbml0eSwgbV9pbmxpbmVCb3gsIG1fb2Zmc2V0KTsKKyAg
ICBpZiAobV9pbmxpbmVCb3gpCisgICAgICAgIG1fcmVuZGVyZXIgPSBtX2lubGluZUJveC0+cmVu
ZGVyZXIoKTsKK30KKworTGF5b3V0UmVjdCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3Qo
KQoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKKwor
ICAgIExheW91dFJlY3QgbG9jYWxSZWN0ID0gbV9yZW5kZXJlci0+bG9jYWxDYXJldFJlY3QobV9p
bmxpbmVCb3gsIG1fb2Zmc2V0KTsKKyAgICByZXR1cm4gbG9jYWxSZWN0ID09IExheW91dFJlY3Qo
KSA/IExheW91dFJlY3QoKSA6IG1fcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRS
ZWN0KGxvY2FsUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7Cit9CisKK0xheW91dFJlY3Qg
UmVuZGVyZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0KGludCYgZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
KQoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKKwor
ICAgIExheW91dFJlY3QgbG9jYWxSZWN0ID0gbV9yZW5kZXJlci0+bG9jYWxDYXJldFJlY3QobV9p
bmxpbmVCb3gsIG1fb2Zmc2V0LCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICByZXR1cm4g
bG9jYWxSZWN0ID09IExheW91dFJlY3QoKSA/IExheW91dFJlY3QoKSA6IG1fcmVuZGVyZXItPmxv
Y2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGxvY2FsUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5n
Qm94KCk7Cit9CisKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uaAkocmV2aXNpb24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRl
cmVkUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBS
ZW5kZXJlZFBvc2l0aW9uX2gKIAogI2luY2x1ZGUgIklubGluZUJveC5oIgorI2luY2x1ZGUgIkxh
eW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ0LDEwICs0NSwxNCBAQCBjbGFzcyBSZW5kZXJlZFBvc2l0aW9uIHsKIHB1Ymxp
YzoKICAgICBSZW5kZXJlZFBvc2l0aW9uKCk7CiAgICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICBleHBsaWNpdCBSZW5kZXJlZFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5KTsKIAogICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1
cm4gIW1fcmVuZGVyZXI7IH0KICAgICBSb290SW5saW5lQm94KiByb290Qm94KCkgeyByZXR1cm4g
bV9pbmxpbmVCb3ggPyBtX2lubGluZUJveC0+cm9vdCgpIDogMDsgfQogCisgICAgTGF5b3V0UmVj
dCBhYnNvbHV0ZVJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlUmVjdChpbnQmIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSk7CisKIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRl
cmVyOwogICAgIElubGluZUJveCogbV9pbmxpbmVCb3g7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102855</attachid>
            <date>2011-08-03 16:32:26 -0700</date>
            <delta_ts>2011-08-04 19:07:46 -0700</delta_ts>
            <desc>cleanup; fixed another bug</desc>
            <filename>bug-65647-20110803163225.patch</filename>
            <type>text/plain</type>
            <size>8693</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFJlbmRlcmVkUG9zaXRpb24g
aW5zdGVhZCBvZiBnZXRJbmxpbmVCb3hBbmRPZmZzZXQgaW4gRWRpdG9yIGFuZCBBY2Nlc3NpYmls
aXR5T2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVuY2Fwc3VsYXRlZCB0aGUgdXNlIG9mIGdldElubGluZUJveEFuZE9mZnNldCBpbiBFZGl0b3Iu
Y3BwIGFuZCBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBieSBSZW5kZXJlZFBvc2l0aW9uLgorCisg
ICAgICAgIEFsc28gYWRkZWQgcmVuZGVyZXJGcm9tUG9zaXRpb24gdGhhdCByZXR1cm5zIHRoZSBy
ZW5kZXJlciBvZiBkZXByZWNhdGVkTm9kZSBidXQgdXNpbmcgYSBwcm9wZXIgUG9zaXRpb24gaW50
ZXJmYWNlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUFYTGluZVN0YXJ0Rm9yVmlzaWJsZVBvc2l0aW9u
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmZpcnN0UmVjdEZvclJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyZXJGcm9tUG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QpOgorICAgICAgICAqIGVk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgorCiAyMDExLTA4LTAzICBTYWlsZXNoIEFncmF3YWwg
IDxzYWlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBNYWM6IE1ha2Ugc3VyZSBz
Y3JvbGxiYXJzIGZsYXNoIHdoZW4gd2ViIHBhZ2UgbG9hZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNp
b24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lk
Z2V0LmgiCisjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiaHRtbGVk
aXRpbmcuaCIKQEAgLTI4OSwyMiArMjkwLDE1IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdXBk
YXRlQVhMaW5lU3RhcnQKICAgICAvLyBTbyBsZXQncyB1cGRhdGUgdGhlIHBvc2l0aW9uIHRvIGlu
Y2x1ZGUgdGhhdC4KICAgICBWaXNpYmxlUG9zaXRpb24gdGVtcFBvc2l0aW9uOwogICAgIFZpc2li
bGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uOwotICAgIFBvc2l0aW9u
IHA7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcjsKICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICB0ZW1wUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLnByZXZpb3VzKCk7Ci0gICAgICAgIGlm
ICh0ZW1wUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIGlmICh0ZW1wUG9zaXRpb24uaXNOdWxs
KCkgfHwgdGVtcFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IHAgPSB0ZW1wUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYgKCFwLmRlcHJl
Y2F0ZWROb2RlKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmVuZGVyZXIgPSBwLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgIFBvc2l0aW9uIHAgPSB0ZW1wUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHAuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8
fCAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiAhcC5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBJbmxpbmVCb3gqIGJveDsKLSAgICAg
ICAgaW50IGlnbm9yZWRDYXJldE9mZnNldDsKLSAgICAgICAgcC5nZXRJbmxpbmVCb3hBbmRPZmZz
ZXQodGVtcFBvc2l0aW9uLmFmZmluaXR5KCksIGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsKLSAg
ICAgICAgaWYgKGJveCkKKyAgICAgICAgaWYgKCFSZW5kZXJlZFBvc2l0aW9uKHRlbXBQb3NpdGlv
bikuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9
IHRlbXBQb3NpdGlvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShy
ZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAj
aW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCisj
aW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb3VuZC5oIgpAQCAt
MjczMywzMSArMjczNCwxMCBAQCBJbnRSZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UoUmFu
Z2UqCiAgICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICBBU1NFUlQocmFu
Z2UtPmVuZENvbnRhaW5lcigpKTsKIAotICAgIElubGluZUJveCogc3RhcnRJbmxpbmVCb3g7Ci0g
ICAgaW50IHN0YXJ0Q2FyZXRPZmZzZXQ7Ci0gICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQb3NpdGlvbigpKS5kZWVwRXF1aXZhbGVudCgpOwot
ICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTnVsbCgpKQorICAgIExheW91dFJlY3Qgc3RhcnRDYXJl
dFJlY3QgPSBSZW5kZXJlZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQb3Np
dGlvbigpKS5kZWVwRXF1aXZhbGVudCgpLCBET1dOU1RSRUFNKS5hYnNvbHV0ZVJlY3QoZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lKTsKKyAgICBMYXlvdXRSZWN0IGVuZENhcmV0UmVjdCA9IFJlbmRlcmVk
UG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKHJhbmdlLT5lbmRQb3NpdGlvbigpKS5kZWVwRXF1aXZh
bGVudCgpLCBVUFNUUkVBTSkuYWJzb2x1dGVSZWN0KCk7CisgICAgaWYgKHN0YXJ0Q2FyZXRSZWN0
ID09IExheW91dFJlY3QoKSB8fCBlbmRDYXJldFJlY3QgPT0gTGF5b3V0UmVjdCgpKQogICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOwotICAgIHN0YXJ0UG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zm
c2V0KERPV05TVFJFQU0sIHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0KTsKLQotICAg
IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0UG9zaXRpb24uZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlQoc3RhcnRSZW5kZXJlcik7Ci0gICAgSW50UmVj
dCBzdGFydENhcmV0UmVjdCA9IHN0YXJ0UmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KHN0YXJ0SW5s
aW5lQm94LCBzdGFydENhcmV0T2Zmc2V0LCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKLSAgICBp
ZiAoc3RhcnRDYXJldFJlY3QgIT0gSW50UmVjdCgpKQotICAgICAgICBzdGFydENhcmV0UmVjdCA9
IHN0YXJ0UmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHN0YXJ0Q2FyZXRS
ZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKLQotICAgIElubGluZUJveCogZW5kSW5saW5l
Qm94OwotICAgIGludCBlbmRDYXJldE9mZnNldDsKLSAgICBQb3NpdGlvbiBlbmRQb3NpdGlvbiA9
IFZpc2libGVQb3NpdGlvbihyYW5nZS0+ZW5kUG9zaXRpb24oKSkuZGVlcEVxdWl2YWxlbnQoKTsK
LSAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7
Ci0gICAgZW5kUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zmc2V0KFVQU1RSRUFNLCBlbmRJbmxp
bmVCb3gsIGVuZENhcmV0T2Zmc2V0KTsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIg
PSBlbmRQb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIEFTU0VSVChl
bmRSZW5kZXJlcik7Ci0gICAgSW50UmVjdCBlbmRDYXJldFJlY3QgPSBlbmRSZW5kZXJlci0+bG9j
YWxDYXJldFJlY3QoZW5kSW5saW5lQm94LCBlbmRDYXJldE9mZnNldCk7Ci0gICAgaWYgKGVuZENh
cmV0UmVjdCAhPSBJbnRSZWN0KCkpCi0gICAgICAgIGVuZENhcmV0UmVjdCA9IGVuZFJlbmRlcmVy
LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChlbmRDYXJldFJlY3QpKS5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpOwogCiAgICAgaWYgKHN0YXJ0Q2FyZXRSZWN0LnkoKSA9PSBlbmRDYXJldFJl
Y3QueSgpKSB7CiAgICAgICAgIC8vIHN0YXJ0IGFuZCBlbmQgYXJlIG9uIHRoZSBzYW1lIGxpbmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAkocmV2
aXNpb24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZyb21Qb3NpdGlvbihj
b25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgQVNTRVJUKHBvc2l0aW9uLmlzTm90TnVs
bCgpKTsKKyAgICBOb2RlKiByZW5kZXJlck5vZGUgPSAwOworICAgIHN3aXRjaCAocG9zaXRpb24u
YW5jaG9yVHlwZSgpKSB7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5j
aG9yOgorICAgICAgICByZW5kZXJlck5vZGUgPSBwb3NpdGlvbi5jb21wdXRlTm9kZUFmdGVyUG9z
aXRpb24oKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlck5vZGUgfHwgIXJlbmRlcmVyTm9kZS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0aW9uLmFuY2hvck5vZGUo
KS0+bGFzdENoaWxkKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvcjoKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJB
bmNob3I6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc0Jl
Zm9yZUNoaWxkcmVuOgorICAgICAgICByZW5kZXJlck5vZGUgPSBwb3NpdGlvbi5hbmNob3JOb2Rl
KCktPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9z
aXRpb25Jc0FmdGVyQ2hpbGRyZW46CisgICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0aW9uLmFu
Y2hvck5vZGUoKS0+bGFzdENoaWxkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAo
IXJlbmRlcmVyTm9kZSB8fCAhcmVuZGVyZXJOb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZW5k
ZXJlck5vZGUgPSBwb3NpdGlvbi5hbmNob3JOb2RlKCk7CisgICAgcmV0dXJuIHJlbmRlcmVyTm9k
ZS0+cmVuZGVyZXIoKTsKK30KKwogUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIDogbV9yZW5kZXJlcigwKQogICAg
ICwgbV9pbmxpbmVCb3goMCkKQEAgLTQ3LDYgKzc0LDQwIEBAIFJlbmRlcmVkUG9zaXRpb246OlJl
bmRlcmVkUG9zaXRpb24oY29uc3QKICAgICBwb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQo
bV9pbmxpbmVCb3gsIG1fb2Zmc2V0KTsKICAgICBpZiAobV9pbmxpbmVCb3gpCiAgICAgICAgIG1f
cmVuZGVyZXIgPSBtX2lubGluZUJveC0+cmVuZGVyZXIoKTsKKyAgICBlbHNlCisgICAgICAgIG1f
cmVuZGVyZXIgPSByZW5kZXJlckZyb21Qb3NpdGlvbihwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgp
KTsKK30KKworUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24sIEVBZmZpbml0eSBhZmZpbml0eSkKKyAgICA6IG1fcmVuZGVyZXIoMCkKKyAg
ICAsIG1faW5saW5lQm94KDApCisgICAgLCBtX29mZnNldCgwKQoreworICAgIGlmIChwb3NpdGlv
bi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBvc2l0aW9uLmdldElubGluZUJveEFu
ZE9mZnNldChhZmZpbml0eSwgbV9pbmxpbmVCb3gsIG1fb2Zmc2V0KTsKKyAgICBpZiAobV9pbmxp
bmVCb3gpCisgICAgICAgIG1fcmVuZGVyZXIgPSBtX2lubGluZUJveC0+cmVuZGVyZXIoKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlckZyb21Qb3NpdGlvbihwb3NpdGlv
bik7Cit9CisKK0xheW91dFJlY3QgUmVuZGVyZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0KCkKK3sK
KyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisKKyAgICBM
YXlvdXRSZWN0IGxvY2FsUmVjdCA9IG1fcmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KG1faW5saW5l
Qm94LCBtX29mZnNldCk7CisgICAgcmV0dXJuIGxvY2FsUmVjdCA9PSBMYXlvdXRSZWN0KCkgPyBM
YXlvdXRSZWN0KCkgOiBtX3JlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChs
b2NhbFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOworfQorCitMYXlvdXRSZWN0IFJlbmRl
cmVkUG9zaXRpb246OmFic29sdXRlUmVjdChpbnQmIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKK3sK
KyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisKKyAgICBM
YXlvdXRSZWN0IGxvY2FsUmVjdCA9IG1fcmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KG1faW5saW5l
Qm94LCBtX29mZnNldCwgJmV4dHJhV2lkdGhUb0VuZE9mTGluZSk7CisgICAgcmV0dXJuIGxvY2Fs
UmVjdCA9PSBMYXlvdXRSZWN0KCkgPyBMYXlvdXRSZWN0KCkgOiBtX3JlbmRlcmVyLT5sb2NhbFRv
QWJzb2x1dGVRdWFkKEZsb2F0UmVjdChsb2NhbFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
OwogfQogCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9u
LmgJKHJldmlzaW9uIDkyMjg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBv
c2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgUmVuZGVy
ZWRQb3NpdGlvbl9oCiAKICNpbmNsdWRlICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRU
eXBlcy5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00NCwxMCArNDUsMTQgQEAgY2xhc3MgUmVuZGVyZWRQb3NpdGlvbiB7CiBwdWJsaWM6CiAg
ICAgUmVuZGVyZWRQb3NpdGlvbigpOwogICAgIGV4cGxpY2l0IFJlbmRlcmVkUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlvbihjb25z
dCBQb3NpdGlvbiYsIEVBZmZpbml0eSk7CiAKICAgICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFt
X3JlbmRlcmVyOyB9CiAgICAgUm9vdElubGluZUJveCogcm9vdEJveCgpIHsgcmV0dXJuIG1faW5s
aW5lQm94ID8gbV9pbmxpbmVCb3gtPnJvb3QoKSA6IDA7IH0KIAorICAgIExheW91dFJlY3QgYWJz
b2x1dGVSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZVJlY3QoaW50JiBleHRyYVdpZHRo
VG9FbmRPZkxpbmUpOworCiBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsK
ICAgICBJbmxpbmVCb3gqIG1faW5saW5lQm94Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103022</attachid>
            <date>2011-08-04 19:07:49 -0700</date>
            <delta_ts>2011-08-04 19:33:02 -0700</delta_ts>
            <desc>Fixed per comment</desc>
            <filename>bug-65647-20110804190748.patch</filename>
            <type>text/plain</type>
            <size>8773</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFJlbmRlcmVkUG9zaXRpb24g
aW5zdGVhZCBvZiBnZXRJbmxpbmVCb3hBbmRPZmZzZXQgaW4gRWRpdG9yIGFuZCBBY2Nlc3NpYmls
aXR5T2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVuY2Fwc3VsYXRlZCB0aGUgdXNlIG9mIGdldElubGluZUJveEFuZE9mZnNldCBpbiBFZGl0b3Iu
Y3BwIGFuZCBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBieSBSZW5kZXJlZFBvc2l0aW9uLgorCisg
ICAgICAgIEFsc28gYWRkZWQgcmVuZGVyZXJGcm9tUG9zaXRpb24gdGhhdCByZXR1cm5zIHRoZSBy
ZW5kZXJlciBvZiBkZXByZWNhdGVkTm9kZSBidXQgdXNpbmcgYSBwcm9wZXIgUG9zaXRpb24gaW50
ZXJmYWNlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUFYTGluZVN0YXJ0Rm9yVmlzaWJsZVBvc2l0aW9u
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmZpcnN0UmVjdEZvclJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyZXJGcm9tUG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QpOgorICAgICAgICAqIGVk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgorCiAyMDExLTA4LTAzICBTYWlsZXNoIEFncmF3YWwg
IDxzYWlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBNYWM6IE1ha2Ugc3VyZSBz
Y3JvbGxiYXJzIGZsYXNoIHdoZW4gd2ViIHBhZ2UgbG9hZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNp
b24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lk
Z2V0LmgiCisjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiaHRtbGVk
aXRpbmcuaCIKQEAgLTI4OSwyMiArMjkwLDE1IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdXBk
YXRlQVhMaW5lU3RhcnQKICAgICAvLyBTbyBsZXQncyB1cGRhdGUgdGhlIHBvc2l0aW9uIHRvIGlu
Y2x1ZGUgdGhhdC4KICAgICBWaXNpYmxlUG9zaXRpb24gdGVtcFBvc2l0aW9uOwogICAgIFZpc2li
bGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uOwotICAgIFBvc2l0aW9u
IHA7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcjsKICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICB0ZW1wUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLnByZXZpb3VzKCk7Ci0gICAgICAgIGlm
ICh0ZW1wUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIGlmICh0ZW1wUG9zaXRpb24uaXNOdWxs
KCkgfHwgdGVtcFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IHAgPSB0ZW1wUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYgKCFwLmRlcHJl
Y2F0ZWROb2RlKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmVuZGVyZXIgPSBwLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgIFBvc2l0aW9uIHAgPSB0ZW1wUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHAuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8
fCAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiAhcC5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBJbmxpbmVCb3gqIGJveDsKLSAgICAg
ICAgaW50IGlnbm9yZWRDYXJldE9mZnNldDsKLSAgICAgICAgcC5nZXRJbmxpbmVCb3hBbmRPZmZz
ZXQodGVtcFBvc2l0aW9uLmFmZmluaXR5KCksIGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsKLSAg
ICAgICAgaWYgKGJveCkKKyAgICAgICAgaWYgKCFSZW5kZXJlZFBvc2l0aW9uKHRlbXBQb3NpdGlv
bikuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9
IHRlbXBQb3NpdGlvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShy
ZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAj
aW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCisj
aW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb3VuZC5oIgpAQCAt
MjczMywzMSArMjczNCwxMyBAQCBJbnRSZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UoUmFu
Z2UqCiAgICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICBBU1NFUlQocmFu
Z2UtPmVuZENvbnRhaW5lcigpKTsKIAotICAgIElubGluZUJveCogc3RhcnRJbmxpbmVCb3g7Ci0g
ICAgaW50IHN0YXJ0Q2FyZXRPZmZzZXQ7Ci0gICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQb3NpdGlvbigpKS5kZWVwRXF1aXZhbGVudCgpOwot
ICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTnVsbCgpKQorICAgIExheW91dFJlY3Qgc3RhcnRDYXJl
dFJlY3QgPSBSZW5kZXJlZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihyYW5nZS0+c3RhcnRQb3Np
dGlvbigpKS5kZWVwRXF1aXZhbGVudCgpLCBET1dOU1RSRUFNKS5hYnNvbHV0ZVJlY3QoZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lKTsKKyAgICBpZiAoc3RhcnRDYXJldFJlY3QgPT0gTGF5b3V0UmVjdCgp
KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHN0YXJ0UG9zaXRpb24uZ2V0SW5saW5l
Qm94QW5kT2Zmc2V0KERPV05TVFJFQU0sIHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0
KTsKIAotICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0UG9zaXRpb24uZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlQoc3RhcnRSZW5kZXJlcik7Ci0g
ICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IHN0YXJ0UmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0
KHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0LCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
KTsKLSAgICBpZiAoc3RhcnRDYXJldFJlY3QgIT0gSW50UmVjdCgpKQotICAgICAgICBzdGFydENh
cmV0UmVjdCA9IHN0YXJ0UmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHN0
YXJ0Q2FyZXRSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKLQotICAgIElubGluZUJveCog
ZW5kSW5saW5lQm94OwotICAgIGludCBlbmRDYXJldE9mZnNldDsKLSAgICBQb3NpdGlvbiBlbmRQ
b3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihyYW5nZS0+ZW5kUG9zaXRpb24oKSkuZGVlcEVxdWl2
YWxlbnQoKTsKLSAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCisgICAgTGF5b3V0UmVjdCBl
bmRDYXJldFJlY3QgPSBSZW5kZXJlZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihyYW5nZS0+ZW5k
UG9zaXRpb24oKSkuZGVlcEVxdWl2YWxlbnQoKSwgVVBTVFJFQU0pLmFic29sdXRlUmVjdCgpOwor
ICAgIGlmIChlbmRDYXJldFJlY3QgPT0gTGF5b3V0UmVjdCgpKQogICAgICAgICByZXR1cm4gSW50
UmVjdCgpOwotICAgIGVuZFBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChVUFNUUkVBTSwg
ZW5kSW5saW5lQm94LCBlbmRDYXJldE9mZnNldCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGVuZFJl
bmRlcmVyID0gZW5kUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBB
U1NFUlQoZW5kUmVuZGVyZXIpOwotICAgIEludFJlY3QgZW5kQ2FyZXRSZWN0ID0gZW5kUmVuZGVy
ZXItPmxvY2FsQ2FyZXRSZWN0KGVuZElubGluZUJveCwgZW5kQ2FyZXRPZmZzZXQpOwotICAgIGlm
IChlbmRDYXJldFJlY3QgIT0gSW50UmVjdCgpKQotICAgICAgICBlbmRDYXJldFJlY3QgPSBlbmRS
ZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoZW5kQ2FyZXRSZWN0KSkuZW5j
bG9zaW5nQm91bmRpbmdCb3goKTsKIAogICAgIGlmIChzdGFydENhcmV0UmVjdC55KCkgPT0gZW5k
Q2FyZXRSZWN0LnkoKSkgewogICAgICAgICAvLyBzdGFydCBhbmQgZW5kIGFyZSBvbiB0aGUgc2Ft
ZSBsaW5lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5j
cHAJKHJldmlzaW9uIDkyMjg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBv
c2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMzMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogcmVuZGVyZXJGcm9tUG9z
aXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIEFTU0VSVChwb3NpdGlvbi5p
c05vdE51bGwoKSk7CisgICAgTm9kZSogcmVuZGVyZXJOb2RlID0gMDsKKyAgICBzd2l0Y2ggKHBv
c2l0aW9uLmFuY2hvclR5cGUoKSkgeworICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZz
ZXRJbkFuY2hvcjoKKyAgICAgICAgcmVuZGVyZXJOb2RlID0gcG9zaXRpb24uY29tcHV0ZU5vZGVB
ZnRlclBvc2l0aW9uKCk7CisgICAgICAgIGlmICghcmVuZGVyZXJOb2RlIHx8ICFyZW5kZXJlck5v
ZGUtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJlck5vZGUgPSBwb3NpdGlvbi5hbmNo
b3JOb2RlKCktPmxhc3RDaGlsZCgpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUG9zaXRp
b246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3I6CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25J
c0FmdGVyQW5jaG9yOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgUG9zaXRpb246OlBvc2l0
aW9uSXNCZWZvcmVDaGlsZHJlbjoKKyAgICAgICAgcmVuZGVyZXJOb2RlID0gcG9zaXRpb24uYW5j
aG9yTm9kZSgpLT5maXJzdENoaWxkKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUG9zaXRp
b246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuOgorICAgICAgICByZW5kZXJlck5vZGUgPSBwb3Np
dGlvbi5hbmNob3JOb2RlKCktPmxhc3RDaGlsZCgpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgaWYgKCFyZW5kZXJlck5vZGUgfHwgIXJlbmRlcmVyTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgcmVuZGVyZXJOb2RlID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAgIHJldHVybiByZW5k
ZXJlck5vZGUtPnJlbmRlcmVyKCk7Cit9CisKIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKICAgICA6IG1fcmVuZGVyZXIo
MCkKICAgICAsIG1faW5saW5lQm94KDApCkBAIC00Nyw2ICs3NCw0MCBAQCBSZW5kZXJlZFBvc2l0
aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0CiAgICAgcG9zaXRpb24uZ2V0SW5saW5lQm94QW5k
T2Zmc2V0KG1faW5saW5lQm94LCBtX29mZnNldCk7CiAgICAgaWYgKG1faW5saW5lQm94KQogICAg
ICAgICBtX3JlbmRlcmVyID0gbV9pbmxpbmVCb3gtPnJlbmRlcmVyKCk7CisgICAgZWxzZQorICAg
ICAgICBtX3JlbmRlcmVyID0gcmVuZGVyZXJGcm9tUG9zaXRpb24ocG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKSk7Cit9CisKK1JlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24oY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHkpCisgICAgOiBtX3JlbmRlcmVy
KDApCisgICAgLCBtX2lubGluZUJveCgwKQorICAgICwgbV9vZmZzZXQoMCkKK3sKKyAgICBpZiAo
cG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwb3NpdGlvbi5nZXRJbmxp
bmVCb3hBbmRPZmZzZXQoYWZmaW5pdHksIG1faW5saW5lQm94LCBtX29mZnNldCk7CisgICAgaWYg
KG1faW5saW5lQm94KQorICAgICAgICBtX3JlbmRlcmVyID0gbV9pbmxpbmVCb3gtPnJlbmRlcmVy
KCk7CisgICAgZWxzZQorICAgICAgICBtX3JlbmRlcmVyID0gcmVuZGVyZXJGcm9tUG9zaXRpb24o
cG9zaXRpb24pOworfQorCitMYXlvdXRSZWN0IFJlbmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVj
dCgpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0UmVj
dCgpOworCisgICAgTGF5b3V0UmVjdCBsb2NhbFJlY3QgPSBtX3JlbmRlcmVyLT5sb2NhbENhcmV0
UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQpOworICAgIHJldHVybiBsb2NhbFJlY3QgPT0gTGF5
b3V0UmVjdCgpID8gTGF5b3V0UmVjdCgpIDogbV9yZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3QobG9jYWxSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKK30KKworTGF5
b3V0UmVjdCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QoaW50JiBleHRyYVdpZHRoVG9F
bmRPZkxpbmUpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gTGF5
b3V0UmVjdCgpOworCisgICAgTGF5b3V0UmVjdCBsb2NhbFJlY3QgPSBtX3JlbmRlcmVyLT5sb2Nh
bENhcmV0UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQsICZleHRyYVdpZHRoVG9FbmRPZkxpbmUp
OworICAgIHJldHVybiBsb2NhbFJlY3QgPT0gTGF5b3V0UmVjdCgpID8gTGF5b3V0UmVjdCgpIDog
bV9yZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobG9jYWxSZWN0KSkuZW5j
bG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5oCShyZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBACiAjZGVmaW5lIFJlbmRlcmVkUG9zaXRpb25faAogCiAjaW5jbHVkZSAiSW5saW5lQm94Lmgi
CisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTAgKzQ1LDE0IEBAIGNsYXNzIFJlbmRlcmVkUG9z
aXRpb24gewogcHVibGljOgogICAgIFJlbmRlcmVkUG9zaXRpb24oKTsKICAgICBleHBsaWNpdCBS
ZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgIGV4cGxpY2l0IFJl
bmRlcmVkUG9zaXRpb24oY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHkpOwogCi0gICAgYm9vbCBp
c051bGwoKSB7IHJldHVybiAhbV9yZW5kZXJlcjsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KICAgICBSb290SW5saW5lQm94KiByb290Qm94KCkgeyBy
ZXR1cm4gbV9pbmxpbmVCb3ggPyBtX2lubGluZUJveC0+cm9vdCgpIDogMDsgfQogCisgICAgTGF5
b3V0UmVjdCBhYnNvbHV0ZVJlY3QoKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlUmVj
dChpbnQmIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgUmVu
ZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwogICAgIElubGluZUJveCogbV9pbmxpbmVCb3g7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103023</attachid>
            <date>2011-08-04 19:33:05 -0700</date>
            <delta_ts>2011-08-04 23:26:34 -0700</delta_ts>
            <desc>Merged two absoluteRects</desc>
            <filename>bug-65647-20110804193304.patch</filename>
            <type>text/plain</type>
            <size>8662</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzE2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDgtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFJlbmRlcmVkUG9zaXRpb24g
aW5zdGVhZCBvZiBnZXRJbmxpbmVCb3hBbmRPZmZzZXQgaW4gRWRpdG9yIGFuZCBBY2Nlc3NpYmls
aXR5T2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVuY2Fwc3VsYXRlZCB0aGUgdXNlIG9mIGdldElubGluZUJveEFuZE9mZnNldCBpbiBFZGl0b3Iu
Y3BwIGFuZCBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBieSBSZW5kZXJlZFBvc2l0aW9uLgorCisg
ICAgICAgIEFsc28gYWRkZWQgcmVuZGVyZXJGcm9tUG9zaXRpb24gdGhhdCByZXR1cm5zIHRoZSBy
ZW5kZXJlciBvZiBkZXByZWNhdGVkTm9kZSBidXQgdXNpbmcgYSBwcm9wZXIgUG9zaXRpb24gaW50
ZXJmYWNlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUFYTGluZVN0YXJ0Rm9yVmlzaWJsZVBvc2l0aW9u
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmZpcnN0UmVjdEZvclJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyZXJGcm9tUG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QpOgorICAgICAgICAqIGVk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3Np
dGlvbjo6YWJzb2x1dGVSZWN0KToKKwogMjAxMS0wOC0wMyAgU2FpbGVzaCBBZ3Jhd2FsICA8c2Fp
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0gTWFjOiBNYWtlIHN1cmUgc2Nyb2xs
YmFycyBmbGFzaCB3aGVuIHdlYiBwYWdlIGxvYWRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDky
Mjg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5o
IgorI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNs
aWVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5n
LmgiCkBAIC0yODksMjIgKzI5MCwxNSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHVwZGF0ZUFY
TGluZVN0YXJ0CiAgICAgLy8gU28gbGV0J3MgdXBkYXRlIHRoZSBwb3NpdGlvbiB0byBpbmNsdWRl
IHRoYXQuCiAgICAgVmlzaWJsZVBvc2l0aW9uIHRlbXBQb3NpdGlvbjsKICAgICBWaXNpYmxlUG9z
aXRpb24gc3RhcnRQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbjsKLSAgICBQb3NpdGlvbiBwOwot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXI7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAg
dGVtcFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbi5wcmV2aW91cygpOwotICAgICAgICBpZiAodGVt
cFBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICBpZiAodGVtcFBvc2l0aW9uLmlzTnVsbCgpIHx8
IHRlbXBQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwID0g
dGVtcFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgIGlmICghcC5kZXByZWNhdGVk
Tm9kZSgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHJlbmRlcmVyID0gcC5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgICAgICBQb3NpdGlvbiBwID0gdGVtcFBvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBwLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcmVuZGVyZXIgfHwgKHJl
bmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgJiYgIXAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkp
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgSW5saW5lQm94KiBib3g7Ci0gICAgICAgIGlu
dCBpZ25vcmVkQ2FyZXRPZmZzZXQ7Ci0gICAgICAgIHAuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KHRl
bXBQb3NpdGlvbi5hZmZpbml0eSgpLCBib3gsIGlnbm9yZWRDYXJldE9mZnNldCk7Ci0gICAgICAg
IGlmIChib3gpCisgICAgICAgIGlmICghUmVuZGVyZWRQb3NpdGlvbih0ZW1wUG9zaXRpb24pLmlz
TnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSB0ZW1w
UG9zaXRpb247CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNp
b24gOTIyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1
ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgorI2luY2x1
ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU291bmQuaCIKQEAgLTI3MzMs
MzEgKzI3MzQsMTMgQEAgSW50UmVjdCBFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKgog
ICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250YWluZXIoKSk7CiAgICAgQVNTRVJUKHJhbmdlLT5l
bmRDb250YWluZXIoKSk7CiAKLSAgICBJbmxpbmVCb3gqIHN0YXJ0SW5saW5lQm94OwotICAgIGlu
dCBzdGFydENhcmV0T2Zmc2V0OwotICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBWaXNpYmxl
UG9zaXRpb24ocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBp
ZiAoc3RhcnRQb3NpdGlvbi5pc051bGwoKSkKKyAgICBMYXlvdXRSZWN0IHN0YXJ0Q2FyZXRSZWN0
ID0gUmVuZGVyZWRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24ocmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSkuZGVlcEVxdWl2YWxlbnQoKSwgRE9XTlNUUkVBTSkuYWJzb2x1dGVSZWN0KGV4dHJhV2lkdGhU
b0VuZE9mTGluZSk7CisgICAgaWYgKHN0YXJ0Q2FyZXRSZWN0ID09IExheW91dFJlY3QoKSkKICAg
ICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICBzdGFydFBvc2l0aW9uLmdldElubGluZUJveEFu
ZE9mZnNldChET1dOU1RSRUFNLCBzdGFydElubGluZUJveCwgc3RhcnRDYXJldE9mZnNldCk7CiAK
LSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydFBvc2l0aW9uLmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgQVNTRVJUKHN0YXJ0UmVuZGVyZXIpOwotICAgIElu
dFJlY3Qgc3RhcnRDYXJldFJlY3QgPSBzdGFydFJlbmRlcmVyLT5sb2NhbENhcmV0UmVjdChzdGFy
dElubGluZUJveCwgc3RhcnRDYXJldE9mZnNldCwgJmV4dHJhV2lkdGhUb0VuZE9mTGluZSk7Ci0g
ICAgaWYgKHN0YXJ0Q2FyZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgc3RhcnRDYXJldFJl
Y3QgPSBzdGFydFJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChzdGFydENh
cmV0UmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7Ci0KLSAgICBJbmxpbmVCb3gqIGVuZElu
bGluZUJveDsKLSAgICBpbnQgZW5kQ2FyZXRPZmZzZXQ7Ci0gICAgUG9zaXRpb24gZW5kUG9zaXRp
b24gPSBWaXNpYmxlUG9zaXRpb24ocmFuZ2UtPmVuZFBvc2l0aW9uKCkpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgaWYgKGVuZFBvc2l0aW9uLmlzTnVsbCgpKQorICAgIExheW91dFJlY3QgZW5kQ2Fy
ZXRSZWN0ID0gUmVuZGVyZWRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24ocmFuZ2UtPmVuZFBvc2l0
aW9uKCkpLmRlZXBFcXVpdmFsZW50KCksIFVQU1RSRUFNKS5hYnNvbHV0ZVJlY3QoKTsKKyAgICBp
ZiAoZW5kQ2FyZXRSZWN0ID09IExheW91dFJlY3QoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3Qo
KTsKLSAgICBlbmRQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoVVBTVFJFQU0sIGVuZElu
bGluZUJveCwgZW5kQ2FyZXRPZmZzZXQpOwotCi0gICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJl
ciA9IGVuZFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgQVNTRVJU
KGVuZFJlbmRlcmVyKTsKLSAgICBJbnRSZWN0IGVuZENhcmV0UmVjdCA9IGVuZFJlbmRlcmVyLT5s
b2NhbENhcmV0UmVjdChlbmRJbmxpbmVCb3gsIGVuZENhcmV0T2Zmc2V0KTsKLSAgICBpZiAoZW5k
Q2FyZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgZW5kQ2FyZXRSZWN0ID0gZW5kUmVuZGVy
ZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGVuZENhcmV0UmVjdCkpLmVuY2xvc2lu
Z0JvdW5kaW5nQm94KCk7CiAKICAgICBpZiAoc3RhcnRDYXJldFJlY3QueSgpID09IGVuZENhcmV0
UmVjdC55KCkpIHsKICAgICAgICAgLy8gc3RhcnQgYW5kIGVuZCBhcmUgb24gdGhlIHNhbWUgbGlu
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCShy
ZXZpc2lvbiA5MjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDMzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRnJvbVBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICBBU1NFUlQocG9zaXRpb24uaXNOb3RO
dWxsKCkpOworICAgIE5vZGUqIHJlbmRlcmVyTm9kZSA9IDA7CisgICAgc3dpdGNoIChwb3NpdGlv
bi5hbmNob3JUeXBlKCkpIHsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3I6CisgICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0aW9uLmNvbXB1dGVOb2RlQWZ0ZXJQ
b3NpdGlvbigpOworICAgICAgICBpZiAoIXJlbmRlcmVyTm9kZSB8fCAhcmVuZGVyZXJOb2RlLT5y
ZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXJOb2RlID0gcG9zaXRpb24uYW5jaG9yTm9k
ZSgpLT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yOgorICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRl
ckFuY2hvcjoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQ2hpbGRyZW46CisgICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0aW9uLmFuY2hvck5v
ZGUoKS0+Zmlyc3RDaGlsZCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKKyAgICAgICAgcmVuZGVyZXJOb2RlID0gcG9zaXRpb24u
YW5jaG9yTm9kZSgpLT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlm
ICghcmVuZGVyZXJOb2RlIHx8ICFyZW5kZXJlck5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIHJl
bmRlcmVyTm9kZSA9IHBvc2l0aW9uLmFuY2hvck5vZGUoKTsKKyAgICByZXR1cm4gcmVuZGVyZXJO
b2RlLT5yZW5kZXJlcigpOworfQorCiBSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgOiBtX3JlbmRlcmVyKDApCiAg
ICAgLCBtX2lubGluZUJveCgwKQpAQCAtNDcsNiArNzQsMzEgQEAgUmVuZGVyZWRQb3NpdGlvbjo6
UmVuZGVyZWRQb3NpdGlvbihjb25zdAogICAgIHBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNl
dChtX2lubGluZUJveCwgbV9vZmZzZXQpOwogICAgIGlmIChtX2lubGluZUJveCkKICAgICAgICAg
bV9yZW5kZXJlciA9IG1faW5saW5lQm94LT5yZW5kZXJlcigpOworICAgIGVsc2UKKyAgICAgICAg
bV9yZW5kZXJlciA9IHJlbmRlcmVyRnJvbVBvc2l0aW9uKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkpOworfQorCitSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFBvc2l0
aW9uJiBwb3NpdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5KQorICAgIDogbV9yZW5kZXJlcigwKQor
ICAgICwgbV9pbmxpbmVCb3goMCkKKyAgICAsIG1fb2Zmc2V0KDApCit7CisgICAgaWYgKHBvc2l0
aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgcG9zaXRpb24uZ2V0SW5saW5lQm94
QW5kT2Zmc2V0KGFmZmluaXR5LCBtX2lubGluZUJveCwgbV9vZmZzZXQpOworICAgIGlmIChtX2lu
bGluZUJveCkKKyAgICAgICAgbV9yZW5kZXJlciA9IG1faW5saW5lQm94LT5yZW5kZXJlcigpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9yZW5kZXJlciA9IHJlbmRlcmVyRnJvbVBvc2l0aW9uKHBvc2l0
aW9uKTsKK30KKworTGF5b3V0UmVjdCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QoaW50
KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworCisgICAgTGF5b3V0UmVjdCBsb2NhbFJlY3QgPSBt
X3JlbmRlcmVyLT5sb2NhbENhcmV0UmVjdChtX2lubGluZUJveCwgbV9vZmZzZXQsIGV4dHJhV2lk
dGhUb0VuZE9mTGluZSk7CisgICAgcmV0dXJuIGxvY2FsUmVjdCA9PSBMYXlvdXRSZWN0KCkgPyBM
YXlvdXRSZWN0KCkgOiBtX3JlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChs
b2NhbFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgJKHJldmlzaW9uIDkyMjg3KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgUmVuZGVyZWRQb3NpdGlvbl9oCiAKICNpbmNsdWRl
ICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIlRleHRB
ZmZpbml0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMSArNDUsMTcgQEAgY2xh
c3MgUmVuZGVyZWRQb3NpdGlvbiB7CiBwdWJsaWM6CiAgICAgUmVuZGVyZWRQb3NpdGlvbigpOwog
ICAgIGV4cGxpY2l0IFJlbmRlcmVkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Cisg
ICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSk7
CiAKLSAgICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX3JlbmRlcmVyOyB9CisgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsgfQogICAgIFJvb3RJbmxpbmVCb3gq
IHJvb3RCb3goKSB7IHJldHVybiBtX2lubGluZUJveCA/IG1faW5saW5lQm94LT5yb290KCkgOiAw
OyB9CiAKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIGFic29s
dXRlUmVjdCgwKTsgfQorICAgIExheW91dFJlY3QgYWJzb2x1dGVSZWN0KGludCYgZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lKSBjb25zdCB7IHJldHVybiBhYnNvbHV0ZVJlY3QoJmV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSk7IH0KKwogcHJpdmF0ZToKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlUmVjdChpbnQq
IGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3Q7CisKICAgICBSZW5kZXJPYmplY3QqIG1fcmVu
ZGVyZXI7CiAgICAgSW5saW5lQm94KiBtX2lubGluZUJveDsKICAgICBpbnQgbV9vZmZzZXQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>