<?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>61413</bug_id>
          
          <creation_ts>2011-05-24 19:29:20 -0700</creation_ts>
          <short_desc>Make document.activeElement work with shadow content.</short_desc>
          <delta_ts>2011-06-08 20:55:34 -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>DOM</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>
          
          <blocked>61409</blocked>
    
    <blocked>61410</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>409369</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-24 19:29:20 -0700</bug_when>
    <thetext>We should return a right element when &apos;document.activeElement&apos; is used in JavaScript if some elements in shadow content is currently focused.

I think we should return a shadow host element in that case. We should make sure what will be returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411376</commentid>
    <comment_count>1</comment_count>
      <attachid>95163</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-27 06:03:06 -0700</bug_when>
    <thetext>Created attachment 95163
Add a guard to document.activeElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411664</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-27 14:27:14 -0700</bug_when>
    <thetext>Please don&apos;t forget to cc peeps who should review! I didn&apos;t even realize this was here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411665</commentid>
    <comment_count>3</comment_count>
      <attachid>95163</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-27 14:29:55 -0700</bug_when>
    <thetext>Comment on attachment 95163
Add a guard to document.activeElement

actually.... shouldn&apos;t we be doing this in HTMLDocument::focusedNode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412121</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-29 22:32:41 -0700</bug_when>
    <thetext>Thank you for the review. 

Yes, it&apos;s nice that document.activeElement should be the same to the return value of HTMLDocument::focusedNode(). Its on my rader, but there remains things to be solved to achieve that.
I explained the current status and my rough idea in bug 61532 (https://bugs.webkit.org/show_bug.cgi?id=61532#c1). That might expain why we cannot simply modify Document::focusedNode() in this case.
I&apos;d appreciate if you could see that and give me your thoughts.


(In reply to comment #3)
&gt; (From update of attachment 95163 [details])
&gt; actually.... shouldn&apos;t we be doing this in HTMLDocument::focusedNode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416230</commentid>
    <comment_count>5</comment_count>
      <attachid>95163</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-06 19:26:30 -0700</bug_when>
    <thetext>Comment on attachment 95163
Add a guard to document.activeElement

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

&gt; Source/WebCore/html/HTMLDocument.cpp:142
&gt; +    if (!node) {

Could you split out this loop logic into a static function or Frame method? nested if-if-for-if looks complicated enough.

&gt; Source/WebCore/html/HTMLDocument.cpp:152
&gt; +    ASSERT(!node || node-&gt;document() == this);

I&apos;d like to return early here when node is null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417088</commentid>
    <comment_count>6</comment_count>
      <attachid>96380</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-07 22:14:52 -0700</bug_when>
    <thetext>Created attachment 96380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417089</commentid>
    <comment_count>7</comment_count>
      <attachid>95163</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-07 22:15:20 -0700</bug_when>
    <thetext>Comment on attachment 95163
Add a guard to document.activeElement

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

&gt;&gt; Source/WebCore/html/HTMLDocument.cpp:142
&gt;&gt; +    if (!node) {
&gt; 
&gt; Could you split out this loop logic into a static function or Frame method? nested if-if-for-if looks complicated enough.

Sure. I splited it out to a static function.

&gt;&gt; Source/WebCore/html/HTMLDocument.cpp:152
&gt;&gt; +    ASSERT(!node || node-&gt;document() == this);
&gt; 
&gt; I&apos;d like to return early here when node is null.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417117</commentid>
    <comment_count>8</comment_count>
      <attachid>96380</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-07 23:41:30 -0700</bug_when>
    <thetext>Comment on attachment 96380
Patch

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

Code looks good! Only thing left is paying a duty...

&gt; LayoutTests/fast/dom/shadow/activeelement-should-be-shadowhost-expected.txt:8
&gt; +

I&apos;d like to have more test cases that
- returns &lt;body&gt;
- when the focus is inside an iframe
- when the focus is inside a nested iframe
- call activeElement() of detached document
- call activeElement() of iframed-document
   - with several focus variations.
These should be done by original authors. But I bet it isn&apos;t...

&gt; Source/WebCore/html/HTMLDocument.cpp:159
&gt; +        return toElement(node);

Can |node| be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417168</commentid>
    <comment_count>9</comment_count>
      <attachid>96403</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-08 03:57:25 -0700</bug_when>
    <thetext>Created attachment 96403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417169</commentid>
    <comment_count>10</comment_count>
      <attachid>96380</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-08 03:58:00 -0700</bug_when>
    <thetext>Comment on attachment 96380
Patch

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

&gt;&gt; LayoutTests/fast/dom/shadow/activeelement-should-be-shadowhost-expected.txt:8
&gt;&gt; +
&gt; 
&gt; I&apos;d like to have more test cases that
&gt; - returns &lt;body&gt;
&gt; - when the focus is inside an iframe
&gt; - when the focus is inside a nested iframe
&gt; - call activeElement() of detached document
&gt; - call activeElement() of iframed-document
&gt;    - with several focus variations.
&gt; These should be done by original authors. But I bet it isn&apos;t...

The most cases are already covered in fast/dom/HTMLDocument/active-element-frames.html.

I agree that we need more coverage which involves shadow, so I rewrote the test, adding the following cases:
  - shadow in iframe 
  - shadow in shadow
  - iframe in shadow

&gt;&gt; Source/WebCore/html/HTMLDocument.cpp:159
&gt;&gt; +        return toElement(node);
&gt; 
&gt; Can |node| be null?

Yeah, that cannot be null. Before |node| becomes null, we surely reach a node whose treescope is same to this document.
I removed the null check and added assertion instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417769</commentid>
    <comment_count>11</comment_count>
      <attachid>96403</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-06-08 20:17:27 -0700</bug_when>
    <thetext>Comment on attachment 96403
Patch

Now it got good coverage! Let&apos;s land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417785</commentid>
    <comment_count>12</comment_count>
      <attachid>96403</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 20:55:29 -0700</bug_when>
    <thetext>Comment on attachment 96403
Patch

Clearing flags on attachment: 96403

Committed r88418: &lt;http://trac.webkit.org/changeset/88418&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417786</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 20:55:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95163</attachid>
            <date>2011-05-27 06:03:06 -0700</date>
            <delta_ts>2011-06-07 22:15:20 -0700</delta_ts>
            <desc>Add a guard to document.activeElement</desc>
            <filename>bug-61413-20110527220304.patch</filename>
            <type>text/plain</type>
            <size>5398</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczNjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZDA4ZWEzOGVhMWQxNDczOTJkZGM3
MzQzYTJhMTAwYmVmMGFmOTk1Li4wYjQ4ZWYxNmU0MGE3ZjJmZDFiYzM0MjQ1ZmM3YzcwMjJmZjJm
YWRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMjcgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2VzIHN1cmUgdGhhdCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IHdvbid0IGJl
IGVsZW1lbnRzIGluIHNoYWRvdyByb290LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTQxMworCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Fj
dGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNoYWRvd2hvc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvYWN0aXZlZWxlbWVudC1zaG91bGQtYmUtc2hhZG93aG9z
dC5odG1sOiBBZGRlZC4KKwogMjAxMS0wNS0yNSAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xpdmVp
cmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjdGl2ZWVsZW1lbnQtc2hv
dWxkLWJlLXNoYWRvd2hvc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNoYWRvd2hvc3QtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFlOTJiMmI1ZjA5MGE5YmNmZmU4MTc1NmRiZDU0MmEzNmM1YWVmODQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYWN0aXZlZWxlbWVudC1zaG91
bGQtYmUtc2hhZG93aG9zdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorTWFrZSBzdXJl
IHRoYXQgYW4gZWxlbWVudCBpbiBzaGFkb3cgcm9vdCBpcyBuZXZlciBleHBvc2VkIGFzIGRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQuCisKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpcyBzaGFk
b3dIb3N0CitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgc2hhZG93SG9zdAorUEFTUyBk
b2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIGlucHV0RWxlbWVudAorUEFTUyBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50IGlzIHNoYWRvd0hvc3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9hY3RpdmVlbGVtZW50LXNob3VsZC1iZS1zaGFkb3dob3N0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvYWN0aXZlZWxlbWVudC1zaG91bGQtYmUtc2hhZG93aG9zdC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRmN2RiZmZkMjdjNjc3NDNmMGJkYWI2NzYzOGU5ZjFmYTQ3ZDNkM2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYWN0aXZlZWxlbWVu
dC1zaG91bGQtYmUtc2hhZG93aG9zdC5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPgorTWFrZSBzdXJlIHRoYXQgYW4gZWxlbWVudCBpbiBz
aGFkb3cgcm9vdCBpcyBuZXZlciBleHBvc2VkIGFzIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuCis8
L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0
ZVRleHRJbnB1dEVsZW1lbnQoKSB7CisgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaW5wdXQnKTsKKyAgICBpbnB1dC50eXBlID0gJ3RleHQnOworICAgIGlucHV0LnRhYklu
ZGV4ID0gMTsKKyAgICByZXR1cm4gaW5wdXQ7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICB2YXIgaW5wdXRFbGVtZW50ID0gY3JlYXRlVGV4dElucHV0RWxlbWVudCgpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXRFbGVtZW50KTsKKworICAgIHZhciBzaGFkb3dIb3N0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgIHNoYWRvd0hvc3QudGFiSW5kZXgg
PSAxOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2hhZG93SG9zdCk7CisgICAgdmFy
IHNoYWRvdyA9IGxheW91dFRlc3RDb250cm9sbGVyLmVuc3VyZVNoYWRvd1Jvb3Qoc2hhZG93SG9z
dCk7CisgICAgdmFyIGlucHV0RWxlbWVudEluU2hhZG93ID0gY3JlYXRlVGV4dElucHV0RWxlbWVu
dCgpCisgICAgc2hhZG93LmFwcGVuZENoaWxkKGlucHV0RWxlbWVudEluU2hhZG93KTsKKworICAg
IGlucHV0RWxlbWVudEluU2hhZG93LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmFj
dGl2ZUVsZW1lbnQnLCAnc2hhZG93SG9zdCcpOworCisgICAgc2hhZG93SG9zdC5mb2N1cygpOwor
ICAgIHNob3VsZEJlKCdkb2N1bWVudC5hY3RpdmVFbGVtZW50JywgJ3NoYWRvd0hvc3QnKTsKKwor
ICAgIGlucHV0RWxlbWVudC5mb2N1cygpOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5hY3RpdmVF
bGVtZW50JywgJ2lucHV0RWxlbWVudCcpOworCisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAgICAgICBzaG91bGRCZSgn
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCcsICdzaGFkb3dIb3N0Jyk7CisgICAgfQorfQordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZjA1ZDdmN2FlZmFmNzQ3MGNkZmI0NjNjNmJkYjlkN2FkMzhmYmMxLi5h
Yjg4YWNmNWZiMTNhZmYwZjFjZDRjNDFlYjVmNzYwMGIwNzcxZjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMDUtMjcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Vz
IHN1cmUgdGhhdCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IHdvbid0IGJlIGVsZW1lbnRzIGluIHNo
YWRvdyByb290LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MTQxMworCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50
LXNob3VsZC1iZS1zaGFkb3dob3N0Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6YWN0aXZlRWxlbWVudCk6CisK
IDIwMTEtMDUtMjUgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dC5jcHAKaW5kZXggMTA0MTAxYWYyMTBjMTM1N2U1NzA1YzE5MzJlOWE3YmE3YWNlNmEyZC4uNzMx
OTE1ZDQ3NTNjZWU4YzgwOWU5ODQ5MWY2NGNmYzI1ZGUyMjgwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50LmNwcApAQCAtMTM4LDE1ICsxMzgsMjIgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6
OnNldERlc2lnbk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogRWxlbWVudCogSFRNTERvY3Vt
ZW50OjphY3RpdmVFbGVtZW50KCkKIHsKLSAgICBpZiAoTm9kZSogbm9kZSA9IGZvY3VzZWROb2Rl
KCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgfSBlbHNlIGlmIChQYWdlKiBw
YWdlID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgIGZvciAoRnJhbWUqIGZvY3VzZWRGcmFtZSA9
IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsgZm9jdXNlZEZyYW1lOyBm
b2N1c2VkRnJhbWUgPSBmb2N1c2VkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAg
ICAgIGlmIChmb2N1c2VkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgPT0gZnJhbWUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZm9jdXNlZEZyYW1lLT5vd25lckVsZW1lbnQoKTsKKyAgICBOb2Rl
KiBub2RlID0gZm9jdXNlZE5vZGUoKTsKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIGZvciAoRnJhbWUqIGZvY3Vz
ZWRGcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsgZm9jdXNl
ZEZyYW1lOyBmb2N1c2VkRnJhbWUgPSBmb2N1c2VkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEZyYW1lLT50cmVlKCktPnBhcmVudCgpID09IGZy
YW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGZvY3VzZWRGcmFtZS0+b3duZXJF
bGVtZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9k
ZS0+ZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICB3aGlsZSAobm9kZSAmJiBub2RlLT50cmVlU2Nv
cGUoKSAhPSB0aGlzKQorICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwor
ICAgIGlmIChub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRv
RWxlbWVudChub2RlKTsKICAgICByZXR1cm4gYm9keSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96380</attachid>
            <date>2011-06-07 22:14:52 -0700</date>
            <delta_ts>2011-06-08 03:58:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61413-20110608141450.patch</filename>
            <type>text/plain</type>
            <size>5594</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyNzgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTg1ODZjNjBhZGQ3ZDViYWQ1MGNj
ZDAxYjJlMDE4ZjU0ODJlODEzLi4xMjdlM2Q3ZWViZjMwNmJmNWZjOTEzZTYzZmMwNWMzMzcyZmEz
NTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDcgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2VzIHN1cmUgdGhhdCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IHdvbid0IGJl
IGFuIGVsZW1lbnQgaW4gc2hhZG93IHJvb3QuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNDEzCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
YWN0aXZlZWxlbWVudC1zaG91bGQtYmUtc2hhZG93aG9zdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50LXNob3VsZC1iZS1zaGFkb3do
b3N0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEd0ayByZWJhc2VsaW5lIGFmdGVyIHI4ODI2Ni4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50LXNob3VsZC1iZS1z
aGFkb3dob3N0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY3Rp
dmVlbGVtZW50LXNob3VsZC1iZS1zaGFkb3dob3N0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZTkyYjJiNWYwOTBhOWJjZmZlODE3NTZkYmQ1NDJhMzZjNWFlZjg0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNo
YWRvd2hvc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK01ha2Ugc3VyZSB0aGF0IGFu
IGVsZW1lbnQgaW4gc2hhZG93IHJvb3QgaXMgbmV2ZXIgZXhwb3NlZCBhcyBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50LgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgc2hhZG93SG9zdAor
UEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIHNoYWRvd0hvc3QKK1BBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCBpcyBpbnB1dEVsZW1lbnQKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCBpcyBzaGFkb3dIb3N0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYWN0
aXZlZWxlbWVudC1zaG91bGQtYmUtc2hhZG93aG9zdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNoYWRvd2hvc3QuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZjdkYmZmZDI3YzY3NzQzZjBiZGFiNjc2MzhlOWYxZmE0N2QzZDNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxk
LWJlLXNoYWRvd2hvc3QuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8cD4KK01ha2Ugc3VyZSB0aGF0IGFuIGVsZW1lbnQgaW4gc2hhZG93IHJv
b3QgaXMgbmV2ZXIgZXhwb3NlZCBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LgorPC9wPgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBjcmVhdGVUZXh0SW5w
dXRFbGVtZW50KCkgeworICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lu
cHV0Jyk7CisgICAgaW5wdXQudHlwZSA9ICd0ZXh0JzsKKyAgICBpbnB1dC50YWJJbmRleCA9IDE7
CisgICAgcmV0dXJuIGlucHV0OworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIGlu
cHV0RWxlbWVudCA9IGNyZWF0ZVRleHRJbnB1dEVsZW1lbnQoKTsKKyAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGlucHV0RWxlbWVudCk7CisKKyAgICB2YXIgc2hhZG93SG9zdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICBzaGFkb3dIb3N0LnRhYkluZGV4ID0gMTsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNoYWRvd0hvc3QpOworICAgIHZhciBzaGFkb3cg
PSBsYXlvdXRUZXN0Q29udHJvbGxlci5lbnN1cmVTaGFkb3dSb290KHNoYWRvd0hvc3QpOworICAg
IHZhciBpbnB1dEVsZW1lbnRJblNoYWRvdyA9IGNyZWF0ZVRleHRJbnB1dEVsZW1lbnQoKQorICAg
IHNoYWRvdy5hcHBlbmRDaGlsZChpbnB1dEVsZW1lbnRJblNoYWRvdyk7CisKKyAgICBpbnB1dEVs
ZW1lbnRJblNoYWRvdy5mb2N1cygpOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5hY3RpdmVFbGVt
ZW50JywgJ3NoYWRvd0hvc3QnKTsKKworICAgIHNoYWRvd0hvc3QuZm9jdXMoKTsKKyAgICBzaG91
bGRCZSgnZG9jdW1lbnQuYWN0aXZlRWxlbWVudCcsICdzaGFkb3dIb3N0Jyk7CisKKyAgICBpbnB1
dEVsZW1lbnQuZm9jdXMoKTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQuYWN0aXZlRWxlbWVudCcs
ICdpbnB1dEVsZW1lbnQnKTsKKworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgZXZlbnRTZW5kZXIua2V5RG93bignXHQnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2RvY3VtZW50
LmFjdGl2ZUVsZW1lbnQnLCAnc2hhZG93SG9zdCcpOworICAgIH0KK30KK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZDFlNWQ4MGNlYTQyYmU3ODNmMzEyZTIyOGEwMmIyNGZkZmU3YzZhMS4uNDZhZWIxYjdm
MmE0YjU0N2ZjZmIxOWIxY2M0MTI4MmE4MWQxMWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDExLTA2LTA3ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlcyBzdXJlIHRo
YXQgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB3b24ndCBiZSBhbiBlbGVtZW50IGluIHNoYWRvdyBy
b290LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MTQxMworCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50LXNob3Vs
ZC1iZS1zaGFkb3dob3N0Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZvY3VzZWRGcmFtZU93bmVyRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmFjdGl2ZUVsZW1lbnQpOgorCiAyMDExLTA2LTA3ICBKYW1l
cyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCBidWlsZCBmaXgsIG1pc3NpbmcgZmlsZXMgZnJvbSByODgyNzQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5jcHAKaW5kZXggMTA0MTAxYWYyMTBjMTM1N2U1NzA1YzE5MzJlOWE3YmE3YWNl
NmEyZC4uY2IwN2JiYTczOWNhNGFmNDVhOGE5NmIxYzM1MWU4NzYyNTQzYzQ5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTM2LDE3ICsxMzYsMjcgQEAgdm9pZCBIVE1M
RG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBEb2N1bWVu
dDo6c2V0RGVzaWduTW9kZShtb2RlKTsKIH0KIAotRWxlbWVudCogSFRNTERvY3VtZW50OjphY3Rp
dmVFbGVtZW50KCkKK3N0YXRpYyBOb2RlKiBmb2N1c2VkRnJhbWVPd25lckVsZW1lbnQoRnJhbWUq
IGZvY3VzZWRGcmFtZSwgRnJhbWUqIGN1cnJlbnRGcmFtZSkKIHsKLSAgICBpZiAoTm9kZSogbm9k
ZSA9IGZvY3VzZWROb2RlKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgfSBl
bHNlIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgIGZvciAoRnJhbWUq
IGZvY3VzZWRGcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKTsg
Zm9jdXNlZEZyYW1lOyBmb2N1c2VkRnJhbWUgPSBmb2N1c2VkRnJhbWUtPnRyZWUoKS0+cGFyZW50
KCkpIHsKLSAgICAgICAgICAgIGlmIChmb2N1c2VkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgPT0g
ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZm9jdXNlZEZyYW1lLT5vd25lckVsZW1l
bnQoKTsKLSAgICAgICAgfQorICAgIGZvciAoOyBmb2N1c2VkRnJhbWU7IGZvY3VzZWRGcmFtZSA9
IGZvY3VzZWRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoZm9jdXNlZEZy
YW1lLT50cmVlKCktPnBhcmVudCgpID09IGN1cnJlbnRGcmFtZSkKKyAgICAgICAgICAgIHJldHVy
biBmb2N1c2VkRnJhbWUtPm93bmVyRWxlbWVudCgpOwogICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KworRWxlbWVudCogSFRNTERvY3VtZW50OjphY3RpdmVFbGVtZW50KCkKK3sKKyAgICBOb2RlKiBu
b2RlID0gZm9jdXNlZE5vZGUoKTsKKyAgICBpZiAoIW5vZGUgJiYgcGFnZSgpKQorICAgICAgICBu
b2RlID0gZm9jdXNlZEZyYW1lT3duZXJFbGVtZW50KHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRGcmFtZSgpLCBmcmFtZSgpKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
biBib2R5KCk7CisgICAgQVNTRVJUKG5vZGUtPmRvY3VtZW50KCkgPT0gdGhpcyk7CisgICAgd2hp
bGUgKG5vZGUgJiYgbm9kZS0+dHJlZVNjb3BlKCkgIT0gdGhpcykKKyAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc0VsZW1lbnRO
b2RlKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAgcmV0dXJuIGJvZHko
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96403</attachid>
            <date>2011-06-08 03:57:25 -0700</date>
            <delta_ts>2011-06-08 20:55:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61413-20110608195724.patch</filename>
            <type>text/plain</type>
            <size>10793</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyNzgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTg1ODZjNjBhZGQ3ZDViYWQ1MGNj
ZDAxYjJlMDE4ZjU0ODJlODEzLi4xMjdlM2Q3ZWViZjMwNmJmNWZjOTEzZTYzZmMwNWMzMzcyZmEz
NTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDcgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2VzIHN1cmUgdGhhdCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IHdvbid0IGJl
IGFuIGVsZW1lbnQgaW4gc2hhZG93IHJvb3QuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNDEzCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
YWN0aXZlZWxlbWVudC1zaG91bGQtYmUtc2hhZG93aG9zdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50LXNob3VsZC1iZS1zaGFkb3do
b3N0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEd0ayByZWJhc2VsaW5lIGFmdGVyIHI4ODI2Ni4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50LXNob3VsZC1iZS1z
aGFkb3dob3N0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9hY3Rp
dmVlbGVtZW50LXNob3VsZC1iZS1zaGFkb3dob3N0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NjNmMjFmMDU4YTQxMDVmNDI0YjIwYTcxZDFlZTZkMDk4OTZlMDQwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNo
YWRvd2hvc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzkgQEAKK01ha2VzIHN1cmUgdGhhdCBk
b2N1bWVudC5hY3RpdmVFbGVtZW50IHJldHVybnMgYSBzaGFkb3cgaG9zdCB3aGVuIGEgZWxlbWVu
dCBpbiB0aGUgY29ycmVzcG9pbmRpbmcgc2hhZG93IHRyZWUgaXMgZm9jdXNlZC4KKworCitGb2N1
c2luZyB0b3AvaW5wdXQwCitQQVNTOiB0b3AgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpcyB0b3Av
c2hhZG93MAorUEFTUzogdG9wL2lmcmFtZTEgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpcyB0b3Av
aWZyYW1lMS9kb2MxX2JvZHkKK1BBU1M6IHRvcC9pZnJhbWUzIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgaXMgdG9wL2lmcmFtZTMvZG9jM19ib2R5CitQQVNTOiB0b3AvaWZyYW1lNCBkb2N1bWVudC5h
Y3RpdmVFbGVtZW50IGlzIHRvcC9pZnJhbWU0L2RvYzRfYm9keQorUEFTUzogdG9wL2lmcmFtZTQv
aWZyYW1lNF8xIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFtZTQvaWZyYW1lNF8x
L2RvYzRfMV9ib2R5CisKK0ZvY3VzaW5nIHRvcC9pZnJhbWUxL2lucHV0MQorUEFTUzogdG9wIGRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFtZTEKK1BBU1M6IHRvcC9pZnJhbWUxIGRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFtZTEvc2hhZG93MQorUEFTUzogdG9wL2lm
cmFtZTMgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpcyB0b3AvaWZyYW1lMy9kb2MzX2JvZHkKK1BB
U1M6IHRvcC9pZnJhbWU0IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFtZTQvZG9j
NF9ib2R5CitQQVNTOiB0b3AvaWZyYW1lNC9pZnJhbWU0XzEgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCBpcyB0b3AvaWZyYW1lNC9pZnJhbWU0XzEvZG9jNF8xX2JvZHkKKworRm9jdXNpbmcgdG9wL2lu
cHV0MgorUEFTUzogdG9wIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL3NoYWRvdzIKK1BB
U1M6IHRvcC9pZnJhbWUxIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFtZTEvZG9j
MV9ib2R5CitQQVNTOiB0b3AvaWZyYW1lMyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIHRvcC9p
ZnJhbWUzL2RvYzNfYm9keQorUEFTUzogdG9wL2lmcmFtZTQgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCBpcyB0b3AvaWZyYW1lNC9kb2M0X2JvZHkKK1BBU1M6IHRvcC9pZnJhbWU0L2lmcmFtZTRfMSBk
b2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIHRvcC9pZnJhbWU0L2lmcmFtZTRfMS9kb2M0XzFfYm9k
eQorCitGb2N1c2luZyB0b3AvaWZyYW1lMy9pbnB1dDMKK1BBU1M6IHRvcCBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50IGlzIHRvcC9zaGFkb3czCitQQVNTOiB0b3AvaWZyYW1lMSBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50IGlzIHRvcC9pZnJhbWUxL2RvYzFfYm9keQorUEFTUzogdG9wL2lmcmFtZTMgZG9j
dW1lbnQuYWN0aXZlRWxlbWVudCBpcyB0b3AvaWZyYW1lMy9pbnB1dDMKK1BBU1M6IHRvcC9pZnJh
bWU0IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFtZTQvZG9jNF9ib2R5CitQQVNT
OiB0b3AvaWZyYW1lNC9pZnJhbWU0XzEgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpcyB0b3AvaWZy
YW1lNC9pZnJhbWU0XzEvZG9jNF8xX2JvZHkKKworRm9jdXNpbmcgdG9wL2lmcmFtZTQvaWZyYW1l
NF8xL2lucHV0NAorUEFTUzogdG9wIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFt
ZTQKK1BBU1M6IHRvcC9pZnJhbWUxIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgdG9wL2lmcmFt
ZTEvZG9jMV9ib2R5CitQQVNTOiB0b3AvaWZyYW1lMyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlz
IHRvcC9pZnJhbWUzL2RvYzNfYm9keQorUEFTUzogdG9wL2lmcmFtZTQgZG9jdW1lbnQuYWN0aXZl
RWxlbWVudCBpcyB0b3AvaWZyYW1lNC9pZnJhbWU0XzEKK1BBU1M6IHRvcC9pZnJhbWU0L2lmcmFt
ZTRfMSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIHRvcC9pZnJhbWU0L2lmcmFtZTRfMS9pbnB1
dDQKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYWN0aXZlZWxl
bWVudC1zaG91bGQtYmUtc2hhZG93aG9zdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNoYWRvd2hvc3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NWM1ODUwMTNjMTllOTkyNjZlZWI4YzcyYzAyZmNkYmViOGNlMzcwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2FjdGl2ZWVsZW1lbnQtc2hvdWxkLWJlLXNo
YWRvd2hvc3QuaHRtbApAQCAtMCwwICsxLDE0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPHA+CitNYWtlcyBzdXJlIHRoYXQgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCByZXR1
cm5zIGEgc2hhZG93IGhvc3Qgd2hlbiBhIGVsZW1lbnQgaW4gdGhlIGNvcnJlc3BvaW5kaW5nIHNo
YWRvdyB0cmVlIGlzIGZvY3VzZWQuCis8L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBkZXNjcmliZShvYmopIHsKKyAgICBpZiAob2JqID09PSBkb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuICd0b3AnOworICAgIGlmIChvYmouZGVmYXVsdFZpZXcgJiYgb2Jq
LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGRlc2NyaWJlKG9iai5k
ZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQpOworICAgIHJldHVybiBkZXNjcmliZShvYmoub3duZXJE
b2N1bWVudCkgKyAnLycgKyBvYmouaWQ7Cit9CisKK2Z1bmN0aW9uIHByaW50KHMpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLnRleHRDb250ZW50ICs9IHMgKyAnXG4n
OworfQorCitmdW5jdGlvbiBhc3NlcnRBY3RpdmVFbGVtZW50KGRvYywgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoZG9jLmFjdGl2ZUVsZW1lbnQgPT09IGV4cGVjdGVkKQorICAgICAgICBwcmludCgnUEFT
UzogJyArIGRlc2NyaWJlKGRvYykgKyAnIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgJyArIGRl
c2NyaWJlKGRvYy5hY3RpdmVFbGVtZW50KSk7CisgICAgZWxzZQorICAgICAgICBwcmludCgnRkFJ
TDogJyArIGRlc2NyaWJlKGRvYykgKyAnIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaXMgJyArIGRl
c2NyaWJlKGRvYy5hY3RpdmVFbGVtZW50KSArICcgYnV0IGV4cGVjdGVkICcgKyBkZXNjcmliZShl
eHBlY3RlZCkpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgIGZ1bmN0aW9uIHNoYWRvd1Jv
b3Qoc2hhZG93SG9zdCkgeworICAgIHJldHVybiBsYXlvdXRUZXN0Q29udHJvbGxlci5lbnN1cmVT
aGFkb3dSb290KHNoYWRvd0hvc3QpOworICB9CisKKyAgZnVuY3Rpb24gYXBwZW5kQ2hpbGRUb1No
YWRvdyhzaGFkb3dIb3N0LCBjaGlsZCkgeworICAgIHJldHVybiBzaGFkb3dSb290KHNoYWRvd0hv
c3QpLmFwcGVuZENoaWxkKGNoaWxkKQorICB9CisKKyAgZnVuY3Rpb24gYXBwZW5kU2hhZG93SG9z
dChkb2MsIHBhcmVudCkgeworICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jLmNyZWF0ZUVsZW1lbnQo
J3AnKTsKKyAgICBzaGFkb3dIb3N0LnRhYkluZGV4ID0gMTsgIC8vIE1ha2VzIHN1cmUgdGhhdCB0
aGUgc2hhZG93IGhvc3QgaXMgZm9jdXNhYmxlLgorICAgIHBhcmVudCA9IHBhcmVudCB8fCBkb2Mu
Ym9keTsKKyAgICByZXR1cm4gcGFyZW50LmFwcGVuZENoaWxkKHNoYWRvd0hvc3QpOworICB9CisK
KyAgLy8gRm9yIHJlYWRhYmlsaXR5LCBJIG5vdGVkIGEgRE9NIHRyZWUgd2hpY2ggaXMgdW5kZXIg
dGhlIHRlc3QgaGVyZS4KKyAgLy8KKyAgLy8gLSBkb2N1bWVudCAoZG9jMCkKKyAgLy8gICAtIHNo
YWRvdzAKKyAgLy8gICAgIC0gaW5wdXQwCisgIC8vICAgLSBpZnJhbWUxIChkb2MxKQorICAvLyAg
ICAgLSBzaGFkb3cxCisgIC8vICAgICAgIC0gaW5wdXQxCisgIC8vICAgLSBzaGFkb3cyCisgIC8v
ICAgICAtIHNoYWRvdzJfMQorICAvLyAgICAgICAtIGlucHV0MgorICAvLyAgIC0gc2hhZG93Mwor
ICAvLyAgICAgLSBpZnJhbWUzIChkb2MzKQorICAvLyAgICAgICAtIGlucHV0MworICAvLyAgIC0g
aWZyYW1lNCAoZG9jNCkKKyAgLy8gICAgIC0gaWZyYW1lNF8xIChkb2M0XzEpCisgIC8vICAgICAg
IC0gaW5wdXQ0CisgIHZhciBkb2MwID0gZG9jdW1lbnQ7CisgIHZhciBzaGFkb3cwID0gYXBwZW5k
U2hhZG93SG9zdChkb2MwKTsKKyAgdmFyIGlucHV0MCA9IGFwcGVuZENoaWxkVG9TaGFkb3coc2hh
ZG93MCwgZG9jMC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKKworICB2YXIgaWZyYW1lMSA9IGRv
YzAuYm9keS5hcHBlbmRDaGlsZChkb2MwLmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAgdmFy
IGRvYzEgPSBpZnJhbWUxLmNvbnRlbnREb2N1bWVudDsKKyAgdmFyIHNoYWRvdzEgPSBhcHBlbmRT
aGFkb3dIb3N0KGRvYzEpOworICB2YXIgaW5wdXQxID0gYXBwZW5kQ2hpbGRUb1NoYWRvdyhzaGFk
b3cxLCBkb2MxLmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpOworCisgIHZhciBzaGFkb3cyID0gYXBw
ZW5kU2hhZG93SG9zdChkb2MwKTsKKyAgdmFyIHNoYWRvdzJfMSA9IGFwcGVuZFNoYWRvd0hvc3Qo
ZG9jMCwgc2hhZG93Um9vdChzaGFkb3cyKSk7CisgIHZhciBpbnB1dDIgPSBhcHBlbmRDaGlsZFRv
U2hhZG93KHNoYWRvdzJfMSwgZG9jMC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpKTsKKworICB2YXIg
c2hhZG93MyA9IGFwcGVuZFNoYWRvd0hvc3QoZG9jMCk7CisgIHZhciBpZnJhbWUzID0gYXBwZW5k
Q2hpbGRUb1NoYWRvdyhzaGFkb3czLCBkb2MwLmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKQorICB2
YXIgZG9jMyA9IGlmcmFtZTMuY29udGVudERvY3VtZW50OworICB2YXIgaW5wdXQzID0gZG9jMy5i
b2R5LmFwcGVuZENoaWxkKGRvYzMuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSkKKworICAvLyBBbHRo
b3VnaHQgdGhpcyBzdWJ0cmVlIChpZnJhbWU0KSBkb2Vzbid0IGNvbnRhaW4gYW55IGV4cGxpY2l0
IHNoYWRvdyBob3N0cywKKyAgLy8gdGhpcyBtaWdodCBiZSB1c2VmdWwgYXMgYSByZWZlcmVuY2Uu
CisgIHZhciBpZnJhbWU0ID0gZG9jMC5ib2R5LmFwcGVuZENoaWxkKGRvYzAuY3JlYXRlRWxlbWVu
dCgnaWZyYW1lJykpOworICB2YXIgZG9jNCA9IGlmcmFtZTQuY29udGVudERvY3VtZW50OworICB2
YXIgaWZyYW1lNF8xID0gZG9jNC5ib2R5LmFwcGVuZENoaWxkKGRvYzQuY3JlYXRlRWxlbWVudCgn
aWZyYW1lJykpOworICB2YXIgZG9jNF8xID0gaWZyYW1lNF8xLmNvbnRlbnREb2N1bWVudDsKKyAg
dmFyIGlucHV0NCA9IGRvYzRfMS5ib2R5LmFwcGVuZENoaWxkKGRvYzRfMS5jcmVhdGVFbGVtZW50
KCdpbnB1dCcpKTsKKworICAvLyBTZXQgdXAgSURzIGZvciBsb2dnaW5nLgorICB2YXIgZWxlbWVu
dHMgPSBbJ3NoYWRvdzAnLCdzaGFkb3cxJywgJ3NoYWRvdzInLCAnc2hhZG93Ml8xJywgJ3NoYWRv
dzMnLAorICAgICAgICAgICAgICAgICAgJ2lucHV0MCcsICdpbnB1dDEnLCAnaW5wdXQyJywgJ2lu
cHV0MycsICdpbnB1dDQnLAorICAgICAgICAgICAgICAgICAgJ2lmcmFtZTEnLCAnaWZyYW1lMycs
ICdpZnJhbWU0JywgJ2lmcmFtZTRfMSddOworICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRz
Lmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIGlkID0gZWxlbWVudHNbaV07CisgICAgd2luZG93W2lk
XS5pZCA9IGlkOworICB9CisgIHZhciBkb2NzID0gWydkb2MwJywgJ2RvYzEnLCAnZG9jMycsICdk
b2M0JywgJ2RvYzRfMSddOworICBmb3IgKHZhciBpID0gMDsgaSA8IGRvY3MubGVuZ3RoOyBpKysp
IHsKKyAgICB2YXIgaWQgPSBkb2NzW2ldOworICAgIHdpbmRvd1tpZF0uYm9keS5pZCA9IGlkICsg
J19ib2R5JzsKKyAgfQorCisgIHByaW50KCdcbkZvY3VzaW5nICcgKyBkZXNjcmliZShpbnB1dDAp
KTsKKyAgaW5wdXQwLmZvY3VzKCk7CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jMCwgc2hhZG93
MCk7CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jMSwgZG9jMS5ib2R5KTsKKyAgYXNzZXJ0QWN0
aXZlRWxlbWVudChkb2MzLCBkb2MzLmJvZHkpOworICBhc3NlcnRBY3RpdmVFbGVtZW50KGRvYzQs
IGRvYzQuYm9keSk7CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jNF8xLCBkb2M0XzEuYm9keSk7
CisKKyAgcHJpbnQoJ1xuRm9jdXNpbmcgJyArIGRlc2NyaWJlKGlucHV0MSkpOworICBpbnB1dDEu
Zm9jdXMoKTsKKyAgYXNzZXJ0QWN0aXZlRWxlbWVudChkb2MwLCBpZnJhbWUxKTsKKyAgYXNzZXJ0
QWN0aXZlRWxlbWVudChkb2MxLCBzaGFkb3cxKTsKKyAgYXNzZXJ0QWN0aXZlRWxlbWVudChkb2Mz
LCBkb2MzLmJvZHkpOworICBhc3NlcnRBY3RpdmVFbGVtZW50KGRvYzQsIGRvYzQuYm9keSk7Cisg
IGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jNF8xLCBkb2M0XzEuYm9keSk7CisKKyAgcHJpbnQoJ1xu
Rm9jdXNpbmcgJyArIGRlc2NyaWJlKGlucHV0MikpOworICBpbnB1dDIuZm9jdXMoKTsKKyAgYXNz
ZXJ0QWN0aXZlRWxlbWVudChkb2MwLCBzaGFkb3cyKTsKKyAgYXNzZXJ0QWN0aXZlRWxlbWVudChk
b2MxLCBkb2MxLmJvZHkpOworICBhc3NlcnRBY3RpdmVFbGVtZW50KGRvYzMsIGRvYzMuYm9keSk7
CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jNCwgZG9jNC5ib2R5KTsKKyAgYXNzZXJ0QWN0aXZl
RWxlbWVudChkb2M0XzEsIGRvYzRfMS5ib2R5KTsKKworICBwcmludCgnXG5Gb2N1c2luZyAnICsg
ZGVzY3JpYmUoaW5wdXQzKSk7CisgIGlucHV0My5mb2N1cygpOworICBhc3NlcnRBY3RpdmVFbGVt
ZW50KGRvYzAsIHNoYWRvdzMpOworICBhc3NlcnRBY3RpdmVFbGVtZW50KGRvYzEsIGRvYzEuYm9k
eSk7CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jMywgaW5wdXQzKTsKKyAgYXNzZXJ0QWN0aXZl
RWxlbWVudChkb2M0LCBkb2M0LmJvZHkpOworICBhc3NlcnRBY3RpdmVFbGVtZW50KGRvYzRfMSwg
ZG9jNF8xLmJvZHkpOworCisgIHByaW50KCdcbkZvY3VzaW5nICcgKyBkZXNjcmliZShpbnB1dDQp
KTsKKyAgaW5wdXQ0LmZvY3VzKCk7CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jMCwgaWZyYW1l
NCk7CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jMSwgZG9jMS5ib2R5KTsKKyAgYXNzZXJ0QWN0
aXZlRWxlbWVudChkb2MzLCBkb2MzLmJvZHkpOworICBhc3NlcnRBY3RpdmVFbGVtZW50KGRvYzQs
IGlmcmFtZTRfMSk7CisgIGFzc2VydEFjdGl2ZUVsZW1lbnQoZG9jNF8xLCBpbnB1dDQpOworfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFlNWQ4MGNlYTQyYmU3
ODNmMzEyZTIyOGEwMmIyNGZkZmU3YzZhMS4uNDZhZWIxYjdmMmE0YjU0N2ZjZmIxOWIxY2M0MTI4
MmE4MWQxMWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA2LTA3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlcyBzdXJlIHRoYXQgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudCB3b24ndCBiZSBhbiBlbGVtZW50IGluIHNoYWRvdyByb290LgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTQxMworCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL3NoYWRvdy9hY3RpdmVlbGVtZW50LXNob3VsZC1iZS1zaGFkb3dob3N0Lmh0bWwK
KworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZv
Y3VzZWRGcmFtZU93bmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6
OmFjdGl2ZUVsZW1lbnQpOgorCiAyMDExLTA2LTA3ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFt
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXgsIG1pc3Npbmcg
ZmlsZXMgZnJvbSByODgyNzQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXgg
MTA0MTAxYWYyMTBjMTM1N2U1NzA1YzE5MzJlOWE3YmE3YWNlNmEyZC4uYjY3ZWFjZDVhOWQ4MmE4
OWIwZTI0ZTBkYzlkY2Q5YzlkMTQ2NmJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcApAQCAtMTM2LDE3ICsxMzYsMjkgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnNldERlc2lnbk1v
ZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShtb2Rl
KTsKIH0KIAorc3RhdGljIE5vZGUqIGZvY3VzZWRGcmFtZU93bmVyRWxlbWVudChGcmFtZSogZm9j
dXNlZEZyYW1lLCBGcmFtZSogY3VycmVudEZyYW1lKQoreworICAgIGZvciAoOyBmb2N1c2VkRnJh
bWU7IGZvY3VzZWRGcmFtZSA9IGZvY3VzZWRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAg
ICAgICBpZiAoZm9jdXNlZEZyYW1lLT50cmVlKCktPnBhcmVudCgpID09IGN1cnJlbnRGcmFtZSkK
KyAgICAgICAgICAgIHJldHVybiBmb2N1c2VkRnJhbWUtPm93bmVyRWxlbWVudCgpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKwogRWxlbWVudCogSFRNTERvY3VtZW50OjphY3RpdmVFbGVtZW50
KCkKIHsKLSAgICBpZiAoTm9kZSogbm9kZSA9IGZvY3VzZWROb2RlKCkpIHsKLSAgICAgICAgaWYg
KG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSk7Ci0gICAgfSBlbHNlIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgp
KSB7Ci0gICAgICAgIGZvciAoRnJhbWUqIGZvY3VzZWRGcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkRnJhbWUoKTsgZm9jdXNlZEZyYW1lOyBmb2N1c2VkRnJhbWUgPSBmb2N1
c2VkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChmb2N1c2VkRnJh
bWUtPnRyZWUoKS0+cGFyZW50KCkgPT0gZnJhbWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Zm9jdXNlZEZyYW1lLT5vd25lckVsZW1lbnQoKTsKLSAgICAgICAgfQorICAgIE5vZGUqIG5vZGUg
PSBmb2N1c2VkTm9kZSgpOworICAgIGlmICghbm9kZSAmJiBwYWdlKCkpCisgICAgICAgIG5vZGUg
PSBmb2N1c2VkRnJhbWVPd25lckVsZW1lbnQocGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZEZyYW1lKCksIGZyYW1lKCkpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGJv
ZHkoKTsKKyAgICBBU1NFUlQobm9kZS0+ZG9jdW1lbnQoKSA9PSB0aGlzKTsKKyAgICB3aGlsZSAo
bm9kZS0+dHJlZVNjb3BlKCkgIT0gdGhpcykgeworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50
T3JIb3N0Tm9kZSgpOworICAgICAgICBBU1NFUlQobm9kZSk7CiAgICAgfQorICAgIGlmIChub2Rl
LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAg
cmV0dXJuIGJvZHkoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>