<?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>136303</bug_id>
          
          <creation_ts>2014-08-27 13:20:07 -0700</creation_ts>
          <short_desc>Some EventHandler naming cleanup</short_desc>
          <delta_ts>2014-08-27 15:26:20 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031754</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-27 13:20:07 -0700</bug_when>
    <thetext>Some EventHandler naming cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031755</commentid>
    <comment_count>1</comment_count>
      <attachid>237243</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-27 13:21:12 -0700</bug_when>
    <thetext>Created attachment 237243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031804</commentid>
    <comment_count>2</comment_count>
      <attachid>237261</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-27 15:17:05 -0700</bug_when>
    <thetext>Created attachment 237261
mev to mouseEvent rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031809</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-27 15:26:15 -0700</bug_when>
    <thetext>https://trac.webkit.org/r173024
https://trac.webkit.org/r173025</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237243</attachid>
            <date>2014-08-27 13:21:12 -0700</date>
            <delta_ts>2014-08-27 13:22:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136303-20140827132105.patch</filename>
            <type>text/plain</type>
            <size>28151</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNiNjliNThhMTlmNzMy
OWQ0OWJlYjBmZjBmMjhjNThkYTU0ZjVmZC4uNWU1NDYyOTg3ZWJmOTEyYmM5MWM1NjY2NzcyODlh
YmQ0YWQ4NTNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTA4LTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgRXZlbnRI
YW5kbGVyIG5hbWluZyBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW5hbWUgUGxhdGZvcm1Nb3VzZUV2ZW50IHZhcmlhYmxlcyBmcm9tICJt
b3VzZUV2ZW50IiB0byAicGxhdGZvcm1Nb3VzZUV2ZW50IgorICAgICAgICBzbyB0aGF0IGEgbGF0
ZXIgcGF0Y2ggY2FuIHJlbmFtZSAibWV2IiB0byAibW91c2VFdmVudCIuCisgICAgICAgIAorICAg
ICAgICAwID0+IG51bGxwdHIuCisgICAgICAgIAorICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2Uu
CisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjppbnZhbGlkYXRlQ2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVBhc3RlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZCk6CisKIDIwMTQt
MDgtMjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
RW5zdXJlIHRoYXQgbGF5b3V0IGlzIHVwLXRvLWRhdGUgYmVmb3JlIGhpdCB0ZXN0aW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYTUxNWJkYTE3ZTAxYmY5YzdhOTk5YzA5
MjA2NmRiNjhjMGE3MzkyZS4uZTU5MDU2OTgxYThkZDhhNmE5MTQ5ODYzMTk1MjNiNDczNjJkMTVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNDU3LDE1ICs0NTcsMTUg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyKCkKICAgICBjYW5jZWxBdXRvSGlkZUN1cnNvclRp
bWVyKCk7CiAjZW5kaWYKICAgICBjbGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKLSAgICBtX3Jl
c2l6ZUxheWVyID0gMDsKKyAgICBtX3Jlc2l6ZUxheWVyID0gbnVsbHB0cjsKICAgICBtX2VsZW1l
bnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZSA9IG51
bGxwdHI7Ci0gICAgbV9pbnN0YW5jZVVuZGVyTW91c2UgPSAwOwotICAgIG1fbGFzdEluc3RhbmNl
VW5kZXJNb3VzZSA9IDA7Ci0gICAgbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZSA9IDA7Ci0g
ICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IDA7CisgICAgbV9pbnN0YW5jZVVuZGVyTW91
c2UgPSBudWxscHRyOworICAgIG1fbGFzdEluc3RhbmNlVW5kZXJNb3VzZSA9IG51bGxwdHI7Cisg
ICAgbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZSA9IG51bGxwdHI7CisgICAgbV9sYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgbV9jbGlja0NvdW50ID0gMDsKLSAgICBt
X2NsaWNrTm9kZSA9IDA7CisgICAgbV9jbGlja05vZGUgPSBudWxscHRyOwogI2lmIEVOQUJMRShJ
T1NfR0VTVFVSRV9FVkVOVFMpCiAgICAgbV9nZXN0dXJlSW5pdGlhbERpYW1ldGVyID0gR2VzdHVy
ZVVua25vd247CiAgICAgbV9nZXN0dXJlTGFzdERpYW1ldGVyID0gR2VzdHVyZVVua25vd247CkBA
IC00NzYsMTEgKzQ3NiwxMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2lmIEVOQUJM
RShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIG1fdG91Y2hlcy5jbGVhcigpOwogICAgIG1fZmlyc3RU
b3VjaElEID0gSW52YWxpZFRvdWNoSWRlbnRpZmllcjsKLSAgICBtX3RvdWNoRXZlbnRUYXJnZXRT
dWJmcmFtZSA9IDA7CisgICAgbV90b3VjaEV2ZW50VGFyZ2V0U3ViZnJhbWUgPSBudWxscHRyOwog
I2VuZGlmCi0gICAgbV9mcmFtZVNldEJlaW5nUmVzaXplZCA9IDA7CisgICAgbV9mcmFtZVNldEJl
aW5nUmVzaXplZCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBtX2Ry
YWdUYXJnZXQgPSAwOworICAgIG1fZHJhZ1RhcmdldCA9IG51bGxwdHI7CiAgICAgbV9zaG91bGRP
bmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICNlbmRpZgogICAgIG1fbW91c2VQb3NpdGlv
bklzVW5rbm93biA9IHRydWU7CkBAIC03MzEsNyArNzMxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmUKIHsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIC8vIFJlc2V0IGRyYWcgc3Rh
dGUuCi0gICAgZHJhZ1N0YXRlKCkuc291cmNlID0gMDsKKyAgICBkcmFnU3RhdGUoKS5zb3VyY2Ug
PSBudWxscHRyOwogI2VuZGlmCiAKICNpZiAhRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC0x
NjQzLDcgKzE2NDMsNyBAQCBzdGF0aWMgTGF5b3V0UG9pbnQgZG9jdW1lbnRQb2ludEZvcldpbmRv
d1BvaW50KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIHdpbgogICAgIHJldHVybiB2aWV3
ID8gdmlldy0+d2luZG93VG9Db250ZW50cyh3aW5kb3dQb2ludCkgOiB3aW5kb3dQb2ludDsKIH0K
IAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQ
cmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhZm9ybU1vdXNlRXZlbnQpCiB7
CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUudmlldygpKTsKIApAQCAt
MTY2OCwxNSArMTY2OCwxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICNlbmRpZgogICAgIG1f
bW91c2VQcmVzc2VkID0gdHJ1ZTsKICAgICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSB0cnVlOwotICAg
IHNldExhc3RLbm93bk1vdXNlUG9zaXRpb24obW91c2VFdmVudCk7Ci0gICAgbV9tb3VzZURvd25U
aW1lc3RhbXAgPSBtb3VzZUV2ZW50LnRpbWVzdGFtcCgpOworICAgIHNldExhc3RLbm93bk1vdXNl
UG9zaXRpb24ocGxhZm9ybU1vdXNlRXZlbnQpOworICAgIG1fbW91c2VEb3duVGltZXN0YW1wID0g
cGxhZm9ybU1vdXNlRXZlbnQudGltZXN0YW1wKCk7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogI2VuZGlmCiAgICAgbV9tb3Vz
ZURvd25NYXlTdGFydFNlbGVjdCA9IGZhbHNlOwogICAgIG1fbW91c2VEb3duTWF5U3RhcnRBdXRv
c2Nyb2xsID0gZmFsc2U7CiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygp
KQotICAgICAgICBtX21vdXNlRG93blBvcyA9IHZpZXctPndpbmRvd1RvQ29udGVudHMobW91c2VF
dmVudC5wb3NpdGlvbigpKTsKKyAgICAgICAgbV9tb3VzZURvd25Qb3MgPSB2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKHBsYWZvcm1Nb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIGVsc2UgewogICAg
ICAgICBpbnZhbGlkYXRlQ2xpY2soKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTY4Niw4
ICsxNjg2LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVx
dWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hh
ZG93Q29udGVudCk7CiAgICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUg
aW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBw
ZW5zCiAgICAgLy8gd2hlbiB3ZSBkaXNwYXRjaCB0aGUgZXZlbnQuCi0gICAgTGF5b3V0UG9pbnQg
ZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtb3Vz
ZUV2ZW50LnBvc2l0aW9uKCkpOwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2
ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVu
dFBvaW50LCBtb3VzZUV2ZW50KTsKKyAgICBMYXlvdXRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9j
dW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIHBsYWZvcm1Nb3VzZUV2ZW50LnBvc2l0
aW9uKCkpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gbV9mcmFtZS5k
b2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBwbGFm
b3JtTW91c2VFdmVudCk7CiAKICAgICBpZiAoIW1ldi50YXJnZXROb2RlKCkpIHsKICAgICAgICAg
aW52YWxpZGF0ZUNsaWNrKCk7CkBAIC0xNzIyLDcgKzE3MjIsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VF
dmVudCkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fY2xpY2tDb3VudCA9IG1vdXNlRXZlbnQuY2xp
Y2tDb3VudCgpOworICAgIG1fY2xpY2tDb3VudCA9IHBsYWZvcm1Nb3VzZUV2ZW50LmNsaWNrQ291
bnQoKTsKICAgICBtX2NsaWNrTm9kZSA9IG1ldi50YXJnZXROb2RlKCk7CiAKICAgICBpZiAoIW1f
Y2xpY2tOb2RlKSB7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkK
IAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkgewogICAgICAgICBS
ZW5kZXJMYXllciogbGF5ZXIgPSBtX2NsaWNrTm9kZS0+cmVuZGVyZXIoKSA/IG1fY2xpY2tOb2Rl
LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpIDogMDsKLSAgICAgICAgSW50UG9pbnQgcCA9
IHZpZXctPndpbmRvd1RvQ29udGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKTsKKyAgICAgICAg
SW50UG9pbnQgcCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMocGxhZm9ybU1vdXNlRXZlbnQucG9z
aXRpb24oKSk7CiAgICAgICAgIGlmIChsYXllciAmJiBsYXllci0+aXNQb2ludEluUmVzaXplQ29u
dHJvbChwKSkgewogICAgICAgICAgICAgbGF5ZXItPnNldEluUmVzaXplTW9kZSh0cnVlKTsKICAg
ICAgICAgICAgIG1fcmVzaXplTGF5ZXIgPSBsYXllcjsKQEAgLTE3NDQsNyArMTc0NCw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBtb3VzZUV2ZW50KQogCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKHRydWUpOwogCi0gICAgYm9vbCBzd2FsbG93RXZlbnQgPSAhZGlzcGF0
Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCwgbWV2LnRhcmdldE5vZGUo
KSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBtb3VzZUV2ZW50LCB0cnVlKTsKKyAgICBib29sIHN3YWxs
b3dFdmVudCA9ICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50
LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYWZvcm1Nb3VzZUV2ZW50
LCB0cnVlKTsKICAgICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSAhc3dhbGxvd0V2ZW50IHx8IG1ldi5z
Y3JvbGxiYXIoKTsKIAogICAgIC8vIElmIHRoZSBoaXQgdGVzdGluZyBvcmlnaW5hbGx5IGRldGVy
bWluZWQgdGhlIGV2ZW50IHdhcyBpbiBhIHNjcm9sbGJhciwgcmVmZXRjaCB0aGUgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cwpAQCAtMTc1Miw5ICsxNzUyLDkgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQpCiAgICAgaWYgKG1ldi5zY3JvbGxiYXIoKSkgewogICAgICAgICBjb25zdCBib29sIHdh
c0xhc3RTY3JvbGxCYXIgPSBtZXYuc2Nyb2xsYmFyKCkgPT0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJN
b3VzZS5nZXQoKTsKICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93U2hhZG93Q29udGVudCk7Ci0gICAgICAgIG1ldiA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+
cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7Cisg
ICAgICAgIG1ldiA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVz
dCwgZG9jdW1lbnRQb2ludCwgcGxhZm9ybU1vdXNlRXZlbnQpOwogICAgICAgICBpZiAod2FzTGFz
dFNjcm9sbEJhciAmJiBtZXYuc2Nyb2xsYmFyKCkgIT0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3Vz
ZS5nZXQoKSkKLSAgICAgICAgICAgIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgPSAwOworICAg
ICAgICAgICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgaWYgKHN3YWxsb3dFdmVudCkgewpAQCAtMTc3MiwxMSArMTc3MiwxMSBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
bW91c2VFdmVudCkKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5vZGUgY2FuJ3Qgc3RpbGwgYmUg
dGhlIHNoYWRvdyBub2RlLgogICAgICAgICBpZiAobWV2LnRhcmdldE5vZGUoKS0+aXNTaGFkb3dS
b290KCkgJiYgaXNIVE1MSW5wdXRFbGVtZW50KHRvU2hhZG93Um9vdChtZXYudGFyZ2V0Tm9kZSgp
KS0+aG9zdEVsZW1lbnQoKSkpIHsKICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwotICAgICAgICAgICAgbWV2ID0gbV9m
cmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50
LCBtb3VzZUV2ZW50KTsKKyAgICAgICAgICAgIG1ldiA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+cHJl
cGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludCwgcGxhZm9ybU1vdXNlRXZlbnQp
OwogICAgICAgICB9CiAKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7
Ci0gICAgICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gdmlldyA/IHZpZXctPnNjcm9sbGJhckF0
UG9pbnQobW91c2VFdmVudC5wb3NpdGlvbigpKSA6IDA7CisgICAgICAgIFNjcm9sbGJhciogc2Ny
b2xsYmFyID0gdmlldyA/IHZpZXctPnNjcm9sbGJhckF0UG9pbnQocGxhZm9ybU1vdXNlRXZlbnQu
cG9zaXRpb24oKSkgOiAwOwogICAgICAgICBpZiAoIXNjcm9sbGJhcikKICAgICAgICAgICAgIHNj
cm9sbGJhciA9IG1ldi5zY3JvbGxiYXIoKTsKIApAQCAtMTc5Miw3ICsxNzkyLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIG1vdXNlRXZlbnQpCiB9CiAKIC8vIFRoaXMgbWV0aG9kIG9ubHkgZXhpc3RzIGZvciBwbGF0
Zm9ybXMgdGhhdCBkb24ndCBrbm93IGhvdyB0byBkZWxpdmVyIAotYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVDbGlja0V2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhZm9ybU1vdXNlRXZlbnQpCiB7CiAgICAgUmVm
UHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUudmlldygpKTsKIApAQCAtMTgwMiwyMyAr
MTgwMiwyMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVDbGlja0V2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdgogCiAgICAgLy8gV2UgZ2V0IHRoaXMg
aW5zdGVhZCBvZiBhIHNlY29uZCBtb3VzZS11cCAKICAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNl
OwotICAgIHNldExhc3RLbm93bk1vdXNlUG9zaXRpb24obW91c2VFdmVudCk7CisgICAgc2V0TGFz
dEtub3duTW91c2VQb3NpdGlvbihwbGFmb3JtTW91c2VFdmVudCk7CiAKICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOworICAgIE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgcGxh
Zm9ybU1vdXNlRXZlbnQpOwogICAgIEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVz
dFJlc3VsdChtZXYpOwogICAgIGlmIChtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmluZ01v
dXNlRXZlbnRzRWxlbWVudCkKICAgICAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQg
PSBudWxscHRyOwogICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJm
cmFtZShtZXYsIHN1YmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2NsaWNr
Q291bnQgPSBtb3VzZUV2ZW50LmNsaWNrQ291bnQoKTsKLSAgICBib29sIHN3YWxsb3dNb3VzZVVw
RXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIG1l
di50YXJnZXROb2RlKCksIHRydWUsIG1fY2xpY2tDb3VudCwgbW91c2VFdmVudCwgZmFsc2UpOwor
ICAgIG1fY2xpY2tDb3VudCA9IHBsYWZvcm1Nb3VzZUV2ZW50LmNsaWNrQ291bnQoKTsKKyAgICBi
b29sIHN3YWxsb3dNb3VzZVVwRXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMo
KS5tb3VzZXVwRXZlbnQsIG1ldi50YXJnZXROb2RlKCksIHRydWUsIG1fY2xpY2tDb3VudCwgcGxh
Zm9ybU1vdXNlRXZlbnQsIGZhbHNlKTsKIAotICAgIGJvb2wgc3dhbGxvd0NsaWNrRXZlbnQgPSBt
b3VzZUV2ZW50LmJ1dHRvbigpICE9IFJpZ2h0QnV0dG9uICYmIG1ldi50YXJnZXROb2RlKCkgPT0g
bV9jbGlja05vZGUgJiYgIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCwgbWV2LnRhcmdldE5vZGUoKSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBtb3VzZUV2ZW50LCB0cnVl
KTsKKyAgICBib29sIHN3YWxsb3dDbGlja0V2ZW50ID0gcGxhZm9ybU1vdXNlRXZlbnQuYnV0dG9u
KCkgIT0gUmlnaHRCdXR0b24gJiYgbWV2LnRhcmdldE5vZGUoKSA9PSBtX2NsaWNrTm9kZSAmJiAh
ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBtZXYudGFyZ2V0Tm9k
ZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYWZvcm1Nb3VzZUV2ZW50LCB0cnVlKTsKIAogICAg
IGlmIChtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlKQotICAgICAgICBzd2FsbG93TW91c2VVcEV2
ZW50ID0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91c2VVcChtb3VzZUV2ZW50KTsKKyAg
ICAgICAgc3dhbGxvd01vdXNlVXBFdmVudCA9IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UtPm1v
dXNlVXAocGxhZm9ybU1vdXNlRXZlbnQpOwogCiAgICAgYm9vbCBzd2FsbG93TW91c2VSZWxlYXNl
RXZlbnQgPSAhc3dhbGxvd01vdXNlVXBFdmVudCAmJiBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCht
ZXYpOwogCkBAIC0xODc3LDIwICsxODc3LDIwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91
c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlCiAg
ICAgcmV0dXJuIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUsIHRydWUp
OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSwg
Ym9vbCBvbmx5VXBkYXRlU2Nyb2xsYmFycykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYWZvcm1Nb3VzZUV2ZW50LCBI
aXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSwgYm9vbCBvbmx5VXBkYXRlU2Nyb2xsYmFycykKIHsK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IGRp
c3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChtb3VzZUV2ZW50KTsKKyAgICBib29s
IGRlZmF1bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQo
cGxhZm9ybU1vdXNlRXZlbnQpOwogICAgIGlmIChkZWZhdWx0UHJldmVudGVkKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgaWYgKGhhbmRsZUxvbmdNb3VzZVByZXNzTW91c2VN
b3ZlZEV2ZW50KG1vdXNlRXZlbnQpKQorICAgIGlmIChoYW5kbGVMb25nTW91c2VQcmVzc01vdXNl
TW92ZWRFdmVudChwbGFmb3JtTW91c2VFdmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUudmlldygpKTsKICAgICAKLSAg
ICBzZXRMYXN0S25vd25Nb3VzZVBvc2l0aW9uKG1vdXNlRXZlbnQpOworICAgIHNldExhc3RLbm93
bk1vdXNlUG9zaXRpb24ocGxhZm9ybU1vdXNlRXZlbnQpOwogCiAgICAgaWYgKG1faG92ZXJUaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2hvdmVyVGltZXIuc3RvcCgpOwpAQCAtMTkwOSwxMyAr
MTkwOSwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogICAgIH0KIAogICAgIGlmIChtX2Zy
YW1lU2V0QmVpbmdSZXNpemVkKQotICAgICAgICByZXR1cm4gIWRpc3BhdGNoTW91c2VFdmVudChl
dmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQsIG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQuZ2V0KCks
IGZhbHNlLCAwLCBtb3VzZUV2ZW50LCBmYWxzZSk7CisgICAgICAgIHJldHVybiAhZGlzcGF0Y2hN
b3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCwgbV9mcmFtZVNldEJlaW5nUmVz
aXplZC5nZXQoKSwgZmFsc2UsIDAsIHBsYWZvcm1Nb3VzZUV2ZW50LCBmYWxzZSk7CiAKICAgICAv
LyBPbiBpT1MsIG91ciBzY3JvbGxiYXJzIGFyZSBtYW5hZ2VkIGJ5IFVJS2l0LgogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgLy8gU2VuZCBldmVudHMgcmlnaHQgdG8gYSBzY3JvbGxiYXIgaWYgdGhl
IG1vdXNlIGlzIHByZXNzZWQuCiAgICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgJiYg
bV9tb3VzZVByZXNzZWQpCi0gICAgICAgIHJldHVybiBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNl
LT5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOworICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFy
VW5kZXJNb3VzZS0+bW91c2VNb3ZlZChwbGFmb3JtTW91c2VFdmVudCk7CiAjZW5kaWYKIAogICAg
IEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1
ZXN0OjpNb3ZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCB8IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd0ZyYW1lU2Nyb2xsYmFyczsKQEAgLTE5MzUsMTIgKzE5MzUsMTIgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgbW91c2VFdmVudCwgSGkKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5OwogI2VuZGlmCiAgICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOworICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVz
dCwgcGxhZm9ybU1vdXNlRXZlbnQpOwogICAgIGlmIChob3ZlcmVkTm9kZSkKICAgICAgICAgKmhv
dmVyZWROb2RlID0gbWV2LmhpdFRlc3RSZXN1bHQoKTsKIAogICAgIGlmIChtX3Jlc2l6ZUxheWVy
ICYmIG1fcmVzaXplTGF5ZXItPmluUmVzaXplTW9kZSgpKQotICAgICAgICBtX3Jlc2l6ZUxheWVy
LT5yZXNpemUobW91c2VFdmVudCwgbV9vZmZzZXRGcm9tUmVzaXplQ29ybmVyKTsKKyAgICAgICAg
bV9yZXNpemVMYXllci0+cmVzaXplKHBsYWZvcm1Nb3VzZUV2ZW50LCBtX29mZnNldEZyb21SZXNp
emVDb3JuZXIpOwogICAgIGVsc2UgewogICAgICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9IG1l
di5zY3JvbGxiYXIoKTsKICAgICAgICAgdXBkYXRlTGFzdFNjcm9sbGJhclVuZGVyTW91c2Uoc2Ny
b2xsYmFyLCAhbV9tb3VzZVByZXNzZWQpOwpAQCAtMTk0OCw3ICsxOTQ4LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
bW91c2VFdmVudCwgSGkKICAgICAgICAgLy8gT24gaU9TLCBvdXIgc2Nyb2xsYmFycyBhcmUgbWFu
YWdlZCBieSBVSUtpdC4KICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAoIW1fbW91c2VQ
cmVzc2VkICYmIHNjcm9sbGJhcikKLSAgICAgICAgICAgIHNjcm9sbGJhci0+bW91c2VNb3ZlZCht
b3VzZUV2ZW50KTsgLy8gSGFuZGxlIGhvdmVyIGVmZmVjdHMgb24gcGxhdGZvcm1zIHRoYXQgc3Vw
cG9ydCB2aXN1YWwgZmVlZGJhY2sgb24gc2Nyb2xsYmFyIGhvdmVyaW5nLgorICAgICAgICAgICAg
c2Nyb2xsYmFyLT5tb3VzZU1vdmVkKHBsYWZvcm1Nb3VzZUV2ZW50KTsgLy8gSGFuZGxlIGhvdmVy
IGVmZmVjdHMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB2aXN1YWwgZmVlZGJhY2sgb24gc2Ny
b2xsYmFyIGhvdmVyaW5nLgogI2VuZGlmCiAgICAgICAgIGlmIChvbmx5VXBkYXRlU2Nyb2xsYmFy
cykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTk2Myw3ICsxOTYzLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgbW91c2VFdmVudCwgSGkKIAogICAgIGlmIChuZXdTdWJmcmFtZSkgewogICAgICAgICAvLyBV
cGRhdGUgb3Zlci9vdXQgc3RhdGUgYmVmb3JlIHBhc3NpbmcgdGhlIGV2ZW50IHRvIHRoZSBzdWJm
cmFtZS4KLSAgICAgICAgdXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUobWV2LnRhcmdldE5vZGUo
KSwgbW91c2VFdmVudCwgdHJ1ZSk7CisgICAgICAgIHVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2Rl
KG1ldi50YXJnZXROb2RlKCksIHBsYWZvcm1Nb3VzZUV2ZW50LCB0cnVlKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEV2ZW50IGRpc3BhdGNoIGluIHVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlIG1h
eSBoYXZlIGNhdXNlZCB0aGUgc3ViZnJhbWUgb2YgdGhlIHRhcmdldAogICAgICAgICAvLyBub2Rl
IHRvIGJlIGRldGFjaGVkIGZyb20gaXRzIEZyYW1lVmlldywgaW4gd2hpY2ggY2FzZSB0aGUgZXZl
bnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQuCkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBt
b3VzZUV2ZW50LCBIaQogI2lmIEVOQUJMRShDVVJTT1JfU1VQUE9SVCkKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKLSAgICAgICAg
ICAgIE9wdGlvbmFsQ3Vyc29yIG9wdGlvbmFsQ3Vyc29yID0gc2VsZWN0Q3Vyc29yKG1ldi5oaXRU
ZXN0UmVzdWx0KCksIG1vdXNlRXZlbnQuc2hpZnRLZXkoKSk7CisgICAgICAgICAgICBPcHRpb25h
bEN1cnNvciBvcHRpb25hbEN1cnNvciA9IHNlbGVjdEN1cnNvcihtZXYuaGl0VGVzdFJlc3VsdCgp
LCBwbGFmb3JtTW91c2VFdmVudC5zaGlmdEtleSgpKTsKICAgICAgICAgICAgIGlmIChvcHRpb25h
bEN1cnNvci5pc0N1cnNvckNoYW5nZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9jdXJyZW50TW91
c2VDdXJzb3IgPSBvcHRpb25hbEN1cnNvci5jdXJzb3IoKTsKICAgICAgICAgICAgICAgICB2aWV3
LT5zZXRDdXJzb3IobV9jdXJyZW50TW91c2VDdXJzb3IpOwpAQCAtMTk4Niw3ICsxOTg2LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgbW91c2VFdmVudCwgSGkKICAgICBpZiAoc3dhbGxvd0V2ZW50KQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBzd2FsbG93RXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50
KGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCwgbWV2LnRhcmdldE5vZGUoKSwgZmFsc2UsIDAs
IG1vdXNlRXZlbnQsIHRydWUpOworICAgIHN3YWxsb3dFdmVudCA9ICFkaXNwYXRjaE1vdXNlRXZl
bnQoZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCBmYWxzZSwg
MCwgcGxhZm9ybU1vdXNlRXZlbnQsIHRydWUpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAg
ICAgaWYgKCFzd2FsbG93RXZlbnQpCiAgICAgICAgIHN3YWxsb3dFdmVudCA9IGhhbmRsZU1vdXNl
RHJhZ2dlZEV2ZW50KG1ldik7CkBAIC0xOTk4LDcgKzE5OTgsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2
ZW50LCBIaQogdm9pZCBFdmVudEhhbmRsZXI6OmludmFsaWRhdGVDbGljaygpCiB7CiAgICAgbV9j
bGlja0NvdW50ID0gMDsKLSAgICBtX2NsaWNrTm9kZSA9IDA7CisgICAgbV9jbGlja05vZGUgPSBu
dWxscHRyOwogfQogCiBpbmxpbmUgc3RhdGljIGJvb2wgbW91c2VJc1JlbGVhc2VkT25QcmVzc2Vk
RWxlbWVudChOb2RlKiB0YXJnZXROb2RlLCBOb2RlKiBjbGlja05vZGUpCkBAIC0yMDI1LDE0ICsy
MDI1LDE0IEBAIGlubGluZSBzdGF0aWMgYm9vbCBtb3VzZUlzUmVsZWFzZWRPblByZXNzZWRFbGVt
ZW50KE5vZGUqIHRhcmdldE5vZGUsIE5vZGUqIGNsaWNrCiAgICAgcmV0dXJuIGFkanVzdGVkVGFy
Z2V0Tm9kZSA9PSBhZGp1c3RlZENsaWNrTm9kZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVu
dCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIHBsYWZvcm1Nb3VzZUV2ZW50KQogewogICAgIFJlZlB0cjxGcmFtZVZp
ZXc+IHByb3RlY3RvcihtX2ZyYW1lLnZpZXcoKSk7CiAKICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldENhcmV0QmxpbmtpbmdTdXNwZW5kZWQoZmFsc2UpOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLSAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5bnRoZXRpY1RvdWNo
RXZlbnRJZkVuYWJsZWQobW91c2VFdmVudCk7CisgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkID0g
ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKHBsYWZvcm1Nb3VzZUV2ZW50KTsK
ICAgICBpZiAoZGVmYXVsdFByZXZlbnRlZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYK
QEAgLTIwNDAsMTEgKzIwNDAsMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpOwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgbV9hdXRvc2Nyb2xs
Q29udHJvbGxlci0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudCk7CisgICAgbV9h
dXRvc2Nyb2xsQ29udHJvbGxlci0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQocGxhZm9ybU1vdXNl
RXZlbnQpOwogI2VuZGlmCiAKICAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNlOwotICAgIHNldExh
c3RLbm93bk1vdXNlUG9zaXRpb24obW91c2VFdmVudCk7CisgICAgc2V0TGFzdEtub3duTW91c2VQ
b3NpdGlvbihwbGFmb3JtTW91c2VFdmVudCk7CiAKICAgICBpZiAobV9zdmdQYW4pIHsKICAgICAg
ICAgbV9zdmdQYW4gPSBmYWxzZTsKQEAgLTIwNTMsMzMgKzIwNTMsMzMgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
bW91c2VFdmVudCkKICAgICB9CiAKICAgICBpZiAobV9mcmFtZVNldEJlaW5nUmVzaXplZCkKLSAg
ICAgICAgcmV0dXJuICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCwgbV9mcmFtZVNldEJlaW5nUmVzaXplZC5nZXQoKSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBtb3Vz
ZUV2ZW50LCBmYWxzZSk7CisgICAgICAgIHJldHVybiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50
TmFtZXMoKS5tb3VzZXVwRXZlbnQsIG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQuZ2V0KCksIHRydWUs
IG1fY2xpY2tDb3VudCwgcGxhZm9ybU1vdXNlRXZlbnQsIGZhbHNlKTsKIAogICAgIGlmIChtX2xh
c3RTY3JvbGxiYXJVbmRlck1vdXNlKSB7CiAgICAgICAgIGludmFsaWRhdGVDbGljaygpOwotICAg
ICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5tb3VzZVVwKG1vdXNlRXZlbnQpOworICAg
ICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5tb3VzZVVwKHBsYWZvcm1Nb3VzZUV2ZW50
KTsKICAgICAgICAgYm9vbCBjYW5jZWxhYmxlID0gdHJ1ZTsKICAgICAgICAgYm9vbCBzZXRVbmRl
ciA9IGZhbHNlOwotICAgICAgICByZXR1cm4gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVz
KCkubW91c2V1cEV2ZW50LCBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSwgY2FuY2VsYWJs
ZSwgbV9jbGlja0NvdW50LCBtb3VzZUV2ZW50LCBzZXRVbmRlcik7CisgICAgICAgIHJldHVybiAh
ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIG1fbGFzdEVsZW1l
bnRVbmRlck1vdXNlLmdldCgpLCBjYW5jZWxhYmxlLCBtX2NsaWNrQ291bnQsIHBsYWZvcm1Nb3Vz
ZUV2ZW50LCBzZXRVbmRlcik7CiAgICAgfQogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6UmVsZWFzZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0Nv
bnRlbnQpOwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1v
dXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7CisgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwbGFmb3JtTW91c2VFdmVu
dCk7CiAgICAgRnJhbWUqIHN1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQu
Z2V0KCkgPyBzdWJmcmFtZUZvclRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1l
bnQuZ2V0KCkpIDogc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CiAgICAgaWYgKG1fZXZl
bnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KQogICAgICAgICBt
X2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IG51bGxwdHI7CiAgICAgaWYgKHN1YmZyYW1l
ICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgYm9vbCBzd2FsbG93TW91c2VVcEV2ZW50ID0gIWRpc3Bh
dGNoTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgp
LCB0cnVlLCBtX2NsaWNrQ291bnQsIG1vdXNlRXZlbnQsIGZhbHNlKTsKKyAgICBib29sIHN3YWxs
b3dNb3VzZVVwRXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVw
RXZlbnQsIG1ldi50YXJnZXROb2RlKCksIHRydWUsIG1fY2xpY2tDb3VudCwgcGxhZm9ybU1vdXNl
RXZlbnQsIGZhbHNlKTsKIAotICAgIGJvb2wgY29udGV4dE1lbnVFdmVudCA9IG1vdXNlRXZlbnQu
YnV0dG9uKCkgPT0gUmlnaHRCdXR0b247CisgICAgYm9vbCBjb250ZXh0TWVudUV2ZW50ID0gcGxh
Zm9ybU1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gUmlnaHRCdXR0b247CiAKLSAgICBib29sIHN3YWxs
b3dDbGlja0V2ZW50ID0gbV9jbGlja0NvdW50ID4gMCAmJiAhY29udGV4dE1lbnVFdmVudCAmJiBt
b3VzZUlzUmVsZWFzZWRPblByZXNzZWRFbGVtZW50KG1ldi50YXJnZXROb2RlKCksIG1fY2xpY2tO
b2RlLmdldCgpKSAmJiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50
LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIG1vdXNlRXZlbnQsIHRydWUp
OworICAgIGJvb2wgc3dhbGxvd0NsaWNrRXZlbnQgPSBtX2NsaWNrQ291bnQgPiAwICYmICFjb250
ZXh0TWVudUV2ZW50ICYmIG1vdXNlSXNSZWxlYXNlZE9uUHJlc3NlZEVsZW1lbnQobWV2LnRhcmdl
dE5vZGUoKSwgbV9jbGlja05vZGUuZ2V0KCkpICYmICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsIG1ldi50YXJnZXROb2RlKCksIHRydWUsIG1fY2xpY2tDb3VudCwg
cGxhZm9ybU1vdXNlRXZlbnQsIHRydWUpOwogCiAgICAgaWYgKG1fcmVzaXplTGF5ZXIpIHsKICAg
ICAgICAgbV9yZXNpemVMYXllci0+c2V0SW5SZXNpemVNb2RlKGZhbHNlKTsKLSAgICAgICAgbV9y
ZXNpemVMYXllciA9IDA7CisgICAgICAgIG1fcmVzaXplTGF5ZXIgPSBudWxscHRyOwogICAgIH0K
IAogICAgIGJvb2wgc3dhbGxvd01vdXNlUmVsZWFzZUV2ZW50ID0gZmFsc2U7CkBAIC0yMDkxLDcg
KzIwOTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIHJldHVybiBzd2FsbG93TW91
c2VVcEV2ZW50IHx8IHN3YWxsb3dDbGlja0V2ZW50IHx8IHN3YWxsb3dNb3VzZVJlbGVhc2VFdmVu
dDsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVBhc3RlR2xvYmFsU2VsZWN0aW9uKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYWZv
cm1Nb3VzZUV2ZW50KQogewogICAgIC8vIElmIHRoZSBldmVudCB3YXMgYSBtaWRkbGUgY2xpY2ss
IGF0dGVtcHQgdG8gY29weSBnbG9iYWwgc2VsZWN0aW9uIGluIGFmdGVyCiAgICAgLy8gdGhlIG5l
d2x5IHNldCBjYXJldCBwb3NpdGlvbi4KQEAgLTIxMTAsMTAgKzIxMTAsMTAgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZVBhc3RlR2xvYmFsU2VsZWN0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgbW91c2VFdmUKICAgICAvLyBjbGVhcnMgdGhlIHRleHQgYm94LiBTbyBpdCdzIGltcG9y
dGFudCB0aGlzIGhhcHBlbnMgYWZ0ZXIgdGhlIGV2ZW50CiAgICAgLy8gaGFuZGxlcnMgaGF2ZSBi
ZWVuIGZpcmVkLgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBpZiAobW91c2VFdmVudC50eXBlKCkg
IT0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkKQorICAgIGlmIChwbGFmb3JtTW91c2VFdmVu
dC50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZWxzZQotICAgIGlmIChtb3VzZUV2ZW50LnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZVJlbGVhc2VkKQorICAgIGlmIChwbGFmb3JtTW91c2VFdmVudC50eXBlKCkgIT0gUGxh
dGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CiAKQEAgLTI0MDEsNyArMjQwMSw3IEBAIHN0YXRpYyBib29sIGhpZXJhcmNoeUhhc0NhcHR1cmlu
Z0V2ZW50TGlzdGVuZXJzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdl
dE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2
ZW50LCBib29sIGZpcmVNb3VzZU92ZXJPdXQpCit2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91
c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBwbGFmb3JtTW91c2VFdmVudCwgYm9vbCBmaXJlTW91c2VPdmVyT3V0KQogewogICAgIEVs
ZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBudWxscHRyOwogICAgIApAQCAtMjQ5MCw4ICsyNDkwLDgg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKE5vZGUqIHRh
cmdldE5vZGUsIGNvbnN0IFBsYXRmb3JtTW8KIAogICAgICAgICBpZiAobV9sYXN0RWxlbWVudFVu
ZGVyTW91c2UgJiYgJm1fbGFzdEVsZW1lbnRVbmRlck1vdXNlLT5kb2N1bWVudCgpICE9IG1fZnJh
bWUuZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgbV9sYXN0RWxlbWVudFVuZGVyTW91c2UgPSBu
dWxscHRyOwotICAgICAgICAgICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IDA7Ci0gICAg
ICAgICAgICBtX2xhc3RJbnN0YW5jZVVuZGVyTW91c2UgPSAwOworICAgICAgICAgICAgbV9sYXN0
U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2xhc3RJbnN0YW5j
ZVVuZGVyTW91c2UgPSBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fbGFzdEVs
ZW1lbnRVbmRlck1vdXNlICE9IG1fZWxlbWVudFVuZGVyTW91c2UpIHsKQEAgLTI1MzAsMjIgKzI1
MzAsMjIgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKE5v
ZGUqIHRhcmdldE5vZGUsIGNvbnN0IFBsYXRmb3JtTW8KIAogICAgICAgICAgICAgLy8gU2VuZCBt
b3VzZW91dCBldmVudCB0byB0aGUgb2xkIG5vZGUuCiAgICAgICAgICAgICBpZiAobV9sYXN0RWxl
bWVudFVuZGVyTW91c2UpCi0gICAgICAgICAgICAgICAgbV9sYXN0RWxlbWVudFVuZGVyTW91c2Ut
PmRpc3BhdGNoTW91c2VFdmVudChtb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VvdXRFdmVu
dCwgMCwgbV9lbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9sYXN0
RWxlbWVudFVuZGVyTW91c2UtPmRpc3BhdGNoTW91c2VFdmVudChwbGFmb3JtTW91c2VFdmVudCwg
ZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQsIDAsIG1fZWxlbWVudFVuZGVyTW91c2UuZ2V0KCkp
OwogCiAgICAgICAgICAgICAvLyBTZW5kIG1vdXNlbGVhdmUgdG8gdGhlIG5vZGUgaGllcmFyY2h5
IG5vIGxvbmdlciB1bmRlciB0aGUgbW91c2UuCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlZnRFbGVtZW50c0NoYWluLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGhhc0NhcHR1cmluZ01vdXNlTGVhdmVMaXN0ZW5lciB8fCBsZWZ0RWxlbWVudHNDaGFpbltp
XS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlbGVhdmVFdmVudCkpCi0gICAg
ICAgICAgICAgICAgICAgIGxlZnRFbGVtZW50c0NoYWluW2ldLT5kaXNwYXRjaE1vdXNlRXZlbnQo
bW91c2VFdmVudCwgZXZlbnROYW1lcygpLm1vdXNlbGVhdmVFdmVudCwgMCwgbV9lbGVtZW50VW5k
ZXJNb3VzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGxlZnRFbGVtZW50c0NoYWluW2ld
LT5kaXNwYXRjaE1vdXNlRXZlbnQocGxhZm9ybU1vdXNlRXZlbnQsIGV2ZW50TmFtZXMoKS5tb3Vz
ZWxlYXZlRXZlbnQsIDAsIG1fZWxlbWVudFVuZGVyTW91c2UuZ2V0KCkpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBTZW5kIG1vdXNlb3ZlciBldmVudCB0byB0aGUgbmV3IG5vZGUu
CiAgICAgICAgICAgICBpZiAobV9lbGVtZW50VW5kZXJNb3VzZSkKLSAgICAgICAgICAgICAgICBt
X2VsZW1lbnRVbmRlck1vdXNlLT5kaXNwYXRjaE1vdXNlRXZlbnQobW91c2VFdmVudCwgZXZlbnRO
YW1lcygpLm1vdXNlb3ZlckV2ZW50LCAwLCBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgbV9lbGVtZW50VW5kZXJNb3VzZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50
KHBsYWZvcm1Nb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIDAsIG1fbGFz
dEVsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gU2VuZCBtb3VzZWxl
YXZlIGV2ZW50IHRvIHRoZSBub2RlcyBoaWVyYXJjaHkgdW5kZXIgdGhlIG1vdXNlLgogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBlbnRlcmVkRWxlbWVudHNDaGFpbi5zaXpl
KCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQ2FwdHVyaW5nTW91
c2VFbnRlckxpc3RlbmVyIHx8IGVudGVyZWRFbGVtZW50c0NoYWluW2ldLT5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50KSkKLSAgICAgICAgICAgICAgICAgICAg
ZW50ZXJlZEVsZW1lbnRzQ2hhaW5baV0tPmRpc3BhdGNoTW91c2VFdmVudChtb3VzZUV2ZW50LCBl
dmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50LCAwLCBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVudGVyZWRFbGVtZW50c0NoYWluW2ldLT5kaXNw
YXRjaE1vdXNlRXZlbnQocGxhZm9ybU1vdXNlRXZlbnQsIGV2ZW50TmFtZXMoKS5tb3VzZWVudGVy
RXZlbnQsIDAsIG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZSA9IG1fZWxlbWVudFVu
ZGVyTW91c2U7CkBAIC0yNTUzLDIzICsyNTUzLDIzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRh
dGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBQbGF0Zm9ybU1v
CiAgICAgfQogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiB0YXJnZXROb2RlLCBib29sIC8qY2FuY2Vs
YWJsZSovLCBpbnQgY2xpY2tDb3VudCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2
ZW50LCBib29sIHNldFVuZGVyKQorYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2V0Tm9kZSwgYm9vbCAv
KmNhbmNlbGFibGUqLywgaW50IGNsaWNrQ291bnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
cGxhZm9ybU1vdXNlRXZlbnQsIGJvb2wgc2V0VW5kZXIpCiB7CiAgICAgaWYgKEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRo
cm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKLSAgICB1cGRhdGVNb3VzZUV2
ZW50VGFyZ2V0Tm9kZSh0YXJnZXROb2RlLCBtb3VzZUV2ZW50LCBzZXRVbmRlcik7CisgICAgdXBk
YXRlTW91c2VFdmVudFRhcmdldE5vZGUodGFyZ2V0Tm9kZSwgcGxhZm9ybU1vdXNlRXZlbnQsIHNl
dFVuZGVyKTsKIAogICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0gZmFsc2U7CiAKICAgICBpZiAobV9l
bGVtZW50VW5kZXJNb3VzZSkKLSAgICAgICAgc3dhbGxvd0V2ZW50ID0gIShtX2VsZW1lbnRVbmRl
ck1vdXNlLT5kaXNwYXRjaE1vdXNlRXZlbnQobW91c2VFdmVudCwgZXZlbnRUeXBlLCBjbGlja0Nv
dW50KSk7CisgICAgICAgIHN3YWxsb3dFdmVudCA9ICEobV9lbGVtZW50VW5kZXJNb3VzZS0+ZGlz
cGF0Y2hNb3VzZUV2ZW50KHBsYWZvcm1Nb3VzZUV2ZW50LCBldmVudFR5cGUsIGNsaWNrQ291bnQp
KTsKIAogICAgIGlmICghc3dhbGxvd0V2ZW50ICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
bW91c2Vkb3duRXZlbnQpIHsKIAogICAgICAgICAvLyBJZiBjbGlja2luZyBvbiBhIGZyYW1lIHNj
cm9sbGJhciwgZG8gbm90IG1lc3MgdXAgd2l0aCBjb250ZW50IGZvY3VzLgogICAgICAgICBpZiAo
RnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKLSAgICAgICAgICAgIGlmICh2aWV3
LT5zY3JvbGxiYXJBdFBvaW50KG1vdXNlRXZlbnQucG9zaXRpb24oKSkpCisgICAgICAgICAgICBp
ZiAodmlldy0+c2Nyb2xsYmFyQXRQb2ludChwbGFmb3JtTW91c2VFdmVudC5wb3NpdGlvbigpKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0yNjAwLDcgKzI2
MDAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiB0YXJnZQogICAgICAgICB9CiAKICAgICAgICAgLy8g
T25seSBjaGFuZ2UgdGhlIGZvY3VzIHdoZW4gY2xpY2tpbmcgc2Nyb2xsYmFycyBpZiBpdCBjYW4g
dHJhbnNmZXJlZCB0byBhIG1vdXNlIGZvY3VzYWJsZSBub2RlLgotICAgICAgICBpZiAoKCFlbGVt
ZW50IHx8ICFlbGVtZW50LT5pc01vdXNlRm9jdXNhYmxlKCkpICYmIGlzSW5zaWRlU2Nyb2xsYmFy
KG1vdXNlRXZlbnQucG9zaXRpb24oKSkpCisgICAgICAgIGlmICgoIWVsZW1lbnQgfHwgIWVsZW1l
bnQtPmlzTW91c2VGb2N1c2FibGUoKSkgJiYgaXNJbnNpZGVTY3JvbGxiYXIocGxhZm9ybU1vdXNl
RXZlbnQucG9zaXRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
Ly8gSWYgZm9jdXMgc2hpZnQgaXMgYmxvY2tlZCwgd2UgZWF0IHRoZSBldmVudC4gIE5vdGUgd2Ug
c2hvdWxkIG5ldmVyIGNsZWFyIHN3YWxsb3dFdmVudApAQCAtMjg3OCw5ICsyODc4LDkgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkKICAgICBQbGF0Zm9y
bUV2ZW50OjpUeXBlIGV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKICNl
bmRpZgogCi0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9zaXRpb24sIGdsb2Jh
bFBvc2l0aW9uLCBSaWdodEJ1dHRvbiwgZXZlbnRUeXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgV1RGOjpjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxh
Zm9ybU1vdXNlRXZlbnQocG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBSaWdodEJ1dHRvbiwgZXZl
bnRUeXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpjdXJyZW50VGltZSgp
KTsKIAotICAgIHJldHVybiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jb250ZXh0
bWVudUV2ZW50LCB0YXJnZXROb2RlLCB0cnVlLCAwLCBtb3VzZUV2ZW50LCBmYWxzZSk7CisgICAg
cmV0dXJuICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQs
IHRhcmdldE5vZGUsIHRydWUsIDAsIHBsYWZvcm1Nb3VzZUV2ZW50LCBmYWxzZSk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKQEAgLTM5ODAsMjEgKzM5ODAsMjEgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50
JiBldmVudCkKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotYm9vbCBFdmVudEhhbmRs
ZXI6OmRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KQorYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoU3ludGhldGljVG91
Y2hFdmVudElmRW5hYmxlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYWZvcm1Nb3VzZUV2
ZW50KQogewogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIFVOVVNFRF9QQVJBTShl
dmVudCk7CisgICAgVU5VU0VEX1BBUkFNKHBsYWZvcm1Nb3VzZUV2ZW50KTsKICAgICByZXR1cm4g
ZmFsc2U7CiAjZWxzZQogICAgIGlmICghbV9mcmFtZS5zZXR0aW5ncygpLmlzVG91Y2hFdmVudEVt
dWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUGxhdGZvcm1F
dmVudDo6VHlwZSBldmVudFR5cGUgPSBldmVudC50eXBlKCk7CisgICAgUGxhdGZvcm1FdmVudDo6
VHlwZSBldmVudFR5cGUgPSBwbGFmb3JtTW91c2VFdmVudC50eXBlKCk7CiAgICAgaWYgKGV2ZW50
VHlwZSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmIGV2ZW50VHlwZSAhPSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZVByZXNzZWQgJiYgZXZlbnRUeXBlICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
UmVsZWFzZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1No
YWRvd0NvbnRlbnQpOwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJl
cGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZXZlbnQpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgcGxhZm9ybU1vdXNlRXZl
bnQpOwogICAgIGlmIChtZXYuc2Nyb2xsYmFyKCkgfHwgc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0
KG1ldikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDAwMiw3ICs0MDAyLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoU3ludGhldGljVG91Y2hFdmVudElmRW5hYmxlZChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQKICAgICBpZiAoZXZlbnRUeXBlID09IFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQgJiYgIW1fdG91Y2hQcmVzc2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIFN5bnRoZXRpY1NpbmdsZVRvdWNoRXZlbnQgdG91Y2hFdmVudChldmVudCk7CisgICAgU3lu
dGhldGljU2luZ2xlVG91Y2hFdmVudCB0b3VjaEV2ZW50KHBsYWZvcm1Nb3VzZUV2ZW50KTsKICAg
ICByZXR1cm4gaGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50KTsKICNlbmRpZgogfQo=
</data>
<flag name="review"
          id="261962"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237261</attachid>
            <date>2014-08-27 15:17:05 -0700</date>
            <delta_ts>2014-08-27 15:20:09 -0700</delta_ts>
            <desc>mev to mouseEvent rename</desc>
            <filename>bug-136303-20140827151658.patch</filename>
            <type>text/plain</type>
            <size>19530</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRiYWI0NWVhNTc5NDQw
MzVkYTJiYWEzZjFiYjE5MGVmMzJmMDM1ZS4uMzljNmIyODFhNGY5M2QyMzAwNWE3OWMwYmYzYTg2
MmJlY2IxMzVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMyw2ICszLDI4IEBACiAgICAgICAgIFNvbWUgRXZl
bnRIYW5kbGVyIG5hbWluZyBjbGVhbnVwCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzYzMDMKIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlbmFtZSAibWV2IiB2YXJpYWJsZXMgdG8gIm1vdXNl
RXZlbnQiLgorICAgICAgICAKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6ZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKToKKworMjAxNC0w
OC0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBT
b21lIEV2ZW50SGFuZGxlciBuYW1pbmcgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzAzCisKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0
aCBEYWtpbi4KIAogICAgICAgICBSZW5hbWUgUGxhdGZvcm1Nb3VzZUV2ZW50IHZhcmlhYmxlcyBm
cm9tICJtb3VzZUV2ZW50IiB0byAicGxhdGZvcm1Nb3VzZUV2ZW50IgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IGU1OTA1Njk4MWE4ZGQ4YTZhOTE0OTg2MzE5NTIzYjQ3MzYy
ZDE1YTYuLmEyYzY3ZDUxZGZhMjFlYjNhNTkzZTFmMmRiMTJjMzBjNGRmN2FmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE2ODcsMTcgKzE2ODcsMTcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIHBsYWZvcm1Nb3VzZUUKICAgICAvLyBTYXZlIHRoZSBkb2N1bWVudCBwb2ludCB3ZSBnZW5l
cmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cgY29vcmRpbmF0ZSBpcyBpbnZhbGlkYXRlZCBieSB3aGF0
IGhhcHBlbnMKICAgICAvLyB3aGVuIHdlIGRpc3BhdGNoIHRoZSBldmVudC4KICAgICBMYXlvdXRQ
b2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUs
IHBsYWZvcm1Nb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMgbWV2ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1
ZXN0LCBkb2N1bWVudFBvaW50LCBwbGFmb3JtTW91c2VFdmVudCk7CisgICAgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2ZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJl
TW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBwbGFmb3JtTW91c2VFdmVudCk7CiAK
LSAgICBpZiAoIW1ldi50YXJnZXROb2RlKCkpIHsKKyAgICBpZiAoIW1vdXNlRXZlbnQudGFyZ2V0
Tm9kZSgpKSB7CiAgICAgICAgIGludmFsaWRhdGVDbGljaygpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgbV9tb3VzZVByZXNzTm9kZSA9IG1ldi50YXJnZXROb2RlKCk7Cisg
ICAgbV9tb3VzZVByZXNzTm9kZSA9IG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpOwogCi0gICAgUmVm
UHRyPEZyYW1lPiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpOwotICAg
IGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZy
YW1lLmdldCgpKSkgeworICAgIFJlZlB0cjxGcmFtZT4gc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhp
dFRlc3RSZXN1bHQobW91c2VFdmVudCk7CisgICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVBy
ZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsIHN1YmZyYW1lLmdldCgpKSkgewogICAgICAg
ICAvLyBTdGFydCBjYXB0dXJpbmcgZnV0dXJlIGV2ZW50cyBmb3IgdGhpcyBmcmFtZS4gIFdlIG9u
bHkgZG8gdGhpcyBpZiB3ZSBkaWRuJ3QgY2xlYXIKICAgICAgICAgLy8gdGhlIG1fbW91c2VQcmVz
c2VkIGZsYWcsIHdoaWNoIG1heSBoYXBwZW4gaWYgYW4gQXBwS2l0IHdpZGdldCBlbnRlcmVkIGEg
bW9kYWwgZXZlbnQgbG9vcC4KICAgICAgICAgbV9jYXB0dXJlc0RyYWdnaW5nID0gc3ViZnJhbWUt
PmV2ZW50SGFuZGxlcigpLmNhcHR1cmVzRHJhZ2dpbmcoKTsKQEAgLTE3MjMsNyArMTcyMyw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBwbGFmb3JtTW91c2VFCiAjZW5kaWYKIAogICAgIG1fY2xpY2tDb3VudCA9IHBs
YWZvcm1Nb3VzZUV2ZW50LmNsaWNrQ291bnQoKTsKLSAgICBtX2NsaWNrTm9kZSA9IG1ldi50YXJn
ZXROb2RlKCk7CisgICAgbV9jbGlja05vZGUgPSBtb3VzZUV2ZW50LnRhcmdldE5vZGUoKTsKIAog
ICAgIGlmICghbV9jbGlja05vZGUpIHsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CkBAIC0x
NzQ0LDQ4ICsxNzQ0LDQ4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGFmb3JtTW91c2VFCiAKICAgICBtX2ZyYW1l
LnNlbGVjdGlvbigpLnNldENhcmV0QmxpbmtpbmdTdXNwZW5kZWQodHJ1ZSk7CiAKLSAgICBib29s
IHN3YWxsb3dFdmVudCA9ICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNlZG93
bkV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYWZvcm1Nb3Vz
ZUV2ZW50LCB0cnVlKTsKLSAgICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSAhc3dhbGxvd0V2ZW50IHx8
IG1ldi5zY3JvbGxiYXIoKTsKKyAgICBib29sIHN3YWxsb3dFdmVudCA9ICFkaXNwYXRjaE1vdXNl
RXZlbnQoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50LCBtb3VzZUV2ZW50LnRhcmdldE5vZGUo
KSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBwbGFmb3JtTW91c2VFdmVudCwgdHJ1ZSk7CisgICAgbV9j
YXB0dXJlc0RyYWdnaW5nID0gIXN3YWxsb3dFdmVudCB8fCBtb3VzZUV2ZW50LnNjcm9sbGJhcigp
OwogCiAgICAgLy8gSWYgdGhlIGhpdCB0ZXN0aW5nIG9yaWdpbmFsbHkgZGV0ZXJtaW5lZCB0aGUg
ZXZlbnQgd2FzIGluIGEgc2Nyb2xsYmFyLCByZWZldGNoIHRoZSBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzCiAgICAgLy8gaW4gY2FzZSB0aGUgc2Nyb2xsYmFyIHdpZGdldCB3YXMgZGVzdHJv
eWVkIHdoZW4gdGhlIG1vdXNlIGV2ZW50IHdhcyBoYW5kbGVkLgotICAgIGlmIChtZXYuc2Nyb2xs
YmFyKCkpIHsKLSAgICAgICAgY29uc3QgYm9vbCB3YXNMYXN0U2Nyb2xsQmFyID0gbWV2LnNjcm9s
bGJhcigpID09IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UuZ2V0KCk7CisgICAgaWYgKG1vdXNl
RXZlbnQuc2Nyb2xsYmFyKCkpIHsKKyAgICAgICAgY29uc3QgYm9vbCB3YXNMYXN0U2Nyb2xsQmFy
ID0gbW91c2VFdmVudC5zY3JvbGxiYXIoKSA9PSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdl
dCgpOwogICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dT
aGFkb3dDb250ZW50KTsKLSAgICAgICAgbWV2ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJl
TW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBwbGFmb3JtTW91c2VFdmVudCk7Ci0g
ICAgICAgIGlmICh3YXNMYXN0U2Nyb2xsQmFyICYmIG1ldi5zY3JvbGxiYXIoKSAhPSBtX2xhc3RT
Y3JvbGxiYXJVbmRlck1vdXNlLmdldCgpKQorICAgICAgICBtb3VzZUV2ZW50ID0gbV9mcmFtZS5k
b2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBwbGFm
b3JtTW91c2VFdmVudCk7CisgICAgICAgIGlmICh3YXNMYXN0U2Nyb2xsQmFyICYmIG1vdXNlRXZl
bnQuc2Nyb2xsYmFyKCkgIT0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS5nZXQoKSkKICAgICAg
ICAgICAgIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgPSBudWxscHRyOwogICAgIH0KIAogICAg
IGlmIChzd2FsbG93RXZlbnQpIHsKICAgICAgICAgLy8gc2Nyb2xsYmFycyBzaG91bGQgZ2V0IGV2
ZW50cyBhbnl3YXksIGV2ZW4gZGlzYWJsZWQgY29udHJvbHMgbWlnaHQgYmUgc2Nyb2xsYWJsZQot
ICAgICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9IG1ldi5zY3JvbGxiYXIoKTsKKyAgICAgICAg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSBtb3VzZUV2ZW50LnNjcm9sbGJhcigpOwogCiAgICAgICAg
IHVwZGF0ZUxhc3RTY3JvbGxiYXJVbmRlck1vdXNlKHNjcm9sbGJhciwgdHJ1ZSk7CiAKICAgICAg
ICAgaWYgKHNjcm9sbGJhcikKLSAgICAgICAgICAgIHBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9s
bGJhcihtZXYsIHNjcm9sbGJhcik7CisgICAgICAgICAgICBwYXNzTW91c2VQcmVzc0V2ZW50VG9T
Y3JvbGxiYXIobW91c2VFdmVudCwgc2Nyb2xsYmFyKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBSZWZldGNoIHRoZSBldmVudCB0YXJnZXQgbm9kZSBpZiBpdCBjdXJyZW50bHkgaXMgdGhlIHNo
YWRvdyBub2RlIGluc2lkZSBhbiA8aW5wdXQ+IGVsZW1lbnQuCiAgICAgICAgIC8vIElmIGEgbW91
c2UgZXZlbnQgaGFuZGxlciBjaGFuZ2VzIHRoZSBpbnB1dCBlbGVtZW50IHR5cGUgdG8gb25lIHRo
YXQgaGFzIGEgd2lkZ2V0IGFzc29jaWF0ZWQsCiAgICAgICAgIC8vIHdlJ2QgbGlrZSB0byBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCB0byBwYXNzIHRoZSBldmVudCB0byB0aGUg
d2lkZ2V0IGFuZCB0aHVzIHRoZQogICAgICAgICAvLyBldmVudCB0YXJnZXQgbm9kZSBjYW4ndCBz
dGlsbCBiZSB0aGUgc2hhZG93IG5vZGUuCi0gICAgICAgIGlmIChtZXYudGFyZ2V0Tm9kZSgpLT5p
c1NoYWRvd1Jvb3QoKSAmJiBpc0hUTUxJbnB1dEVsZW1lbnQodG9TaGFkb3dSb290KG1ldi50YXJn
ZXROb2RlKCkpLT5ob3N0RWxlbWVudCgpKSkgeworICAgICAgICBpZiAobW91c2VFdmVudC50YXJn
ZXROb2RlKCktPmlzU2hhZG93Um9vdCgpICYmIGlzSFRNTElucHV0RWxlbWVudCh0b1NoYWRvd1Jv
b3QobW91c2VFdmVudC50YXJnZXROb2RlKCkpLT5ob3N0RWxlbWVudCgpKSkgewogICAgICAgICAg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVu
dCk7Ci0gICAgICAgICAgICBtZXYgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2
ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIHBsYWZvcm1Nb3VzZUV2ZW50KTsKKyAgICAgICAg
ICAgIG1vdXNlRXZlbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJl
cXVlc3QsIGRvY3VtZW50UG9pbnQsIHBsYWZvcm1Nb3VzZUV2ZW50KTsKICAgICAgICAgfQogCiAg
ICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwogICAgICAgICBTY3JvbGxi
YXIqIHNjcm9sbGJhciA9IHZpZXcgPyB2aWV3LT5zY3JvbGxiYXJBdFBvaW50KHBsYWZvcm1Nb3Vz
ZUV2ZW50LnBvc2l0aW9uKCkpIDogMDsKICAgICAgICAgaWYgKCFzY3JvbGxiYXIpCi0gICAgICAg
ICAgICBzY3JvbGxiYXIgPSBtZXYuc2Nyb2xsYmFyKCk7CisgICAgICAgICAgICBzY3JvbGxiYXIg
PSBtb3VzZUV2ZW50LnNjcm9sbGJhcigpOwogCiAgICAgICAgIHVwZGF0ZUxhc3RTY3JvbGxiYXJV
bmRlck1vdXNlKHNjcm9sbGJhciwgdHJ1ZSk7CiAKLSAgICAgICAgaWYgKHNjcm9sbGJhciAmJiBw
YXNzTW91c2VQcmVzc0V2ZW50VG9TY3JvbGxiYXIobWV2LCBzY3JvbGxiYXIpKQorICAgICAgICBp
ZiAoc2Nyb2xsYmFyICYmIHBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcihtb3VzZUV2ZW50
LCBzY3JvbGxiYXIpKQogICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0gdHJ1ZTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0gaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1l
dik7CisgICAgICAgICAgICBzd2FsbG93RXZlbnQgPSBoYW5kbGVNb3VzZVByZXNzRXZlbnQobW91
c2VFdmVudCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN3YWxsb3dFdmVudDsKQEAgLTE4MDUsMjIg
KzE4MDUsMjIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYWZvcm0KICAgICBzZXRMYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uKHBsYWZvcm1Nb3VzZUV2ZW50KTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRv
d0NvbnRlbnQpOwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFy
ZU1vdXNlRXZlbnQocmVxdWVzdCwgcGxhZm9ybU1vdXNlRXZlbnQpOwotICAgIEZyYW1lKiBzdWJm
cmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpOworICAgIE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMgbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHBs
YWZvcm1Nb3VzZUV2ZW50KTsKKyAgICBGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRl
c3RSZXN1bHQobW91c2VFdmVudCk7CiAgICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2Fw
dHVyaW5nTW91c2VFdmVudHNFbGVtZW50KQogICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRz
RWxlbWVudCA9IG51bGxwdHI7Ci0gICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVByZXNzRXZl
bnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpKQorICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91
c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCBzdWJmcmFtZSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgbV9jbGlja0NvdW50ID0gcGxhZm9ybU1vdXNlRXZlbnQuY2xpY2tD
b3VudCgpOwotICAgIGJvb2wgc3dhbGxvd01vdXNlVXBFdmVudCA9ICFkaXNwYXRjaE1vdXNlRXZl
bnQoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCwgbWV2LnRhcmdldE5vZGUoKSwgdHJ1ZSwgbV9j
bGlja0NvdW50LCBwbGFmb3JtTW91c2VFdmVudCwgZmFsc2UpOworICAgIGJvb2wgc3dhbGxvd01v
dXNlVXBFdmVudCA9ICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCwgbW91c2VFdmVudC50YXJnZXROb2RlKCksIHRydWUsIG1fY2xpY2tDb3VudCwgcGxhZm9ybU1v
dXNlRXZlbnQsIGZhbHNlKTsKIAotICAgIGJvb2wgc3dhbGxvd0NsaWNrRXZlbnQgPSBwbGFmb3Jt
TW91c2VFdmVudC5idXR0b24oKSAhPSBSaWdodEJ1dHRvbiAmJiBtZXYudGFyZ2V0Tm9kZSgpID09
IG1fY2xpY2tOb2RlICYmICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIG1ldi50YXJnZXROb2RlKCksIHRydWUsIG1fY2xpY2tDb3VudCwgcGxhZm9ybU1vdXNlRXZl
bnQsIHRydWUpOworICAgIGJvb2wgc3dhbGxvd0NsaWNrRXZlbnQgPSBwbGFmb3JtTW91c2VFdmVu
dC5idXR0b24oKSAhPSBSaWdodEJ1dHRvbiAmJiBtb3VzZUV2ZW50LnRhcmdldE5vZGUoKSA9PSBt
X2NsaWNrTm9kZSAmJiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50
LCBtb3VzZUV2ZW50LnRhcmdldE5vZGUoKSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBwbGFmb3JtTW91
c2VFdmVudCwgdHJ1ZSk7CiAKICAgICBpZiAobV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSkKICAg
ICAgICAgc3dhbGxvd01vdXNlVXBFdmVudCA9IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UtPm1v
dXNlVXAocGxhZm9ybU1vdXNlRXZlbnQpOwogCi0gICAgYm9vbCBzd2FsbG93TW91c2VSZWxlYXNl
RXZlbnQgPSAhc3dhbGxvd01vdXNlVXBFdmVudCAmJiBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCht
ZXYpOworICAgIGJvb2wgc3dhbGxvd01vdXNlUmVsZWFzZUV2ZW50ID0gIXN3YWxsb3dNb3VzZVVw
RXZlbnQgJiYgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudCk7CiAKICAgICBpbnZh
bGlkYXRlQ2xpY2soKTsKIApAQCAtMTkzNSwxNCArMTkzNSwxNCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGFmb3Jt
TW91c2VFdgogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHk7CiAjZW5kaWYKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KGhpdFR5cGUpOwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFy
ZU1vdXNlRXZlbnQocmVxdWVzdCwgcGxhZm9ybU1vdXNlRXZlbnQpOworICAgIE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMgbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3Qs
IHBsYWZvcm1Nb3VzZUV2ZW50KTsKICAgICBpZiAoaG92ZXJlZE5vZGUpCi0gICAgICAgICpob3Zl
cmVkTm9kZSA9IG1ldi5oaXRUZXN0UmVzdWx0KCk7CisgICAgICAgICpob3ZlcmVkTm9kZSA9IG1v
dXNlRXZlbnQuaGl0VGVzdFJlc3VsdCgpOwogCiAgICAgaWYgKG1fcmVzaXplTGF5ZXIgJiYgbV9y
ZXNpemVMYXllci0+aW5SZXNpemVNb2RlKCkpCiAgICAgICAgIG1fcmVzaXplTGF5ZXItPnJlc2l6
ZShwbGFmb3JtTW91c2VFdmVudCwgbV9vZmZzZXRGcm9tUmVzaXplQ29ybmVyKTsKICAgICBlbHNl
IHsKLSAgICAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSBtZXYuc2Nyb2xsYmFyKCk7CisgICAg
ICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gbW91c2VFdmVudC5zY3JvbGxiYXIoKTsKICAgICAg
ICAgdXBkYXRlTGFzdFNjcm9sbGJhclVuZGVyTW91c2Uoc2Nyb2xsYmFyLCAhbV9tb3VzZVByZXNz
ZWQpOwogCiAgICAgICAgIC8vIE9uIGlPUywgb3VyIHNjcm9sbGJhcnMgYXJlIG1hbmFnZWQgYnkg
VUlLaXQuCkBAIC0xOTU1LDI0ICsxOTU1LDI0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYWZvcm1Nb3VzZUV2CiAg
ICAgfQogCiAgICAgYm9vbCBzd2FsbG93RXZlbnQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhbWU+
IG5ld1N1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkgPyBzdWJm
cmFtZUZvclRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkpIDog
c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CisgICAgUmVmUHRyPEZyYW1lPiBuZXdTdWJm
cmFtZSA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpID8gc3ViZnJhbWVGb3JU
YXJnZXROb2RlKG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpKSA6IHN1YmZyYW1l
Rm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKICAKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0
cyB0byBoYXBwZW4gZmlyc3QsIGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92
ZSBldmVudCB0byB0aGUgbGFzdCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91
dHMuCiAgICAgaWYgKG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VN
b3ZlRXZlbnRTdWJmcmFtZS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKCZtX2ZyYW1lKSAmJiBtX2xh
c3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQotICAgICAgICBwYXNzTW91
c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1ldiwgbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZS5n
ZXQoKSk7CisgICAgICAgIHBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwg
bV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZS5nZXQoKSk7CiAKICAgICBpZiAobmV3U3ViZnJh
bWUpIHsKICAgICAgICAgLy8gVXBkYXRlIG92ZXIvb3V0IHN0YXRlIGJlZm9yZSBwYXNzaW5nIHRo
ZSBldmVudCB0byB0aGUgc3ViZnJhbWUuCi0gICAgICAgIHVwZGF0ZU1vdXNlRXZlbnRUYXJnZXRO
b2RlKG1ldi50YXJnZXROb2RlKCksIHBsYWZvcm1Nb3VzZUV2ZW50LCB0cnVlKTsKKyAgICAgICAg
dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUobW91c2VFdmVudC50YXJnZXROb2RlKCksIHBsYWZv
cm1Nb3VzZUV2ZW50LCB0cnVlKTsKICAgICAgICAgCiAgICAgICAgIC8vIEV2ZW50IGRpc3BhdGNo
IGluIHVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlIG1heSBoYXZlIGNhdXNlZCB0aGUgc3ViZnJh
bWUgb2YgdGhlIHRhcmdldAogICAgICAgICAvLyBub2RlIHRvIGJlIGRldGFjaGVkIGZyb20gaXRz
IEZyYW1lVmlldywgaW4gd2hpY2ggY2FzZSB0aGUgZXZlbnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQu
CiAgICAgICAgIGlmIChuZXdTdWJmcmFtZS0+dmlldygpKQotICAgICAgICAgICAgc3dhbGxvd0V2
ZW50IHw9IHBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUobWV2LCBuZXdTdWJmcmFtZS5nZXQo
KSwgaG92ZXJlZE5vZGUpOworICAgICAgICAgICAgc3dhbGxvd0V2ZW50IHw9IHBhc3NNb3VzZU1v
dmVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwgbmV3U3ViZnJhbWUuZ2V0KCksIGhvdmVyZWRO
b2RlKTsKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBPUlQpCiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKSB7Ci0gICAgICAgICAgICBPcHRp
b25hbEN1cnNvciBvcHRpb25hbEN1cnNvciA9IHNlbGVjdEN1cnNvcihtZXYuaGl0VGVzdFJlc3Vs
dCgpLCBwbGFmb3JtTW91c2VFdmVudC5zaGlmdEtleSgpKTsKKyAgICAgICAgICAgIE9wdGlvbmFs
Q3Vyc29yIG9wdGlvbmFsQ3Vyc29yID0gc2VsZWN0Q3Vyc29yKG1vdXNlRXZlbnQuaGl0VGVzdFJl
c3VsdCgpLCBwbGFmb3JtTW91c2VFdmVudC5zaGlmdEtleSgpKTsKICAgICAgICAgICAgIGlmIChv
cHRpb25hbEN1cnNvci5pc0N1cnNvckNoYW5nZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50TW91c2VDdXJzb3IgPSBvcHRpb25hbEN1cnNvci5jdXJzb3IoKTsKICAgICAgICAgICAgICAg
ICB2aWV3LT5zZXRDdXJzb3IobV9jdXJyZW50TW91c2VDdXJzb3IpOwpAQCAtMTk4NiwxMCArMTk4
NiwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBwbGFmb3JtTW91c2VFdgogICAgIGlmIChzd2FsbG93RXZlbnQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIHN3YWxsb3dFdmVudCA9ICFkaXNwYXRjaE1v
dXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCBm
YWxzZSwgMCwgcGxhZm9ybU1vdXNlRXZlbnQsIHRydWUpOworICAgIHN3YWxsb3dFdmVudCA9ICFk
aXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50LCBtb3VzZUV2ZW50
LnRhcmdldE5vZGUoKSwgZmFsc2UsIDAsIHBsYWZvcm1Nb3VzZUV2ZW50LCB0cnVlKTsKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGlmICghc3dhbGxvd0V2ZW50KQotICAgICAgICBzd2Fs
bG93RXZlbnQgPSBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChtZXYpOworICAgICAgICBzd2FsbG93
RXZlbnQgPSBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChtb3VzZUV2ZW50KTsKICNlbmRpZiAvLyBF
TkFCTEUoRFJBR19TVVBQT1JUKQogCiAgICAgcmV0dXJuIHN3YWxsb3dFdmVudDsKQEAgLTIwNjQs
MTggKzIwNjQsMTggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhZm9ybU1vdXMKICAgICB9CiAKICAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlIHwgSGl0VGVzdFJlcXVl
c3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7Ci0gICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBwbGFmb3JtTW91c2VFdmVudCk7
Ci0gICAgRnJhbWUqIHN1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0
KCkgPyBzdWJmcmFtZUZvclRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQu
Z2V0KCkpIDogc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CisgICAgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2ZW50ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwg
cGxhZm9ybU1vdXNlRXZlbnQpOworICAgIEZyYW1lKiBzdWJmcmFtZSA9IG1fY2FwdHVyaW5nTW91
c2VFdmVudHNFbGVtZW50LmdldCgpID8gc3ViZnJhbWVGb3JUYXJnZXROb2RlKG1fY2FwdHVyaW5n
TW91c2VFdmVudHNFbGVtZW50LmdldCgpKSA6IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtb3Vz
ZUV2ZW50KTsKICAgICBpZiAobV9ldmVudEhhbmRsZXJXaWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2
ZW50c0VsZW1lbnQpCiAgICAgICAgIG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50ID0gbnVs
bHB0cjsKLSAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFt
ZShtZXYsIHN1YmZyYW1lKSkKKyAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUmVsZWFzZUV2
ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCBzdWJmcmFtZSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgYm9vbCBzd2FsbG93TW91c2VVcEV2ZW50ID0gIWRpc3BhdGNoTW91c2VFdmVudChl
dmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNr
Q291bnQsIHBsYWZvcm1Nb3VzZUV2ZW50LCBmYWxzZSk7CisgICAgYm9vbCBzd2FsbG93TW91c2VV
cEV2ZW50ID0gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBt
b3VzZUV2ZW50LnRhcmdldE5vZGUoKSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBwbGFmb3JtTW91c2VF
dmVudCwgZmFsc2UpOwogCiAgICAgYm9vbCBjb250ZXh0TWVudUV2ZW50ID0gcGxhZm9ybU1vdXNl
RXZlbnQuYnV0dG9uKCkgPT0gUmlnaHRCdXR0b247CiAKLSAgICBib29sIHN3YWxsb3dDbGlja0V2
ZW50ID0gbV9jbGlja0NvdW50ID4gMCAmJiAhY29udGV4dE1lbnVFdmVudCAmJiBtb3VzZUlzUmVs
ZWFzZWRPblByZXNzZWRFbGVtZW50KG1ldi50YXJnZXROb2RlKCksIG1fY2xpY2tOb2RlLmdldCgp
KSAmJiAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBtZXYudGFy
Z2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYWZvcm1Nb3VzZUV2ZW50LCB0cnVlKTsK
KyAgICBib29sIHN3YWxsb3dDbGlja0V2ZW50ID0gbV9jbGlja0NvdW50ID4gMCAmJiAhY29udGV4
dE1lbnVFdmVudCAmJiBtb3VzZUlzUmVsZWFzZWRPblByZXNzZWRFbGVtZW50KG1vdXNlRXZlbnQu
dGFyZ2V0Tm9kZSgpLCBtX2NsaWNrTm9kZS5nZXQoKSkgJiYgIWRpc3BhdGNoTW91c2VFdmVudChl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbW91c2VFdmVudC50YXJnZXROb2RlKCksIHRydWUsIG1f
Y2xpY2tDb3VudCwgcGxhZm9ybU1vdXNlRXZlbnQsIHRydWUpOwogCiAgICAgaWYgKG1fcmVzaXpl
TGF5ZXIpIHsKICAgICAgICAgbV9yZXNpemVMYXllci0+c2V0SW5SZXNpemVNb2RlKGZhbHNlKTsK
QEAgLTIwODQsNyArMjA4NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYWZvcm1Nb3VzCiAKICAgICBib29s
IHN3YWxsb3dNb3VzZVJlbGVhc2VFdmVudCA9IGZhbHNlOwogICAgIGlmICghc3dhbGxvd01vdXNl
VXBFdmVudCkKLSAgICAgICAgc3dhbGxvd01vdXNlUmVsZWFzZUV2ZW50ID0gaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQobWV2KTsKKyAgICAgICAgc3dhbGxvd01vdXNlUmVsZWFzZUV2ZW50ID0gaGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudCk7CiAKICAgICBpbnZhbGlkYXRlQ2xpY2so
KTsKIApAQCAtMjI0NCwxMCArMjI0NCwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJh
Z0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRGF0YVRyYW5zZgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQp
OwotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZl
bnQocmVxdWVzdCwgZXZlbnQpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbW91
c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGV2ZW50KTsKIAogICAgIFJlZlB0
cjxFbGVtZW50PiBuZXdUYXJnZXQ7Ci0gICAgaWYgKE5vZGUqIHRhcmdldE5vZGUgPSBtZXYudGFy
Z2V0Tm9kZSgpKSB7CisgICAgaWYgKE5vZGUqIHRhcmdldE5vZGUgPSBtb3VzZUV2ZW50LnRhcmdl
dE5vZGUoKSkgewogICAgICAgICAvLyBEcmFnIGV2ZW50cyBzaG91bGQgbmV2ZXIgZ28gdG8gbm9u
LWVsZW1lbnQgbm9kZXMgKGZvbGxvd2luZyBJRSwgYW5kIHByb3BlciBtb3VzZW92ZXIvb3V0IGRp
c3BhdGNoKQogICAgICAgICBpZiAoIXRhcmdldE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAg
ICAgICAgIG5ld1RhcmdldCA9IHRhcmdldE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQo
KTsKQEAgLTIzNTUsMTAgKzIzNTUsMTAgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNldENhcHR1cmlu
Z01vdXNlRXZlbnRzRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCiAgICAgbV9l
dmVudEhhbmRsZXJXaWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQgPSBmYWxzZTsK
IH0KIAotTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBFdmVudEhhbmRsZXI6OnByZXBhcmVN
b3VzZUV2ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIG1ldikKK01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRXZlbnRIYW5kbGVy
OjpwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRv
Y3VtZW50KCkpOwotICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2
ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtZXYucG9z
aXRpb24oKSksIG1ldik7CisgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+cHJlcGFyZU1v
dXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1v
dXNlRXZlbnQucG9zaXRpb24oKSksIG1vdXNlRXZlbnQpOwogfQogCiBzdGF0aWMgaW5saW5lIFNW
R0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2VBc3NvY2lhdGVkV2l0aFNoYWRvd1RyZWVFbGVtZW50
KE5vZGUqIHJlZmVyZW5jZU5vZGUpCkBAIC0yNzkxLDIwICsyNzkxLDIwIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50KQogICAgIGJvb2wgc3dhbGxvd0V2ZW50OwogICAgIExheW91dFBvaW50IHZpZXdwb3J0UG9z
ID0gdi0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsK
KyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1vdXNlRXZlbnQgPSBkb2MtPnByZXBh
cmVNb3VzZUV2ZW50KHJlcXVlc3QsIHZpZXdwb3J0UG9zLCBldmVudCk7CiAKICAgICBpZiAobV9m
cmFtZS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1lbnVDbGlj
aygpCiAgICAgICAgICYmICFtX2ZyYW1lLnNlbGVjdGlvbigpLmNvbnRhaW5zKHZpZXdwb3J0UG9z
KQotICAgICAgICAmJiAhbWV2LnNjcm9sbGJhcigpCisgICAgICAgICYmICFtb3VzZUV2ZW50LnNj
cm9sbGJhcigpCiAgICAgICAgIC8vIEZJWE1FOiBJbiB0aGUgZWRpdGFibGUgY2FzZSwgd29yZCBz
ZWxlY3Rpb24gc29tZXRpbWVzIHNlbGVjdHMgY29udGVudCB0aGF0IGlzbid0IHVuZGVybmVhdGgg
dGhlIG1vdXNlLgogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIG5vbi1lZGl0YWJsZSwg
d2UgZG8gd29yZCBzZWxlY3Rpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gdXNlIHRoZSBjb250ZXh0
dWFsIG1lbnUgaXRlbXMKICAgICAgICAgLy8gYXZhaWxhYmxlIGZvciB0ZXh0IHNlbGVjdGlvbnMu
ICBCdXQgb25seSBpZiB3ZSdyZSBhYm92ZSB0ZXh0LgotICAgICAgICAmJiAobV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IChtZXYudGFyZ2V0Tm9k
ZSgpICYmIG1ldi50YXJnZXROb2RlKCktPmlzVGV4dE5vZGUoKSkpKSB7CisgICAgICAgICYmICht
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkgfHwgKG1v
dXNlRXZlbnQudGFyZ2V0Tm9kZSgpICYmIG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLT5pc1RleHRO
b2RlKCkpKSkgewogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0ID0gdHJ1ZTsgLy8g
Y29udGV4dCBtZW51IGV2ZW50cyBhcmUgYWx3YXlzIGFsbG93ZWQgdG8gcGVyZm9ybSBhIHNlbGVj
dGlvbgotICAgICAgICBzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KG1ldik7
CisgICAgICAgIHNlbGVjdENsb3Nlc3RXb3JkT3JMaW5rRnJvbU1vdXNlRXZlbnQobW91c2VFdmVu
dCk7CiAgICAgfQogCi0gICAgc3dhbGxvd0V2ZW50ID0gIWRpc3BhdGNoTW91c2VFdmVudChldmVu
dE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwgbWV2LnRhcmdldE5vZGUoKSwgdHJ1ZSwgMCwgZXZl
bnQsIGZhbHNlKTsKKyAgICBzd2FsbG93RXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50
TmFtZXMoKS5jb250ZXh0bWVudUV2ZW50LCBtb3VzZUV2ZW50LnRhcmdldE5vZGUoKSwgdHJ1ZSwg
MCwgZXZlbnQsIGZhbHNlKTsKICAgICAKICAgICByZXR1cm4gc3dhbGxvd0V2ZW50OwogfQpAQCAt
MzcxNiwxMiArMzcxNiwxMiBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3JvbGxl
ZEJ5VXNlcigpCiAgICAgICAgIHYtPnNldFdhc1Njcm9sbGVkQnlVc2VyKHRydWUpOwogfQogCi1i
b29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFyKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIEV2
ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFyKE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewogICAg
IGlmICghc2Nyb2xsYmFyIHx8ICFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKLSAgICByZXR1cm4gc2Ny
b2xsYmFyLT5tb3VzZURvd24obWV2LmV2ZW50KCkpOworICAgIHJldHVybiBzY3JvbGxiYXItPm1v
dXNlRG93bihtb3VzZUV2ZW50LmV2ZW50KCkpOwogfQogCiAvLyBJZiBzY3JvbGxiYXIgKHVuZGVy
IG1vdXNlKSBpcyBkaWZmZXJlbnQgZnJvbSBsYXN0LCBzZW5kIGEgbW91c2UgZXhpdGVkLiBTZXQK
QEAgLTM5OTQsOCArMzk5NCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaFN5bnRoZXRp
Y1RvdWNoRXZlbnRJZkVuYWJsZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwotICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVz
dCwgcGxhZm9ybU1vdXNlRXZlbnQpOwotICAgIGlmIChtZXYuc2Nyb2xsYmFyKCkgfHwgc3ViZnJh
bWVGb3JIaXRUZXN0UmVzdWx0KG1ldikpCisgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyBtb3VzZUV2ZW50ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgcGxhZm9ybU1vdXNlRXZl
bnQpOworICAgIGlmIChtb3VzZUV2ZW50LnNjcm9sbGJhcigpIHx8IHN1YmZyYW1lRm9ySGl0VGVz
dFJlc3VsdChtb3VzZUV2ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gVGhl
IG9yZGVyIGlzIGltcG9ydGFudC4gVGhpcyBjaGVjayBzaG91bGQgZm9sbG93IHRoZSBzdWJmcmFt
ZSB0ZXN0OiBodHRwOi8vd2Via2l0Lm9yZy9iLzExMTI5Mi4K
</data>
<flag name="review"
          id="261978"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>