<?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>61839</bug_id>
          
          <creation_ts>2011-06-01 00:36:00 -0700</creation_ts>
          <short_desc>Refactor functions related with focus in WebCore::Document</short_desc>
          <delta_ts>2011-06-01 19:24:11 -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>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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>413190</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-01 00:36:00 -0700</bug_when>
    <thetext>This is a separated patch form bug 61410, containing only a refactoring part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413196</commentid>
    <comment_count>1</comment_count>
      <attachid>95558</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-01 00:40:14 -0700</bug_when>
    <thetext>Created attachment 95558
move focus related functions from Document to FocusController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413205</commentid>
    <comment_count>2</comment_count>
      <attachid>95558</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-06-01 01:01:53 -0700</bug_when>
    <thetext>Comment on attachment 95558
move focus related functions from Document to FocusController

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

&gt; Source/WebCore/page/FocusController.cpp:312
&gt; +    for (Node* n = start; n; n = n-&gt;traverseNextNode())

nit: Should avoid 1-letter variable name.

&gt; Source/WebCore/page/FocusController.cpp:332
&gt; +    int winningTabIndex = SHRT_MAX + 1;

nit: Because this is C++, we had better use numeric_limits&lt;short&gt; instead of SHRT_MAX.

&gt; Source/WebCore/page/FocusController.h:79
&gt; +    /**

nit: We usually use &apos;//&apos; for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413235</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-01 02:03:02 -0700</bug_when>
    <thetext>Thank you for the review. I&apos;ll land this patch after addressing the review comments.

(In reply to comment #2)
&gt; (From update of attachment 95558 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95558&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FocusController.cpp:312
&gt; &gt; +    for (Node* n = start; n; n = n-&gt;traverseNextNode())
&gt; 
&gt; nit: Should avoid 1-letter variable name.
&gt; 
&gt; &gt; Source/WebCore/page/FocusController.cpp:332
&gt; &gt; +    int winningTabIndex = SHRT_MAX + 1;
&gt; 
&gt; nit: Because this is C++, we had better use numeric_limits&lt;short&gt; instead of SHRT_MAX.
&gt; 
&gt; &gt; Source/WebCore/page/FocusController.h:79
&gt; &gt; +    /**
&gt; 
&gt; nit: We usually use &apos;//&apos; for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413840</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-06-01 19:24:11 -0700</bug_when>
    <thetext>Committed r87874: &lt;http://trac.webkit.org/changeset/87874&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95558</attachid>
            <date>2011-06-01 00:40:14 -0700</date>
            <delta_ts>2011-06-01 01:01:53 -0700</delta_ts>
            <desc>move focus related functions from Document to FocusController</desc>
            <filename>bug-61839-20110601164012.patch</filename>
            <type>text/plain</type>
            <size>18470</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc3MTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNDNlZGYzZjRkNmJhYzcw
MTM5OTU0NjJiNmM4ODgzMjQ2ZTZmMWY0Li4xMjlhNGQ5MDU0MTZkMDMxOTM5MmFmMWY1NmJlZWQw
NDlmODYyYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDUtMzEgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUge05leHQsUHJldmlvdXN9Rm9jdXNhYmxlTm9kZSBm
dW5jdGlvbnMgZnJvbSBEb2N1bWVudCB0byBGb2N1c0NvbnRyb2xsZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTgzOQorCisgICAgICAgIFRoZXJl
IGFyZSBzb21lIG1lbWJlciBmdW5jdGlvbnMgaW4gRG9jdW1lbnQgd2hpY2ggdXNlICd0aGlzJwor
ICAgICAgICBwb2ludGVyLCBidXQgd2Ugc2hvdWxkIHVzZSBUcmVlU2NvcGUgaW5zdGVhZCBvZiBE
b2N1bWVudCBpbiBzb21lCisgICAgICAgIHBsYWNlcyB0byBoYW5kbGUgZm9jdXMgaXNzdWVzIG5p
Y2VseS4gV2UgaGF2ZSB0byBtb3ZlIHRoZXNlCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgb2YgRG9j
dW1lbnQgY2xhc3Mgc28gdGhhdCB3ZSBjYW4gZ2l2ZSB0aGUgVHJlZVNjb3BlCisgICAgICAgIGFz
IGEgcGFyYW1ldGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSBubyBmdW5jdGlvbmFs
aXR5IHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmRlZXBGb2N1c2FibGVOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9y
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6cHJldmlvdXNOb2RlV2l0aEV4YWN0VGFiSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6bmV4dE5vZGVXaXRoR3JlYXRlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OnByZXZpb3VzTm9kZVdpdGhMb3dlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3Vz
Q29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXND
b250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZU5vZGUpOgorICAgICAgICAqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmg6CisKIDIwMTEtMDUtMzAgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGU5M2YxMjUyNjM1ZDhiZWU1Y2IzNjc5YmQ5YzFhMWZiZjAwYmE3NzIuLmJh
NWMxYmUzNzA4YzdjMjZiZGYyYjc2MjFkOGZlMjIwNzZmYWVmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMjQ5OCwxMTggKzI0OTgsNiBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVudDo6
bWFwcGVkRWxlbWVudFNoZWV0KCkKICAgICByZXR1cm4gbV9tYXBwZWRFbGVtZW50U2hlZXQuZ2V0
KCk7CiB9CiAKLXN0YXRpYyBOb2RlKiBuZXh0Tm9kZVdpdGhFeGFjdFRhYkluZGV4KE5vZGUqIHN0
YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewotICAgIC8vIFNlYXJj
aCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKLSAgICBmb3IgKE5vZGUqIG4gPSBzdGFydDsgbjsgbiA9
IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSkKLSAgICAgICAgaWYgKG4tPmlzS2V5Ym9hcmRGb2N1c2Fi
bGUoZXZlbnQpICYmIG4tPnRhYkluZGV4KCkgPT0gdGFiSW5kZXgpCi0gICAgICAgICAgICByZXR1
cm4gbjsKLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIE5vZGUqIHByZXZpb3VzTm9k
ZVdpdGhFeGFjdFRhYkluZGV4KE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZl
bnQqIGV2ZW50KQotewotICAgIC8vIFNlYXJjaCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKLSAgICBm
b3IgKE5vZGUqIG4gPSBzdGFydDsgbjsgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlKCkpCi0g
ICAgICAgIGlmIChuLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBuLT50YWJJbmRleCgp
ID09IHRhYkluZGV4KQotICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgCi0gICAgcmV0dXJuIDA7
Ci19Ci0KLXN0YXRpYyBOb2RlKiBuZXh0Tm9kZVdpdGhHcmVhdGVyVGFiSW5kZXgoTm9kZSogc3Rh
cnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCi17Ci0gICAgLy8gU2VhcmNo
IGlzIGluY2x1c2l2ZSBvZiBzdGFydAotICAgIGludCB3aW5uaW5nVGFiSW5kZXggPSBTSFJUX01B
WCArIDE7Ci0gICAgTm9kZSogd2lubmVyID0gMDsKLSAgICBmb3IgKE5vZGUqIG4gPSBzdGFydDsg
bjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSkKLSAgICAgICAgaWYgKG4tPmlzS2V5Ym9hcmRG
b2N1c2FibGUoZXZlbnQpICYmIG4tPnRhYkluZGV4KCkgPiB0YWJJbmRleCAmJiBuLT50YWJJbmRl
eCgpIDwgd2lubmluZ1RhYkluZGV4KSB7Ci0gICAgICAgICAgICB3aW5uZXIgPSBuOwotICAgICAg
ICAgICAgd2lubmluZ1RhYkluZGV4ID0gbi0+dGFiSW5kZXgoKTsKLSAgICAgICAgfQotICAgIAot
ICAgIHJldHVybiB3aW5uZXI7Ci19Ci0KLXN0YXRpYyBOb2RlKiBwcmV2aW91c05vZGVXaXRoTG93
ZXJUYWJJbmRleChOb2RlKiBzdGFydCwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiBldmVu
dCkKLXsKLSAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0Ci0gICAgaW50IHdpbm5p
bmdUYWJJbmRleCA9IDA7Ci0gICAgTm9kZSogd2lubmVyID0gMDsKLSAgICBmb3IgKE5vZGUqIG4g
PSBzdGFydDsgbjsgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlKCkpCi0gICAgICAgIGlmIChu
LT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBuLT50YWJJbmRleCgpIDwgdGFiSW5kZXgg
JiYgbi0+dGFiSW5kZXgoKSA+IHdpbm5pbmdUYWJJbmRleCkgewotICAgICAgICAgICAgd2lubmVy
ID0gbjsKLSAgICAgICAgICAgIHdpbm5pbmdUYWJJbmRleCA9IG4tPnRhYkluZGV4KCk7Ci0gICAg
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gd2lubmVyOwotfQotCi1Ob2RlKiBEb2N1bWVudDo6bmV4
dEZvY3VzYWJsZU5vZGUoTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewotICAg
IGlmIChzdGFydCkgewotICAgICAgICAvLyBJZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUg
bm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBuZXh0IGZvY3VzYWJsZSBub2RlIGlzIGRldGVybWlu
ZWQgYnkgdHJlZSBvcmRlcgotICAgICAgICBpZiAoc3RhcnQtPnRhYkluZGV4KCkgPCAwKSB7Ci0g
ICAgICAgICAgICBmb3IgKE5vZGUqIG4gPSBzdGFydC0+dHJhdmVyc2VOZXh0Tm9kZSgpOyBuOyBu
ID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKQotICAgICAgICAgICAgICAgIGlmIChuLT5pc0tleWJv
YXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBuLT50YWJJbmRleCgpID49IDApCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIC8vIEZpcnN0IHRyeSB0
byBmaW5kIGEgbm9kZSB3aXRoIHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0IHRoYXQgY29tZXMg
YWZ0ZXIgc3RhcnQgaW4gdGhlIGRvY3VtZW50LgotICAgICAgICBpZiAoTm9kZSogd2lubmVyID0g
bmV4dE5vZGVXaXRoRXhhY3RUYWJJbmRleChzdGFydC0+dHJhdmVyc2VOZXh0Tm9kZSgpLCBzdGFy
dC0+dGFiSW5kZXgoKSwgZXZlbnQpKQotICAgICAgICAgICAgcmV0dXJuIHdpbm5lcjsKLQotICAg
ICAgICBpZiAoIXN0YXJ0LT50YWJJbmRleCgpKQotICAgICAgICAgICAgLy8gV2UndmUgcmVhY2hl
ZCB0aGUgbGFzdCBub2RlIGluIHRoZSBkb2N1bWVudCB3aXRoIGEgdGFiaW5kZXggb2YgMC4gVGhp
cyBpcyB0aGUgZW5kIG9mIHRoZSB0YWJiaW5nIG9yZGVyLgotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgLy8gTG9vayBmb3IgdGhlIGZpcnN0IG5vZGUgaW4gdGhlIGRvY3VtZW50
IHRoYXQ6Ci0gICAgLy8gMSkgaGFzIHRoZSBsb3dlc3QgdGFiaW5kZXggdGhhdCBpcyBoaWdoZXIg
dGhhbiBzdGFydCdzIHRhYmluZGV4IChvciAwLCBpZiBzdGFydCBpcyBudWxsKSwgYW5kCi0gICAg
Ly8gMikgY29tZXMgZmlyc3QgaW4gdGhlIGRvY3VtZW50LCBpZiB0aGVyZSdzIGEgdGllLgotICAg
IGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0Tm9kZVdpdGhHcmVhdGVyVGFiSW5kZXgodGhpcywgc3Rh
cnQgPyBzdGFydC0+dGFiSW5kZXgoKSA6IDAsIGV2ZW50KSkKLSAgICAgICAgcmV0dXJuIHdpbm5l
cjsKLQotICAgIC8vIFRoZXJlIGFyZSBubyBub2RlcyB3aXRoIGEgdGFiaW5kZXggZ3JlYXRlciB0
aGFuIHN0YXJ0J3MgdGFiaW5kZXgsCi0gICAgLy8gc28gZmluZCB0aGUgZmlyc3Qgbm9kZSB3aXRo
IGEgdGFiaW5kZXggb2YgMC4KLSAgICByZXR1cm4gbmV4dE5vZGVXaXRoRXhhY3RUYWJJbmRleCh0
aGlzLCAwLCBldmVudCk7Ci19Ci0KLU5vZGUqIERvY3VtZW50OjpwcmV2aW91c0ZvY3VzYWJsZU5v
ZGUoTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewotICAgIE5vZGUqIGxhc3Q7
Ci0gICAgZm9yIChsYXN0ID0gdGhpczsgbGFzdC0+bGFzdENoaWxkKCk7IGxhc3QgPSBsYXN0LT5s
YXN0Q2hpbGQoKSkgeyB9Ci0KLSAgICAvLyBGaXJzdCB0cnkgdG8gZmluZCB0aGUgbGFzdCBub2Rl
IGluIHRoZSBkb2N1bWVudCB0aGF0IGNvbWVzIGJlZm9yZSBzdGFydCBhbmQgaGFzIHRoZSBzYW1l
IHRhYmluZGV4IGFzIHN0YXJ0LgotICAgIC8vIElmIHN0YXJ0IGlzIG51bGwsIGZpbmQgdGhlIGxh
c3Qgbm9kZSBpbiB0aGUgZG9jdW1lbnQgd2l0aCBhIHRhYmluZGV4IG9mIDAuCi0gICAgTm9kZSog
c3RhcnRpbmdOb2RlOwotICAgIGludCBzdGFydGluZ1RhYkluZGV4OwotICAgIGlmIChzdGFydCkg
ewotICAgICAgICBzdGFydGluZ05vZGUgPSBzdGFydC0+dHJhdmVyc2VQcmV2aW91c05vZGUoKTsK
LSAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9IHN0YXJ0LT50YWJJbmRleCgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHN0YXJ0aW5nTm9kZSA9IGxhc3Q7Ci0gICAgICAgIHN0YXJ0aW5nVGFiSW5k
ZXggPSAwOwotICAgIH0KLSAgICAKLSAgICAvLyBIb3dldmVyLCBpZiBhIG5vZGUgaXMgZXhjbHVk
ZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBwcmV2aW91cyBmb2N1c2FibGUg
bm9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRyZWUgb3JkZXIKLSAgICBpZiAoc3RhcnRpbmdUYWJJbmRl
eCA8IDApIHsKLSAgICAgICAgZm9yIChOb2RlKiBuID0gc3RhcnRpbmdOb2RlOyBuOyBuID0gbi0+
dHJhdmVyc2VQcmV2aW91c05vZGUoKSkKLSAgICAgICAgICAgIGlmIChuLT5pc0tleWJvYXJkRm9j
dXNhYmxlKGV2ZW50KSAmJiBuLT50YWJJbmRleCgpID49IDApCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG47ICAgICAgICAKLSAgICB9Ci0KLSAgICBpZiAoTm9kZSogd2lubmVyID0gcHJldmlvdXNO
b2RlV2l0aEV4YWN0VGFiSW5kZXgoc3RhcnRpbmdOb2RlLCBzdGFydGluZ1RhYkluZGV4LCBldmVu
dCkpCi0gICAgICAgIHJldHVybiB3aW5uZXI7Ci0KLSAgICAvLyBUaGVyZSBhcmUgbm8gbm9kZXMg
YmVmb3JlIHN0YXJ0IHdpdGggdGhlIHNhbWUgdGFiaW5kZXggYXMgc3RhcnQsIHNvIGxvb2sgZm9y
IGEgbm9kZSB0aGF0OgotICAgIC8vIDEpIGhhcyB0aGUgaGlnaGVzdCBub24temVybyB0YWJpbmRl
eCAodGhhdCBpcyBsZXNzIHRoYW4gc3RhcnQncyB0YWJpbmRleCksIGFuZAotICAgIC8vIDIpIGNv
bWVzIGxhc3QgaW4gdGhlIGRvY3VtZW50LCBpZiB0aGVyZSdzIGEgdGllLgotICAgIHN0YXJ0aW5n
VGFiSW5kZXggPSAoc3RhcnQgJiYgc3RhcnQtPnRhYkluZGV4KCkpID8gc3RhcnQtPnRhYkluZGV4
KCkgOiBTSFJUX01BWDsKLSAgICByZXR1cm4gcHJldmlvdXNOb2RlV2l0aExvd2VyVGFiSW5kZXgo
bGFzdCwgc3RhcnRpbmdUYWJJbmRleCwgZXZlbnQpOwotfQotCiBpbnQgRG9jdW1lbnQ6Om5vZGVB
YnNJbmRleChOb2RlICpub2RlKQogewogICAgIEFTU0VSVChub2RlLT5kb2N1bWVudCgpID09IHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBmYzU0ZWNiYTBhMWU4YmM0YTkyMGIzNGEyZWZl
NTMwMjYwNTBjNDM3Li4zZGY5NGY5ZjgzNmUxOWRkMGFhMWI5YWFiMzcyMDc0ODc3ZTlkYzgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzY4LDMyICs3NjgsNiBAQCBwdWJsaWM6CiAKICAgICBD
U1NTdHlsZURlY2xhcmF0aW9uKiBnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmIHBzZXVkb0VsdCk7CiAKLSAgICAvKioKLSAgICAgKiBTZWFyY2hlcyB0aHJvdWdoIHRoZSBk
b2N1bWVudCwgc3RhcnRpbmcgZnJvbSBmcm9tTm9kZSwgZm9yIHRoZSBuZXh0IHNlbGVjdGFibGUg
ZWxlbWVudCB0aGF0IGNvbWVzIGFmdGVyIGZyb21Ob2RlLgotICAgICAqIFRoZSBvcmRlciBmb2xs
b3dlZCBpcyBhcyBzcGVjaWZpZWQgaW4gc2VjdGlvbiAxNy4xMS4xIG9mIHRoZSBIVE1MNCBzcGVj
LCB3aGljaCBpcyBlbGVtZW50cyB3aXRoIHRhYiBpbmRleGVzCi0gICAgICogZmlyc3QgKGZyb20g
bG93ZXN0IHRvIGhpZ2hlc3QpLCBhbmQgdGhlbiBlbGVtZW50cyB3aXRob3V0IHRhYiBpbmRleGVz
IChpbiBkb2N1bWVudCBvcmRlcikuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gZnJvbU5vZGUgVGhl
IG5vZGUgZnJvbSB3aGljaCB0byBzdGFydCBzZWFyY2hpbmcuIFRoZSBub2RlIGFmdGVyIHRoaXMg
d2lsbCBiZSBmb2N1c2VkLiBNYXkgYmUgbnVsbC4KLSAgICAgKgotICAgICAqIEByZXR1cm4gVGhl
IGZvY3VzIG5vZGUgdGhhdCBjb21lcyBhZnRlciBmcm9tTm9kZQotICAgICAqCi0gICAgICogU2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2ludGVyYWN0L2Zvcm1zLmh0bWwjaC0xNy4xMS4x
Ci0gICAgICovCi0gICAgTm9kZSogbmV4dEZvY3VzYWJsZU5vZGUoTm9kZSogc3RhcnQsIEtleWJv
YXJkRXZlbnQqKTsKLQotICAgIC8qKgotICAgICAqIFNlYXJjaGVzIHRocm91Z2ggdGhlIGRvY3Vt
ZW50LCBzdGFydGluZyBmcm9tIGZyb21Ob2RlLCBmb3IgdGhlIHByZXZpb3VzIHNlbGVjdGFibGUg
ZWxlbWVudCAodGhhdCBjb21lcyBfYmVmb3JlXykKLSAgICAgKiBmcm9tTm9kZS4gVGhlIG9yZGVy
IGZvbGxvd2VkIGlzIGFzIHNwZWNpZmllZCBpbiBzZWN0aW9uIDE3LjExLjEgb2YgdGhlIEhUTUw0
IHNwZWMsIHdoaWNoIGlzIGVsZW1lbnRzIHdpdGggdGFiCi0gICAgICogaW5kZXhlcyBmaXJzdCAo
ZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCksIGFuZCB0aGVuIGVsZW1lbnRzIHdpdGhvdXQgdGFiIGlu
ZGV4ZXMgKGluIGRvY3VtZW50IG9yZGVyKS4KLSAgICAgKgotICAgICAqIEBwYXJhbSBmcm9tTm9k
ZSBUaGUgbm9kZSBmcm9tIHdoaWNoIHRvIHN0YXJ0IHNlYXJjaGluZy4gVGhlIG5vZGUgYmVmb3Jl
IHRoaXMgd2lsbCBiZSBmb2N1c2VkLiBNYXkgYmUgbnVsbC4KLSAgICAgKgotICAgICAqIEByZXR1
cm4gVGhlIGZvY3VzIG5vZGUgdGhhdCBjb21lcyBiZWZvcmUgZnJvbU5vZGUKLSAgICAgKgotICAg
ICAqIFNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9pbnRlcmFjdC9mb3Jtcy5odG1sI2gt
MTcuMTEuMQotICAgICAqLwotICAgIE5vZGUqIHByZXZpb3VzRm9jdXNhYmxlTm9kZShOb2RlKiBz
dGFydCwgS2V5Ym9hcmRFdmVudCopOwotCiAgICAgaW50IG5vZGVBYnNJbmRleChOb2RlKik7CiAg
ICAgTm9kZSogbm9kZVdpdGhBYnNJbmRleChpbnQgYWJzSW5kZXgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggZTdiMzc4MzkzZDM4YWJmOTUxNjdiOTc0M2Fi
ZTUxZTg4NzRkNzJiNi4uMDFkMjQ0NGYyMDYxZDYyMWY5YzhjMTYxNTdmZGY3OGI1NzAwZmVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3
IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKICAgICB9
CiB9CiAKLXN0YXRpYyBOb2RlKiBkZWVwRm9jdXNhYmxlTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIE5vZGUqIG5vZGUsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQorTm9kZSogRm9jdXNDb250
cm9sbGVyOjpkZWVwRm9jdXNhYmxlTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUq
IG5vZGUsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIC8vIFRoZSBub2RlIHdlIGZvdW5k
IG1pZ2h0IGJlIGEgSFRNTEZyYW1lT3duZXJFbGVtZW50LCBzbyBkZXNjZW5kIGRvd24gdGhlIGZy
YW1lIHRyZWUgdW50aWwgd2UgZmluZCBlaXRoZXI6CiAgICAgLy8gMSkgYSBmb2N1c2FibGUgbm9k
ZSwgb3IKQEAgLTE1Nyw4ICsxNTcsOCBAQCBzdGF0aWMgTm9kZSogZGVlcEZvY3VzYWJsZU5vZGUo
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBub2RlLCBLZXlib2FyZEV2ZQogICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBvd25lci0+Y29udGVudEZyYW1lKCktPmRvY3VtZW50KCk7
CiAKICAgICAgICAgbm9kZSA9IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKQot
ICAgICAgICAgICAgPyBkb2N1bWVudC0+bmV4dEZvY3VzYWJsZU5vZGUoMCwgZXZlbnQpCi0gICAg
ICAgICAgICA6IGRvY3VtZW50LT5wcmV2aW91c0ZvY3VzYWJsZU5vZGUoMCwgZXZlbnQpOworICAg
ICAgICAgICAgPyBuZXh0Rm9jdXNhYmxlTm9kZShkb2N1bWVudCwgMCwgZXZlbnQpCisgICAgICAg
ICAgICA6IHByZXZpb3VzRm9jdXNhYmxlTm9kZShkb2N1bWVudCwgMCwgZXZlbnQpOwogICAgICAg
ICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIG5vZGUgPSBvd25lcjsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjE1LDggKzIxNSw4IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9j
dXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgZG9j
dW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgTm9k
ZSogbm9kZSA9IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKQotICAgICAgICA/
IGRvY3VtZW50LT5uZXh0Rm9jdXNhYmxlTm9kZShjdXJyZW50Tm9kZSwgZXZlbnQpCi0gICAgICAg
IDogZG9jdW1lbnQtPnByZXZpb3VzRm9jdXNhYmxlTm9kZShjdXJyZW50Tm9kZSwgZXZlbnQpOwor
ICAgICAgICA/IG5leHRGb2N1c2FibGVOb2RlKGRvY3VtZW50LCBjdXJyZW50Tm9kZSwgZXZlbnQp
CisgICAgICAgIDogcHJldmlvdXNGb2N1c2FibGVOb2RlKGRvY3VtZW50LCBjdXJyZW50Tm9kZSwg
ZXZlbnQpOwogICAgICAgICAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBubyBmb2N1c2FibGUgbm9k
ZSB0byBhZHZhbmNlIHRvLCBtb3ZlIHVwIHRoZSBmcmFtZSB0cmVlIHVudGlsIHdlIGZpbmQgb25l
LgogICAgIHdoaWxlICghbm9kZSAmJiBmcmFtZSkgewpAQCAtMjMxLDggKzIzMSw4IEBAIGJvb2wg
Rm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBLZXliCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBub2RlID0g
KGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpCi0gICAgICAgICAgICA/IHBhcmVu
dERvY3VtZW50LT5uZXh0Rm9jdXNhYmxlTm9kZShvd25lciwgZXZlbnQpCi0gICAgICAgICAgICA6
IHBhcmVudERvY3VtZW50LT5wcmV2aW91c0ZvY3VzYWJsZU5vZGUob3duZXIsIGV2ZW50KTsKKyAg
ICAgICAgICAgID8gbmV4dEZvY3VzYWJsZU5vZGUocGFyZW50RG9jdW1lbnQsIG93bmVyLCBldmVu
dCkKKyAgICAgICAgICAgIDogcHJldmlvdXNGb2N1c2FibGVOb2RlKHBhcmVudERvY3VtZW50LCBv
d25lciwgZXZlbnQpOwogCiAgICAgICAgIGZyYW1lID0gcGFyZW50RnJhbWU7CiAgICAgfQpAQCAt
MjUxLDggKzI1MSw4IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3Vt
ZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgICAgIC8vIENocm9t
ZSBkb2Vzbid0IHdhbnQgZm9jdXMsIHNvIHdlIHNob3VsZCB3cmFwIGZvY3VzLgogICAgICAgICBE
b2N1bWVudCogZCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgICAgIG5v
ZGUgPSAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCkKLSAgICAgICAgICAgID8g
ZC0+bmV4dEZvY3VzYWJsZU5vZGUoMCwgZXZlbnQpCi0gICAgICAgICAgICA6IGQtPnByZXZpb3Vz
Rm9jdXNhYmxlTm9kZSgwLCBldmVudCk7CisgICAgICAgICAgICA/IG5leHRGb2N1c2FibGVOb2Rl
KGQsIDAsIGV2ZW50KQorICAgICAgICAgICAgOiBwcmV2aW91c0ZvY3VzYWJsZU5vZGUoZCwgMCwg
ZXZlbnQpOwogCiAgICAgICAgIG5vZGUgPSBkZWVwRm9jdXNhYmxlTm9kZShkaXJlY3Rpb24sIG5v
ZGUsIGV2ZW50KTsKIApAQCAtMzA2LDYgKzMwNiwxMTggQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6
OmFkdmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtl
eWIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIE5vZGUqIG5leHROb2RlV2l0aEV4YWN0
VGFiSW5kZXgoTm9kZSogc3RhcnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQp
Cit7CisgICAgLy8gU2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAorICAgIGZvciAoTm9kZSog
biA9IHN0YXJ0OyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKQorICAgICAgICBpZiAobi0+
aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgJiYgbi0+dGFiSW5kZXgoKSA9PSB0YWJJbmRleCkK
KyAgICAgICAgICAgIHJldHVybiBuOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2Rl
KiBwcmV2aW91c05vZGVXaXRoRXhhY3RUYWJJbmRleChOb2RlKiBzdGFydCwgaW50IHRhYkluZGV4
LCBLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9m
IHN0YXJ0CisgICAgZm9yIChOb2RlKiBuID0gc3RhcnQ7IG47IG4gPSBuLT50cmF2ZXJzZVByZXZp
b3VzTm9kZSgpKQorICAgICAgICBpZiAobi0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgJiYg
bi0+dGFiSW5kZXgoKSA9PSB0YWJJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBuOworCisgICAg
cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBuZXh0Tm9kZVdpdGhHcmVhdGVyVGFiSW5kZXgo
Tm9kZSogc3RhcnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAg
Ly8gU2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAorICAgIGludCB3aW5uaW5nVGFiSW5kZXgg
PSBTSFJUX01BWCArIDE7CisgICAgTm9kZSogd2lubmVyID0gMDsKKyAgICBmb3IgKE5vZGUqIG4g
PSBzdGFydDsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSkKKyAgICAgICAgaWYgKG4tPmlz
S2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpICYmIG4tPnRhYkluZGV4KCkgPiB0YWJJbmRleCAmJiBu
LT50YWJJbmRleCgpIDwgd2lubmluZ1RhYkluZGV4KSB7CisgICAgICAgICAgICB3aW5uZXIgPSBu
OworICAgICAgICAgICAgd2lubmluZ1RhYkluZGV4ID0gbi0+dGFiSW5kZXgoKTsKKyAgICAgICAg
fQorCisgICAgcmV0dXJuIHdpbm5lcjsKK30KKworc3RhdGljIE5vZGUqIHByZXZpb3VzTm9kZVdp
dGhMb3dlclRhYkluZGV4KE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQq
IGV2ZW50KQoreworICAgIC8vIFNlYXJjaCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKKyAgICBpbnQg
d2lubmluZ1RhYkluZGV4ID0gMDsKKyAgICBOb2RlKiB3aW5uZXIgPSAwOworICAgIGZvciAoTm9k
ZSogbiA9IHN0YXJ0OyBuOyBuID0gbi0+dHJhdmVyc2VQcmV2aW91c05vZGUoKSkKKyAgICAgICAg
aWYgKG4tPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpICYmIG4tPnRhYkluZGV4KCkgPCB0YWJJ
bmRleCAmJiBuLT50YWJJbmRleCgpID4gd2lubmluZ1RhYkluZGV4KSB7CisgICAgICAgICAgICB3
aW5uZXIgPSBuOworICAgICAgICAgICAgd2lubmluZ1RhYkluZGV4ID0gbi0+dGFiSW5kZXgoKTsK
KyAgICAgICAgfQorCisgICAgcmV0dXJuIHdpbm5lcjsKK30KKworTm9kZSogRm9jdXNDb250cm9s
bGVyOjpuZXh0Rm9jdXNhYmxlTm9kZShUcmVlU2NvcGUqIHdpdGhpbiwgTm9kZSogc3RhcnQsIEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChzdGFydCkgeworICAgICAgICAvLyBJZiBh
IG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBuZXh0
IGZvY3VzYWJsZSBub2RlIGlzIGRldGVybWluZWQgYnkgdHJlZSBvcmRlcgorICAgICAgICBpZiAo
c3RhcnQtPnRhYkluZGV4KCkgPCAwKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIG4gPSBzdGFy
dC0+dHJhdmVyc2VOZXh0Tm9kZSgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKQorICAg
ICAgICAgICAgICAgIGlmIChuLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBuLT50YWJJ
bmRleCgpID49IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgYSBub2RlIHdpdGggdGhlIHNhbWUgdGFiaW5k
ZXggYXMgc3RhcnQgdGhhdCBjb21lcyBhZnRlciBzdGFydCBpbiB0aGUgdHJlZSBzY29wZS4KKyAg
ICAgICAgaWYgKE5vZGUqIHdpbm5lciA9IG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgoc3RhcnQt
PnRyYXZlcnNlTmV4dE5vZGUoKSwgc3RhcnQtPnRhYkluZGV4KCksIGV2ZW50KSkKKyAgICAgICAg
ICAgIHJldHVybiB3aW5uZXI7CisKKyAgICAgICAgaWYgKCFzdGFydC0+dGFiSW5kZXgoKSkKKyAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgZG9jdW1lbnQg
d2l0aCBhIHRhYmluZGV4IG9mIDAuIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgdGFiYmluZyBvcmRl
ci4KKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIExvb2sgZm9yIHRoZSBm
aXJzdCBub2RlIGluIHRoZSB0cmVlIHNjb3BlIHRoYXQ6CisgICAgLy8gMSkgaGFzIHRoZSBsb3dl
c3QgdGFiaW5kZXggdGhhdCBpcyBoaWdoZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4IChvciAwLCBp
ZiBzdGFydCBpcyBudWxsKSwgYW5kCisgICAgLy8gMikgY29tZXMgZmlyc3QgaW4gdGhlIHRyZWUg
c2NvcGUsIGlmIHRoZXJlJ3MgYSB0aWUuCisgICAgaWYgKE5vZGUqIHdpbm5lciA9IG5leHROb2Rl
V2l0aEdyZWF0ZXJUYWJJbmRleCh3aXRoaW4sIHN0YXJ0ID8gc3RhcnQtPnRhYkluZGV4KCkgOiAw
LCBldmVudCkpCisgICAgICAgIHJldHVybiB3aW5uZXI7CisKKyAgICAvLyBUaGVyZSBhcmUgbm8g
bm9kZXMgd2l0aCBhIHRhYmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4LAorICAg
IC8vIHNvIGZpbmQgdGhlIGZpcnN0IG5vZGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCisgICAgcmV0
dXJuIG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgod2l0aGluLCAwLCBldmVudCk7Cit9CisKK05v
ZGUqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVOb2RlKFRyZWVTY29wZSogd2l0
aGluLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgTm9kZSogbGFz
dDsKKyAgICBmb3IgKGxhc3QgPSB3aXRoaW47IGxhc3QtPmxhc3RDaGlsZCgpOyBsYXN0ID0gbGFz
dC0+bGFzdENoaWxkKCkpIHsgfQorCisgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGxhc3Qg
bm9kZSBpbiB0aGUgdHJlZSBzY29wZSB0aGF0IGNvbWVzIGJlZm9yZSBzdGFydCBhbmQgaGFzIHRo
ZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0LgorICAgIC8vIElmIHN0YXJ0IGlzIG51bGwsIGZpbmQg
dGhlIGxhc3Qgbm9kZSBpbiB0aGUgdHJlZSBzY29wZSB3aXRoIGEgdGFiaW5kZXggb2YgMC4KKyAg
ICBOb2RlKiBzdGFydGluZ05vZGU7CisgICAgaW50IHN0YXJ0aW5nVGFiSW5kZXg7CisgICAgaWYg
KHN0YXJ0KSB7CisgICAgICAgIHN0YXJ0aW5nTm9kZSA9IHN0YXJ0LT50cmF2ZXJzZVByZXZpb3Vz
Tm9kZSgpOworICAgICAgICBzdGFydGluZ1RhYkluZGV4ID0gc3RhcnQtPnRhYkluZGV4KCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc3RhcnRpbmdOb2RlID0gbGFzdDsKKyAgICAgICAgc3RhcnRp
bmdUYWJJbmRleCA9IDA7CisgICAgfQorCisgICAgLy8gSG93ZXZlciwgaWYgYSBub2RlIGlzIGV4
Y2x1ZGVkIGZyb20gdGhlIG5vcm1hbCB0YWJiaW5nIGN5Y2xlLCB0aGUgcHJldmlvdXMgZm9jdXNh
YmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9yZGVyCisgICAgaWYgKHN0YXJ0aW5nVGFi
SW5kZXggPCAwKSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0aW5nTm9kZTsgbjsgbiA9
IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlKCkpCisgICAgICAgICAgICBpZiAobi0+aXNLZXlib2Fy
ZEZvY3VzYWJsZShldmVudCkgJiYgbi0+dGFiSW5kZXgoKSA+PSAwKQorICAgICAgICAgICAgICAg
IHJldHVybiBuOworICAgIH0KKworICAgIGlmIChOb2RlKiB3aW5uZXIgPSBwcmV2aW91c05vZGVX
aXRoRXhhY3RUYWJJbmRleChzdGFydGluZ05vZGUsIHN0YXJ0aW5nVGFiSW5kZXgsIGV2ZW50KSkK
KyAgICAgICAgcmV0dXJuIHdpbm5lcjsKKworICAgIC8vIFRoZXJlIGFyZSBubyBub2RlcyBiZWZv
cmUgc3RhcnQgd2l0aCB0aGUgc2FtZSB0YWJpbmRleCBhcyBzdGFydCwgc28gbG9vayBmb3IgYSBu
b2RlIHRoYXQ6CisgICAgLy8gMSkgaGFzIHRoZSBoaWdoZXN0IG5vbi16ZXJvIHRhYmluZGV4ICh0
aGF0IGlzIGxlc3MgdGhhbiBzdGFydCdzIHRhYmluZGV4KSwgYW5kCisgICAgLy8gMikgY29tZXMg
bGFzdCBpbiB0aGUgdHJlZSBzY29wZSwgaWYgdGhlcmUncyBhIHRpZS4KKyAgICBzdGFydGluZ1Rh
YkluZGV4ID0gKHN0YXJ0ICYmIHN0YXJ0LT50YWJJbmRleCgpKSA/IHN0YXJ0LT50YWJJbmRleCgp
IDogU0hSVF9NQVg7CisgICAgcmV0dXJuIHByZXZpb3VzTm9kZVdpdGhMb3dlclRhYkluZGV4KGxh
c3QsIHN0YXJ0aW5nVGFiSW5kZXgsIGV2ZW50KTsKK30KKwogc3RhdGljIGJvb2wgcmVsaW5xdWlz
aGVzRWRpdGluZ0ZvY3VzKE5vZGUgKm5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKaW5kZXggZGRkOGRlZWFjYzg4NzQzZjhmMGU2Njlm
YjI5NzM3ODQ3ZTQxZGZjYy4uYTEzNmYzNzUwNmJmNGM3Nzk1MzFlYjM5YjM2M2RiMmQ2Y2I1NWI3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCkBAIC0zOSw2ICszOSw3IEBA
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKIGNsYXNz
IFBhZ2U7CitjbGFzcyBUcmVlU2NvcGU7CiAKIGNsYXNzIEZvY3VzQ29udHJvbGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRm9jdXNDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC02NCw2ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhZHZhbmNlRm9jdXNE
aXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgYm9vbCBh
ZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQq
LCBib29sIGluaXRpYWxGb2N1cyk7CiAKKyAgICBOb2RlKiBkZWVwRm9jdXNhYmxlTm9kZShGb2N1
c0RpcmVjdGlvbiwgTm9kZSosIEtleWJvYXJkRXZlbnQqKTsKKwogICAgIGJvb2wgYWR2YW5jZUZv
Y3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29uc3QgSW50UmVj
dCYgc3RhcnRpbmdSZWN0LCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIHZv
aWQgZmluZEZvY3VzQ2FuZGlkYXRlSW5Db250YWluZXIoTm9kZSogY29udGFpbmVyLCBjb25zdCBJ
bnRSZWN0JiBzdGFydGluZ1JlY3QsIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9j
dXNDYW5kaWRhdGUmIGNsb3Nlc3QpOwogCkBAIC03Miw2ICs3NSwzNCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0FjdGl2ZTsKICAgICBib29sIG1faXNGb2N1c2VkOwogICAgIGJvb2wgbV9pc0No
YW5naW5nRm9jdXNlZEZyYW1lOworCisgICAgLyoqCisgICAgICogU2VhcmNoZXMgdGhyb3VnaCB0
aGUgZG9jdW1lbnQsIHN0YXJ0aW5nIGZyb20gc3RhcnQgbm9kZSwgZm9yIHRoZSBuZXh0IHNlbGVj
dGFibGUgZWxlbWVudCB0aGF0IGNvbWVzIGFmdGVyIHN0YXJ0IG5vZGUuCisgICAgICogVGhlIG9y
ZGVyIGZvbGxvd2VkIGlzIGFzIHNwZWNpZmllZCBpbiBzZWN0aW9uIDE3LjExLjEgb2YgdGhlIEhU
TUw0IHNwZWMsIHdoaWNoIGlzIGVsZW1lbnRzIHdpdGggdGFiIGluZGV4ZXMKKyAgICAgKiBmaXJz
dCAoZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCksIGFuZCB0aGVuIGVsZW1lbnRzIHdpdGhvdXQgdGFi
IGluZGV4ZXMgKGluIGRvY3VtZW50IG9yZGVyKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB3aXRo
aW4gVGhlIHRyZWUgc2NvcGUgd2hlcmUgYSBzZWFyY2ggaXMgZXhlY3V0ZWQuCisgICAgICogQHBh
cmFtIHN0YXJ0IFRoZSBub2RlIGZyb20gd2hpY2ggdG8gc3RhcnQgc2VhcmNoaW5nLiBUaGUgbm9k
ZSBiZWZvcmUgdGhpcyB3aWxsIGJlIGZvY3VzZWQuIE1heSBiZSBudWxsLgorICAgICAqCisgICAg
ICogQHJldHVybiBUaGUgZm9jdXMgbm9kZSB0aGF0IGNvbWVzIGFmdGVyIHN0YXJ0IG5vZGUuCisg
ICAgICoKKyAgICAgKiBTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvaW50ZXJhY3QvZm9y
bXMuaHRtbCNoLTE3LjExLjEKKyAgICAgKi8KKyAgICBOb2RlKiBuZXh0Rm9jdXNhYmxlTm9kZShU
cmVlU2NvcGUqIHdpdGhpbiwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqKTsKKworICAgIC8q
KgorICAgICAqIFNlYXJjaGVzIHRocm91Z2ggdGhlIGRvY3VtZW50LCBzdGFydGluZyBmcm9tIHN0
YXJ0IG5vZGUsIGZvciB0aGUgcHJldmlvdXMgc2VsZWN0YWJsZSBlbGVtZW50IHRoYXQgY29tZXMg
YmVmb3JlIHN0YXJ0IG5vZGUuCisgICAgICogVGhlIG9yZGVyIGZvbGxvd2VkIGlzIGFzIHNwZWNp
ZmllZCBpbiBzZWN0aW9uIDE3LjExLjEgb2YgdGhlIEhUTUw0IHNwZWMsIHdoaWNoIGlzIGVsZW1l
bnRzIHdpdGggdGFiIGluZGV4ZXMKKyAgICAgKiBmaXJzdCAoZnJvbSBsb3dlc3QgdG8gaGlnaGVz
dCksIGFuZCB0aGVuIGVsZW1lbnRzIHdpdGhvdXQgdGFiIGluZGV4ZXMgKGluIGRvY3VtZW50IG9y
ZGVyKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB3aXRoaW4gVGhlIHRyZWUgc2NvcGUgd2hlcmUg
YSBzZWFyY2ggaXMgZXhlY3V0ZWQuCisgICAgICogQHBhcmFtIHN0YXJ0IFRoZSBub2RlIGZyb20g
d2hpY2ggdG8gc3RhcnQgc2VhcmNoaW5nLiBUaGUgbm9kZSBiZWZvcmUgdGhpcyB3aWxsIGJlIGZv
Y3VzZWQuIE1heSBiZSBudWxsLgorICAgICAqCisgICAgICogQHJldHVybiBUaGUgZm9jdXMgbm9k
ZSB0aGF0IGNvbWVzIGJlZm9yZSBzdGFydCBub2RlLgorICAgICAqCisgICAgICogU2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWw0L2ludGVyYWN0L2Zvcm1zLmh0bWwjaC0xNy4xMS4xCisgICAg
ICovCisgICAgTm9kZSogcHJldmlvdXNGb2N1c2FibGVOb2RlKFRyZWVTY29wZSogd2l0aGluLCBO
b2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>
<flag name="review"
          id="89079"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>