<?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>24740</bug_id>
          
          <creation_ts>2009-03-21 08:22:50 -0700</creation_ts>
          <short_desc>crash in RenderSlider::setPositionFromValue when calling pause() after setting &lt;video&gt; to display: none</short_desc>
          <delta_ts>2009-03-25 07:34:43 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>InRadar</keywords>
          <priority>P1</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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114648</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-21 08:22:50 -0700</bug_when>
    <thetext>The bug here is that RenderSlider::setPositionFromValue calls updateLayout, but that can cause the renderer to be destroyed. It’s not correct for a renderer to ever call updateLayout. That has to be called by the client before calling the renderer. Patch is on its way.

&lt;rdar://problem/6679873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114649</commentid>
    <comment_count>1</comment_count>
      <attachid>28822</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-21 08:30:22 -0700</bug_when>
    <thetext>Created attachment 28822
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114876</commentid>
    <comment_count>2</comment_count>
      <attachid>28874</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-23 16:42:35 -0700</bug_when>
    <thetext>Created attachment 28874
patch -- ready for review but doesn&apos;t have all the regression test updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114947</commentid>
    <comment_count>3</comment_count>
      <attachid>28874</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-24 09:42:42 -0700</bug_when>
    <thetext>Comment on attachment 28874
patch -- ready for review but doesn&apos;t have all the regression test updates

Fix overflowHeight and overflowWidth calculations to be correct as discussed on IRC. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115140</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-25 07:34:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/41972</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28822</attachid>
            <date>2009-03-21 08:30:22 -0700</date>
            <delta_ts>2009-03-23 16:42:35 -0700</delta_ts>
            <desc>test case</desc>
            <filename>DisplayNonePauseTestPatch.txt</filename>
            <type>text/plain</type>
            <size>771</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRpc3BsYXktbm9uZS1jcmFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRpc3BsYXktbm9uZS1jcmFzaC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGlzcGxheS1ub25l
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzx2aWRlbyBjb250cm9s
cz48L3ZpZGVvPgorPHA+VGVzdCB0aGF0IHBhdXNlKCkgYWZ0ZXIgY2hhbmdpbmcgZGlzcGxheSB0
byAibm9uZSIgZG9lc24ndCBjYXVzZSBhIGNyYXNoLjwvcD4KKzxzY3JpcHQgc3JjPSJ2aWRlby10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgdmlkZW8uc3JjID0gImNvbnRlbnQvdGVz
dC5tcDQiOworICAgIHZpZGVvLnBsYXkoKTsKKyAgICB2aWRlby5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworICAgIHZpZGVvLnBhdXNlKCk7CisgICAgZW5kVGVzdCgpOworPC9zY3JpcHQ+CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kaXNwbGF5LW5vbmUtY3Jh
c2guaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKTmFt
ZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28874</attachid>
            <date>2009-03-23 16:42:35 -0700</date>
            <delta_ts>2009-03-24 09:42:42 -0700</delta_ts>
            <desc>patch -- ready for review but doesn&apos;t have all the regression test updates</desc>
            <filename>SliderPatch.txt</filename>
            <type>text/plain</type>
            <size>28437</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTkyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMDktMDMtMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NDc0MDogY3Jhc2ggaW4gUmVuZGVyU2xpZGVyOjpzZXRQb3NpdGlvbkZyb21WYWx1ZSB3aGVuIGNh
bGxpbmcgcGF1c2UoKSBhZnRlciBzZXR0aW5nIDx2aWRlbz4gdG8gZGlzcGxheTogbm9uZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3NDAKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNjY3OTg3MworCisgICAgICAgIEJ1ZyAxMjEwNDogTmF0aXZlIFNs
aWRlcjogV2hlbiB0aGUgdGh1bWIncyBoZWlnaHQgaXMgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFn
ZSwgaXQgaXMgbm90IGNlbnRlcmVkIHByb3Blcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwNAorCisgICAgICAgIFRlc3Q6IG1lZGlhL3ZpZGVv
LWRpc3BsYXktbm9uZS1jcmFzaC5odG1sCisKKyAgICAgICAgVGhlIHByb2JsZW0gaGVyZSB3YXMg
dGhhdCBSZW5kZXJTbGlkZXIgd2FzIHRyeWluZyB0byBwb3NpdGlvbiBpdHMgdGh1bWIgaW4gYSB3
YXkgdGhhdAorICAgICAgICByZXF1aXJlcyBpdCB0byBjYWxsIHVwZGF0ZUxheW91dCBpbnNpZGUg
cmVuZGVyaW5nIGNvZGUuIFRoZSByaWdodCB3YXkgdG8gcG9zaXRpb24gYQorICAgICAgICBjaGls
ZCByZW5kZXJlciBpcyB0byBkbyBsYXlvdXQsIHNvIEkgaGFkIHRvIHdyaXRlIGEgbGF5b3V0IGZ1
bmN0aW9uLiBBbmQgdGhlbiBmaXggYSBmZXcKKyAgICAgICAgb3RoZXIgc21hbGwgcHJvYmxlbXMg
c2hvd24gYnkgdGhlIHNhbWUgdGVzdCBjYXNlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNsaWRlci5jcHA6IE1hZGUgZGVmYXVsdFRyYWNrTGVuZ3RoIGhhdmUgaW50ZXJuYWwgbGlua2Fn
ZS4KKyAgICAgICAgUmVuYW1lZCBIVE1MU2xpZGVyVGh1bWJFbGVtZW50IHRvIFNsaWRlclRodW1i
RWxlbWVudCBiZWNhdXNlIHdlIG9ubHkgdXNlIHRoZSBIVE1MCisgICAgICAgIHByZWZpeCBmb3Ig
cHVibGljIERPTSBjbGFzc2VzLCBub3QgZWxlbWVudHMgdXNlZCBhcyBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzLgorICAgICAgICBNYWRlIFNsaWRlclRodW1iRWxlbWVudCBmdW5jdGlvbiBtZW1iZXJz
IHByaXZhdGUgYW5kIGdvdCByaWQgb2YgdW5uZWVkZWQgZGVmYXVsdAorICAgICAgICBhcmd1bWVu
dCB2YWx1ZSBmb3Igc2hhZG93UGFyZW50LgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyUmFuZ2U6
OlNsaWRlclJhbmdlKTogQWRkZWQuIFBhcnNlcyBwcmVjaXNpb24sIG1heCwgYW5kIG1pbiBhdHRy
aWJ1dGVzLgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyUmFuZ2U6OmNsYW1wVmFsdWUpOiBBZGRl
ZC4gRG9lcyBzdGFuZGFyZCBjbGFtcGluZyBiYXNlZCBvbiB0aGUgYWJvdmUuCisgICAgICAgIChX
ZWJDb3JlOjpTbGlkZXJSYW5nZTo6dmFsdWVGcm9tRWxlbWVudCk6IEFkZGVkLiBSZWFkcyB0aGUg
dmFsdWUgZnJvbSB0aGUgZWxlbWVudCBpbgorICAgICAgICBhIHdheSB0aGF0IGNsYW1wcyB0byB0
aGUgcmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpzbGlkZXJQb3NpdGlvbik6IEFkZGVkLiBDb21w
dXRlcyB0aGUgc2xpZGVyIHBvc2l0aW9uOiBhIGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlNs
aWRlclRodW1iRWxlbWVudDo6U2xpZGVyVGh1bWJFbGVtZW50KTogUmVtb3ZlZCB1bm5lZWRlZCBl
eHBsaWNpdAorICAgICAgICBpbml0aWFsaXphdGlvbiBvZiBtX2luaXRpYWxDbGlja1BvaW50Lgor
ICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KTogQ2FsbCBzZXRWYWx1ZUZvclBvc2l0aW9uIGluc3RlYWQKKyAgICAgICAgb2YgY2FsbGluZyBz
ZXRDdXJyZW50UG9zaXRpb24gYW5kIHZhbHVlQ2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNsaWRlcjo6UmVuZGVyU2xpZGVyKTogUmVtb3ZlIHVubmVlZGVkIGV4cGxpY2l0IGluaXRp
YWxpemF0aW9uIG9mIG1fdGh1bWIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OnN0
eWxlRGlkQ2hhbmdlKTogUmVtb3ZlIHVubmVlZGVkIHNlY29uZCBhcmd1bWVudCB0byBjcmVhdGVU
aHVtYlN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyOjpjcmVhdGVUaHVtYlN0
eWxlKTogUmVtb3ZlIHVubmVlZGVkIHNlY29uZCBhcmd1bWVudC4gR2V0IHJpZCBvZiBjb2RlCisg
ICAgICAgIHNldHRpbmcgdGhlIHBvc2l0aW9uIHRvIHJlbGF0aXZlIGFuZCBzZXR0aW5nIHRoZSBs
ZWZ0IGFuZCB0b3AuIFdlIG5vdyBoYW5kbGUgcG9zaXRpb25pbmcKKyAgICAgICAgaW4gYSBjdXN0
b20gbGF5b3V0IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyOjpsYXlv
dXQpOiBSZXdyb3RlIHRvIGhhbmRsZSBwb3NpdGlvbmluZyBvZiB0aGUgdGh1bWIgYXMgbGF5b3V0
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6IEFk
ZGVkIGNvZGUgdG8gaW1tZWRpYXRlbHkgdXBkYXRlIHRoZSB2YWx1ZQorICAgICAgICBpbiB0aGUg
ZWxlbWVudCBpZiBpdCdzIG91dCBvZiByYW5nZS4gVGhpcyBjbGFtcGluZyB1c2VkIHRvIGJlIGRv
bmUgYXMgYSBzaWRlIGVmZmVjdCBvZgorICAgICAgICBzZXRQb3NpdGlvbkZyb21WYWx1ZS4gQWxz
bywgdGhpcyBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSByZW5kZXJlciwgc28gYXQgc29tZSBw
b2ludAorICAgICAgICBpdCBjb3VsZCBiZSBtb3ZlZCBpbnRvIEhUTUxJbnB1dEVsZW1lbnQuIFJl
bW92ZWQgY2FsbCB0byBzZXRQb3NpdGlvbkZyb21WYWx1ZQorICAgICAgICBhbmQgaW5zdGVhZCBq
dXN0IHJlbHkgb24gdGhlIGNhbGwgdG8gc2V0TmVlZHNMYXlvdXQuIEZpeCB0aGUgc2V0TmVlZHNM
YXlvdXQgY2FsbCB0byBiZQorICAgICAgICBhIG5vcm1hbCBzZXROZWVkc0xheW91dCh0cnVlKSwg
bm90IGEgc2V0TmVlZHNMYXlvdXQodHJ1ZSwgZmFsc2UpLCBiZWNhdXNlIHdlIGRvIHdhbnQKKyAg
ICAgICAgdGhpcyB0byBiZSBwcm9wYWdhdGVkIHRvIHRoZSBwYXJlbnQgLS0gaXQncyBub3QgY2Fs
bGVkIGR1cmluZyBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OnNldFZh
bHVlRm9yUG9zaXRpb24pOiBSZWZhY3RvciB0byB1c2UgdGhlIG5ldyBTbGlkZXJSYW5nZQorICAg
ICAgICBjbGFzcy4gQWxzbyBkb24ndCBjYWxsIHNldEN1cnJlbnRQb3NpdGlvbjsgaW5zdGVhZCBq
dXN0IGNhbGwgc2V0TmVlZHNMYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6
OmN1cnJlbnRQb3NpdGlvbik6IFVzZSB0aGUgYWN0dWFsIHBvc2l0aW9uIG9mIHRoZSByZW5kZXJl
ciByYXRoZXIKKyAgICAgICAgdGhhbiB0aGUgc3R5bGUgdG8gZmluZCB0aGUgcG9zaXRpb247IHRo
YXQgbWVhbnMgdGhpcyBuZWVkcyB0byBiZSBkb25lIGFmdGVyIGxheW91dCBpcyBkb25lLgorICAg
ICAgICBBbHNvIHJlbW92ZWQgdW5uZWVkZWQgcnVudGltZSBjaGVja3MgYW5kIHJlcGxhY2VkIHRo
ZW0gd2l0aCBhc3NlcnRpb25zLCBhZnRlciBjaGVja2luZworICAgICAgICBhbGwgY2FsbGVycyB0
byBzZWUgdGhleSBhbHJlYWR5IGd1YXJhbnRlZSB0aGlzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2xpZGVyOjp0cmFja1NpemUpOiBSZW1vdmVkIHVubmVlZGVkIHJ1bnRpbWUgY2hlY2tzIGFu
ZCByZXBsYWNlZCB0aGVtCisgICAgICAgIHdpdGggYXNzZXJ0aW9ucywgYWZ0ZXIgY2hlY2tpbmcg
YWxsIGNhbGxlcnMgdG8gc2VlIHRoZXkgYWxyZWFkeSBndWFyYW50ZWUgdGhpcy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNsaWRlcjo6aW5EcmFnTW9kZSk6IEFkZGVkIGEgbnVsbCBjaGVjayBm
b3IgbV90aHVtYiBzbyB0aGlzIHdvbid0CisgICAgICAgIGNyYXNoIGlmIGNhbGxlZCBlYXJseSBv
biBhIGJyYW5kIG5ldyBSZW5kZXJTbGlkZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmg6IE1hZGUgYWxsIGZ1bmN0aW9ucyBwcml2YXRlIGV4Y2VwdCBmb3IgZm9yd2FyZEV2
ZW50IGFuZCBpbkRyYWdNb2RlLgorICAgICAgICBSZW5hbWVkIEhUTUxTbGlkZXJUaHVtYkVsZW1l
bnQgdG8gU2xpZGVyVGh1bWJFbGVtZW50IGJlY2F1c2Ugd2Ugb25seSB1c2UgdGhlIEhUTUwKKyAg
ICAgICAgcHJlZml4IGZvciBwdWJsaWMgRE9NIGNsYXNzZXMsIG5vdCBlbGVtZW50cyB1c2VkIGFz
IGltcGxlbWVudGF0aW9uIGRldGFpbHMuIE1hZGUgdGhlCisgICAgICAgIG1vdXNlRXZlbnRJc0lu
VGh1bWIgZnVuY3Rpb24gbm9uLXZpcnR1YWwuIFJlbW92ZWQgdGhlIHJldHVybiB2YWx1ZSBhbmQg
YXJndW1lbnQgZnJvbQorICAgICAgICBzZXRQb3NpdGlvbkZyb21WYWx1ZS4gUmVtb3ZlZCB2YWx1
ZUNoYW5nZWQgYW5kIHNldEN1cnJlbnRQb3NpdGlvbi4gUmVtb3ZlZCB0aGUgb2xkU3R5bGUKKyAg
ICAgICAgYXJndW1lbnQgdG8gY3JlYXRlVGh1bWJTdHlsZSAoc2VlIGFib3ZlKS4gTWFkZSBTbGlk
ZXJUaHVtYkVsZW1lbnQgYSBmcmllbmQgc28gaXQgY2FuIHVzZSBzb21lCisgICAgICAgIHByaXZh
dGUgbWVtYmVyIGZ1bmN0aW9ucy4KKwogMjAwOS0wMy0yMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAkocmV2aXNpb24gNDE5MjEpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAot
LyoqCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIENvbXB1dGVy
LCBJbmMuCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzUsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIHVzaW5nIHN0ZDo6bWluOwpAQCAtNDMsNDAgKzQz
LDk1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotY29uc3QgaW50IGRlZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsKK3N0YXRpYyBjb25zdCBpbnQg
ZGVmYXVsdFRyYWNrTGVuZ3RoID0gMTI5OworCisvLyBGSVhNRTogVGhlIFNsaWRlclJhbmdlIG9w
ZXJhdGlvbnMgYXJlIGVudGlyZWx5IGJhc2VkIG9uIHRoZSBET00sIGFuZCBjb3VsZCBiZSBwdXQg
d2l0aCBIVE1MSW5wdXRFbGVtZW50IGluc3RlYWQgb2YgaGVyZS4KKworc3RydWN0IFNsaWRlclJh
bmdlIHsKKyAgICBib29sIGlzSW50ZWdyYWw7CisgICAgZG91YmxlIG1pbmltdW07CisgICAgZG91
YmxlIG1heGltdW07CisKKyAgICBleHBsaWNpdCBTbGlkZXJSYW5nZShIVE1MSW5wdXRFbGVtZW50
Kik7CisgICAgZG91YmxlIGNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKTsKKyAgICBkb3VibGUgdmFs
dWVGcm9tRWxlbWVudChIVE1MSW5wdXRFbGVtZW50KiwgYm9vbCogd2FzQ2xhbXBlZCA9IDApOwor
fTsKKworU2xpZGVyUmFuZ2U6OlNsaWRlclJhbmdlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgd2F5IHRvIGhhbmRsZSBhbiBpbnRl
Z3JhbCByYW5nZSB3aXRoIG5vbi1pbnRlZ3JhbCBtaW5pbXVtIGFuZCBtYXhpbXVtPworICAgIC8v
IEN1cnJlbnRseSB2YWx1ZXMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgaW50ZWdyYWwgYnV0IGNvdWxk
IGJlIG91dHNpZGUgdGhlIHJhbmdlIGluIHRoYXQgY2FzZS4KKworICAgIGlzSW50ZWdyYWwgPSAh
ZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudC0+Z2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpLCAi
ZmxvYXQiKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHRyZWF0cyBtYXhpbXVtIHN0cmluZ3MgdGhh
dCBjYW4ndCBiZSBwYXJzZWQgYXMgMCwgYnV0IHBlcmhhcHMgMTAwIHdvdWxkIGJlIG1vcmUgYXBw
cm9wcmlhdGUuCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtYXhTdHJpbmcgPSBlbGVtZW50LT5n
ZXRBdHRyaWJ1dGUobWF4QXR0cik7CisgICAgbWF4aW11bSA9IG1heFN0cmluZy5pc051bGwoKSA/
IDEwMC4wIDogbWF4U3RyaW5nLnRvRG91YmxlKCk7CisKKyAgICAvLyBJZiB0aGUgbWF4aW11bSBp
cyBzbWFsbGVyLCB1c2UgaXQgYXMgdGhlIG1pbmltdW0uCisgICAgbWluaW11bSA9IG1pbihlbGVt
ZW50LT5nZXRBdHRyaWJ1dGUobWluQXR0cikudG9Eb3VibGUoKSwgbWF4aW11bSk7Cit9CisKK2Rv
dWJsZSBTbGlkZXJSYW5nZTo6Y2xhbXBWYWx1ZShkb3VibGUgdmFsdWUpCit7CisgICAgZG91Ymxl
IGNsYW1wZWRWYWx1ZSA9IG1heChtaW5pbXVtLCBtaW4odmFsdWUsIG1heGltdW0pKTsKKyAgICBy
ZXR1cm4gaXNJbnRlZ3JhbCA/IHJvdW5kKGNsYW1wZWRWYWx1ZSkgOiBjbGFtcGVkVmFsdWU7Cit9
CiAKLWNsYXNzIEhUTUxTbGlkZXJUaHVtYkVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
eworZG91YmxlIFNsaWRlclJhbmdlOjp2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQq
IGVsZW1lbnQsIGJvb2wqIHdhc0NsYW1wZWQpCit7CisgICAgU3RyaW5nIHZhbHVlU3RyaW5nID0g
ZWxlbWVudC0+dmFsdWUoKTsKKyAgICBkb3VibGUgb2xkVmFsdWUgPSB2YWx1ZVN0cmluZy5pc051
bGwoKSA/IChtaW5pbXVtICsgbWF4aW11bSkgLyAyIDogdmFsdWVTdHJpbmcudG9Eb3VibGUoKTsK
KyAgICBkb3VibGUgbmV3VmFsdWUgPSBjbGFtcFZhbHVlKG9sZFZhbHVlKTsKKworICAgIGlmICh3
YXNDbGFtcGVkKQorICAgICAgICAqd2FzQ2xhbXBlZCA9IHZhbHVlU3RyaW5nLmlzTnVsbCgpIHx8
IG5ld1ZhbHVlICE9IG9sZFZhbHVlOworCisgICAgcmV0dXJuIG5ld1ZhbHVlOworfQorCisvLyBS
ZXR1cm5zIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLgorLy8gQXMgd2l0aCBTbGlkZXJSYW5nZSwg
dGhpcyBjb3VsZCBiZSBvbiBIVE1MSW5wdXRFbGVtZW50IGluc3RlYWQgb2YgaGVyZS4KK3N0YXRp
YyBkb3VibGUgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICBTbGlkZXJSYW5nZSByYW5nZShlbGVtZW50KTsKKyAgICBkb3VibGUgdmFsdWUgPSByYW5nZS52
YWx1ZUZyb21FbGVtZW50KGVsZW1lbnQpOworICAgIHJldHVybiAodmFsdWUgLSByYW5nZS5taW5p
bXVtKSAvIChyYW5nZS5tYXhpbXVtIC0gcmFuZ2UubWluaW11bSk7Cit9CisKK2NsYXNzIFNsaWRl
clRodW1iRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgSFRN
TFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCosIE5vZGUqIHNoYWRvd1BhcmVudCA9IDApOwot
ICAgICAgICAKKyAgICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQqLCBOb2RlKiBzaGFkb3dQ
YXJlbnQpOworICAgIAorICAgIGJvb2wgaW5EcmFnTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5E
cmFnTW9kZTsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKKworcHJpdmF0ZTogICAgICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd05vZGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBOb2RlKiBzaGFkb3dQYXJlbnROb2Rl
KCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7IH0KLSAgICAKLSAgICBib29sIGluRHJhZ01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2luRHJhZ01vZGU7IH0KLXByaXZhdGU6CisKICAgICBOb2RlKiBt
X3NoYWRvd1BhcmVudDsKICAgICBGbG9hdFBvaW50IG1faW5pdGlhbENsaWNrUG9pbnQ7ICAgICAg
IC8vIGluaXRpYWwgY2xpY2sgcG9pbnQgaW4gUmVuZGVyU2xpZGVyLWxvY2FsIGNvb3JkaW5hdGVz
CiAgICAgaW50IG1faW5pdGlhbFBvc2l0aW9uOwogICAgIGJvb2wgbV9pbkRyYWdNb2RlOwogfTsK
IAotSFRNTFNsaWRlclRodW1iRWxlbWVudDo6SFRNTFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVu
dCogZG9jLCBOb2RlKiBzaGFkb3dQYXJlbnQpCi0gICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcs
IGRvYykKK1NsaWRlclRodW1iRWxlbWVudDo6U2xpZGVyVGh1bWJFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCwgTm9kZSogc2hhZG93UGFyZW50KQorICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFn
LCBkb2N1bWVudCkKICAgICAsIG1fc2hhZG93UGFyZW50KHNoYWRvd1BhcmVudCkKLSAgICAsIG1f
aW5pdGlhbENsaWNrUG9pbnQoSW50UG9pbnQoKSkKICAgICAsIG1faW5pdGlhbFBvc2l0aW9uKDAp
CiAgICAgLCBtX2luRHJhZ01vZGUoZmFsc2UpCiB7CiB9CiAKLXZvaWQgSFRNTFNsaWRlclRodW1i
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit2b2lkIFNsaWRlclRo
dW1iRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSBldmVudC0+dHlwZSgpOwogICAgIGlmIChldmVu
dFR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZl
bnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0
QnV0dG9uKSB7CiAgICAgICAgIE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxN
b3VzZUV2ZW50Kj4oZXZlbnQpOwogICAgICAgICBSZW5kZXJTbGlkZXIqIHNsaWRlcjsKLSAgICAg
ICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkgJiYgcmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5w
YXJlbnQoKSAmJgorICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiByZW5kZXJlcigp
ICYmCiAgICAgICAgICAgICAgICAgKHNsaWRlciA9IHN0YXRpY19jYXN0PFJlbmRlclNsaWRlcio+
KHJlbmRlcmVyKCktPnBhcmVudCgpKSkgJiYKICAgICAgICAgICAgICAgICBzbGlkZXItPm1vdXNl
RXZlbnRJc0luVGh1bWIobW91c2VFdmVudCkpIHsKICAgICAgICAgICAgIApAQCAtMTA2LDE1ICsx
NjEsOSBAQCB2b2lkIEhUTUxTbGlkZXJUaHVtYkVsZW1lbnQ6OmRlZmF1bHRFdmVuCiAgICAgICAg
ICAgICBSZW5kZXJTbGlkZXIqIHNsaWRlciA9IHN0YXRpY19jYXN0PFJlbmRlclNsaWRlcio+KHJl
bmRlcmVyKCktPnBhcmVudCgpKTsKIAogICAgICAgICAgICAgRmxvYXRQb2ludCBjdXJQb2ludCA9
IHNsaWRlci0+YWJzb2x1dGVUb0xvY2FsKG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwg
ZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgaW50IG5ld1Bvc2l0aW9uID0gc2xpZGVyLT5wb3Np
dGlvbkZvck9mZnNldCgKLSAgICAgICAgICAgICAgICBJbnRQb2ludChtX2luaXRpYWxQb3NpdGlv
biArIGN1clBvaW50LngoKSAtIG1faW5pdGlhbENsaWNrUG9pbnQueCgpCi0gICAgICAgICAgICAg
ICAgICAgICAgICArIChyZW5kZXJCb3goKS0+d2lkdGgoKSAvIDIpLCAKLSAgICAgICAgICAgICAg
ICAgICAgbV9pbml0aWFsUG9zaXRpb24gKyBjdXJQb2ludC55KCkgLSBtX2luaXRpYWxDbGlja1Bv
aW50LnkoKQotICAgICAgICAgICAgICAgICAgICAgICAgKyAocmVuZGVyQm94KCktPmhlaWdodCgp
IC8gMikpKTsKLSAgICAgICAgICAgIGlmIChzbGlkZXItPmN1cnJlbnRQb3NpdGlvbigpICE9IG5l
d1Bvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgc2xpZGVyLT5zZXRDdXJyZW50UG9zaXRpb24o
bmV3UG9zaXRpb24pOwotICAgICAgICAgICAgICAgIHNsaWRlci0+dmFsdWVDaGFuZ2VkKCk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBJbnRQb2ludCBldmVudE9mZnNldChtX2luaXRpYWxQ
b3NpdGlvbiArIGN1clBvaW50LngoKSAtIG1faW5pdGlhbENsaWNrUG9pbnQueCgpICsgcmVuZGVy
Qm94KCktPndpZHRoKCkgLyAyLCAKKyAgICAgICAgICAgICAgICBtX2luaXRpYWxQb3NpdGlvbiAr
IGN1clBvaW50LnkoKSAtIG1faW5pdGlhbENsaWNrUG9pbnQueSgpICsgcmVuZGVyQm94KCktPmhl
aWdodCgpIC8gMik7CisgICAgICAgICAgICBzbGlkZXItPnNldFZhbHVlRm9yUG9zaXRpb24oc2xp
ZGVyLT5wb3NpdGlvbkZvck9mZnNldChldmVudE9mZnNldCkpOwogICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTEyNSw3ICsxNzQsNiBAQCB2b2lkIEhUTUxTbGlkZXJUaHVtYkVsZW1lbnQ6OmRlZmF1bHRFdmVu
CiAKIFJlbmRlclNsaWRlcjo6UmVuZGVyU2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQotICAgICwgbV90aHVtYigwKQogewogfQogCkBA
IC0xNzMsMTQgKzIyMSwxNCBAQCB2b2lkIFJlbmRlclNsaWRlcjo6Y2FsY1ByZWZXaWR0aHMoKQog
dm9pZCBSZW5kZXJTbGlkZXI6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCiB7CiAgICAgUmVuZGVyQmxvY2s6OnN0eWxlRGlk
Q2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKLSAgICAKKwogICAgIGlmIChtX3RodW1iKQotICAgICAg
ICBtX3RodW1iLT5yZW5kZXJlcigpLT5zZXRTdHlsZShjcmVhdGVUaHVtYlN0eWxlKHN0eWxlKCks
IG1fdGh1bWItPnJlbmRlcmVyKCktPnN0eWxlKCkpKTsKLSAgICAgICAgCisgICAgICAgIG1fdGh1
bWItPnJlbmRlcmVyKCktPnNldFN0eWxlKGNyZWF0ZVRodW1iU3R5bGUoc3R5bGUoKSkpOworCiAg
ICAgc2V0UmVwbGFjZWQoaXNJbmxpbmUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IFJlbmRlclNsaWRlcjo6Y3JlYXRlVGh1bWJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IFJlbmRlclNsaWRlcjo6Y3JlYXRlVGh1bWJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZTsKICAgICBSZW5kZXJT
dHlsZSogcHNldWRvU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShTTElERVJfVEhVTUIpOwpA
QCAtMTk0LDE2ICsyNDIsMTEgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU2xpZGVy
OjpjcgogICAgICAgICBzdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwogCiAgICAgc3R5
bGUtPnNldERpc3BsYXkoQkxPQ0spOwotICAgIHN0eWxlLT5zZXRQb3NpdGlvbihSZWxhdGl2ZVBv
c2l0aW9uKTsKLSAgICBpZiAob2xkU3R5bGUpIHsKLSAgICAgICAgc3R5bGUtPnNldExlZnQob2xk
U3R5bGUtPmxlZnQoKSk7Ci0gICAgICAgIHN0eWxlLT5zZXRUb3Aob2xkU3R5bGUtPnRvcCgpKTsK
LSAgICB9CiAKICAgICBpZiAocGFyZW50U3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0
aWNhbFBhcnQpCi0gICAgICAgc3R5bGUtPnNldEFwcGVhcmFuY2UoU2xpZGVyVGh1bWJWZXJ0aWNh
bFBhcnQpOworICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShTbGlkZXJUaHVtYlZlcnRpY2Fs
UGFydCk7CiAgICAgZWxzZSBpZiAocGFyZW50U3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJI
b3Jpem9udGFsUGFydCkKLSAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShTbGlkZXJUaHVtYkhv
cml6b250YWxQYXJ0KTsKKyAgICAgICAgc3R5bGUtPnNldEFwcGVhcmFuY2UoU2xpZGVyVGh1bWJI
b3Jpem9udGFsUGFydCk7CiAgICAgZWxzZSBpZiAocGFyZW50U3R5bGUtPmFwcGVhcmFuY2UoKSA9
PSBNZWRpYVNsaWRlclBhcnQpCiAgICAgICAgIHN0eWxlLT5zZXRBcHBlYXJhbmNlKE1lZGlhU2xp
ZGVyVGh1bWJQYXJ0KTsKIApAQCAtMjExLDQyICsyNTQsOTUgQEAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gUmVuZGVyU2xpZGVyOjpjcgogfQogCiB2b2lkIFJlbmRlclNsaWRlcjo6bGF5b3V0KCkK
LXsgICAgCi0gICAgYm9vbCByZWxheW91dENoaWxkcmVuID0gZmFsc2U7Ci0gICAgCi0gICAgaWYg
KG1fdGh1bWIgJiYgbV90aHVtYi0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgCi0gICAgICAg
IGludCBvbGRXaWR0aCA9IHdpZHRoKCk7Ci0gICAgICAgIGNhbGNXaWR0aCgpOwotICAgICAgICBp
bnQgb2xkSGVpZ2h0ID0gaGVpZ2h0KCk7Ci0gICAgICAgIGNhbGNIZWlnaHQoKTsKLSAgICAgICAg
Ci0gICAgICAgIGlmIChvbGRXaWR0aCAhPSB3aWR0aCgpIHx8IG9sZEhlaWdodCAhPSBoZWlnaHQo
KSkKLSAgICAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOyAgCi0KLSAgICAgICAgLy8g
QWxsb3cgdGhlIHRoZW1lIHRvIHNldCB0aGUgc2l6ZSBvZiB0aGUgdGh1bWIKLSAgICAgICAgaWYg
KG1fdGh1bWItPnJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAg
ICAgIHRoZW1lKCktPmFkanVzdFNsaWRlclRodW1iU2l6ZShtX3RodW1iLT5yZW5kZXJlcigpKTsK
K3sKKyAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICBSZW5kZXJCb3gqIHRodW1iID0g
bV90aHVtYiA/IHRvUmVuZGVyQm94KG1fdGh1bWItPnJlbmRlcmVyKCkpIDogMDsKKworICAgIElu
dFNpemUgYmFzZVNpemUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdo
dCgpICsgYm9yZGVyUmlnaHQoKSwKKyAgICAgICAgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkg
KyBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSk7CisKKyAgICBpZiAodGh1bWIpIHsK
KyAgICAgICAgLy8gQWxsb3cgdGhlIHRoZW1lIHRvIHNldCB0aGUgc2l6ZSBvZiB0aGUgdGh1bWIu
CisgICAgICAgIGlmICh0aHVtYi0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcGFzcyB0aGUgc3R5bGUsIG5vdCB0aGUgcmVuZGVy
ZXIsIHRvIHRoZSB0aGVtZS4KKyAgICAgICAgICAgIHRoZW1lKCktPmFkanVzdFNsaWRlclRodW1i
U2l6ZSh0aHVtYik7CisgICAgICAgIH0KKworICAgICAgICBiYXNlU2l6ZS5leHBhbmQodGh1bWIt
PnN0eWxlKCktPndpZHRoKCkuY2FsY01pblZhbHVlKDApLCB0aHVtYi0+c3R5bGUoKS0+aGVpZ2h0
KCkuY2FsY01pblZhbHVlKDApKTsKKyAgICB9CisKKyAgICBMYXlvdXRSZXBhaW50ZXIgcmVwYWlu
dGVyKCp0aGlzLCBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSk7CisKKyAgICBJbnRTaXpl
IG9sZFNpemUgPSBzaXplKCk7CisKKyAgICBzZXRTaXplKGJhc2VTaXplKTsKKyAgICBjYWxjV2lk
dGgoKTsKKyAgICBjYWxjSGVpZ2h0KCk7CisKKyAgICBJbnRSZWN0IG92ZXJmbG93UmVjdChJbnRQ
b2ludCgpLCBzaXplKCkpOworCisgICAgaWYgKHRodW1iKSB7CisgICAgICAgIGlmIChvbGRTaXpl
ICE9IHNpemUoKSkKKyAgICAgICAgICAgIHRodW1iLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUs
IGZhbHNlKTsKKworICAgICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmll
dygpLCB0aGlzLCBzaXplKCkpOworCisgICAgICAgIEludFJlY3Qgb2xkVGh1bWJSZWN0ID0gdGh1
bWItPmZyYW1lUmVjdCgpOworCisgICAgICAgIHRodW1iLT5sYXlvdXRJZk5lZWRlZCgpOwogCisg
ICAgICAgIEludFJlY3QgdGh1bWJSZWN0OworCisgICAgICAgIHRodW1iUmVjdC5zZXRXaWR0aCh0
aHVtYi0+c3R5bGUoKS0+d2lkdGgoKS5jYWxjTWluVmFsdWUoY29udGVudFdpZHRoKCkpKTsKKyAg
ICAgICAgdGh1bWJSZWN0LnNldEhlaWdodCh0aHVtYi0+c3R5bGUoKS0+aGVpZ2h0KCkuY2FsY01p
blZhbHVlKGNvbnRlbnRIZWlnaHQoKSkpOworCisgICAgICAgIGRvdWJsZSBmcmFjdGlvbiA9IHNs
aWRlclBvc2l0aW9uKHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpKTsKKyAg
ICAgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CiAgICAgICAgIGlm
IChzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0KSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIHBlcmNlbnRhZ2Ugd2lkdGhzIGNvcnJlY3RseS4gU2VlIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTA0Ci0gICAgICAgICAgICBt
X3RodW1iLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5zZXRMZWZ0KExlbmd0aChjb250ZW50V2lkdGgo
KSAvIDIgLSBtX3RodW1iLT5yZW5kZXJlcigpLT5zdHlsZSgpLT53aWR0aCgpLnZhbHVlKCkgLyAy
LCBGaXhlZCkpOworICAgICAgICAgICAgdGh1bWJSZWN0LnNldFgoY29udGVudFJlY3QueCgpICsg
KGNvbnRlbnRSZWN0LndpZHRoKCkgLSB0aHVtYlJlY3Qud2lkdGgoKSkgLyAyKTsKKyAgICAgICAg
ICAgIHRodW1iUmVjdC5zZXRZKGNvbnRlbnRSZWN0LnkoKSArIChjb250ZW50UmVjdC5oZWlnaHQo
KSAtIHRodW1iUmVjdC5oZWlnaHQoKSkgKiAoMSAtIGZyYWN0aW9uKSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHBlcmNlbnRhZ2UgaGVpZ2h0cyBjb3Jy
ZWN0bHkuIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwNAot
ICAgICAgICAgICAgbV90aHVtYi0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+c2V0VG9wKExlbmd0aChj
b250ZW50SGVpZ2h0KCkgLyAyIC0gbV90aHVtYi0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGVpZ2h0
KCkudmFsdWUoKSAvIDIsIEZpeGVkKSk7CisgICAgICAgICAgICB0aHVtYlJlY3Quc2V0WChjb250
ZW50UmVjdC54KCkgKyAoY29udGVudFJlY3Qud2lkdGgoKSAtIHRodW1iUmVjdC53aWR0aCgpKSAq
IGZyYWN0aW9uKTsKKyAgICAgICAgICAgIHRodW1iUmVjdC5zZXRZKGNvbnRlbnRSZWN0LnkoKSAr
IChjb250ZW50UmVjdC5oZWlnaHQoKSAtIHRodW1iUmVjdC5oZWlnaHQoKSkgLyAyKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChyZWxheW91dENoaWxkcmVuKQotICAgICAgICAgICAgc2V0UG9z
aXRpb25Gcm9tVmFsdWUodHJ1ZSk7CisgICAgICAgIHRodW1iLT5zZXRGcmFtZVJlY3QodGh1bWJS
ZWN0KTsKKworICAgICAgICBpZiAodGh1bWItPmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgp
KQorICAgICAgICAgICAgdGh1bWItPnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKG9sZFRodW1i
UmVjdCk7CisKKyAgICAgICAgc3RhdGVQdXNoZXIucG9wKCk7CisKKyAgICAgICAgSW50UmVjdCB0
aHVtYk92ZXJmbG93UmVjdCA9IHRodW1iLT5vdmVyZmxvd1JlY3QoKTsKKyAgICAgICAgdGh1bWJP
dmVyZmxvd1JlY3QubW92ZSh0aHVtYi0+eCgpLCB0aHVtYi0+eSgpKTsKKyAgICAgICAgb3ZlcmZs
b3dSZWN0LnVuaXRlKHRodW1iT3ZlcmZsb3dSZWN0KTsKICAgICB9CiAKLSAgICBSZW5kZXJCbG9j
azo6bGF5b3V0QmxvY2socmVsYXlvdXRDaGlsZHJlbik7CisgICAgbV9vdmVyZmxvd0hlaWdodCA9
IG92ZXJmbG93UmVjdC5oZWlnaHQoKTsKKyAgICBtX292ZXJmbG93V2lkdGggPSBvdmVyZmxvd1Jl
Y3Qud2lkdGgoKTsKKyAgICBtX292ZXJmbG93TGVmdCA9IG92ZXJmbG93UmVjdC54KCk7CisgICAg
bV9vdmVyZmxvd1RvcCA9IG92ZXJmbG93UmVjdC55KCk7CisKKyAgICByZXBhaW50ZXIucmVwYWlu
dEFmdGVyTGF5b3V0KCk7ICAgIAorCisgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCiB2
b2lkIFJlbmRlclNsaWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogeworICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsK
KworICAgIC8vIFNlbmQgdGhlIHZhbHVlIGJhY2sgdG8gdGhlIGVsZW1lbnQgaWYgdGhlIHJhbmdl
IGNoYW5nZXMgaXQuCisgICAgU2xpZGVyUmFuZ2UgcmFuZ2UoZWxlbWVudCk7CisgICAgYm9vbCBj
bGFtcGVkOworICAgIGRvdWJsZSB2YWx1ZSA9IHJhbmdlLnZhbHVlRnJvbUVsZW1lbnQoZWxlbWVu
dCwgJmNsYW1wZWQpOworICAgIGlmIChjbGFtcGVkKQorICAgICAgICBlbGVtZW50LT5zZXRWYWx1
ZUZyb21SZW5kZXJlcihTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworCisgICAgLy8gTGF5b3V0IHdp
bGwgdGFrZSBjYXJlIG9mIHRoZSB0aHVtYidzIHNpemUgYW5kIHBvc2l0aW9uLgogICAgIGlmICgh
bV90aHVtYikgewotICAgICAgICBtX3RodW1iID0gbmV3IEhUTUxTbGlkZXJUaHVtYkVsZW1lbnQo
ZG9jdW1lbnQoKSwgbm9kZSgpKTsKKyAgICAgICAgbV90aHVtYiA9IG5ldyBTbGlkZXJUaHVtYkVs
ZW1lbnQoZG9jdW1lbnQoKSwgbm9kZSgpKTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiB0
aHVtYlN0eWxlID0gY3JlYXRlVGh1bWJTdHlsZShzdHlsZSgpKTsKICAgICAgICAgbV90aHVtYi0+
c2V0UmVuZGVyZXIobV90aHVtYi0+Y3JlYXRlUmVuZGVyZXIocmVuZGVyQXJlbmEoKSwgdGh1bWJT
dHlsZS5nZXQoKSkpOwogICAgICAgICBtX3RodW1iLT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0aHVt
YlN0eWxlLnJlbGVhc2UoKSk7CkBAIC0yNTQsOCArMzUwLDcgQEAgdm9pZCBSZW5kZXJTbGlkZXI6
OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgbV90aHVtYi0+c2V0SW5Eb2N1bWVudCh0cnVl
KTsKICAgICAgICAgYWRkQ2hpbGQobV90aHVtYi0+cmVuZGVyZXIoKSk7CiAgICAgfQotICAgIHNl
dFBvc2l0aW9uRnJvbVZhbHVlKCk7Ci0gICAgc2V0TmVlZHNMYXlvdXQodHJ1ZSwgZmFsc2UpOwor
ICAgIHNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCiBib29sIFJlbmRlclNsaWRlcjo6bW91c2VF
dmVudElzSW5UaHVtYihNb3VzZUV2ZW50KiBldnQpCkBAIC0yNzksNzcgKzM3NCwzMiBAQCB2b2lk
IFJlbmRlclNsaWRlcjo6c2V0VmFsdWVGb3JQb3NpdGlvbihpCiB7CiAgICAgaWYgKCFtX3RodW1i
IHx8ICFtX3RodW1iLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBtaW5TdHIgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
bm9kZSgpKS0+Z2V0QXR0cmlidXRlKG1pbkF0dHIpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bWF4U3RyID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJp
YnV0ZShtYXhBdHRyKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWNpc2lvbiA9IHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpLT5nZXRBdHRyaWJ1dGUocHJlY2lzaW9u
QXR0cik7Ci0gICAgCi0gICAgZG91YmxlIG1pblZhbCA9IG1pblN0ci5pc051bGwoKSA/IDAuMCA6
IG1pblN0ci50b0RvdWJsZSgpOwotICAgIGRvdWJsZSBtYXhWYWwgPSBtYXhTdHIuaXNOdWxsKCkg
PyAxMDAuMCA6IG1heFN0ci50b0RvdWJsZSgpOwotICAgIG1pblZhbCA9IG1pbihtaW5WYWwsIG1h
eFZhbCk7IC8vIE1ha2Ugc3VyZSB0aGUgcmFuZ2UgaXMgc2FuZS4KLSAgICAKLSAgICAvLyBDYWxj
dWxhdGUgdGhlIG5ldyB2YWx1ZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24KLSAgICBkb3VibGUgZmFj
dG9yID0gKGRvdWJsZSlwb3NpdGlvbiAvIChkb3VibGUpdHJhY2tTaXplKCk7Ci0gICAgaWYgKHN0
eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCi0gICAgICAgIGZhY3Rv
ciA9IDEuMCAtIGZhY3RvcjsKLSAgICBkb3VibGUgdmFsID0gbWluVmFsICsgZmFjdG9yICogKG1h
eFZhbCAtIG1pblZhbCk7Ci0gICAgICAgICAgICAKLSAgICB2YWwgPSBtYXgobWluVmFsLCBtaW4o
dmFsLCBtYXhWYWwpKTsgLy8gTWFrZSBzdXJlIHZhbCBpcyB3aXRoaW4gbWluL21heC4KLQotICAg
IC8vIEZvcmNlIGludGVnZXIgdmFsdWUgaWYgbm90IGZsb2F0LgotICAgIGlmICghZXF1YWxJZ25v
cmluZ0Nhc2UocHJlY2lzaW9uLCAiZmxvYXQiKSkKLSAgICAgICAgdmFsID0gbHJvdW5kKHZhbCk7
CiAKLSAgICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKS0+c2V0VmFsdWVG
cm9tUmVuZGVyZXIoU3RyaW5nOjpudW1iZXIodmFsKSk7Ci0gICAgCi0gICAgaWYgKHBvc2l0aW9u
ICE9IGN1cnJlbnRQb3NpdGlvbigpKSB7Ci0gICAgICAgIHNldEN1cnJlbnRQb3NpdGlvbihwb3Np
dGlvbik7Ci0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpLT5v
bkNoYW5nZSgpOwotICAgIH0KLX0KKyAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7CiAKLWRvdWJsZSBSZW5kZXJTbGlk
ZXI6OnNldFBvc2l0aW9uRnJvbVZhbHVlKGJvb2wgaW5MYXlvdXQpCi17Ci0gICAgaWYgKCFtX3Ro
dW1iIHx8ICFtX3RodW1iLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAg
ICBpZiAoIWluTGF5b3V0KQotICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAg
ICAgICAgCi0gICAgU3RyaW5nIHZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KG5vZGUoKSktPnZhbHVlKCk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBtaW5TdHIgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKS0+Z2V0QXR0cmlidXRlKG1pbkF0dHIp
OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbWF4U3RyID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShtYXhBdHRyKTsKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWNpc2lvbiA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2Rl
KCkpLT5nZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cik7Ci0gICAgCi0gICAgZG91YmxlIG1pblZh
bCA9IG1pblN0ci5pc051bGwoKSA/IDAuMCA6IG1pblN0ci50b0RvdWJsZSgpOwotICAgIGRvdWJs
ZSBtYXhWYWwgPSBtYXhTdHIuaXNOdWxsKCkgPyAxMDAuMCA6IG1heFN0ci50b0RvdWJsZSgpOwot
ICAgIG1pblZhbCA9IG1pbihtaW5WYWwsIG1heFZhbCk7IC8vIE1ha2Ugc3VyZSB0aGUgcmFuZ2Ug
aXMgc2FuZS4KLSAgICAKLSAgICBkb3VibGUgb2xkVmFsID0gdmFsdWUuaXNOdWxsKCkgPyAobWF4
VmFsICsgbWluVmFsKS8yLjAgOiB2YWx1ZS50b0RvdWJsZSgpOwotICAgIGRvdWJsZSB2YWwgPSBt
YXgobWluVmFsLCBtaW4ob2xkVmFsLCBtYXhWYWwpKTsgLy8gTWFrZSBzdXJlIHZhbCBpcyB3aXRo
aW4gbWluL21heC4KLSAgICAgICAgCi0gICAgLy8gRm9yY2UgaW50ZWdlciB2YWx1ZSBpZiBub3Qg
ZmxvYXQuCi0gICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShwcmVjaXNpb24sICJmbG9hdCIpKQot
ICAgICAgICB2YWwgPSBscm91bmQodmFsKTsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHBv
c2l0aW9uIGJhc2VkIG9uIHRoZSB2YWx1ZQotICAgIGRvdWJsZSBmYWN0b3IgPSAodmFsIC0gbWlu
VmFsKSAvIChtYXhWYWwgLSBtaW5WYWwpOworICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHZhbHVl
IGJhc2VkIG9uIHRoZSBwb3NpdGlvbiwgYW5kIHNlbmQgaXQgdG8gdGhlIGVsZW1lbnQuCisgICAg
U2xpZGVyUmFuZ2UgcmFuZ2UoZWxlbWVudCk7CisgICAgZG91YmxlIGZyYWN0aW9uID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemUoKTsKICAgICBpZiAoc3R5bGUoKS0+
YXBwZWFyYW5jZSgpID09IFNsaWRlclZlcnRpY2FsUGFydCkKLSAgICAgICAgZmFjdG9yID0gMS4w
IC0gZmFjdG9yOworICAgICAgICBmcmFjdGlvbiA9IDEgLSBmcmFjdGlvbjsKKyAgICBkb3VibGUg
dmFsdWUgPSByYW5nZS5jbGFtcFZhbHVlKHJhbmdlLm1pbmltdW0gKyBmcmFjdGlvbiAqIChyYW5n
ZS5tYXhpbXVtIC0gcmFuZ2UubWluaW11bSkpOworICAgIGVsZW1lbnQtPnNldFZhbHVlRnJvbVJl
bmRlcmVyKFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7CiAKLSAgICBzZXRDdXJyZW50UG9zaXRpb24o
KGludCkoZmFjdG9yICogdHJhY2tTaXplKCkpKTsKLSAgICAKLSAgICBpZiAodmFsdWUuaXNOdWxs
KCkgfHwgdmFsICE9IG9sZFZhbCkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KG5vZGUoKSktPnNldFZhbHVlRnJvbVJlbmRlcmVyKFN0cmluZzo6bnVtYmVyKHZhbCkpOwot
ICAgIAotICAgIHJldHVybiB2YWw7CisgICAgLy8gQWxzbyB1cGRhdGUgdGhlIHBvc2l0aW9uIGlm
IGFwcHJvcHJpYXRlLgorICAgIGlmIChwb3NpdGlvbiAhPSBjdXJyZW50UG9zaXRpb24oKSkgewor
ICAgICAgICBzZXROZWVkc0xheW91dCh0cnVlKTsKKworICAgICAgICAvLyBGSVhNRTogSXQgc2Vl
bXMgbGlrZSB0aGlzIGNvdWxkIHNlbmQgZXh0cmEgY2hhbmdlIGV2ZW50cyBpZiB0aGUgc2FtZSB2
YWx1ZSBpcyBzZXQKKyAgICAgICAgLy8gbXVsdGlwbGUgdGltZXMgd2l0aCBubyBsYXlvdXQgaW4g
YmV0d2Vlbi4KKyAgICAgICAgZWxlbWVudC0+b25DaGFuZ2UoKTsKKyAgICB9CiB9CiAKIGludCBS
ZW5kZXJTbGlkZXI6OnBvc2l0aW9uRm9yT2Zmc2V0KGNvbnN0IEludFBvaW50JiBwKQogewogICAg
IGlmICghbV90aHVtYiB8fCAhbV90aHVtYi0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAKKwogICAgIGludCBwb3NpdGlvbjsKICAgICBpZiAoc3R5bGUoKS0+YXBwZWFyYW5jZSgp
ID09IFNsaWRlclZlcnRpY2FsUGFydCkKICAgICAgICAgcG9zaXRpb24gPSBwLnkoKSAtIG1fdGh1
bWItPnJlbmRlckJveCgpLT5oZWlnaHQoKSAvIDI7CkBAIC0zNTksNjUgKzQwOSw0NCBAQCBpbnQg
UmVuZGVyU2xpZGVyOjpwb3NpdGlvbkZvck9mZnNldChjb25zCiAgICAgcmV0dXJuIG1heCgwLCBt
aW4ocG9zaXRpb24sIHRyYWNrU2l6ZSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU2xpZGVyOjp2YWx1
ZUNoYW5nZWQoKQotewotICAgIHNldFZhbHVlRm9yUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKCkp
OwotICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpLT5vbkNoYW5nZSgp
OwotfQotCiBpbnQgUmVuZGVyU2xpZGVyOjpjdXJyZW50UG9zaXRpb24oKQogewotICAgIGlmICgh
bV90aHVtYiB8fCAhbV90aHVtYi0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBpZiAoc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclZlcnRpY2FsUGFydCkKLSAgICAg
ICAgcmV0dXJuIG1fdGh1bWItPnJlbmRlcmVyKCktPnN0eWxlKCktPnRvcCgpLnZhbHVlKCk7Ci0g
ICAgcmV0dXJuIG1fdGh1bWItPnJlbmRlcmVyKCktPnN0eWxlKCktPmxlZnQoKS52YWx1ZSgpOwot
fQotCi12b2lkIFJlbmRlclNsaWRlcjo6c2V0Q3VycmVudFBvc2l0aW9uKGludCBwb3MpCi17Ci0g
ICAgaWYgKCFtX3RodW1iIHx8ICFtX3RodW1iLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKG1fdGh1bWIpOworICAgIEFTU0VSVChtX3RodW1iLT5yZW5kZXJlcigpKTsK
IAogICAgIGlmIChzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0KQot
ICAgICAgICBtX3RodW1iLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5zZXRUb3AoTGVuZ3RoKHBvcywg
Rml4ZWQpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdGh1bWItPnJlbmRlcmVyKCktPnN0eWxlKCkt
PnNldExlZnQoTGVuZ3RoKHBvcywgRml4ZWQpKTsKLQotICAgIG1fdGh1bWItPnJlbmRlckJveCgp
LT5sYXllcigpLT51cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgcmVwYWludCgpOwotICAgIG1f
dGh1bWItPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyQm94
KG1fdGh1bWItPnJlbmRlcmVyKCkpLT55KCkgLSBjb250ZW50Qm94UmVjdCgpLnkoKTsKKyAgICBy
ZXR1cm4gdG9SZW5kZXJCb3gobV90aHVtYi0+cmVuZGVyZXIoKSktPngoKSAtIGNvbnRlbnRCb3hS
ZWN0KCkueCgpOwogfQogCiBpbnQgUmVuZGVyU2xpZGVyOjp0cmFja1NpemUoKQogewotICAgIGlm
ICghbV90aHVtYiB8fCAhbV90aHVtYi0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgQVNTRVJUKG1fdGh1bWIpOworICAgIEFTU0VSVChtX3RodW1iLT5yZW5kZXJlcigpKTsKIAog
ICAgIGlmIChzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0KQogICAg
ICAgICByZXR1cm4gY29udGVudEhlaWdodCgpIC0gbV90aHVtYi0+cmVuZGVyQm94KCktPmhlaWdo
dCgpOwogICAgIHJldHVybiBjb250ZW50V2lkdGgoKSAtIG1fdGh1bWItPnJlbmRlckJveCgpLT53
aWR0aCgpOwogfQogCi12b2lkIFJlbmRlclNsaWRlcjo6Zm9yd2FyZEV2ZW50KEV2ZW50KiBldnQp
Cit2b2lkIFJlbmRlclNsaWRlcjo6Zm9yd2FyZEV2ZW50KEV2ZW50KiBldmVudCkKIHsKLSAgICBp
ZiAoZXZ0LT5pc01vdXNlRXZlbnQoKSkgewotICAgICAgICBNb3VzZUV2ZW50KiBtb3VzZUV2dCA9
IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldnQpOwotICAgICAgICBpZiAoZXZ0LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIG1vdXNlRXZ0LT5idXR0b24oKSA9PSBM
ZWZ0QnV0dG9uKSB7Ci0gICAgICAgICAgICBpZiAoIW1vdXNlRXZlbnRJc0luVGh1bWIobW91c2VF
dnQpKSB7Ci0gICAgICAgICAgICAgICAgSW50UG9pbnQgZXZlbnRPZmZzZXQgPSByb3VuZGVkSW50
UG9pbnQoYWJzb2x1dGVUb0xvY2FsKG1vdXNlRXZ0LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNl
LCB0cnVlKSk7CisgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBNb3Vz
ZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKKyAg
ICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYm
IG1vdXNlRXZlbnQtPmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKKyAgICAgICAgICAgIGlmICgh
bW91c2VFdmVudElzSW5UaHVtYihtb3VzZUV2ZW50KSkgeworICAgICAgICAgICAgICAgIEludFBv
aW50IGV2ZW50T2Zmc2V0ID0gcm91bmRlZEludFBvaW50KGFic29sdXRlVG9Mb2NhbChtb3VzZUV2
ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlLCB0cnVlKSk7CiAgICAgICAgICAgICAgICAg
c2V0VmFsdWVGb3JQb3NpdGlvbihwb3NpdGlvbkZvck9mZnNldChldmVudE9mZnNldCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV90aHVtYi0+ZGVmYXVsdEV2ZW50
SGFuZGxlcihldnQpOworICAgIG1fdGh1bWItPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwog
fQogCiBib29sIFJlbmRlclNsaWRlcjo6aW5EcmFnTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fdGh1bWItPmluRHJhZ01vZGUoKTsKKyAgICByZXR1cm4gbV90aHVtYiAmJiBtX3RodW1iLT5p
bkRyYWdNb2RlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5oCShyZXZpc2lvbiA0MTkyMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNsaWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAotLyoqCi0gKgotICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsMTYgKzI1LDE5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotICAgIGNsYXNzIEhUTUxEaXZFbGVtZW50OwogICAgIGNsYXNzIEhUTUxJbnB1
dEVsZW1lbnQ7Ci0gICAgY2xhc3MgSFRNTFNsaWRlclRodW1iRWxlbWVudDsKICAgICBjbGFzcyBN
b3VzZUV2ZW50OworICAgIGNsYXNzIFNsaWRlclRodW1iRWxlbWVudDsKICAgICAKICAgICBjbGFz
cyBSZW5kZXJTbGlkZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogICAgIHB1YmxpYzoKICAgICAg
ICAgUmVuZGVyU2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQqKTsKLSAgICAgICAgflJlbmRlclNsaWRl
cigpOworICAgICAgICB2aXJ0dWFsIH5SZW5kZXJTbGlkZXIoKTsKKworICAgICAgICB2b2lkIGZv
cndhcmRFdmVudChFdmVudCopOworICAgICAgICBib29sIGluRHJhZ01vZGUoKSBjb25zdDsKIAor
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJTbGlkZXIiOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Ns
aWRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtNDMsMzAgKzQ1LDI1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbGNQcmVmV2lkdGhzKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVu
dElzSW5UaHVtYihNb3VzZUV2ZW50Kik7CisKKyAgICAgICAgYm9vbCBtb3VzZUV2ZW50SXNJblRo
dW1iKE1vdXNlRXZlbnQqKTsKIAogICAgICAgICB2b2lkIHNldFZhbHVlRm9yUG9zaXRpb24oaW50
IHBvc2l0aW9uKTsKLSAgICAgICAgZG91YmxlIHNldFBvc2l0aW9uRnJvbVZhbHVlKGJvb2wgaW5M
YXlvdXQgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgc2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKICAg
ICAgICAgaW50IHBvc2l0aW9uRm9yT2Zmc2V0KGNvbnN0IEludFBvaW50Jik7CiAKLSAgICAgICAg
dm9pZCB2YWx1ZUNoYW5nZWQoKTsKLSAgICAgICAgCiAgICAgICAgIGludCBjdXJyZW50UG9zaXRp
b24oKTsKLSAgICAgICAgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oaW50IHBvcyk7ICAgICAgICAK
LSAgICAgICAgCi0gICAgICAgIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50Kik7Ci0gICAgICAgIGJv
b2wgaW5EcmFnTW9kZSgpIGNvbnN0OwogCi0gICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpOwotICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGNyZWF0ZVRodW1iU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUgPSAwKTsKKworICAgICAgICBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBjcmVhdGVUaHVtYlN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSk7CisKICAgICAgICAgaW50IHRyYWNrU2l6ZSgpOwogCi0gICAgICAgIFJlZlB0cjxIVE1MU2xp
ZGVyVGh1bWJFbGVtZW50PiBtX3RodW1iOwotfTsKKyAgICAgICAgUmVmUHRyPFNsaWRlclRodW1i
RWxlbWVudD4gbV90aHVtYjsKKworICAgICAgICBmcmllbmQgY2xhc3MgU2xpZGVyVGh1bWJFbGVt
ZW50OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNDE5MjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOSBAQAorMjAwOS0wMy0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDI0NzQw
OiBjcmFzaCBpbiBSZW5kZXJTbGlkZXI6OnNldFBvc2l0aW9uRnJvbVZhbHVlIHdoZW4gY2FsbGlu
ZyBwYXVzZSgpIGFmdGVyIHNldHRpbmcgPHZpZGVvPiB0byBkaXNwbGF5OiBub25lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDc0MAorICAgICAgICBy
ZGFyOi8vcHJvYmxlbS82Njc5ODczCisKKyAgICAgICAgQnVnIDEyMTA0OiBOYXRpdmUgU2xpZGVy
OiBXaGVuIHRoZSB0aHVtYidzIGhlaWdodCBpcyBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlLCBp
dCBpcyBub3QgY2VudGVyZWQgcHJvcGVybHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMTA0CisKKyAgICAgICAgTk9UIFJFQURZIFRPIExBTkQgWUVU
OiBPVEhFUiBURVNUIFJFU1VMVFMgTkVFRCBUTyBCRSBVUERBVEVECisKKyAgICAgICAgKiBtZWRp
YS92aWRlby1kaXNwbGF5LW5vbmUtY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1kaXNwbGF5LW5vbmUtY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMDktMDMt
MjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRp
c3BsYXktbm9uZS1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tZGlzcGxheS1ub25lLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRpc3BsYXktbm9uZS1jcmFzaC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGVzdCB0aGF0IHBhdXNlKCkgYWZ0ZXIg
Y2hhbmdpbmcgZGlzcGxheSB0byAibm9uZSIgZG9lc24ndCBjYXVzZSBhIGNyYXNoLgorCitFTkQg
T0YgVEVTVAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1k
aXNwbGF5LW5vbmUtY3Jhc2gtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kaXNwbGF5
LW5vbmUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1k
aXNwbGF5LW5vbmUtY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWRpc3BsYXktbm9uZS1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEw
IEBACis8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKzxwPlRlc3QgdGhhdCBwYXVzZSgpIGFmdGVy
IGNoYW5naW5nIGRpc3BsYXkgdG8gIm5vbmUiIGRvZXNuJ3QgY2F1c2UgYSBjcmFzaC48L3A+Cis8
c2NyaXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHZpZGVv
LnNyYyA9ICJjb250ZW50L3Rlc3QubXA0IjsKKyAgICB2aWRlby5wbGF5KCk7CisgICAgdmlkZW8u
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICB2aWRlby5wYXVzZSgpOworICAgIGVuZFRlc3Qo
KTsKKzwvc2NyaXB0PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tZGlzcGxheS1ub25lLWNyYXNoLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlw
ZQogICArIHRleHQvaHRtbApBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
</data>
<flag name="review"
          id="14262"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>