<?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>121325</bug_id>
          
          <creation_ts>2013-09-13 14:48:07 -0700</creation_ts>
          <short_desc>Chrome, DragController and FocusController should hold onto a Page&amp;</short_desc>
          <delta_ts>2013-09-13 16:34:12 -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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>929026</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-13 14:48:07 -0700</bug_when>
    <thetext>Chrome, DragController and FocusController should hold onto a Page&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929027</commentid>
    <comment_count>1</comment_count>
      <attachid>211593</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-13 14:49:22 -0700</bug_when>
    <thetext>Created attachment 211593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929055</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-13 16:34:12 -0700</bug_when>
    <thetext>Committed r155731: &lt;http://trac.webkit.org/changeset/155731&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211593</attachid>
            <date>2013-09-13 14:49:22 -0700</date>
            <delta_ts>2013-09-13 15:57:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121325-20130913144921.patch</filename>
            <type>text/plain</type>
            <size>38709</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTcyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA5LTEzICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2hyb21lLCBEcmFnQ29udHJvbGxlciBh
bmQgRm9jdXNDb250cm9sbGVyIHNob3VsZCBob2xkIG9udG8gYSBQYWdlJgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMzI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICog
cGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpDaHJvbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuUnVuTW9kYWxJZkR1cmluZ1Bh
Z2VEaXNtaXNzYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpydW5KYXZhU2NyaXB0QWxl
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpydW5KYXZhU2NyaXB0Q29uZmlybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWU6OnNldFRvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp3aW5k
b3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAqIHBh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHA6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuaDoKKyAgICAgICAgVGFrZSByZWZlcmVuY2VzIHdo
ZXJlIHBvc3NpYmxlLgorCiAyMDEzLTA5LTEzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQ29udGV4dE1lbnVDb250cm9sbGVyIHNob3VsZCBob2xkIG9udG8gYSBQYWdl
JgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlz
aW9uIDE1NTcxNykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMSArODksNiBAQCBEcmFnQ2FyZXRDb250cm9sbGVyOjpE
cmFnQ2FyZXRDb250cm9sbGVyCiB7CiB9CiAKLVBhc3NPd25QdHI8RHJhZ0NhcmV0Q29udHJvbGxl
cj4gRHJhZ0NhcmV0Q29udHJvbGxlcjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IERyYWdDYXJldENvbnRyb2xsZXIpOwotfQotCiBib29sIERyYWdDYXJldENvbnRyb2xsZXI6
OmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNSaWNobHlF
ZGl0YWJsZVBvc2l0aW9uKG1fcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAxNTU3MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgY2xhc3MgRHJhZ0NhcmV0Q29udHJvbGxlciA6IHByaXZhdGUgQ2FyZQog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdDYXJldENvbnRyb2xsZXIpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYWdD
YXJldENvbnRyb2xsZXI+IGNyZWF0ZSgpOworICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAog
ICAgIFJlbmRlck9iamVjdCogY2FyZXRSZW5kZXJlcigpIGNvbnN0OwogICAgIHZvaWQgcGFpbnRE
cmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25zdDsKQEAgLTEwMyw4ICsxMDMsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBub2RlV2lsbEJlUmVtb3ZlZChOb2RlKik7CiAKIHByaXZhdGU6Ci0gICAg
RHJhZ0NhcmV0Q29udHJvbGxlcigpOwotCiAgICAgVmlzaWJsZVBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAxNTU3MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEyICs2
MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotQ2hyb21lOjpDaHJvbWUoUGFnZSogcGFnZSwgQ2hyb21l
Q2xpZW50KiBjbGllbnQpCitDaHJvbWU6OkNocm9tZShQYWdlJiBwYWdlLCBDaHJvbWVDbGllbnQm
IGNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9jbGllbnQoKmNsaWVudCkKKyAg
ICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZGlzcGxheUlEKDApCiB7Ci0gICAgQVNTRVJU
KGNsaWVudCk7CiB9CiAKIENocm9tZTo6fkNocm9tZSgpCkBAIC03NSwxMSArNzQsNiBAQCBDaHJv
bWU6On5DaHJvbWUoKQogICAgIG1fY2xpZW50LmNocm9tZURlc3Ryb3llZCgpOwogfQogCi1QYXNz
T3duUHRyPENocm9tZT4gQ2hyb21lOjpjcmVhdGUoUGFnZSogcGFnZSwgQ2hyb21lQ2xpZW50KiBj
bGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDaHJvbWUocGFnZSwgY2xpZW50KSk7
Ci19Ci0KIHZvaWQgQ2hyb21lOjppbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgdXBk
YXRlUmVjdCwgYm9vbCBpbW1lZGlhdGUpCiB7CiAgICAgbV9jbGllbnQuaW52YWxpZGF0ZVJvb3RW
aWV3KHVwZGF0ZVJlY3QsIGltbWVkaWF0ZSk7CkBAIC05OCw3ICs5Miw3IEBAIHZvaWQgQ2hyb21l
OjppbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2MKIHZvaWQgQ2hyb21lOjpzY3JvbGwoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgbV9jbGllbnQuc2Nyb2xsKHNjcm9sbERlbHRhLCBy
ZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFNjcm9sbChtX3BhZ2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xs
KCZtX3BhZ2UpOwogfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC0xOTQsNyAr
MTg4LDcgQEAgUGFnZSogQ2hyb21lOjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLAogICAgIGlm
ICghbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoU3RvcmFnZU5hbWVzcGFj
ZSogb2xkU2Vzc2lvblN0b3JhZ2UgPSBtX3BhZ2UtPnNlc3Npb25TdG9yYWdlKGZhbHNlKSkKKyAg
ICBpZiAoU3RvcmFnZU5hbWVzcGFjZSogb2xkU2Vzc2lvblN0b3JhZ2UgPSBtX3BhZ2Uuc2Vzc2lv
blN0b3JhZ2UoZmFsc2UpKQogICAgICAgICBuZXdQYWdlLT5zZXRTZXNzaW9uU3RvcmFnZShvbGRT
ZXNzaW9uU3RvcmFnZS0+Y29weShuZXdQYWdlKSk7CiAKICAgICByZXR1cm4gbmV3UGFnZTsKQEAg
LTIxMCwxMiArMjA0LDEyIEBAIGJvb2wgQ2hyb21lOjpjYW5SdW5Nb2RhbCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fY2xpZW50LmNhblJ1bk1vZGFsKCk7CiB9CiAKLXN0YXRpYyBib29sIGNhblJ1bk1v
ZGFsSWZEdXJpbmdQYWdlRGlzbWlzc2FsKFBhZ2UqIHBhZ2UsIENocm9tZUNsaWVudDo6RGlhbG9n
VHlwZSBkaWFsb2csIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3N0YXRpYyBib29sIGNhblJ1bk1v
ZGFsSWZEdXJpbmdQYWdlRGlzbWlzc2FsKFBhZ2UmIHBhZ2UsIENocm9tZUNsaWVudDo6RGlhbG9n
VHlwZSBkaWFsb2csIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAg
ICAgRnJhbWVMb2FkZXI6OlBhZ2VEaXNtaXNzYWxUeXBlIGRpc21pc3NhbCA9IGZyYW1lLT5sb2Fk
ZXIoKS5wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKTsKICAgICAgICAgaWYgKGRp
c21pc3NhbCAhPSBGcmFtZUxvYWRlcjo6Tm9EaXNtaXNzYWwpCi0gICAgICAgICAgICByZXR1cm4g
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvdWxkUnVuTW9kYWxEaWFsb2dEdXJpbmdQYWdlRGlz
bWlzc2FsKGRpYWxvZywgbWVzc2FnZSwgZGlzbWlzc2FsKTsKKyAgICAgICAgICAgIHJldHVybiBw
YWdlLmNocm9tZSgpLmNsaWVudCgpLnNob3VsZFJ1bk1vZGFsRGlhbG9nRHVyaW5nUGFnZURpc21p
c3NhbChkaWFsb2csIG1lc3NhZ2UsIGRpc21pc3NhbCk7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMjk0LDcgKzI4OCw3IEBAIGJvb2wgQ2hyb21lOjpydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwKICAgICAvLyBvdGhlcndpc2UgY2F1c2UgdGhlIGxvYWQgdG8gY29udGludWUgd2hp
bGUgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBleGVjdXRpbmcgSmF2YVNjcmlwdC4KICAgICBQYWdl
R3JvdXBMb2FkRGVmZXJyZXIgZGVmZXJyZXIobV9wYWdlLCB0cnVlKTsKIAotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxSdW5KYXZhU2NyaXB0RGlhbG9nKG1fcGFnZSwgbWVzc2FnZSk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJ1bkphdmFTY3JpcHREaWFsb2coJm1fcGFnZSwgbWVzc2FnZSk7CiAgICAgYm9vbCBvayA9
IG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtZXNzYWdlLCBmcmFtZSk7CiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSdW5KYXZhU2NyaXB0RGlhbG9nKGNvb2tp
ZSk7CiAgICAgcmV0dXJuIG9rOwpAQCAtMzE4LDcgKzMxMiw3IEBAIHZvaWQgQ2hyb21lOjpydW5K
YXZhU2NyaXB0QWxlcnQoRnJhbWUqIGYKICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMo
KTsKICAgICBTdHJpbmcgZGlzcGxheU1lc3NhZ2UgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyhtZXNzYWdlKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZhU2NyaXB0
RGlhbG9nKG1fcGFnZSwgZGlzcGxheU1lc3NhZ2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZh
U2NyaXB0RGlhbG9nKCZtX3BhZ2UsIGRpc3BsYXlNZXNzYWdlKTsKICAgICBtX2NsaWVudC5ydW5K
YXZhU2NyaXB0QWxlcnQoZnJhbWUsIGRpc3BsYXlNZXNzYWdlKTsKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJ1bkphdmFTY3JpcHREaWFsb2coY29va2llKTsKIH0KQEAgLTMzNiw3
ICszMzAsNyBAQCBib29sIENocm9tZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqCiAgICAg
bm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgU3RyaW5nIGRpc3BsYXlNZXNzYWdl
ID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcobWVzc2FnZSk7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhtX3BhZ2UsIGRpc3BsYXlNZXNzYWdl
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZygmbV9wYWdlLCBkaXNwbGF5
TWVzc2FnZSk7CiAgICAgYm9vbCBvayA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtKGZy
YW1lLCBkaXNwbGF5TWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
dW5KYXZhU2NyaXB0RGlhbG9nKGNvb2tpZSk7CiAgICAgcmV0dXJuIG9rOwpAQCAtMzU1LDcgKzM0
OSw3IEBAIGJvb2wgQ2hyb21lOjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiAKICAgICBub3Rp
ZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKTsKICAgICBTdHJpbmcgZGlzcGxheVByb21wdCA9IGZy
YW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHByb21wdCk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhtX3BhZ2UsIGRpc3BsYXlQcm9tcHQpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSdW5KYXZhU2NyaXB0RGlhbG9nKCZtX3BhZ2UsIGRpc3BsYXlQcm9tcHQp
OwogICAgIGJvb2wgb2sgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KGZyYW1lLCBkaXNw
bGF5UHJvbXB0LCBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhkZWZhdWx0
VmFsdWUpLCByZXN1bHQpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUnVuSmF2
YVNjcmlwdERpYWxvZyhjb29raWUpOwogCkBAIC0zOTEsNyArMzg1LDcgQEAgdm9pZCBDaHJvbWU6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbgogICAgICAgICBwcmVmZXRjaEROUyhyZXN1bHQu
YWJzb2x1dGVMaW5rVVJMKCkuaG9zdCgpKTsKICAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVy
RWxlbWVudChyZXN1bHQsIG1vZGlmaWVyRmxhZ3MpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChtX3BhZ2UsIHJlc3VsdCwgbW9kaWZpZXJG
bGFncyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxl
bWVudCgmbV9wYWdlLCByZXN1bHQsIG1vZGlmaWVyRmxhZ3MpOwogfQogCiB2b2lkIENocm9tZTo6
c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCkBAIC00MDEsNyArMzk1LDcg
QEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgIFN0cmluZyB0
b29sVGlwID0gcmVzdWx0LnNwZWxsaW5nVG9vbFRpcCh0b29sVGlwRGlyZWN0aW9uKTsKIAogICAg
IC8vIE5leHQgcHJpb3JpdHkgaXMgYSB0b29sVGlwIGZyb20gYSBVUkwgYmVuZWF0aCB0aGUgbW91
c2UgKGlmIHByZWZlcmVuY2UgaXMgc2V0IHRvIHNob3cgdGhvc2UpLgotICAgIGlmICh0b29sVGlw
LmlzRW1wdHkoKSAmJiBtX3BhZ2UtPnNldHRpbmdzKCkuc2hvd3NVUkxzSW5Ub29sVGlwcygpKSB7
CisgICAgaWYgKHRvb2xUaXAuaXNFbXB0eSgpICYmIG1fcGFnZS5zZXR0aW5ncygpLnNob3dzVVJM
c0luVG9vbFRpcHMoKSkgewogICAgICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHJlc3VsdC5p
bm5lck5vblNoYXJlZEVsZW1lbnQoKSkgewogICAgICAgICAgICAgLy8gR2V0IHRvb2x0aXAgcmVw
cmVzZW50aW5nIGZvcm0gYWN0aW9uLCBpZiByZWxldmFudAogICAgICAgICAgICAgaWYgKGlzSFRN
TElucHV0RWxlbWVudChlbGVtZW50KSkgewpAQCAtNDMxLDcgKzQyNSw3IEBAIHZvaWQgQ2hyb21l
OjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICBpZiAodG9vbFRpcC5pc0VtcHR5KCkp
CiAgICAgICAgIHRvb2xUaXAgPSByZXN1bHQudGl0bGUodG9vbFRpcERpcmVjdGlvbik7CiAKLSAg
ICBpZiAodG9vbFRpcC5pc0VtcHR5KCkgJiYgbV9wYWdlLT5zZXR0aW5ncygpLnNob3dzVG9vbFRp
cE92ZXJUcnVuY2F0ZWRUZXh0KCkpCisgICAgaWYgKHRvb2xUaXAuaXNFbXB0eSgpICYmIG1fcGFn
ZS5zZXR0aW5ncygpLnNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0KCkpCiAgICAgICAgIHRv
b2xUaXAgPSByZXN1bHQuaW5uZXJUZXh0SWZUcnVuY2F0ZWQodG9vbFRpcERpcmVjdGlvbik7CiAK
ICAgICAvLyBMYXN0bHksIGZvciA8aW5wdXQgdHlwZT0iZmlsZSI+IHRoYXQgYWxsb3cgbXVsdGlw
bGUgZmlsZXMsIHdlJ2xsIGNvbnNpZGVyIGEgdG9vbHRpcCBmb3IgdGhlIHNlbGVjdGVkIGZpbGVu
YW1lcwpAQCAtNTM5LDcgKzUzMyw3IEBAIHZvaWQgQ2hyb21lOjp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoUGxhdGYKIAogICAgIG1fZGlzcGxheUlEID0gZGlzcGxheUlEOwogCi0gICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
ewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiAxNTU3MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMCArNjMsOSBAQCBzdHJ1Y3QgV2luZG93
RmVhdHVyZXM7CiAgICAgCiBjbGFzcyBDaHJvbWUgOiBwdWJsaWMgSG9zdFdpbmRvdyB7CiBwdWJs
aWM6CisgICAgQ2hyb21lKFBhZ2UmLCBDaHJvbWVDbGllbnQmKTsKICAgICB+Q2hyb21lKCk7CiAK
LSAgICBzdGF0aWMgUGFzc093blB0cjxDaHJvbWU+IGNyZWF0ZShQYWdlKiwgQ2hyb21lQ2xpZW50
Kik7Ci0KICAgICBDaHJvbWVDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAK
ICAgICAvLyBIb3N0V2luZG93IG1ldGhvZHMuCkBAIC0xODQsMTAgKzE4Myw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNl
cnZlciopOwogCiBwcml2YXRlOgotICAgIENocm9tZShQYWdlKiwgQ2hyb21lQ2xpZW50Kik7CiAg
ICAgdm9pZCBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKSBjb25zdDsKIAotICAgIFBhZ2Uq
IG1fcGFnZTsKKyAgICBQYWdlJiBtX3BhZ2U7CiAgICAgQ2hyb21lQ2xpZW50JiBtX2NsaWVudDsK
ICAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKICAgICBWZWN0b3I8UG9wdXBPcGVu
aW5nT2JzZXJ2ZXIqPiBtX3BvcHVwT3BlbmluZ09ic2VydmVyczsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTU3MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgs
NyBAQCBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZU1vdXNlRXZlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKIH0KIAotRHJhZ0Nv
bnRyb2xsZXI6OkRyYWdDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIERyYWdDbGllbnQqIGNsaWVudCkK
K0RyYWdDb250cm9sbGVyOjpEcmFnQ29udHJvbGxlcihQYWdlJiBwYWdlLCBEcmFnQ2xpZW50JiBj
bGllbnQpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fZG9jdW1lbnRVbmRlck1vdXNlKDApCkBAIC0xMTAsMTcgKzExMCwxMSBAQCBEcmFnQ29udHJv
bGxlcjo6RHJhZ0NvbnRyb2xsZXIoUGFnZSogcGFnCiAgICAgLCBtX2RpZEluaXRpYXRlRHJhZyhm
YWxzZSkKICAgICAsIG1fc291cmNlRHJhZ09wZXJhdGlvbihEcmFnT3BlcmF0aW9uTm9uZSkKIHsK
LSAgICBBU1NFUlQobV9jbGllbnQpOwogfQogCiBEcmFnQ29udHJvbGxlcjo6fkRyYWdDb250cm9s
bGVyKCkKIHsKLSAgICBtX2NsaWVudC0+ZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKLX0KLQot
UGFzc093blB0cjxEcmFnQ29udHJvbGxlcj4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZShQYWdlKiBw
YWdlLCBEcmFnQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmFn
Q29udHJvbGxlcihwYWdlLCBjbGllbnQpKTsKKyAgICBtX2NsaWVudC5kcmFnQ29udHJvbGxlckRl
c3Ryb3llZCgpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1
bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1l
LCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBj
aG9zZVBsYWluVGV4dCkKQEAgLTE3MCwxNiArMTY0LDE2IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OmRyYWdJc01vdmUoRnJhbWVTZWwKIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyBwb29ybHkgbmFt
ZWQuICBXZSdyZSBqdXN0IGNsZWFyaW5nIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgZG9jdW1lbnQg
dGhpcyBkcmFnIGlzIGV4aXRpbmcuCiB2b2lkIERyYWdDb250cm9sbGVyOjpjYW5jZWxEcmFnKCkK
IHsKLSAgICBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5jbGVhcigpOworICAgIG1fcGFn
ZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2xlYXIoKTsKIH0KIAogdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZHJhZ0VuZGVkKCkKIHsKICAgICBtX2RyYWdJbml0aWF0b3IgPSAwOwogICAgIG1fZGlkSW5p
dGlhdGVEcmFnID0gZmFsc2U7Ci0gICAgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2xl
YXIoKTsKKyAgICBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNsZWFyKCk7CiAgICAgCi0g
ICAgbV9jbGllbnQtPmRyYWdFbmRlZCgpOworICAgIG1fY2xpZW50LmRyYWdFbmRlZCgpOwogfQog
CiBEcmFnU2Vzc2lvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWQoRHJhZ0RhdGEqIGRyYWdE
YXRhKQpAQCAtMTkxLDExICsxODUsMTEgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRl
ZChEcmFnRGF0YQogewogICAgIEFTU0VSVChkcmFnRGF0YSk7CiAKLSAgICBpZiAoUmVmUHRyPEZy
YW1lVmlldz4gdiA9IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKSB7CisgICAgaWYgKFJlZlB0
cjxGcmFtZVZpZXc+IHYgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpKSB7CiAgICAgICAgIENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kgPSAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8IG1f
ZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkpID8gQ2xpcGJv
YXJkUmVhZGFibGUgOiBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlOwogICAgICAgICBSZWZQdHI8Q2xp
cGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlwYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHBvbGlj
eSwgKmRyYWdEYXRhKTsKICAgICAgICAgY2xpcGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJh
Z0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKLSAgICAgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2
ZW50KGRyYWdEYXRhKSwgY2xpcGJvYXJkLmdldCgpKTsKKyAgICAgICAgbV9wYWdlLm1haW5GcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJh
Z0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwogICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1Bv
bGljeShDbGlwYm9hcmROdW1iKTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Ig
c2VjdXJpdHkKICAgICB9CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudCgwKTsKQEAgLTIxMiwx
MCArMjA2LDEwIEBAIERyYWdTZXNzaW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZCgKIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKIHsKICAg
ICBBU1NFUlQoZHJhZ0RhdGEpOwotICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbV9wYWdlLT5t
YWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCkpOwor
ICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQ
b2ludChkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSk7CiAgICAgaWYgKChtX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbiAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MKSAmJiBtX2RvY3VtZW50SXNI
YW5kbGluZ0RyYWcpIHsKLSAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MLCBkcmFnRGF0YSk7Ci0gICAgICAg
IFJlZlB0cjxGcmFtZT4gbWFpbkZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgICAg
IG1fY2xpZW50LndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlv
bkFjdGlvbkRIVE1MLCBkcmFnRGF0YSk7CisgICAgICAgIFJlZlB0cjxGcmFtZT4gbWFpbkZyYW1l
ID0gJm1fcGFnZS5tYWluRnJhbWUoKTsKICAgICAgICAgYm9vbCBwcmV2ZW50ZWREZWZhdWx0ID0g
ZmFsc2U7CiAgICAgICAgIGlmIChtYWluRnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgLy8g
U2VuZGluZyBhbiBldmVudCBjYW4gcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgdmll
dyBhbmQgcGFydC4KQEAgLTI0MCw4ICsyMzQsOCBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJm
b3JtRHJhZyhEcmFnRGF0CiAgICAgaWYgKG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpID09IERy
YWdPcGVyYXRpb25Ob25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2NsaWVudC0+
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9h
ZCwgZHJhZ0RhdGEpOwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChGcmFt
ZUxvYWRSZXF1ZXN0KCZtX3BhZ2UtPm1haW5GcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3QoZHJhZ0Rh
dGEtPmFzVVJMKCZtX3BhZ2UtPm1haW5GcmFtZSgpKSkpKTsKKyAgICBtX2NsaWVudC53aWxsUGVy
Zm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLCBkcmFn
RGF0YSk7CisgICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVx
dWVzdCgmbV9wYWdlLm1haW5GcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3QoZHJhZ0RhdGEtPmFzVVJM
KCZtX3BhZ2UubWFpbkZyYW1lKCkpKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTks
OSArMjUzLDkgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6bW91c2VNb3ZlZEludG9Eb2N1bQogRHJh
Z1Nlc3Npb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKERyYWdEYXRhKiBk
cmFnRGF0YSkKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEpOwotICAgIG1vdXNlTW92ZWRJbnRvRG9j
dW1lbnQobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEtPmNsaWVu
dFBvc2l0aW9uKCkpKTsKKyAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWluRnJh
bWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCkpKTsKIAotICAg
IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uID0gbV9jbGllbnQtPmFjdGlvbk1hc2tGb3JEcmFnKGRy
YWdEYXRhKTsKKyAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiA9IG1fY2xpZW50LmFjdGlvbk1h
c2tGb3JEcmFnKGRyYWdEYXRhKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gPT0g
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZSkgewogICAgICAgICBjYW5jZWxEcmFnKCk7IC8vIEZJ
WE1FOiBXaHkgbm90IGNhbGwgbW91c2VNb3ZlZEludG9Eb2N1bWVudCgwKT8KICAgICAgICAgcmV0
dXJuIERyYWdTZXNzaW9uKCk7CkBAIC0zMzYsNyArMzMwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxl
cjo6dHJ5RG9jdW1lbnREcmFnKERyYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
aXNIYW5kbGluZ0RyYWcpIHsKLSAgICAgICAgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCku
Y2xlYXIoKTsKKyAgICAgICAgbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jbGVhcigpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM1OSw3ICszNTMsNyBAQCBib29sIERy
YWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoRHJhCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmICghbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZSkKLSAgICAgICAgICAgIG1f
cGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLnNldENhcmV0UG9zaXRpb24obV9kb2N1bWVudFVu
ZGVyTW91c2UtPmZyYW1lKCktPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHBvaW50KSk7CisgICAg
ICAgICAgICBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLnNldENhcmV0UG9zaXRpb24obV9k
b2N1bWVudFVuZGVyTW91c2UtPmZyYW1lKCktPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHBvaW50
KSk7CiAKICAgICAgICAgRnJhbWUqIGlubmVyRnJhbWUgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZy
YW1lKCk7CiAgICAgICAgIGRyYWdTZXNzaW9uLm9wZXJhdGlvbiA9IGRyYWdJc01vdmUoaW5uZXJG
cmFtZS0+c2VsZWN0aW9uKCksIGRyYWdEYXRhKSA/IERyYWdPcGVyYXRpb25Nb3ZlIDogRHJhZ09w
ZXJhdGlvbkNvcHk7CkBAIC0zOTAsNyArMzg0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5
RG9jdW1lbnREcmFnKERyYQogICAgIH0KICAgICAKICAgICAvLyBXZSBhcmUgbm90IG92ZXIgYW4g
ZWRpdGFibGUgcmVnaW9uLiBNYWtlIHN1cmUgd2UncmUgY2xlYXJpbmcgYW55IHByaW9yIGRyYWcg
Y3Vyc29yLgotICAgIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNsZWFyKCk7CisgICAg
bV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jbGVhcigpOwogICAgIGlmIChtX2ZpbGVJbnB1
dEVsZW1lbnRVbmRlck1vdXNlKQogICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNl
LT5zZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKGZhbHNlKTsKICAgICBtX2ZpbGVJbnB1dEVsZW1l
bnRVbmRlck1vdXNlID0gMDsKQEAgLTM5OSwxNCArMzkzLDE0IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnRyeURvY3VtZW50RHJhZyhEcmEKIAogRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxl
cjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50
KQogewotICAgIG1fZHJhZ1NvdXJjZUFjdGlvbiA9IG1fY2xpZW50LT5kcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50KHJvb3RWaWV3UG9pbnQpOworICAgIG1fZHJhZ1NvdXJjZUFjdGlvbiA9IG1f
Y2xpZW50LmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQocm9vdFZpZXdQb2ludCk7CiAgICAg
cmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKIH0KIAogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJv
bGxlcjo6b3BlcmF0aW9uRm9yTG9hZChEcmFnRGF0YSogZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJU
KGRyYWdEYXRhKTsKLSAgICBEb2N1bWVudCogZG9jID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudEF0UG9pbnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCkpOworICAgIERvY3VtZW50KiBk
b2MgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLT5jbGllbnRQ
b3NpdGlvbigpKTsKIAogICAgIGJvb2wgcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MgPSBmYWxz
ZTsKIApAQCAtNDM2LDkgKzQzMCw5IEBAIHN0YXRpYyBib29sIHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KEZyYW0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZv
cihGcmFtZSogaW5uZXJGcmFtZSwgRHJhZ0RhdGEqIGRyYWdEYXRhKQogewotICAgIEFTU0VSVCht
X3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5oYXNDYXJldCgpKTsKLSAgICBTdHJpbmcgdGV4
dCA9IG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxl
KCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWluVGV4dChpbm5lckZyYW1lKTsKLSAgICBOb2RlKiB0
YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+
ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKSk7CisgICAgQVNTRVJUKG1fcGFn
ZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaGFzQ2FyZXQoKSk7CisgICAgU3RyaW5nIHRleHQgPSBt
X3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAi
IiA6IGRyYWdEYXRhLT5hc1BsYWluVGV4dChpbm5lckZyYW1lKTsKKyAgICBOb2RlKiB0YXJnZXQg
PSBpbm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS5kcmFnQ2Fy
ZXRDb250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpKTsKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKSwgdGV4dCksIElHTk9SRV9FWENFUFRJT04pOwogfQogCkBAIC00NjIsNyAr
NDU2LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcgogICAgIFJl
ZlB0cjxGcmFtZT4gaW5uZXJGcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAg
ICBBU1NFUlQoaW5uZXJGcmFtZSk7CiAKLSAgICBpZiAobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCkuaGFzQ2FyZXQoKSAmJiAhZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihpbm5lckZyYW1l
LmdldCgpLCBkcmFnRGF0YSkpCisgICAgaWYgKG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCku
aGFzQ2FyZXQoKSAmJiAhZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihpbm5lckZyYW1lLmdldCgp
LCBkcmFnRGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGRyYWdEYXRhLT5j
b250YWluc0NvbG9yKCkpIHsKQEAgLTQ3NCw3ICs0NjgsNyBAQCBib29sIERyYWdDb250cm9sbGVy
Ojpjb25jbHVkZUVkaXREcmFnKERyCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUNvbG9yLCBjb2xvci5zZXJpYWxpemVkKCksIGZhbHNlKTsKICAgICAgICAgaWYgKCFpbm5l
ckZyYW1lLT5lZGl0b3IoKS5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJhbmdl
LmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9jbGllbnQtPndp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQs
IGRyYWdEYXRhKTsKKyAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCwgZHJhZ0RhdGEpOwogICAgICAgICBpbm5l
ckZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0Q29s
b3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00ODksMTMgKzQ4MywxMyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKERyCiAgICAgICAgIHJldHVybiBm
aWxlSW5wdXQtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZHJhZ0RhdGEpOwogICAgIH0KIAotICAgIGlm
ICghbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmNhblByb2Nlc3NEcmFnKGRyYWdEYXRhKSkgewot
ICAgICAgICBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5jbGVhcigpOworICAgIGlmICgh
bV9wYWdlLmRyYWdDb250cm9sbGVyKCkuY2FuUHJvY2Vzc0RyYWcoZHJhZ0RhdGEpKSB7CisgICAg
ICAgIG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2xlYXIoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIFZpc2libGVTZWxlY3Rpb24gZHJhZ0NhcmV0ID0gbV9wYWdl
LT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpOwotICAgIG1fcGFnZS0+ZHJh
Z0NhcmV0Q29udHJvbGxlcigpLmNsZWFyKCk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBkcmFnQ2Fy
ZXQgPSBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UG9zaXRpb24oKTsKKyAgICBt
X3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNsZWFyKCk7CiAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IGRyYWdDYXJldC50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIFJlZlB0cjxFbGVtZW50
PiByb290RWRpdGFibGVFbGVtZW50ID0gaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRh
YmxlRWxlbWVudCgpOwogCkBAIC01MTIsNyArNTA2LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6
Y29uY2x1ZGVFZGl0RHJhZyhEcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERy
YWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQsIGRyYWdEYXRhKTsKKyAgICAgICAgbV9jbGllbnQud2ls
bFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCwg
ZHJhZ0RhdGEpOwogICAgICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZyYW1lLT5zZWxlY3Rpb24o
KSwgZHJhZ0RhdGEpKSB7CiAgICAgICAgICAgICAvLyBOU1RleHRWaWV3IGJlaGF2aW9yIGlzIHRv
IGFsd2F5cyBzbWFydCBkZWxldGUgb24gbW92aW5nIGEgc2VsZWN0aW9uLAogICAgICAgICAgICAg
Ly8gYnV0IG9ubHkgdG8gc21hcnQgaW5zZXJ0IGlmIHRoZSBzZWxlY3Rpb24gZ3JhbnVsYXJpdHkg
aXMgd29yZCBncmFudWxhcml0eS4KQEAgLTUzNSw3ICs1MjksNyBAQCBib29sIERyYWdDb250cm9s
bGVyOjpjb25jbHVkZUVkaXREcmFnKERyCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KIAotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rp
b24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCwgZHJhZ0RhdGEpOworICAgICAgICBtX2NsaWVu
dC53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb25F
ZGl0LCBkcmFnRGF0YSk7CiAgICAgICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldChpbm5l
ckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpCiAgICAgICAgICAgICBhcHBs
eUNvbW1hbmQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSgqbV9kb2N1bWVudFVuZGVy
TW91c2UsIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQocmFuZ2UuZ2V0KCksIHRleHQpLCAgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6Ok1hdGNoU3R5bGUgfCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rp
bmcpKTsKICAgICB9CkBAIC01NTUsMTIgKzU0OSwxMiBAQCBib29sIERyYWdDb250cm9sbGVyOjpj
YW5Qcm9jZXNzRHJhZyhEcmFnCiAgICAgaWYgKCFkcmFnRGF0YS0+Y29udGFpbnNDb21wYXRpYmxl
Q29udGVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbnRQb2ludCBwb2ludCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdEYXRhLT5j
bGllbnRQb3NpdGlvbigpKTsKKyAgICBJbnRQb2ludCBwb2ludCA9IG1fcGFnZS5tYWluRnJhbWUo
KS52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCkpOwog
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwb2ludCk7Ci0gICAgaWYg
KCFtX3BhZ2UtPm1haW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmICghbV9wYWdl
Lm1haW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RS
ZXN1bHRBdFBvaW50KHBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlKTsKKyAgICByZXN1bHQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZXZlbnRIYW5k
bGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25T
aGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYwNCw3ICs1OTgsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoRHJhZ0RhCiB7CiAgICAgQVNTRVJUKGRy
YWdEYXRhKTsKICAgICBBU1NFUlQobV9kb2N1bWVudFVuZGVyTW91c2UpOwotICAgIFJlZlB0cjxG
cmFtZT4gbWFpbkZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgUmVmUHRyPEZyYW1l
PiBtYWluRnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOwogICAgIFJlZlB0cjxGcmFtZVZpZXc+
IHZpZXdQcm90ZWN0b3IgPSBtYWluRnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXdQcm90ZWN0
b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgwMyw3ICs3OTcsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyCiAKICAgICAgICAgICAgIHNyYy0+ZWRpdG9y
KCkuZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKICAgICAgICAgfQotICAgICAgICBt
X2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxl
Y3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2FyZCk7CisgICAgICAgIG1fY2xpZW50LndpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2lu
LCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewogICAgICAgICAgICAgZHJh
Z0ltYWdlID0gZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKHNyYy0+ZHJhZ0ltYWdlRm9yU2Vs
ZWN0aW9uKCksIERyYWdJbWFnZUFscGhhKTsKICAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9j
Rm9yU2VsZWN0aW9uRHJhZyhzcmMpOwpAQCAtODIxLDExICs4MTUsMTEgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcgogICAgICAgICAgICAgZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKGNsaXBib2FyZCwgZWxlbWVudCwgIWxpbmtVUkwuaXNFbXB0eSgpID8gbGlua1VS
TCA6IGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAgICAg
IH0KIAotICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdT
b3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKKyAgICAgICAgbV9jbGll
bnQud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJh
Z09yaWdpbiwgY2xpcGJvYXJkKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewogICAgICAg
ICAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBoaXRUZXN0UmVzdWx0LmltYWdlUmVjdCgpOwotICAg
ICAgICAgICAgaW1hZ2VSZWN0LnNldExvY2F0aW9uKG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygp
LT5yb290Vmlld1RvQ29udGVudHMoc3JjLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhpbWFn
ZVJlY3QubG9jYXRpb24oKSkpKTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zZXRMb2NhdGlvbiht
X3BhZ2UubWFpbkZyYW1lKCkudmlldygpLT5yb290Vmlld1RvQ29udGVudHMoc3JjLT52aWV3KCkt
PmNvbnRlbnRzVG9Sb290VmlldyhpbWFnZVJlY3QubG9jYXRpb24oKSkpKTsKICAgICAgICAgICAg
IGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhpdFRlc3RSZXN1bHQuaW1hZ2VSZWN0
KCksIGNsaXBib2FyZCwgc3JjLCBtX2RyYWdPZmZzZXQpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIC8vIERIVE1MIGRlZmluZWQgZHJhZyBpbWFnZQpAQCAtODQ3LDcgKzg0MSw3IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3IKICAgICAgICAgICAgICAgICBz
cmMtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25G
cm9tQ29udGVudHNPZk5vZGUobm9kZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9jbGllbnQt
PndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uTGluaywgZHJhZ09y
aWdpbiwgY2xpcGJvYXJkKTsKKyAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKERyYWdTb3VyY2VBY3Rpb25MaW5rLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwogICAg
ICAgICBpZiAoIWRyYWdJbWFnZSkgewogICAgICAgICAgICAgZHJhZ0ltYWdlID0gY3JlYXRlRHJh
Z0ltYWdlRm9yTGluayhsaW5rVVJMLCBoaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCksIHNyYy0+
c2V0dGluZ3MoKS5mb250UmVuZGVyaW5nTW9kZSgpKTsKICAgICAgICAgICAgIEludFNpemUgc2l6
ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdlKTsKQEAgLTg1OCw3ICs4NTIsNyBAQCBib29sIERy
YWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyCiAgICAgfSBlbHNlIGlmIChzdGF0ZS50
eXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgewogICAgICAgICBpZiAoZHJhZ0ltYWdlKSB7
CiAgICAgICAgICAgICBBU1NFUlQobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MKTsKLSAgICAgICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rp
b24oRHJhZ1NvdXJjZUFjdGlvbkRIVE1MLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOworICAgICAg
ICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b25ESFRNTCwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgICAgIGRvU3lzdGVtRHJh
ZyhkcmFnSW1hZ2UsIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGNsaXBib2FyZCwgc3JjLCBmYWxzZSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RhcnRlZERyYWcgPSBmYWxzZTsKQEAgLTky
MCw5ICs5MTQsOSBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltCiAg
ICAgbV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOwogICAgIG1fZHJhZ0luaXRpYXRvciA9IGZyYW1l
LT5kb2N1bWVudCgpOwogICAgIC8vIFByb3RlY3QgdGhpcyBmcmFtZSBhbmQgdmlldywgYXMgYSBs
b2FkIG1heSBvY2N1ciBtaWQgZHJhZyBhbmQgYXR0ZW1wdCB0byB1bmxvYWQgdGhpcyBmcmFtZQot
ICAgIFJlZlB0cjxGcmFtZT4gZnJhbWVQcm90ZWN0b3IgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsK
KyAgICBSZWZQdHI8RnJhbWU+IGZyYW1lUHJvdGVjdG9yID0gJm1fcGFnZS5tYWluRnJhbWUoKTsK
ICAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3UHJvdGVjdG9yID0gZnJhbWVQcm90ZWN0b3ItPnZp
ZXcoKTsKLSAgICBtX2NsaWVudC0+c3RhcnREcmFnKGltYWdlLCB2aWV3UHJvdGVjdG9yLT5yb290
Vmlld1RvQ29udGVudHMoZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGRyYWdMb2Mp
KSwKKyAgICBtX2NsaWVudC5zdGFydERyYWcoaW1hZ2UsIHZpZXdQcm90ZWN0b3ItPnJvb3RWaWV3
VG9Db250ZW50cyhmcmFtZS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZHJhZ0xvYykpLAog
ICAgICAgICB2aWV3UHJvdGVjdG9yLT5yb290Vmlld1RvQ29udGVudHMoZnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1Jvb3RWaWV3KGV2ZW50UG9zKSksIGNsaXBib2FyZCwgZnJhbWVQcm90ZWN0b3Iu
Z2V0KCksIGZvckxpbmspOwogICAgIC8vIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyBjYW4gY2F1c2Ug
b3VyIFBhZ2UgdG8gZGlzcGVhciwgZGVhbGxvY2F0aW5nIHx0aGlzfC4KICAgICBpZiAoIWZyYW1l
UHJvdGVjdG9yLT5wYWdlKCkpCkBAIC05MzQsNyArOTI4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZG9TeXN0ZW1EcmFnKERyYWdJbQogLy8gTWFudWFsIGRyYWcgY2FyZXQgbWFuaXB1bGF0aW9u
CiB2b2lkIERyYWdDb250cm9sbGVyOjpwbGFjZURyYWdDYXJldChjb25zdCBJbnRQb2ludCYgd2lu
ZG93UG9pbnQpCiB7Ci0gICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2UtPm1haW5GcmFt
ZSgpLmRvY3VtZW50QXRQb2ludCh3aW5kb3dQb2ludCkpOworICAgIG1vdXNlTW92ZWRJbnRvRG9j
dW1lbnQobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludCh3aW5kb3dQb2ludCkpOwog
ICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFt
ZSogZnJhbWUgPSBtX2RvY3VtZW50VW5kZXJNb3VzZS0+ZnJhbWUoKTsKQEAgLTk0Myw3ICs5Mzcs
NyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpwbGFjZURyYWdDYXJldChjb25zCiAgICAgICAgIHJl
dHVybjsKICAgICBJbnRQb2ludCBmcmFtZVBvaW50ID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRl
bnRzKHdpbmRvd1BvaW50KTsKIAotICAgIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLnNl
dENhcmV0UG9zaXRpb24oZnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1lUG9pbnQp
KTsKKyAgICBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLnNldENhcmV0UG9zaXRpb24oZnJh
bWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1lUG9pbnQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAkocmV2
aXNpb24gMTU1NzE3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSwxMSArNTEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIERyYWdDb250cm9sbGVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJh
Z0NvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CisgICAg
ICAgIERyYWdDb250cm9sbGVyKFBhZ2UmLCBEcmFnQ2xpZW50Jik7CiAgICAgICAgIH5EcmFnQ29u
dHJvbGxlcigpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYWdDb250cm9sbGVyPiBj
cmVhdGUoUGFnZSosIERyYWdDbGllbnQqKTsKIAotICAgICAgICBEcmFnQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgICAgICBEcmFnQ2xpZW50JiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgICAgIERyYWdTZXNzaW9uIGRyYWdF
bnRlcmVkKERyYWdEYXRhKik7CiAgICAgICAgIHZvaWQgZHJhZ0V4aXRlZChEcmFnRGF0YSopOwpA
QCAtOTEsOCArOTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBmbG9hdCBEcmFnSW1hZ2VBbHBoYTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIERyYWdDb250
cm9sbGVyKFBhZ2UqLCBEcmFnQ2xpZW50Kik7Ci0KICAgICAgICAgYm9vbCBkaXNwYXRjaFRleHRJ
bnB1dEV2ZW50Rm9yKEZyYW1lKiwgRHJhZ0RhdGEqKTsKICAgICAgICAgYm9vbCBjYW5Qcm9jZXNz
RHJhZyhEcmFnRGF0YSopOwogICAgICAgICBib29sIGNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEq
KTsKQEAgLTExMiw4ICsxMTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
Y2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwogICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShDbGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
bGFiZWwpOwogCi0gICAgICAgIFBhZ2UqIG1fcGFnZTsKLSAgICAgICAgRHJhZ0NsaWVudCogbV9j
bGllbnQ7CisgICAgICAgIFBhZ2UmIG1fcGFnZTsKKyAgICAgICAgRHJhZ0NsaWVudCYgbV9jbGll
bnQ7CiAKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50VW5kZXJNb3VzZTsgLy8g
VGhlIGRvY3VtZW50IHRoZSBtb3VzZSB3YXMgbGFzdCBkcmFnZ2VkIG92ZXIuCiAgICAgICAgIFJl
ZlB0cjxEb2N1bWVudD4gbV9kcmFnSW5pdGlhdG9yOyAvLyBUaGUgRG9jdW1lbnQgKGlmIGFueSkg
dGhhdCBpbml0aWF0ZWQgdGhlIGRyYWcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTU3MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkVmlzaXQoRWxlbWVudCogCiAgICAgcmV0dXJuIGVsZW1lbnQt
PmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpIHx8IGlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdChl
bGVtZW50LCBldmVudCk7CiB9CiAKLUZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBh
Z2UqIHBhZ2UpCitGb2N1c0NvbnRyb2xsZXI6OkZvY3VzQ29udHJvbGxlcihQYWdlJiBwYWdlKQog
ICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9pc0Zv
Y3VzZWQoZmFsc2UpCkBAIC0xNzEsMTQgKzE3MSw5IEBAIEZvY3VzQ29udHJvbGxlcjo6Rm9jdXND
b250cm9sbGVyKFBhZ2UqIHAKIHsKIH0KIAotUGFzc093blB0cjxGb2N1c0NvbnRyb2xsZXI+IEZv
Y3VzQ29udHJvbGxlcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBGb2N1c0NvbnRyb2xsZXIocGFnZSkpOwotfQotCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6
c2V0Rm9jdXNlZEZyYW1lKFBhc3NSZWZQdHI8RnJhbWU+IGZyYW1lKQogewotICAgIEFTU0VSVCgh
ZnJhbWUgfHwgZnJhbWUtPnBhZ2UoKSA9PSBtX3BhZ2UpOworICAgIEFTU0VSVCghZnJhbWUgfHwg
ZnJhbWUtPnBhZ2UoKSA9PSAmbV9wYWdlKTsKICAgICBpZiAobV9mb2N1c2VkRnJhbWUgPT0gZnJh
bWUgfHwgbV9pc0NoYW5naW5nRm9jdXNlZEZyYW1lKQogICAgICAgICByZXR1cm47CiAKQEAgLTIw
MCw3ICsxOTUsNyBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKFBhCiAg
ICAgICAgIG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgIH0KIAot
ICAgIG1fcGFnZS0+Y2hyb21lKCkuZm9jdXNlZEZyYW1lQ2hhbmdlZChuZXdGcmFtZS5nZXQoKSk7
CisgICAgbV9wYWdlLmNocm9tZSgpLmZvY3VzZWRGcmFtZUNoYW5nZWQobmV3RnJhbWUuZ2V0KCkp
OwogCiAgICAgbV9pc0NoYW5naW5nRm9jdXNlZEZyYW1lID0gZmFsc2U7CiB9CkBAIC0yMDksNyAr
MjA0LDcgQEAgRnJhbWUmIEZvY3VzQ29udHJvbGxlcjo6Zm9jdXNlZE9yTWFpbkZyYQogewogICAg
IGlmIChGcmFtZSogZnJhbWUgPSBmb2N1c2VkRnJhbWUoKSkKICAgICAgICAgcmV0dXJuICpmcmFt
ZTsKLSAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4gbV9wYWdlLm1h
aW5GcmFtZSgpOwogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZv
Y3VzZWQpCkBAIC0yMjMsNyArMjE4LDcgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3Vz
ZWQoYm9vbCBmbwogICAgICAgICBmb2N1c2VkT3JNYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5z
dG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAKICAgICBpZiAoIW1fZm9jdXNlZEZyYW1lKQotICAgICAg
ICBzZXRGb2N1c2VkRnJhbWUoJm1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgICAgICBzZXRGb2N1
c2VkRnJhbWUoJm1fcGFnZS5tYWluRnJhbWUoKSk7CiAKICAgICBpZiAobV9mb2N1c2VkRnJhbWUt
PnZpZXcoKSkgewogICAgICAgICBtX2ZvY3VzZWRGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Rm9jdXNl
ZChmb2N1c2VkKTsKQEAgLTI5OCwxNSArMjkzLDE1IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjph
ZHZhbmNlRm9jdXNJbkRvY3UKIAogICAgIGlmICghZWxlbWVudCkgewogICAgICAgICAvLyBXZSBk
aWRuJ3QgZmluZCBhIG5vZGUgdG8gZm9jdXMsIHNvIHdlIHNob3VsZCB0cnkgdG8gcGFzcyBmb2N1
cyB0byBDaHJvbWUuCi0gICAgICAgIGlmICghaW5pdGlhbEZvY3VzICYmIG1fcGFnZS0+Y2hyb21l
KCkuY2FuVGFrZUZvY3VzKGRpcmVjdGlvbikpIHsKKyAgICAgICAgaWYgKCFpbml0aWFsRm9jdXMg
JiYgbV9wYWdlLmNocm9tZSgpLmNhblRha2VGb2N1cyhkaXJlY3Rpb24pKSB7CiAgICAgICAgICAg
ICBkb2N1bWVudC0+c2V0Rm9jdXNlZEVsZW1lbnQoMCk7CiAgICAgICAgICAgICBzZXRGb2N1c2Vk
RnJhbWUoMCk7Ci0gICAgICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLnRha2VGb2N1cyhkaXJlY3Rp
b24pOworICAgICAgICAgICAgbV9wYWdlLmNocm9tZSgpLnRha2VGb2N1cyhkaXJlY3Rpb24pOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDaHJvbWUg
ZG9lc24ndCB3YW50IGZvY3VzLCBzbyB3ZSBzaG91bGQgd3JhcCBmb2N1cy4KLSAgICAgICAgZWxl
bWVudCA9IGZpbmRGb2N1c2FibGVFbGVtZW50UmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBGb2N1c05h
dmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9uU2NvcGVPZihtX3BhZ2UtPm1haW5GcmFtZSgp
LmRvY3VtZW50KCkpLCAwLCBldmVudCk7CisgICAgICAgIGVsZW1lbnQgPSBmaW5kRm9jdXNhYmxl
RWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3Vz
TmF2aWdhdGlvblNjb3BlT2YobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpLCAwLCBldmVu
dCk7CiAgICAgICAgIGVsZW1lbnQgPSBmaW5kRm9jdXNhYmxlRWxlbWVudERlc2NlbmRpbmdEb3du
SW50b0ZyYW1lRG9jdW1lbnQoZGlyZWN0aW9uLCBlbGVtZW50LmdldCgpLCBldmVudCk7CiAKICAg
ICAgICAgaWYgKCFlbGVtZW50KQpAQCAtNjA1LDIxICs2MDAsMjEgQEAgYm9vbCBGb2N1c0NvbnRy
b2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KAogICAgIGlmIChvbGRGb2N1c2VkRWxlbWVudCAmJiBv
bGRGb2N1c2VkRWxlbWVudC0+aXNSb290RWRpdGFibGVFbGVtZW50KCkgJiYgIXJlbGlucXVpc2hl
c0VkaXRpbmdGb2N1cyhvbGRGb2N1c2VkRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIG1fcGFnZS0+ZWRpdG9yQ2xpZW50KCktPndpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7
CisgICAgbV9wYWdlLmVkaXRvckNsaWVudCgpLT53aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwog
CiAgICAgY2xlYXJTZWxlY3Rpb25JZk5lZWRlZChvbGRGb2N1c2VkRnJhbWUuZ2V0KCksIG5ld0Zv
Y3VzZWRGcmFtZS5nZXQoKSwgZWxlbWVudCk7CiAKICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAg
ICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnNldEZvY3VzZWRF
bGVtZW50KDApOwotICAgICAgICBtX3BhZ2UtPmVkaXRvckNsaWVudCgpLT5zZXRJbnB1dE1ldGhv
ZFN0YXRlKGZhbHNlKTsKKyAgICAgICAgbV9wYWdlLmVkaXRvckNsaWVudCgpLT5zZXRJbnB1dE1l
dGhvZFN0YXRlKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUmVm
UHRyPERvY3VtZW50PiBuZXdEb2N1bWVudCA9ICZlbGVtZW50LT5kb2N1bWVudCgpOwogCiAgICAg
aWYgKG5ld0RvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpID09IGVsZW1lbnQpIHsKLSAgICAgICAg
bV9wYWdlLT5lZGl0b3JDbGllbnQoKS0+c2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50LT5zaG91
bGRVc2VJbnB1dE1ldGhvZCgpKTsKKyAgICAgICAgbV9wYWdlLmVkaXRvckNsaWVudCgpLT5zZXRJ
bnB1dE1ldGhvZFN0YXRlKGVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC02NDAsNyArNjM1LDcgQEAgYm9vbCBGb2N1
c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KAogICAgIH0KIAogICAgIGlmIChuZXdEb2N1
bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA9PSBlbGVtZW50KQotICAgICAgICBtX3BhZ2UtPmVkaXRv
ckNsaWVudCgpLT5zZXRJbnB1dE1ldGhvZFN0YXRlKGVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0
aG9kKCkpOworICAgICAgICBtX3BhZ2UuZWRpdG9yQ2xpZW50KCktPnNldElucHV0TWV0aG9kU3Rh
dGUoZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTY1Miw3ICs2NDcsNyBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZlKGJv
b2wgYWN0CiAKICAgICBtX2lzQWN0aXZlID0gYWN0aXZlOwogCi0gICAgaWYgKEZyYW1lVmlldyog
dmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKSB7CisgICAgaWYgKEZyYW1lVmlldyog
dmlldyA9IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCkpIHsKICAgICAgICAgaWYgKCF2aWV3LT5w
bGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgICAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRTdHls
ZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAgICAgICAgICAgICB2aWV3LT51cGRhdGVDb250cm9sVGlu
dHMoKTsKQEAgLTY4MCwxMyArNjc1LDEzIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRDb250
YWluaW5nV2luZG8KIAogICAgIG1fY29udGFpbmluZ1dpbmRvd0lzVmlzaWJsZSA9IGNvbnRhaW5p
bmdXaW5kb3dJc1Zpc2libGU7CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCku
dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGVudEFy
ZWFEaWRTaG93T3JIaWRlKHZpZXcsIGNvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOwogCi0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Jm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7
CiAgICAgICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICAgICAgY29udGludWU7CkBAIC02OTcs
NyArNjkyLDcgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdXaW5kbwogCiAg
ICAgICAgIGZvciAoSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHNjcm9sbGFibGVBcmVhcy0+YmVnaW4oKSwgZW5kID0gc2Nyb2xsYWJsZUFyZWFzLT5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJs
ZUFyZWEgPSAqaXQ7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbGJh
cnNDYW5CZUFjdGl2ZSgpIHx8IG1fcGFnZS0+c2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRp
b25zKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhLT5zY3JvbGxiYXJzQ2Fu
QmVBY3RpdmUoKSB8fCBtX3BhZ2Uuc2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKCkp
OwogCiAgICAgICAgICAgICBjb250ZW50QXJlYURpZFNob3dPckhpZGUoc2Nyb2xsYWJsZUFyZWEs
IGNvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDE1NTcxNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgcHJpdmF0ZToKIGNsYXNzIEZvY3VzQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRm9jdXNDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Rm9jdXNDb250cm9sbGVyPiBjcmVhdGUoUGFnZSopOwor
ICAgIGV4cGxpY2l0IEZvY3VzQ29udHJvbGxlcihQYWdlJik7CiAKICAgICB2b2lkIHNldEZvY3Vz
ZWRGcmFtZShQYXNzUmVmUHRyPEZyYW1lPik7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9CkBAIC04Myw4ICs4Myw2IEBAIHB1
YmxpYzoKICAgICBib29sIGNvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBGb2N1c0NvbnRyb2xsZXIoUGFnZSopOwotCiAgICAgYm9vbCBhZHZhbmNlRm9jdXNEaXJlY3Rp
b25hbGx5KEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgYm9vbCBhZHZhbmNl
Rm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBib29s
IGluaXRpYWxGb2N1cyk7CiAKQEAgLTExMSw3ICsxMDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UmVjdCYgc3RhcnRpbmdSZWN0LCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVu
dCopOwogICAgIHZvaWQgZmluZEZvY3VzQ2FuZGlkYXRlSW5Db250YWluZXIoTm9kZSogY29udGFp
bmVyLCBjb25zdCBMYXlvdXRSZWN0JiBzdGFydGluZ1JlY3QsIEZvY3VzRGlyZWN0aW9uLCBLZXli
b2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpOwogCi0gICAgUGFnZSogbV9wYWdl
OworICAgIFBhZ2UmIG1fcGFnZTsKICAgICBSZWZQdHI8RnJhbWU+IG1fZm9jdXNlZEZyYW1lOwog
ICAgIGJvb2wgbV9pc0FjdGl2ZTsKICAgICBib29sIG1faXNGb2N1c2VkOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAxNTU3MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMTIgKzEyNCwxMiBAQCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcihGcmFtZSogZnJhbWUpCiB9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VD
bGllbnRzKQotICAgIDogbV9jaHJvbWUoQ2hyb21lOjpjcmVhdGUodGhpcywgcGFnZUNsaWVudHMu
Y2hyb21lQ2xpZW50KSkKLSAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihEcmFnQ2FyZXRDb250
cm9sbGVyOjpjcmVhdGUoKSkKKyAgICA6IG1fY2hyb21lKGNyZWF0ZU93bmVkPENocm9tZT4oKnRo
aXMsICpwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpKQorICAgICwgbV9kcmFnQ2FyZXRDb250cm9s
bGVyKGNyZWF0ZU93bmVkPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKLSAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZSh0
aGlzLCBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoY3Jl
YXRlT3duZWQ8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNsaWVudHMuZHJhZ0NsaWVudCkp
CiAjZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKEZvY3VzQ29udHJvbGxlcjo6Y3JlYXRl
KHRoaXMpKQorICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoY3JlYXRlT3duZWQ8Rm9jdXNDb250cm9s
bGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgLCBtX2NvbnRleHRN
ZW51Q29udHJvbGxlcihjcmVhdGVPd25lZDxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0aGlzLCAq
cGFnZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwCShyZXZpc2lvbiAxNTU3MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE0ICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKLVBhZ2VHcm91cExvYWREZWZlcnJlcjo6UGFnZUdyb3VwTG9hZERl
ZmVycmVyKFBhZ2UqIHBhZ2UsIGJvb2wgZGVmZXJTZWxmKQorUGFnZUdyb3VwTG9hZERlZmVycmVy
OjpQYWdlR3JvdXBMb2FkRGVmZXJyZXIoUGFnZSYgcGFnZSwgYm9vbCBkZWZlclNlbGYpCiB7Ci0g
ICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gcGFnZS0+Z3JvdXAoKS5wYWdlcygpOwor
ICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2UuZ3JvdXAoKS5wYWdlcygpOwog
CiAgICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBhZ2VzLmVuZCgpOwog
ICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFBhZ2UqIG90aGVyUGFnZSA9ICppdDsKLSAg
ICAgICAgaWYgKChkZWZlclNlbGYgfHwgb3RoZXJQYWdlICE9IHBhZ2UpKSB7CisgICAgICAgIGlm
ICgoZGVmZXJTZWxmIHx8IG90aGVyUGFnZSAhPSAmcGFnZSkpIHsKICAgICAgICAgICAgIGlmICgh
b3RoZXJQYWdlLT5kZWZlcnNMb2FkaW5nKCkpIHsKICAgICAgICAgICAgICAgICBtX2RlZmVycmVk
RnJhbWVzLmFwcGVuZCgmb3RoZXJQYWdlLT5tYWluRnJhbWUoKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuaAkocmV2aXNpb24gMTU1NzE3KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGFn
ZUdyb3VwTG9hZERlZmVycmVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUdy
b3VwTG9hZERlZmVycmVyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBhZ2VHcm91cExvYWREZWZl
cnJlcihQYWdlKiwgYm9vbCBkZWZlclNlbGYpOworICAgICAgICBQYWdlR3JvdXBMb2FkRGVmZXJy
ZXIoUGFnZSYsIGJvb2wgZGVmZXJTZWxmKTsKICAgICAgICAgflBhZ2VHcm91cExvYWREZWZlcnJl
cigpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdD
b250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Ry
YWdDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiAxNTU3MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYs
NyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0CiB7CiAgICAgQVNT
RVJUKGRyYWdEYXRhKTsKIAotICAgIGlmICgoZHJhZ0RhdGEtPmZsYWdzKCkgJiBEcmFnQXBwbGlj
YXRpb25Jc01vZGFsKSB8fCAhZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKCZtX3BhZ2UtPm1haW5GcmFt
ZSgpKSkKKyAgICBpZiAoKGRyYWdEYXRhLT5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2Rh
bCkgfHwgIWRyYWdEYXRhLT5jb250YWluc1VSTCgmbV9wYWdlLm1haW5GcmFtZSgpKSkKICAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJN
b3VzZSB8fCAoIShkcmFnRGF0YS0+ZmxhZ3MoKSAmIChEcmFnQXBwbGljYXRpb25IYXNBdHRhY2hl
ZFNoZWV0IHwgRHJhZ0FwcGxpY2F0aW9uSXNTb3VyY2UpKSkpCkBAIC04MCwxMyArODAsMTMgQEAg
dm9pZCBEcmFnQ29udHJvbGxlcjo6Y2xlYW51cEFmdGVyU3lzdGVtRAogICAgIC8vIGNhbGwgaXQg
YW55d2F5IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBk
byB0aGlzIGZvciBXZWJLaXQyLCBzaW5jZSB0aGUgY2xpZW50IGNhbGwgdG8gc3RhcnQgdGhlIGRy
YWcKICAgICAvLyBpcyBhc3luY2hyb25vdXMuCi0gICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpLT5wbGF0Zm9ybVdpZGdldCgpKQorICAgIGlmIChtX3BhZ2UubWFpbkZyYW1lKCkudmll
dygpLT5wbGF0Zm9ybVdpZGdldCgpKQogICAgICAgICBkcmFnRW5kZWQoKTsKIH0KIAogdm9pZCBE
cmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJv
YXJkLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFi
ZWwpCiB7Ci0gICAgY2xpZW50KCktPmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjbGlwYm9hcmQt
PnBhc3RlYm9hcmQoKS5uYW1lKCksIGtpdChlbGVtZW50KSwgdXJsLCBsYWJlbCwgZWxlbWVudC0+
ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBtX2NsaWVudC5kZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UoY2xpcGJvYXJkLT5wYXN0ZWJvYXJkKCkubmFtZSgpLCBraXQoZWxlbWVudCksIHVybCwgbGFi
ZWwsIGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>
<flag name="review"
          id="233719"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>