<?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>33619</bug_id>
          
          <creation_ts>2010-01-13 12:37:41 -0800</creation_ts>
          <short_desc>Move more of the selection and caret painting code from Frame to SelectionController</short_desc>
          <delta_ts>2010-01-14 12:56:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180344</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-13 12:37:41 -0800</bug_when>
    <thetext>Move more of the selection and caret painting code from Frame to SelectionController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180345</commentid>
    <comment_count>1</comment_count>
      <attachid>46488</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-13 12:38:32 -0800</bug_when>
    <thetext>Created attachment 46488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180368</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 13:05:31 -0800</bug_when>
    <thetext>Attachment 46488 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/184631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180377</commentid>
    <comment_count>3</comment_count>
      <attachid>46488</attachid>
    <who name="">mitz</who>
    <bug_when>2010-01-13 13:22:15 -0800</bug_when>
    <thetext>Comment on attachment 46488
Patch

&gt; +        &quot;layout&quot; is usedfor other purposes in this function.

Typo: “usedfor”

&gt; -    bool m_needsLayout : 1;       // true if the caret and expectedVisible rectangles need to be calculated
&gt; +    bool m_needsLayout; // true if the caret and expectedVisible rectangles need to be calculated

I don’t know what expectedVisible is, in this comment that you’re moving.

r=me but this apparently breaks the Qt build: &lt;https://webkit-commit-queue.appspot.com/results/184631&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180865</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 12:54:36 -0800</bug_when>
    <thetext>Attachment 46488 was posted by a committer and has review+, assigning to Darin Adler for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180868</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-14 12:56:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/53218</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46488</attachid>
            <date>2010-01-13 12:38:32 -0800</date>
            <delta_ts>2010-01-13 13:22:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33619-20100113123831.patch</filename>
            <type>text/plain</type>
            <size>21388</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTAtMDEtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
bW9yZSBvZiB0aGUgc2VsZWN0aW9uIGFuZCBjYXJldCBwYWludGluZyBjb2RlIGZyb20gRnJhbWUg
dG8gU2VsZWN0aW9uQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzNjE5CisKKyAgICAgICAgSGVscGZ1bCBwcmVwYXJhdGlvbiBzdGVw
IGZvciBhIGJ1ZyBmaXggSSBhbSB3b3JraW5nIG9uLgorCisgICAgICAgICogZWRpdGluZy9TZWxl
Y3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xs
ZXI6OlNlbGVjdGlvbkNvbnRyb2xsZXIpOiBJbml0aWFsaXplIG5ldyBkYXRhIG1lbWJlcnMuCisg
ICAgICAgIE5vdGUgdGhhdCBtX2NhcmV0VmlzaWJsZSBzdGFydHMgYXMgdHJ1ZSBmb3IgdGhlIGRy
YWcgY2FyZXQgY29udHJvbGxlciB0byBtYXRjaCB0aGUKKyAgICAgICAgb2xkIGJlaGF2aW9yIGZv
ciBwYWludGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNl
bGVjdGlvbik6IENoYW5nZWQgdG8gY2FsbCBzZWxlY3Rpb25MYXlvdXRDaGFuZ2VkCisgICAgICAg
IGluIGl0cyBuZXcgbmFtZSBhbmQgbG9jYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25Db250cm9sbGVyOjpwYWludENhcmV0KTogQWRkZWQgY2hlY2tzIHRoYXQgd2VyZSBmb3JtZXJs
eSBkb25lCisgICAgICAgIGF0IHRoZSBGcmFtZSBsZXZlbC4gVHdlYWtlZCBmb3JtYXR0aW5nIGFu
ZCBjaGFuZ2VkIHRvIHVzZSBlYXJseSByZXR1cm4gYXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCk6IFVwZGF0
ZWQgZm9yIGNhbGwKKyAgICAgICAgbW92ZWQgaW50byB0aGlzIGNsYXNzLgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6dXBkYXRlQXBwZWFyYW5jZSk6IE1vdmVkIHRoZQor
ICAgICAgICBGcmFtZTo6c2VsZWN0aW9uTGF5b3V0Q2hhbmdlZCBmdW5jdGlvbiBoZXJlLiBIYWQg
dG8gcmVuYW1lIGl0IGJlY2F1c2UgdGhlIHdvcmQKKyAgICAgICAgImxheW91dCIgaXMgdXNlZGZv
ciBvdGhlciBwdXJwb3NlcyBpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uQ29udHJvbGxlcjo6c2V0Q2FyZXRWaXNpYmxlKTogTW92ZWQgaGVyZSBmcm9tIEZyYW1l
LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6Y2xlYXJDYXJldFJlY3RJ
Zk5lZWRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6
Y2FyZXRCbGlua1RpbWVyRmlyZWQpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5oOiBBZGRlZCBuZXcgZnVuY3Rpb25zLiBNb3ZlZCBjb25kaXRpb25hbCBm
dW5jdGlvbgorICAgICAgICBvdXQgb2YgY2xhc3MgZGVmaW5pdGlvbiBmb3IgY2xhcml0eS4gUmVt
b3ZlZCB1bm5lZWRlZCA9PSBhbmQgIT0gb3BlcmF0b3JzLgorICAgICAgICBSZW1vdmVkIHVubmVl
ZGVkIHVzZSBvZiBiaXQgZmllbGRzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6IE1vdmVk
IGZ1bmN0aW9ucyB0byBTZWxlY3Rpb25Db250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OkZyYW1lKTogUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBtb3ZlZCBkYXRhIG1lbWJlcnMu
CisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IFJlbW92ZWQgdGhpbmdzIG1vdmVkIHRvIFNlbGVj
dGlvbkNvbnRyb2xsZXIgYXMgd2VsbCBhcyB1bm5lZWRlZAorICAgICAgICBmb3J3YXJkIGRlY2xh
cmF0aW9uIG9mIFRpbWVyIGNsYXNzIHRlbXBsYXRlLgorCisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOiBVcGRhdGVkIGZv
ciBuZXcgbG9jYXRpb24gb2YgZnVuY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50Q2FyZXQpOiBE
aXR0by4KKwogMjAxMC0wMS0xMyAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBObyByZXZpZXdlci4gIE1vcmUgb3IgbGVzcyBhIGJ1aWxkIGZpeC4gIE15IDUz
MTgwIGJyb2tlIHNvbWUgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA1MzE5NSkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcu
aCIKQEAgLTY0LDEyICs2NSwxNSBAQCBjb25zdCBpbnQgTm9YUG9zRm9yVmVydGljYWxBcnJvd05h
dmlnYXRpCiBTZWxlY3Rpb25Db250cm9sbGVyOjpTZWxlY3Rpb25Db250cm9sbGVyKEZyYW1lKiBm
cmFtZSwgYm9vbCBpc0RyYWdDYXJldENvbnRyb2xsZXIpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQog
ICAgICwgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oTm9YUG9zRm9yVmVydGljYWxB
cnJvd05hdmlnYXRpb24pCisgICAgLCBtX2NhcmV0QmxpbmtUaW1lcih0aGlzLCAmU2VsZWN0aW9u
Q29udHJvbGxlcjo6Y2FyZXRCbGlua1RpbWVyRmlyZWQpCiAgICAgLCBtX25lZWRzTGF5b3V0KHRy
dWUpCiAgICAgLCBtX2Fic0NhcmV0Qm91bmRzRGlydHkodHJ1ZSkKICAgICAsIG1fbGFzdENoYW5n
ZVdhc0hvcml6b250YWxFeHRlbnNpb24oZmFsc2UpCiAgICAgLCBtX2lzRHJhZ0NhcmV0Q29udHJv
bGxlcihpc0RyYWdDYXJldENvbnRyb2xsZXIpCiAgICAgLCBtX2lzQ2FyZXRCbGlua2luZ1N1c3Bl
bmRlZChmYWxzZSkKICAgICAsIG1fZm9jdXNlZChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZy
YW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKSA9PSBmcmFtZSkK
KyAgICAsIG1fY2FyZXRWaXNpYmxlKGlzRHJhZ0NhcmV0Q29udHJvbGxlcikKKyAgICAsIG1fY2Fy
ZXRQYWludCh0cnVlKQogewogfQogCkBAIC0xNDUsNyArMTQ5LDggQEAgdm9pZCBTZWxlY3Rpb25D
b250cm9sbGVyOjpzZXRTZWxlY3Rpb24oYwogICAgIGlmICghcy5pc05vbmUoKSkKICAgICAgICAg
bV9mcmFtZS0+c2V0Rm9jdXNlZE5vZGVJZk5lZWRlZCgpOwogICAgIAotICAgIG1fZnJhbWUtPnNl
bGVjdGlvbkxheW91dENoYW5nZWQoKTsKKyAgICB1cGRhdGVBcHBlYXJhbmNlKCk7CisKICAgICAv
LyBBbHdheXMgY2xlYXIgdGhlIHggcG9zaXRpb24gdXNlZCBmb3IgdmVydGljYWwgYXJyb3cgbmF2
aWdhdGlvbi4KICAgICAvLyBJdCB3aWxsIGJlIHJlc3RvcmVkIGJ5IHRoZSB2ZXJ0aWNhbCBhcnJv
dyBuYXZpZ2F0aW9uIGNvZGUgaWYgbmVjZXNzYXJ5LgogICAgIG1feFBvc0ZvclZlcnRpY2FsQXJy
b3dOYXZpZ2F0aW9uID0gTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb247CkBAIC05ODEs
MjggKzk4NiwzMiBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OmludmFsaWRhdGVDYXJlCiAg
ICAgfQogfQogCi12b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnBhaW50Q2FyZXQoR3JhcGhpY3ND
b250ZXh0KiBwLCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit2b2lk
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OnBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgaWYgKCEg
bV9zZWxlY3Rpb24uaXNDYXJldCgpKQorI2lmIEVOQUJMRShURVhUX0NBUkVUKQorICAgIGlmICgh
bV9jYXJldFZpc2libGUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fY2FyZXRQYWludCkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV9uZWVkc0xheW91dCkKLSAgICAgICAgbGF5b3V0KCk7CiAK
ICAgICBJbnRSZWN0IGRyYXdpbmdSZWN0ID0gbG9jYWxDYXJldFJlY3QoKTsKICAgICBkcmF3aW5n
UmVjdC5tb3ZlKHR4LCB0eSk7CiAgICAgSW50UmVjdCBjYXJldCA9IGludGVyc2VjdGlvbihkcmF3
aW5nUmVjdCwgY2xpcFJlY3QpOwotICAgIGlmICghY2FyZXQuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IENvbG9yIGNhcmV0Q29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgICAgIENvbG9yU3BhY2UgY29s
b3JTcGFjZSA9IERldmljZUNvbG9yU3BhY2U7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBy
b290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGNhcmV0Q29sb3IgPSBlbGVtZW50LT5yZW5kZXJlcigp
LT5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICAgICAgY29sb3JTcGFjZSA9IGVsZW1lbnQtPnJl
bmRlcmVyKCktPnN0eWxlKCktPmNvbG9yU3BhY2UoKTsKLSAgICAgICAgfQorICAgIGlmIChjYXJl
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBwLT5maWxsUmVjdChjYXJl
dCwgY2FyZXRDb2xvciwgY29sb3JTcGFjZSk7CisgICAgQ29sb3IgY2FyZXRDb2xvciA9IENvbG9y
OjpibGFjazsKKyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBEZXZpY2VDb2xvclNwYWNlOwor
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgaWYgKGVs
ZW1lbnQgJiYgZWxlbWVudC0+cmVuZGVyZXIoKSkgeworICAgICAgICBjYXJldENvbG9yID0gZWxl
bWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sb3IoKTsKKyAgICAgICAgY29sb3JTcGFjZSA9
IGVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbG9yU3BhY2UoKTsKICAgICB9CisKKyAg
ICBjb250ZXh0LT5maWxsUmVjdChjYXJldCwgY2FyZXRDb2xvciwgY29sb3JTcGFjZSk7CisjZW5k
aWYKIH0KIAogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9i
amVjdCAqciwgYm9vbCBzZWxlY3RlZCkgY29uc3QKQEAgLTEyNjIsNyArMTI3MSw3IEBAIHZvaWQg
U2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNlZE9yQWN0aXYKICAgICAvLyBDYXJldCBhcHBlYXJz
IGluIHRoZSBhY3RpdmUgZnJhbWUuCiAgICAgaWYgKGFjdGl2ZUFuZEZvY3VzZWQpCiAgICAgICAg
IG1fZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7Ci0gICAgbV9mcmFtZS0+c2V0Q2FyZXRW
aXNpYmxlKGFjdGl2ZUFuZEZvY3VzZWQpOworICAgIHNldENhcmV0VmlzaWJsZShhY3RpdmVBbmRG
b2N1c2VkKTsKIAogICAgIC8vIFVwZGF0ZSBmb3IgY2FwcyBsb2NrIHN0YXRlCiAgICAgbV9mcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwpAQCAtMTMw
MSw2ICsxMzEwLDEwMCBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6OmlzRm9jdXNlZEFuZEFj
CiAgICAgcmV0dXJuIG1fZm9jdXNlZCAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9mcmFtZS0+cGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+aXNBY3RpdmUoKTsKIH0KIAordm9pZCBTZWxlY3Rpb25D
b250cm9sbGVyOjp1cGRhdGVBcHBlYXJhbmNlKCkKK3sKKyAgICBBU1NFUlQoIW1faXNEcmFnQ2Fy
ZXRDb250cm9sbGVyKTsKKworI2lmIEVOQUJMRShURVhUX0NBUkVUKQorICAgIGJvb2wgY2FyZXRS
ZWN0Q2hhbmdlZCA9IHJlY29tcHV0ZUNhcmV0UmVjdCgpOworCisgICAgYm9vbCBjYXJldEJyb3dz
aW5nID0gbV9mcmFtZS0+c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5jYXJldEJy
b3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgc2hvdWxkQmxpbmsgPSBtX2NhcmV0VmlzaWJsZQor
ICAgICAgICAmJiBpc0NhcmV0KCkgJiYgKGlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93
c2luZyk7CisKKyAgICAvLyBJZiB0aGUgY2FyZXQgbW92ZWQsIHN0b3AgdGhlIGJsaW5rIHRpbWVy
IHNvIHdlIGNhbiByZXN0YXJ0IHdpdGggYQorICAgIC8vIGJsYWNrIGNhcmV0IGluIHRoZSBuZXcg
bG9jYXRpb24uCisgICAgaWYgKGNhcmV0UmVjdENoYW5nZWQgfHwgIXNob3VsZEJsaW5rKQorICAg
ICAgICBtX2NhcmV0QmxpbmtUaW1lci5zdG9wKCk7CisKKyAgICAvLyBTdGFydCBibGlua2luZyB3
aXRoIGEgYmxhY2sgY2FyZXQuIEJlIHN1cmUgbm90IHRvIHJlc3RhcnQgaWYgd2UncmUKKyAgICAv
LyBhbHJlYWR5IGJsaW5raW5nIGluIHRoZSByaWdodCBsb2NhdGlvbi4KKyAgICBpZiAoc2hvdWxk
QmxpbmsgJiYgIW1fY2FyZXRCbGlua1RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgaWYgKGRv
dWJsZSBibGlua0ludGVydmFsID0gbV9mcmFtZS0+cGFnZSgpLT50aGVtZSgpLT5jYXJldEJsaW5r
SW50ZXJ2YWwoKSkKKyAgICAgICAgICAgIG1fY2FyZXRCbGlua1RpbWVyLnN0YXJ0UmVwZWF0aW5n
KGJsaW5rSW50ZXJ2YWwpOworCisgICAgICAgIGlmICghbV9jYXJldFBhaW50KSB7CisgICAgICAg
ICAgICBtX2NhcmV0UGFpbnQgPSB0cnVlOworICAgICAgICAgICAgaW52YWxpZGF0ZUNhcmV0UmVj
dCgpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0g
bV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1
cm47CisKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHRoaXMtPnNlbGVjdGlvbigp
OworCisgICAgaWYgKCFzZWxlY3Rpb24uaXNSYW5nZSgpKSB7CisgICAgICAgIHZpZXctPmNsZWFy
U2VsZWN0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBVc2UgdGhlIHJp
Z2h0bW9zdCBjYW5kaWRhdGUgZm9yIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uLCBhbmQgdGhl
IGxlZnRtb3N0IGNhbmRpZGF0ZSBmb3IgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uLgorICAgIC8v
IEV4YW1wbGU6IGZvbyA8YT5iYXI8L2E+LiAgSW1hZ2luZSB0aGF0IGEgbGluZSB3cmFwIG9jY3Vy
cyBhZnRlciAnZm9vJywgYW5kIHRoYXQgJ2JhcicgaXMgc2VsZWN0ZWQuICAgSWYgd2UgcGFzcyBb
Zm9vLCAzXQorICAgIC8vIGFzIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uLCB0aGUgc2VsZWN0
aW9uIHBhaW50aW5nIGNvZGUgd2lsbCB0aGluayB0aGF0IGNvbnRlbnQgb24gdGhlIGxpbmUgY29u
dGFpbmluZyAnZm9vJyBpcyBzZWxlY3RlZAorICAgIC8vIGFuZCB3aWxsIGZpbGwgdGhlIGdhcCBi
ZWZvcmUgJ2JhcicuCisgICAgUG9zaXRpb24gc3RhcnRQb3MgPSBzZWxlY3Rpb24uc3RhcnQoKTsK
KyAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydFBvcy5kb3duc3RyZWFtKCk7CisgICAgaWYg
KGNhbmRpZGF0ZS5pc0NhbmRpZGF0ZSgpKQorICAgICAgICBzdGFydFBvcyA9IGNhbmRpZGF0ZTsK
KyAgICBQb3NpdGlvbiBlbmRQb3MgPSBzZWxlY3Rpb24uZW5kKCk7CisgICAgY2FuZGlkYXRlID0g
ZW5kUG9zLnVwc3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5pc0NhbmRpZGF0ZSgpKQorICAg
ICAgICBlbmRQb3MgPSBjYW5kaWRhdGU7CisKKyAgICAvLyBXZSBjYW4gZ2V0IGludG8gYSBzdGF0
ZSB3aGVyZSB0aGUgc2VsZWN0aW9uIGVuZHBvaW50cyBtYXAgdG8gdGhlIHNhbWUgVmlzaWJsZVBv
c2l0aW9uIHdoZW4gYSBzZWxlY3Rpb24gaXMgZGVsZXRlZAorICAgIC8vIGJlY2F1c2Ugd2UgZG9u
J3QgeWV0IG5vdGlmeSB0aGUgU2VsZWN0aW9uQ29udHJvbGxlciBvZiB0ZXh0IHJlbW92YWwuCisg
ICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgpICYmIGVuZFBvcy5pc05vdE51bGwoKSAmJiBzZWxl
Y3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKSkgeworICAgICAg
ICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydFBvcy5ub2RlKCktPnJlbmRlcmVy
KCk7CisgICAgICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmRQb3Mubm9kZSgpLT5y
ZW5kZXJlcigpOworICAgICAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwgc3Rh
cnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVuZFBvcy5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgU2VsZWN0aW9uQ29udHJv
bGxlcjo6c2V0Q2FyZXRWaXNpYmxlKGJvb2wgZmxhZykKK3sKKyAgICBpZiAobV9jYXJldFZpc2li
bGUgPT0gZmxhZykKKyAgICAgICAgcmV0dXJuOworICAgIGNsZWFyQ2FyZXRSZWN0SWZOZWVkZWQo
KTsKKyAgICBtX2NhcmV0VmlzaWJsZSA9IGZsYWc7CisgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwor
fQorCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OmNsZWFyQ2FyZXRSZWN0SWZOZWVkZWQoKQor
eworI2lmIEVOQUJMRShURVhUX0NBUkVUKQorICAgIGlmICghbV9jYXJldFBhaW50KQorICAgICAg
ICByZXR1cm47CisgICAgbV9jYXJldFBhaW50ID0gZmFsc2U7CisgICAgaW52YWxpZGF0ZUNhcmV0
UmVjdCgpOworI2VuZGlmCit9CisKK3ZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Y2FyZXRCbGlu
a1RpbWVyRmlyZWQoVGltZXI8U2VsZWN0aW9uQ29udHJvbGxlcj4qKQoreworI2lmIEVOQUJMRShU
RVhUX0NBUkVUKQorICAgIEFTU0VSVChtX2NhcmV0VmlzaWJsZSk7CisgICAgQVNTRVJUKGlzQ2Fy
ZXQoKSk7CisgICAgYm9vbCBjYXJldFBhaW50ID0gbV9jYXJldFBhaW50OworICAgIGlmIChpc0Nh
cmV0QmxpbmtpbmdTdXNwZW5kZWQoKSAmJiBjYXJldFBhaW50KQorICAgICAgICByZXR1cm47Cisg
ICAgbV9jYXJldFBhaW50ID0gIWNhcmV0UGFpbnQ7CisgICAgaW52YWxpZGF0ZUNhcmV0UmVjdCgp
OworI2VuZGlmCit9CisKICNpZm5kZWYgTkRFQlVHCiAKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxl
cjo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDUzMTk1
KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIApAQCAtMTEwLDYgKzExMSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IG5vZGVXaWxsQmVSZW1vdmVkKE5vZGUqKTsKIAorICAgIHZvaWQgc2V0Q2FyZXRWaXNpYmxlKGJv
b2wgPSB0cnVlKTsKKyAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0SWZOZWVkZWQoKTsKICAgICBib29s
IHJlY29tcHV0ZUNhcmV0UmVjdCgpOyAvLyByZXR1cm5zIHRydWUgaWYgY2FyZXQgcmVjdCBtb3Zl
ZAogICAgIHZvaWQgaW52YWxpZGF0ZUNhcmV0UmVjdCgpOwogICAgIHZvaWQgcGFpbnRDYXJldChH
cmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
OwpAQCAtMTI0LDYgKzEyNyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRm9jdXNlZEFuZEFjdGl2
ZSgpIGNvbnN0OwogICAgIHZvaWQgcGFnZUFjdGl2YXRpb25DaGFuZ2VkKCk7CiAKKyAgICAvLyBQ
YWludGluZy4KKyAgICB2b2lkIHVwZGF0ZUFwcGVhcmFuY2UoKTsKKwogI2lmbmRlZiBOREVCVUcK
ICAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdDsKICAgICB2b2lkIHNob3dUcmVlRm9yVGhpcygpIGNvbnN0OwpAQCAtMTQ4LDQ0ICsx
NTQsNDIgQEAgcHJpdmF0ZToKIAogICAgIGludCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oRVBvc2l0aW9uVHlwZSk7CiAgICAgCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShH
VEspCiAgICAgdm9pZCBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCk7Ci0j
ZWxzZQotICAgIHZvaWQgbm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgpIHt9
OwotI2VuZGlmCiAKICAgICB2b2lkIGZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCgpOwogICAg
IGJvb2wgY2FyZXRSZW5kZXJzSW5zaWRlTm9kZShOb2RlKikgY29uc3Q7CiAgICAgCiAgICAgSW50
UmVjdCBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAK
KyAgICB2b2lkIGNhcmV0QmxpbmtUaW1lckZpcmVkKFRpbWVyPFNlbGVjdGlvbkNvbnRyb2xsZXI+
Kik7CisKICAgICBGcmFtZSogbV9mcmFtZTsKKwogICAgIGludCBtX3hQb3NGb3JWZXJ0aWNhbEFy
cm93TmF2aWdhdGlvbjsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbV9zZWxlY3Rpb247CiAKLSAg
ICBJbnRSZWN0IG1fY2FyZXRSZWN0OyAgICAgICAgLy8gY2FyZXQgcmVjdCBpbiBjb29yZHMgbG9j
YWwgdG8gdGhlIHJlbmRlcmVyIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyB0aGUgY2FyZXQKLSAg
ICBJbnRSZWN0IG1fYWJzQ2FyZXRCb3VuZHM7ICAgLy8gYWJzb2x1dGUgYm91bmRpbmcgcmVjdCBm
b3IgdGhlIGNhcmV0CisgICAgVGltZXI8U2VsZWN0aW9uQ29udHJvbGxlcj4gbV9jYXJldEJsaW5r
VGltZXI7CisKKyAgICBJbnRSZWN0IG1fY2FyZXRSZWN0OyAvLyBjYXJldCByZWN0IGluIGNvb3Jk
cyBsb2NhbCB0byB0aGUgcmVuZGVyZXIgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIHRoZSBjYXJl
dAorICAgIEludFJlY3QgbV9hYnNDYXJldEJvdW5kczsgLy8gYWJzb2x1dGUgYm91bmRpbmcgcmVj
dCBmb3IgdGhlIGNhcmV0CiAgICAgSW50UmVjdCBtX2Fic29sdXRlQ2FyZXRSZXBhaW50Qm91bmRz
OwogICAgIAotICAgIGJvb2wgbV9uZWVkc0xheW91dCA6IDE7ICAgICAgIC8vIHRydWUgaWYgdGhl
IGNhcmV0IGFuZCBleHBlY3RlZFZpc2libGUgcmVjdGFuZ2xlcyBuZWVkIHRvIGJlIGNhbGN1bGF0
ZWQKLSAgICBib29sIG1fYWJzQ2FyZXRCb3VuZHNEaXJ0eTogMTsKLSAgICBib29sIG1fbGFzdENo
YW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gOiAxOwotICAgIGJvb2wgbV9pc0RyYWdDYXJldENv
bnRyb2xsZXIgOiAxOwotICAgIGJvb2wgbV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQgOiAxOwot
ICAgIGJvb2wgbV9mb2N1c2VkIDogMTsKLQorICAgIGJvb2wgbV9uZWVkc0xheW91dDsgLy8gdHJ1
ZSBpZiB0aGUgY2FyZXQgYW5kIGV4cGVjdGVkVmlzaWJsZSByZWN0YW5nbGVzIG5lZWQgdG8gYmUg
Y2FsY3VsYXRlZAorICAgIGJvb2wgbV9hYnNDYXJldEJvdW5kc0RpcnR5OworICAgIGJvb2wgbV9s
YXN0Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbjsKKyAgICBib29sIG1faXNEcmFnQ2FyZXRD
b250cm9sbGVyOworICAgIGJvb2wgbV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQ7CisgICAgYm9v
bCBtX2ZvY3VzZWQ7CisgICAgYm9vbCBtX2NhcmV0VmlzaWJsZTsKKyAgICBib29sIG1fY2FyZXRQ
YWludDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VsZWN0aW9uQ29udHJv
bGxlciYgYSwgY29uc3QgU2VsZWN0aW9uQ29udHJvbGxlciYgYikKKyNpZiAhKFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oR1RLKSkKK2lubGluZSB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om5v
dGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKQogewotICAgIHJldHVybiBhLnN0
YXJ0KCkgPT0gYi5zdGFydCgpICYmIGEuZW5kKCkgPT0gYi5lbmQoKSAmJiBhLmFmZmluaXR5KCkg
PT0gYi5hZmZpbml0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNlbGVj
dGlvbkNvbnRyb2xsZXImIGEsIGNvbnN0IFNlbGVjdGlvbkNvbnRyb2xsZXImIGIpCi17Ci0gICAg
cmV0dXJuICEoYSA9PSBiKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
SW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAkocmV2aXNpb24gNTMxOTUpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDYgQEAgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2Us
IEhUTUxGcmFtZU93bmVyRQogICAgICwgbV9zY3JpcHQodGhpcykKICAgICAsIG1fc2VsZWN0aW9u
R3JhbnVsYXJpdHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAgICAgLCBtX3NlbGVjdGlvbkNvbnRy
b2xsZXIodGhpcykKLSAgICAsIG1fY2FyZXRCbGlua1RpbWVyKHRoaXMsICZGcmFtZTo6Y2FyZXRC
bGlua1RpbWVyRmlyZWQpCiAgICAgLCBtX2VkaXRvcih0aGlzKQogICAgICwgbV9ldmVudEhhbmRs
ZXIodGhpcykKICAgICAsIG1fYW5pbWF0aW9uQ29udHJvbGxlcih0aGlzKQpAQCAtMTQxLDggKzE0
MCw2IEBAIEZyYW1lOjpGcmFtZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckUKICNpZiBFTkFC
TEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgICwgbV9vcmllbnRhdGlvbigwKQogI2VuZGlmCi0g
ICAgLCBtX2NhcmV0VmlzaWJsZShmYWxzZSkKLSAgICAsIG1fY2FyZXRQYWludCh0cnVlKQogICAg
ICwgbV9oaWdobGlnaHRUZXh0TWF0Y2hlcyhmYWxzZSkKICAgICAsIG1faW5WaWV3U291cmNlTW9k
ZShmYWxzZSkKICAgICAsIG1fbmVlZHNSZWFwcGx5U3R5bGVzKGZhbHNlKQpAQCAtNTU3LDI1ICs1
NTQsNiBAQCB2b2lkIEZyYW1lOjpub3RpZnlSZW5kZXJlck9mU2VsZWN0aW9uQ2hhCiAgICAgICAg
IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIpLT5zZWxlY3Rpb25DaGFuZ2VkKHVzZXJUcmln
Z2VyZWQpOwogfQogCi12b2lkIEZyYW1lOjpzZXRDYXJldFZpc2libGUoYm9vbCBmbGFnKQotewot
ICAgIGlmIChtX2NhcmV0VmlzaWJsZSA9PSBmbGFnKQotICAgICAgICByZXR1cm47Ci0gICAgY2xl
YXJDYXJldFJlY3RJZk5lZWRlZCgpOwotICAgIG1fY2FyZXRWaXNpYmxlID0gZmxhZzsKLSAgICBz
ZWxlY3Rpb25MYXlvdXRDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgRnJhbWU6OmNsZWFyQ2FyZXRSZWN0
SWZOZWVkZWQoKQotewotI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAgIGlmIChtX2NhcmV0UGFp
bnQpIHsKLSAgICAgICAgbV9jYXJldFBhaW50ID0gZmFsc2U7Ci0gICAgICAgIHNlbGVjdGlvbigp
LT5pbnZhbGlkYXRlQ2FyZXRSZWN0KCk7Ci0gICAgfQotI2VuZGlmCi19Ci0KIC8vIEhlbHBlciBm
dW5jdGlvbiB0aGF0IHRlbGxzIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIG5vZGUgaXMgYW4gZWxlbWVu
dCB0aGF0IGhhcyBhbiBlbnRpcmUKIC8vIEZyYW1lIGFuZCBGcmFtZVZpZXcsIGEgPGZyYW1lPiwg
PGlmcmFtZT4sIG9yIDxvYmplY3Q+Lgogc3RhdGljIGJvb2wgaXNGcmFtZUVsZW1lbnQoY29uc3Qg
Tm9kZSAqbikKQEAgLTYyOCw4OSArNjA2LDYgQEAgdm9pZCBGcmFtZTo6c2V0Rm9jdXNlZE5vZGVJ
Zk5lZWRlZCgpCiAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRO
b2RlKDAsIHRoaXMpOwogfQogCi12b2lkIEZyYW1lOjpzZWxlY3Rpb25MYXlvdXRDaGFuZ2VkKCkK
LXsKLSAgICBib29sIGNhcmV0UmVjdENoYW5nZWQgPSBzZWxlY3Rpb24oKS0+cmVjb21wdXRlQ2Fy
ZXRSZWN0KCk7Ci0KLSNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKLSAgICBib29sIGNhcmV0QnJvd3Np
bmcgPSBzZXR0aW5ncygpICYmIHNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0g
ICAgYm9vbCBzaG91bGRCbGluayA9IG1fY2FyZXRWaXNpYmxlCi0gICAgICAgICYmIHNlbGVjdGlv
bigpLT5pc0NhcmV0KCkgJiYgKHNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNh
cmV0QnJvd3NpbmcpOwotCi0gICAgLy8gSWYgdGhlIGNhcmV0IG1vdmVkLCBzdG9wIHRoZSBibGlu
ayB0aW1lciBzbyB3ZSBjYW4gcmVzdGFydCB3aXRoIGEKLSAgICAvLyBibGFjayBjYXJldCBpbiB0
aGUgbmV3IGxvY2F0aW9uLgotICAgIGlmIChjYXJldFJlY3RDaGFuZ2VkIHx8ICFzaG91bGRCbGlu
aykKLSAgICAgICAgbV9jYXJldEJsaW5rVGltZXIuc3RvcCgpOwotCi0gICAgLy8gU3RhcnQgYmxp
bmtpbmcgd2l0aCBhIGJsYWNrIGNhcmV0LiBCZSBzdXJlIG5vdCB0byByZXN0YXJ0IGlmIHdlJ3Jl
Ci0gICAgLy8gYWxyZWFkeSBibGlua2luZyBpbiB0aGUgcmlnaHQgbG9jYXRpb24uCi0gICAgaWYg
KHNob3VsZEJsaW5rICYmICFtX2NhcmV0QmxpbmtUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAg
IGlmIChkb3VibGUgYmxpbmtJbnRlcnZhbCA9IHBhZ2UoKS0+dGhlbWUoKS0+Y2FyZXRCbGlua0lu
dGVydmFsKCkpCi0gICAgICAgICAgICBtX2NhcmV0QmxpbmtUaW1lci5zdGFydFJlcGVhdGluZyhi
bGlua0ludGVydmFsKTsKLQotICAgICAgICBpZiAoIW1fY2FyZXRQYWludCkgewotICAgICAgICAg
ICAgbV9jYXJldFBhaW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIHNlbGVjdGlvbigpLT5pbnZhbGlk
YXRlQ2FyZXRSZWN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIGlmICghY2FyZXRS
ZWN0Q2hhbmdlZCkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBSZW5kZXJWaWV3KiB2
aWV3ID0gY29udGVudFJlbmRlcmVyKCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHRoaXMtPnNlbGVjdGlvbigpLT5z
ZWxlY3Rpb24oKTsKLQotICAgIGlmICghc2VsZWN0aW9uLmlzUmFuZ2UoKSkKLSAgICAgICAgdmll
dy0+Y2xlYXJTZWxlY3Rpb24oKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gVXNlIHRoZSByaWdo
dG1vc3QgY2FuZGlkYXRlIGZvciB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbiwgYW5kIHRoZSBs
ZWZ0bW9zdCBjYW5kaWRhdGUgZm9yIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbi4KLSAgICAgICAg
Ly8gRXhhbXBsZTogZm9vIDxhPmJhcjwvYT4uICBJbWFnaW5lIHRoYXQgYSBsaW5lIHdyYXAgb2Nj
dXJzIGFmdGVyICdmb28nLCBhbmQgdGhhdCAnYmFyJyBpcyBzZWxlY3RlZC4gICBJZiB3ZSBwYXNz
IFtmb28sIDNdCi0gICAgICAgIC8vIGFzIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uLCB0aGUg
c2VsZWN0aW9uIHBhaW50aW5nIGNvZGUgd2lsbCB0aGluayB0aGF0IGNvbnRlbnQgb24gdGhlIGxp
bmUgY29udGFpbmluZyAnZm9vJyBpcyBzZWxlY3RlZAotICAgICAgICAvLyBhbmQgd2lsbCBmaWxs
IHRoZSBnYXAgYmVmb3JlICdiYXInLgotICAgICAgICBQb3NpdGlvbiBzdGFydFBvcyA9IHNlbGVj
dGlvbi5zdGFydCgpOwotICAgICAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydFBvcy5kb3du
c3RyZWFtKCk7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUuaXNDYW5kaWRhdGUoKSkKLSAgICAgICAg
ICAgIHN0YXJ0UG9zID0gY2FuZGlkYXRlOwotICAgICAgICBQb3NpdGlvbiBlbmRQb3MgPSBzZWxl
Y3Rpb24uZW5kKCk7Ci0gICAgICAgIGNhbmRpZGF0ZSA9IGVuZFBvcy51cHN0cmVhbSgpOwotICAg
ICAgICBpZiAoY2FuZGlkYXRlLmlzQ2FuZGlkYXRlKCkpCi0gICAgICAgICAgICBlbmRQb3MgPSBj
YW5kaWRhdGU7Ci0KLSAgICAgICAgLy8gV2UgY2FuIGdldCBpbnRvIGEgc3RhdGUgd2hlcmUgdGhl
IHNlbGVjdGlvbiBlbmRwb2ludHMgbWFwIHRvIHRoZSBzYW1lIFZpc2libGVQb3NpdGlvbiB3aGVu
IGEgc2VsZWN0aW9uIGlzIGRlbGV0ZWQKLSAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB5ZXQg
bm90aWZ5IHRoZSBTZWxlY3Rpb25Db250cm9sbGVyIG9mIHRleHQgcmVtb3ZhbC4KLSAgICAgICAg
aWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgpICYmIGVuZFBvcy5pc05vdE51bGwoKSAmJiBzZWxlY3Rp
b24udmlzaWJsZVN0YXJ0KCkgIT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKSkgewotICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0ICpzdGFydFJlbmRlcmVyID0gc3RhcnRQb3Mubm9kZSgpLT5yZW5kZXJl
cigpOwotICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICplbmRSZW5kZXJlciA9IGVuZFBvcy5ub2Rl
KCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5k
ZXJlciwgc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVu
ZFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBGcmFtZTo6Y2FyZXRCbGlua1RpbWVyRmlyZWQoVGltZXI8RnJhbWU+KikKLXsKLSNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKLSAgICBBU1NFUlQobV9jYXJldFZpc2libGUpOwotICAgIEFTU0VS
VChzZWxlY3Rpb24oKS0+aXNDYXJldCgpKTsKLSAgICBib29sIGNhcmV0UGFpbnQgPSBtX2NhcmV0
UGFpbnQ7Ci0gICAgaWYgKHNlbGVjdGlvbigpLT5pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQoKSAm
JiBjYXJldFBhaW50KQotICAgICAgICByZXR1cm47Ci0gICAgbV9jYXJldFBhaW50ID0gIWNhcmV0
UGFpbnQ7Ci0gICAgc2VsZWN0aW9uKCktPmludmFsaWRhdGVDYXJldFJlY3QoKTsKLSNlbmRpZgot
fQotCi12b2lkIEZyYW1lOjpwYWludENhcmV0KEdyYXBoaWNzQ29udGV4dCogcCwgaW50IHR4LCBp
bnQgdHksIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBjb25zdAotewotI2lmIEVOQUJMRShURVhU
X0NBUkVUKQotICAgIGlmIChtX2NhcmV0UGFpbnQgJiYgbV9jYXJldFZpc2libGUpCi0gICAgICAg
IHNlbGVjdGlvbigpLT5wYWludENhcmV0KHAsIHR4LCB0eSwgY2xpcFJlY3QpOwotI2VuZGlmCi19
Ci0KIHZvaWQgRnJhbWU6OnBhaW50RHJhZ0NhcmV0KEdyYXBoaWNzQ29udGV4dCogcCwgaW50IHR4
LCBpbnQgdHksIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBjb25zdAogewogI2lmIEVOQUJMRShU
RVhUX0NBUkVUKQpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDUzMTk1KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEhUTUxUYWJsZUNlbGxFbGVtZW50OwogICAgIGNsYXNzIFJlZ3VsYXJFeHByZXNz
aW9uOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRpbWVyOwotCiAgICAgY2xh
c3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxGcmFtZT4gewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCkKQEAg
LTIzNiwxMyArMjM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgc2hv
dWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBjb25zdDsKICAgICAg
ICAgYm9vbCBzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGNv
bnN0OwotICAgICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0SWZOZWVkZWQoKTsKICAgICAgICAgdm9p
ZCBzZXRGb2N1c2VkTm9kZUlmTmVlZGVkKCk7Ci0gICAgICAgIHZvaWQgc2VsZWN0aW9uTGF5b3V0
Q2hhbmdlZCgpOwogICAgICAgICB2b2lkIG5vdGlmeVJlbmRlcmVyT2ZTZWxlY3Rpb25DaGFuZ2Uo
Ym9vbCB1c2VyVHJpZ2dlcmVkKTsKIAotICAgICAgICB2b2lkIHNldENhcmV0VmlzaWJsZShib29s
ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRleHQqLCBpbnQg
dHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIGNvbnN0OwogICAgICAgICB2b2lk
IHBhaW50RHJhZ0NhcmV0KEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5LCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJs
ZSgpIGNvbnN0OyAvLyBpZiB0cnVlLCBldmVyeXRoaW5nIGluIGZyYW1lIGlzIGVkaXRhYmxlCkBA
IC0yNjQsMTAgKzI1OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnkoYm9vbCk7CiAKLSAgICBwcml2YXRlOgotICAgICAgICB2
b2lkIGNhcmV0QmxpbmtUaW1lckZpcmVkKFRpbWVyPEZyYW1lPiopOwotCi0gICAgcHVibGljOgog
ICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyKiBkcmFnQ2FyZXRDb250cm9sbGVyKCkgY29uc3Q7
CiAKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChSZWd1bGFyRXhwcmVz
c2lvbiosIEhUTUxUYWJsZUNlbGxFbGVtZW50Kik7CkBAIC0zMzcsNyArMzI3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIG11dGFibGUgU2VsZWN0aW9uQ29udHJvbGxlciBtX3Nl
bGVjdGlvbkNvbnRyb2xsZXI7CiAgICAgICAgIG11dGFibGUgVmlzaWJsZVNlbGVjdGlvbiBtX21h
cms7Ci0gICAgICAgIFRpbWVyPEZyYW1lPiBtX2NhcmV0QmxpbmtUaW1lcjsKICAgICAgICAgbXV0
YWJsZSBFZGl0b3IgbV9lZGl0b3I7CiAgICAgICAgIG11dGFibGUgRXZlbnRIYW5kbGVyIG1fZXZl
bnRIYW5kbGVyOwogICAgICAgICBtdXRhYmxlIEFuaW1hdGlvbkNvbnRyb2xsZXIgbV9hbmltYXRp
b25Db250cm9sbGVyOwpAQCAtMzQ5LDkgKzMzOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgICAgICBpbnQgbV9vcmllbnRhdGlvbjsK
ICNlbmRpZgotICAgICAgICAKLSAgICAgICAgYm9vbCBtX2NhcmV0VmlzaWJsZTsKLSAgICAgICAg
Ym9vbCBtX2NhcmV0UGFpbnQ7CiAKICAgICAgICAgYm9vbCBtX2hpZ2hsaWdodFRleHRNYXRjaGVz
OwogICAgICAgICBib29sIG1faW5WaWV3U291cmNlTW9kZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShy
ZXZpc2lvbiA1MzE5NSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93
U3VidHJlZQogICAgIG1fbGF5b3V0Um9vdCA9IDA7CiAKICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+c2V0TmVlZHNMYXlvdXQoKTsKLSAgICBtX2ZyYW1lLT5zZWxlY3Rpb25MYXlvdXRDaGFuZ2Vk
KCk7CisgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnVwZGF0ZUFwcGVhcmFuY2UoKTsKICAgIAog
ICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSB0cnVlOwogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiA1MzE5NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3OSw3ICsxNjc5LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6cGFpbnRDYXJldChQYWludEluZm8mIAogICAgICAgICBvZmZzZXRGb3JDb250
ZW50cyh0eCwgdHkpOwogCiAgICAgICAgIGlmICh0eXBlID09IEN1cnNvckNhcmV0KQotICAgICAg
ICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFpbnRDYXJldChwYWludEluZm8uY29udGV4dCwg
dHgsIHR5LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5zZWxlY3Rpb24oKS0+cGFpbnRDYXJldChwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCBwYWlu
dEluZm8ucmVjdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1l
KCktPnBhaW50RHJhZ0NhcmV0KHBhaW50SW5mby5jb250ZXh0LCB0eCwgdHksIHBhaW50SW5mby5y
ZWN0KTsKICAgICB9Cg==
</data>
<flag name="review"
          id="28761"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>