<?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>117154</bug_id>
          
          <creation_ts>2013-06-03 09:00:02 -0700</creation_ts>
          <short_desc>[GTK] Migrate WebKitWebView to GTask</short_desc>
          <delta_ts>2013-06-19 00:19:53 -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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117149</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>896478</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-03 09:00:02 -0700</bug_when>
    <thetext>Migrate WebKitWebView to GTask</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896479</commentid>
    <comment_count>1</comment_count>
      <attachid>203598</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-03 09:04:39 -0700</bug_when>
    <thetext>Created attachment 203598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896482</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-03 09:07:17 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896537</commentid>
    <comment_count>3</comment_count>
      <attachid>203598</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-06-03 10:36:33 -0700</bug_when>
    <thetext>Comment on attachment 203598
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2472
&gt; +    if (g_cancellable_set_error_if_cancelled(g_task_get_cancellable(task.get()), &amp;error)) {
&gt; +        g_task_return_error(task.get(), error);
&gt; +        return;
&gt; +    }

if (g_task_return_error_if_cancelled(task))
    return;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2953
&gt; +    if (g_cancellable_set_error_if_cancelled(g_task_get_cancellable(task.get()), &amp;error)) {

likewise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896779</commentid>
    <comment_count>4</comment_count>
      <attachid>203664</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-04 01:47:52 -0700</bug_when>
    <thetext>Created attachment 203664
Updated patch according to review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>896859</commentid>
    <comment_count>5</comment_count>
      <attachid>203664</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-06-04 06:27:32 -0700</bug_when>
    <thetext>Comment on attachment 203664
Updated patch according to review comments

looks good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901432</commentid>
    <comment_count>6</comment_count>
      <attachid>203664</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-06-18 10:01:38 -0700</bug_when>
    <thetext>Comment on attachment 203664
Updated patch according to review comments

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901676</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-19 00:19:53 -0700</bug_when>
    <thetext>Committed r151724: &lt;http://trac.webkit.org/changeset/151724&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203598</attachid>
            <date>2013-06-03 09:04:39 -0700</date>
            <delta_ts>2013-06-04 01:47:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-gtask-web-view.diff</filename>
            <type>text/plain</type>
            <size>25952</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmOWRmZjUwLi4zOGQ4YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzIg
QEAKIDIwMTMtMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE1pZ3JhdGUgV2ViS2l0V2ViVmlldyB0byBHVGFzaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MTU0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGRpZFZhbGlkYXRlQ29tbWFuZCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfZmluaXNo
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2spOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19ydW5famF2YXNjcmlwdF9maW5pc2gpOgorICAgICAgICAocmVzb3VyY2VzU3RyZWFtUmVh
ZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9mcm9t
X2dyZXNvdXJjZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZnJv
bV9ncmVzb3VyY2VfZmluaXNoKToKKyAgICAgICAgKGZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFj
ayk6CisgICAgICAgIChnZXRDb250ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2spOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NhdmUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NhdmVfZmlu
aXNoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2gpOgorICAgICAgICAod2ViS2l0V2Vi
Vmlld0RpZFJlY2VpdmVTbmFwc2hvdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKToK
KworMjAxMy0wNi0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CisKICAgICAgICAgW0dUS10gTWlncmF0ZSBXZWJLaXRXZWJDb250ZXh0IHRvIEdUYXNrCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTcxNTMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCA3NTBjZTMwLi40MTAwMzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIGVudW0gewog
fTsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNl
PiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7Ci10eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQ
dHI8R1NpbXBsZUFzeW5jUmVzdWx0PiA+IFNuYXBzaG90UmVzdWx0c01hcDsKK3R5cGVkZWYgSGFz
aE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHVGFzaz4gPiBTbmFwc2hvdFJlc3VsdHNNYXA7CiAKIHN0
cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIH5fV2ViS2l0V2ViVmlld1ByaXZhdGUo
KQpAQCAtMjM2MCwyMiArMjM2MCwxMCBAQCBnZG91YmxlIHdlYmtpdF93ZWJfdmlld19nZXRfem9v
bV9sZXZlbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHJldHVybiB6b29tVGV4dE9ubHkg
PyBwYWdlLT50ZXh0Wm9vbUZhY3RvcigpIDogcGFnZS0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAot
c3RydWN0IFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEgewotICAgIGJvb2wgaXNFbmFi
bGVkOwotICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKLX07Ci1XRUJLSVRf
REVGSU5FX0FTWU5DX0RBVEFfU1RSVUNUKFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEp
Ci0KIHN0YXRpYyB2b2lkIGRpZFZhbGlkYXRlQ29tbWFuZChXS1N0cmluZ1JlZiBjb21tYW5kLCBi
b29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwgV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkK
IHsKLSAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKEdf
U0lNUExFX0FTWU5DX1JFU1VMVChjb250ZXh0KSk7Ci0gICAgVmFsaWRhdGVFZGl0aW5nQ29tbWFu
ZEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3lu
Y0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQu
Z2V0KCkpKTsKLSAgICBHRXJyb3IqIGVycm9yID0gMDsKLSAgICBpZiAoZ19jYW5jZWxsYWJsZV9z
ZXRfZXJyb3JfaWZfY2FuY2VsbGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQot
ICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVy
cm9yKTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGEtPmlzRW5hYmxlZCA9IGlzRW5hYmxlZDsKLSAg
ICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKKyAgICBHUmVm
UHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKEdfVEFTSyhjb250ZXh0KSk7CisgICAgZ190YXNr
X3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIGlzRW5hYmxlZCk7CiB9CiAKIC8qKgpAQCAtMjM5
NiwxMyArMjM4NCw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdf
Y29tbWFuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
Y29tbWFuZCk7CiAKLSAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2Fz
eW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2Vk
aXRpbmdfY29tbWFuZCkpOwotICAgIFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEqIGRh
dGEgPSBjcmVhdGVWYWxpZGF0ZUVkaXRpbmdDb21tYW5kQXN5bmNEYXRhKCk7Ci0gICAgZGF0YS0+
Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJsZTsKLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0
X29wX3Jlc19ncG9pbnRlcihyZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lO
b3RpZnk+KGRlc3Ryb3lWYWxpZGF0ZUVkaXRpbmdDb21tYW5kQXN5bmNEYXRhKSk7Ci0KLSAgICBn
ZXRQYWdlKHdlYlZpZXcpLT52YWxpZGF0ZUNvbW1hbmQoU3RyaW5nOjpmcm9tVVRGOChjb21tYW5k
KSwgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIGRpZFZhbGlkYXRlQ29t
bWFuZCkpOworICAgIEdUYXNrKiB0YXNrID0gZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJs
ZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT52YWxpZGF0ZUNv
bW1hbmQoU3RyaW5nOjpmcm9tVVRGOChjb21tYW5kKSwgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s6
OmNyZWF0ZSh0YXNrLCBkaWRWYWxpZGF0ZUNvbW1hbmQpKTsKIH0KIAogLyoqCkBAIC0yNDE4LDE2
ICsyNDAxLDkgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGMKIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCBGQUxTRSk7
Ci0KLSAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VM
VChyZXN1bHQpOwotICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRf
c291cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5n
X2NvbW1hbmQpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1
bHQsIHdlYlZpZXcpLCBGQUxTRSk7CiAKLSAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3By
b3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0g
ICAgVmFsaWRhdGVFZGl0aW5nQ29tbWFuZEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFZh
bGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0
X29wX3Jlc19ncG9pbnRlcihzaW1wbGUpKTsKLSAgICByZXR1cm4gZGF0YS0+aXNFbmFibGVkOwor
ICAgIHJldHVybiBnX3Rhc2tfcHJvcGFnYXRlX2Jvb2xlYW4oR19UQVNLKHJlc3VsdCksIGVycm9y
KTsKIH0KIAogLyoqCkBAIC0yNDg2LDMzICsyNDYyLDI0IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQoV2ViS2l0V2ViVmll
dyoKICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+amF2YXNjcmlwdEdsb2JhbENvbnRleHQ7CiB9
CiAKLXN0cnVjdCBSdW5KYXZhU2NyaXB0QXN5bmNEYXRhIHsKLSAgICB+UnVuSmF2YVNjcmlwdEFz
eW5jRGF0YSgpCi0gICAgewotICAgICAgICBpZiAoc2NyaXB0UmVzdWx0KQotICAgICAgICAgICAg
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKHNjcmlwdFJlc3VsdCk7Ci0gICAgfQotCi0g
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogc2NyaXB0UmVzdWx0OwotICAgIEdSZWZQdHI8R0Nh
bmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKLX07Ci1XRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RS
VUNUKFJ1bkphdmFTY3JpcHRBc3luY0RhdGEpCi0KIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdS
dW5KYXZhU2NyaXB0Q2FsbGJhY2soV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgd2tTZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgR1JlZlB0
cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0R1JlZihHX1NJTVBMRV9BU1lOQ19S
RVNVTFQoY29udGV4dCkpOwotICAgIFJ1bkphdmFTY3JpcHRBc3luY0RhdGEqIGRhdGEgPSBzdGF0
aWNfY2FzdDxSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dl
dF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7CisgICAgR1JlZlB0cjxHVGFzaz4gdGFz
ayA9IGFkb3B0R1JlZihHX1RBU0soY29udGV4dCkpOwogICAgIEdFcnJvciogZXJyb3IgPSAwOwot
ICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9pZl9jYW5jZWxsZWQoZGF0YS0+Y2FuY2Vs
bGFibGUuZ2V0KCksICZlcnJvcikpCi0gICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtl
X2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOwotICAgIGVsc2UgaWYgKHdrU2VyaWFsaXplZFNj
cmlwdFZhbHVlKSB7Ci0gICAgICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0R1JlZihXRUJLSVRfV0VCX1ZJRVcoZ19hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV9vYmplY3Qo
R19BU1lOQ19SRVNVTFQocmVzdWx0LmdldCgpKSkpKTsKLSAgICAgICAgZGF0YS0+c2NyaXB0UmVz
dWx0ID0gd2Via2l0SmF2YXNjcmlwdFJlc3VsdENyZWF0ZSh3ZWJWaWV3LmdldCgpLCB0b0ltcGwo
d2tTZXJpYWxpemVkU2NyaXB0VmFsdWUpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBnX3NldF9l
cnJvcl9saXRlcmFsKCZlcnJvciwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZB
U0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQsIF8oIkFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGlu
IEphdmFTY3JpcHQiKSk7Ci0gICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9y
KHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9p
Zl9jYW5jZWxsZWQoZ190YXNrX2dldF9jYW5jZWxsYWJsZSh0YXNrLmdldCgpKSwgJmVycm9yKSkg
eworICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRhc2suZ2V0KCksIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2tTZXJpYWxpemVkU2NyaXB0VmFsdWUpIHsK
KyAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgV0VCS0lUX0pBVkFT
Q1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQsCisgICAg
ICAgICAgICBfKCJBbiBleGNlcHRpb24gd2FzIHJhaXNlZCBpbiBKYXZhU2NyaXB0IikpOworICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShy
ZXN1bHQuZ2V0KCkpOworCisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOworICAgIGdfdGFza19y
ZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCB3ZWJraXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKHdl
YlZpZXcsIHRvSW1wbCh3a1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpLAorICAgICAgICByZWludGVy
cHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pih3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYp
KTsKIH0KIAogLyoqCkBAIC0yNTM0LDE0ICsyNTAxLDggQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
cnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHNjcmlw
dCwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAgR1NpbXBsZUFzeW5jUmVzdWx0KiBy
ZXN1bHQgPSBnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZpZXcpLCBjYWxs
YmFjaywgdXNlckRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJf
dmlld19ydW5famF2YXNjcmlwdCkpOwotICAgIFJ1bkphdmFTY3JpcHRBc3luY0RhdGEqIGRhdGEg
PSBjcmVhdGVSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKCk7Ci0gICAgZGF0YS0+Y2FuY2VsbGFibGUg
PSBjYW5jZWxsYWJsZTsKLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9p
bnRlcihyZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ry
b3lSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKSk7Ci0KLSAgICBnZXRQYWdlKHdlYlZpZXcpLT5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRWYWx1ZUNhbGxiYWNr
OjpjcmVhdGUocmVzdWx0LCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKSk7Cisg
ICAgR1Rhc2sqIHRhc2sgPSBnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFj
aywgdXNlckRhdGEpOworICAgIGdldFBhZ2Uod2ViVmlldyktPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0
ZSh0YXNrLCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKSk7CiB9CiAKIC8qKgpA
QCAtMjYxMSwzNSArMjU3MiwyNiBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3Ip
CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
LCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQp
LCAwKTsKLQotICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogc2ltcGxlUmVzdWx0ID0gR19TSU1QTEVf
QVNZTkNfUkVTVUxUKHJlc3VsdCk7Ci0gICAgZ193YXJuX2lmX2ZhaWwoZ19zaW1wbGVfYXN5bmNf
cmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZVJlc3VsdCkgPT0gd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQo
cmVzdWx0LCB3ZWJWaWV3KSwgMCk7CiAKLSAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3By
b3BhZ2F0ZV9lcnJvcihzaW1wbGVSZXN1bHQsIGVycm9yKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8UnVuSmF2YVNj
cmlwdEFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVy
KHNpbXBsZVJlc3VsdCkpOwotICAgIHJldHVybiBkYXRhLT5zY3JpcHRSZXN1bHQgPyB3ZWJraXRf
amF2YXNjcmlwdF9yZXN1bHRfcmVmKGRhdGEtPnNjcmlwdFJlc3VsdCkgOiAwOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJLaXRKYXZhc2NyaXB0UmVzdWx0Kj4oZ190YXNrX3Byb3BhZ2F0ZV9w
b2ludGVyKEdfVEFTSyhyZXN1bHQpLCBlcnJvcikpOwogfQogCiBzdGF0aWMgdm9pZCByZXNvdXJj
ZXNTdHJlYW1SZWFkQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgR091dHB1dFN0cmVhbSogb3V0cHV0U3RyZWFt
ID0gR19PVVRQVVRfU1RSRUFNKG9iamVjdCk7Ci0gICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1
bHQ+IHJ1bkphdmFzY3JpcHRSZXN1bHQgPSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxU
KHVzZXJEYXRhKSk7CisgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihHX1RBU0so
dXNlckRhdGEpKTsKIAogICAgIEdFcnJvciogZXJyb3IgPSAwOwotICAgIGdfb3V0cHV0X3N0cmVh
bV9zcGxpY2VfZmluaXNoKG91dHB1dFN0cmVhbSwgcmVzdWx0LCAmZXJyb3IpOworICAgIGdfb3V0
cHV0X3N0cmVhbV9zcGxpY2VfZmluaXNoKEdfT1VUUFVUX1NUUkVBTShvYmplY3QpLCByZXN1bHQs
ICZlcnJvcik7CiAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF90YWtlX2Vycm9yKHJ1bkphdmFzY3JpcHRSZXN1bHQuZ2V0KCksIGVycm9yKTsKLSAgICAgICAg
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJ1bkphdmFzY3JpcHRSZXN1bHQuZ2V0KCkp
OworICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRhc2suZ2V0KCksIGVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0R1JlZihXRUJLSVRfV0VCX1ZJRVcoZ19hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV9vYmpl
Y3QoR19BU1lOQ19SRVNVTFQocnVuSmF2YXNjcmlwdFJlc3VsdC5nZXQoKSkpKSk7Ci0gICAgZ3Bv
aW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9IGdfbWVtb3J5X291dHB1dF9zdHJlYW1fZ2V0X2RhdGEo
R19NRU1PUllfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0pKTsKLSAgICBnZXRQYWdlKHdlYlZp
ZXcuZ2V0KCkpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRWYWx1ZUNh
bGxiYWNrOjpjcmVhdGUocnVuSmF2YXNjcmlwdFJlc3VsdC5sZWFrUmVmKCksIHdlYmtpdFdlYlZp
ZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2spKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291cmNlX29iamVjdCh0YXNrLmdldCgpKSk7Cisg
ICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9IGdfbWVtb3J5X291dHB1dF9zdHJlYW1fZ2V0
X2RhdGEoR19NRU1PUllfT1VUUFVUX1NUUkVBTShvYmplY3QpKTsKKyAgICBnZXRQYWdlKHdlYlZp
ZXcpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJl
dF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLAorICAgICAgICBTY3JpcHRW
YWx1ZUNhbGxiYWNrOjpjcmVhdGUodGFzay5sZWFrUmVmKCksIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0Q2FsbGJhY2spKTsKIH0KIAogLyoqCkBAIC0yNjYyLDI1ICsyNjE0LDE4IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2Zyb21fZ3Jlc291cmNlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwocmVzb3VyY2UpOwogCi0gICAgR1Jl
ZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0R1JlZihnX3NpbXBsZV9hc3lu
Y19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmll
d19ydW5famF2YXNjcmlwdF9mcm9tX2dyZXNvdXJjZSkpKTsKLSAgICBSdW5KYXZhU2NyaXB0QXN5
bmNEYXRhKiBkYXRhID0gY3JlYXRlUnVuSmF2YVNjcmlwdEFzeW5jRGF0YSgpOwotICAgIGRhdGEt
PmNhbmNlbGxhYmxlID0gY2FuY2VsbGFibGU7Ci0gICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Nl
dF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpLCBkYXRhLCByZWludGVycHJldF9jYXN0PEdE
ZXN0cm95Tm90aWZ5PihkZXN0cm95UnVuSmF2YVNjcmlwdEFzeW5jRGF0YSkpOwotCiAgICAgR0Vy
cm9yKiBlcnJvciA9IDA7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0g
YWRvcHRHUmVmKGdfcmVzb3VyY2VzX29wZW5fc3RyZWFtKHJlc291cmNlLCBHX1JFU09VUkNFX0xP
T0tVUF9GTEFHU19OT05FLCAmZXJyb3IpKTsKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7Ci0gICAg
ICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZV9pbl9pZGxlKHJlc3VsdC5nZXQoKSk7
CisgICAgICAgIGdfdGFza19yZXBvcnRfZXJyb3Iod2ViVmlldywgY2FsbGJhY2ssIHVzZXJEYXRh
LCAwLCBlcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBHVGFzayogdGFzayA9
IGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7CiAg
ICAgR1JlZlB0cjxHT3V0cHV0U3RyZWFtPiBvdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1v
cnlfb3V0cHV0X3N0cmVhbV9uZXcoMCwgMCwgZmFzdFJlYWxsb2MsIGZhc3RGcmVlKSk7CiAgICAg
Z19vdXRwdXRfc3RyZWFtX3NwbGljZV9hc3luYyhvdXRwdXRTdHJlYW0uZ2V0KCksIGlucHV0U3Ry
ZWFtLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
R091dHB1dFN0cmVhbVNwbGljZUZsYWdzPihHX09VVFBVVF9TVFJFQU1fU1BMSUNFX0NMT1NFX1NP
VVJDRSB8IEdfT1VUUFVUX1NUUkVBTV9TUExJQ0VfQ0xPU0VfVEFSR0VUKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdfUFJJT1JJVFlfREVGQVVMVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhYmxlLCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJh
Y2ssIHJlc3VsdC5sZWFrUmVmKCkpOworICAgICAgICBzdGF0aWNfY2FzdDxHT3V0cHV0U3RyZWFt
U3BsaWNlRmxhZ3M+KEdfT1VUUFVUX1NUUkVBTV9TUExJQ0VfQ0xPU0VfU09VUkNFIHwgR19PVVRQ
VVRfU1RSRUFNX1NQTElDRV9DTE9TRV9UQVJHRVQpLAorICAgICAgICBHX1BSSU9SSVRZX0RFRkFV
TFQsIGNhbmNlbGxhYmxlLCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2ssIHRhc2spOwogfQog
CiAvKioKQEAgLTI2OTksMTYgKzI2NDQsOSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2
YXNjcmlwdF9mcm9tX2dyZXNvdXJjZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdAogV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2Zyb21f
Z3Jlc291cmNlX2ZpbmlzaChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lT
X0FTWU5DX1JFU1VMVChyZXN1bHQpLCAwKTsKLQotICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogc2lt
cGxlUmVzdWx0ID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7Ci0gICAgZ193YXJuX2lm
X2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZVJlc3VsdCkg
PT0gd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2Zyb21fZ3Jlc291cmNlKTsKLQotICAg
IGlmIChnX3NpbXBsZV9hc3luY19yZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZVJlc3VsdCwg
ZXJyb3IpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rh
c2tfaXNfdmFsaWQocmVzdWx0LCB3ZWJWaWV3KSwgMCk7CiAKLSAgICBSdW5KYXZhU2NyaXB0QXN5
bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8UnVuSmF2YVNjcmlwdEFzeW5jRGF0YSo+KGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBsZVJlc3VsdCkpOwotICAg
IHJldHVybiBkYXRhLT5zY3JpcHRSZXN1bHQgPyB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfcmVm
KGRhdGEtPnNjcmlwdFJlc3VsdCkgOiAwOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0Kj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKEdfVEFTSyhyZXN1bHQp
LCBlcnJvcikpOwogfQogCiAvKioKQEAgLTI3NjUsNDYgKzI3MDMsNDUgQEAgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBjaGFyKgogc3RydWN0IFZpZXdTYXZlQXN5bmNEYXRhIHsKICAgICBSZWZQdHI8V2ViRGF0
YT4gd2ViRGF0YTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlOwotICAgIEdSZWZQdHI8R0NhbmNl
bGxhYmxlPiBjYW5jZWxsYWJsZTsKIH07CiBXRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RSVUNU
KFZpZXdTYXZlQXN5bmNEYXRhKQogCiBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRzQ2Fs
bGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0
YSkKIHsKLSAgICBHRmlsZSogZmlsZSA9IEdfRklMRShvYmplY3QpOwotICAgIEdSZWZQdHI8R1Np
bXBsZUFzeW5jUmVzdWx0PiBzYXZlZFRvRmlsZVJlc3VsdCA9IGFkb3B0R1JlZihHX1NJTVBMRV9B
U1lOQ19SRVNVTFQoZGF0YSkpOwotCisgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1Jl
ZihHX1RBU0soZGF0YSkpOwogICAgIEdFcnJvciogZXJyb3IgPSAwOwotICAgIGlmICghZ19maWxl
X3JlcGxhY2VfY29udGVudHNfZmluaXNoKGZpbGUsIHJlc3VsdCwgMCwgJmVycm9yKSkKLSAgICAg
ICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3Ioc2F2ZWRUb0ZpbGVSZXN1bHQuZ2V0
KCksIGVycm9yKTsKKyAgICBpZiAoIWdfZmlsZV9yZXBsYWNlX2NvbnRlbnRzX2ZpbmlzaChHX0ZJ
TEUob2JqZWN0KSwgcmVzdWx0LCAwLCAmZXJyb3IpKSB7CisgICAgICAgIGdfdGFza19yZXR1cm5f
ZXJyb3IodGFzay5nZXQoKSwgZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAg
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHNhdmVkVG9GaWxlUmVzdWx0LmdldCgpKTsK
KyAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CiB9CiAKIHN0YXRp
YyB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGFDYWxsYmFjayhXS0RhdGFSZWYgd2tEYXRhLCBX
S0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVz
dWx0PiByZXN1bHQgPSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxUKGNvbnRleHQpKTsK
LSAgICBWaWV3U2F2ZUFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFZpZXdTYXZlQXN5bmNE
YXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0Lmdl
dCgpKSk7CisgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihHX1RBU0soY29udGV4
dCkpOworICAgIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUgPSBnX3Rhc2tfZ2V0X2NhbmNlbGxh
YmxlKHRhc2suZ2V0KCkpOwogICAgIEdFcnJvciogZXJyb3IgPSAwOworICAgIGlmIChnX2NhbmNl
bGxhYmxlX3NldF9lcnJvcl9pZl9jYW5jZWxsZWQoY2FuY2VsbGFibGUsICZlcnJvcikpIHsKKyAg
ICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNrLmdldCgpLCBlcnJvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBpZiAoZ19jYW5jZWxsYWJsZV9zZXRfZXJyb3JfaWZfY2FuY2Vs
bGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQotICAgICAgICBnX3NpbXBsZV9h
c3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgLy8gV2UgbmVlZCB0byByZXRhaW4gdGhlIGRhdGEgdW50aWwgdGhlIGFzeW5jcm9u
b3VzIHByb2Nlc3MKLSAgICAgICAgLy8gaW5pdGlhdGVkIGJ5IHRoZSB1c2VyIGhhcyBmaW5pc2hl
ZCBjb21wbGV0ZWx5LgotICAgICAgICBkYXRhLT53ZWJEYXRhID0gdG9JbXBsKHdrRGF0YSk7Ci0K
LSAgICAgICAgLy8gSWYgd2UgYXJlIHNhdmluZyB0byBhIGZpbGUgd2UgbmVlZCB0byB3cml0ZSB0
aGUgZGF0YSBvbiBkaXNrIGJlZm9yZSBmaW5pc2hpbmcuCi0gICAgICAgIGlmIChnX3NpbXBsZV9h
c3luY19yZXN1bHRfZ2V0X3NvdXJjZV90YWcocmVzdWx0LmdldCgpKSA9PSB3ZWJraXRfd2ViX3Zp
ZXdfc2F2ZV90b19maWxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQoR19JU19GSUxFKGRhdGEtPmZp
bGUuZ2V0KCkpKTsKLSAgICAgICAgICAgIGdfZmlsZV9yZXBsYWNlX2NvbnRlbnRzX2FzeW5jKGRh
dGEtPmZpbGUuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihkYXRhLT53ZWJE
YXRhLT5ieXRlcygpKSwgZGF0YS0+d2ViRGF0YS0+c2l6ZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgRkFMU0UsIEdfRklMRV9DUkVBVEVfUkVQTEFDRV9E
RVNUSU5BVElPTiwgZGF0YS0+Y2FuY2VsbGFibGUuZ2V0KCksIGZpbGVSZXBsYWNlQ29udGVudHND
YWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfb2Jq
ZWN0X3JlZihyZXN1bHQuZ2V0KCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgIFZpZXdTYXZlQXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8Vmlld1NhdmVBc3luY0Rh
dGEqPihnX3Rhc2tfZ2V0X3Rhc2tfZGF0YSh0YXNrLmdldCgpKSk7CisgICAgLy8gV2UgbmVlZCB0
byByZXRhaW4gdGhlIGRhdGEgdW50aWwgdGhlIGFzeW5jcm9ub3VzIHByb2Nlc3MKKyAgICAvLyBp
bml0aWF0ZWQgYnkgdGhlIHVzZXIgaGFzIGZpbmlzaGVkIGNvbXBsZXRlbHkuCisgICAgZGF0YS0+
d2ViRGF0YSA9IHRvSW1wbCh3a0RhdGEpOworCisgICAgLy8gSWYgd2UgYXJlIHNhdmluZyB0byBh
IGZpbGUgd2UgbmVlZCB0byB3cml0ZSB0aGUgZGF0YSBvbiBkaXNrIGJlZm9yZSBmaW5pc2hpbmcu
CisgICAgaWYgKGdfdGFza19nZXRfc291cmNlX3RhZyh0YXNrLmdldCgpKSA9PSB3ZWJraXRfd2Vi
X3ZpZXdfc2F2ZV90b19maWxlKSB7CisgICAgICAgIEFTU0VSVChHX0lTX0ZJTEUoZGF0YS0+Zmls
ZS5nZXQoKSkpOworICAgICAgICBnX2ZpbGVfcmVwbGFjZV9jb250ZW50c19hc3luYyhkYXRhLT5m
aWxlLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4oZGF0YS0+d2ViRGF0YS0+
Ynl0ZXMoKSksIGRhdGEtPndlYkRhdGEtPnNpemUoKSwKKyAgICAgICAgICAgIDAsIEZBTFNFLCBH
X0ZJTEVfQ1JFQVRFX1JFUExBQ0VfREVTVElOQVRJT04sIGNhbmNlbGxhYmxlLCBmaWxlUmVwbGFj
ZUNvbnRlbnRzQ2FsbGJhY2ssIHRhc2subGVha1JlZigpKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQuZ2V0KCkpOwor
ICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgpLCBUUlVFKTsKIH0KIAogLyoqCkBA
IC0yODMwLDEzICsyNzY3LDEwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NhdmUoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0U2F2ZU1vZGUgc2F2ZU1vZGUsIEdDYW5jCiAgICAgLy8gV2Ug
b25seSBzdXBwb3J0IE1IVE1MIGF0IHRoZSBtb21lbnQuCiAgICAgZ19yZXR1cm5faWZfZmFpbChz
YXZlTW9kZSA9PSBXRUJLSVRfU0FWRV9NT0RFX01IVE1MKTsKIAotICAgIEdTaW1wbGVBc3luY1Jl
c3VsdCogcmVzdWx0ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVCh3ZWJWaWV3
KSwgY2FsbGJhY2ssIHVzZXJEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3ZWJr
aXRfd2ViX3ZpZXdfc2F2ZSkpOwotICAgIFZpZXdTYXZlQXN5bmNEYXRhKiBkYXRhID0gY3JlYXRl
Vmlld1NhdmVBc3luY0RhdGEoKTsKLSAgICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxl
OwotICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwg
ZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVZpZXdTYXZlQXN5
bmNEYXRhKSk7Ci0KLSAgICBnZXRQYWdlKHdlYlZpZXcpLT5nZXRDb250ZW50c0FzTUhUTUxEYXRh
KERhdGFDYWxsYmFjazo6Y3JlYXRlKHJlc3VsdCwgZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxi
YWNrKSwgZmFsc2UpOworICAgIEdUYXNrKiB0YXNrID0gZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5j
ZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKKyAgICBnX3Rhc2tfc2V0X3NvdXJjZV90YWco
dGFzaywgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl92aWV3X3NhdmUpKTsK
KyAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSh0YXNrLCBjcmVhdGVWaWV3U2F2ZUFzeW5jRGF0YSgp
LCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95Vmlld1NhdmVBc3luY0Rh
dGEpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT5nZXRDb250ZW50c0FzTUhUTUxEYXRhKERhdGFD
YWxsYmFjazo6Y3JlYXRlKHRhc2ssIGdldENvbnRlbnRzQXNNSFRNTERhdGFDYWxsYmFjayksIGZh
bHNlKTsKIH0KIAogLyoqCkBAIC0yODUzLDE2ICsyNzg3LDE0IEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X3NhdmUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U2F2ZU1vZGUgc2F2ZU1vZGUs
IEdDYW5jCiBHSW5wdXRTdHJlYW0qIHdlYmtpdF93ZWJfdmlld19zYXZlX2ZpbmlzaChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAw
KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCAw
KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCB3ZWJW
aWV3KSwgMCk7CiAKLSAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FT
WU5DX1JFU1VMVChyZXN1bHQpOwotICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jl
c3VsdF9nZXRfc291cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19zYXZlKTsKLQot
ICAgIGlmIChnX3NpbXBsZV9hc3luY19yZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZSwgZXJy
b3IpKQorICAgIEdUYXNrKiB0YXNrID0gR19UQVNLKHJlc3VsdCk7CisgICAgaWYgKCFnX3Rhc2tf
cHJvcGFnYXRlX2Jvb2xlYW4odGFzaywgZXJyb3IpKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IEdJbnB1dFN0cmVhbSogZGF0YVN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXcoKTsK
LSAgICBWaWV3U2F2ZUFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFZpZXdTYXZlQXN5bmNE
YXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlKSk7
CisgICAgVmlld1NhdmVBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxWaWV3U2F2ZUFzeW5j
RGF0YSo+KGdfdGFza19nZXRfdGFza19kYXRhKHRhc2spKTsKICAgICBnc2l6ZSBsZW5ndGggPSBk
YXRhLT53ZWJEYXRhLT5zaXplKCk7CiAgICAgaWYgKGxlbmd0aCkKICAgICAgICAgZ19tZW1vcnlf
aW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVNT1JZX0lOUFVUX1NUUkVBTShkYXRhU3RyZWFtKSwg
Z19tZW1kdXAoZGF0YS0+d2ViRGF0YS0+Ynl0ZXMoKSwgbGVuZ3RoKSwgbGVuZ3RoLCBnX2ZyZWUp
OwpAQCAtMjg5NSwxNCArMjgyNywxMyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2Zp
bGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0ZpbGUqIGZpbGUsIFdlYktpdFNhdgogICAgIC8v
IFdlIG9ubHkgc3VwcG9ydCBNSFRNTCBhdCB0aGUgbW9tZW50LgogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2F2ZU1vZGUgPT0gV0VCS0lUX1NBVkVfTU9ERV9NSFRNTCk7CiAKLSAgICBHU2ltcGxlQXN5
bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2Vi
VmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4o
d2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZSkpOworICAgIEdUYXNrKiB0YXNrID0gZ190YXNr
X25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKKyAgICBnX3Rh
c2tfc2V0X3NvdXJjZV90YWcodGFzaywgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0
X3dlYl92aWV3X3NhdmVfdG9fZmlsZSkpOwogICAgIFZpZXdTYXZlQXN5bmNEYXRhKiBkYXRhID0g
Y3JlYXRlVmlld1NhdmVBc3luY0RhdGEoKTsKICAgICBkYXRhLT5maWxlID0gZmlsZTsKLSAgICBk
YXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOwotICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVz
dHJveU5vdGlmeT4oZGVzdHJveVZpZXdTYXZlQXN5bmNEYXRhKSk7CisgICAgZ190YXNrX3NldF90
YXNrX2RhdGEodGFzaywgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVz
dHJveVZpZXdTYXZlQXN5bmNEYXRhKSk7CiAKLSAgICBnZXRQYWdlKHdlYlZpZXcpLT5nZXRDb250
ZW50c0FzTUhUTUxEYXRhKERhdGFDYWxsYmFjazo6Y3JlYXRlKHJlc3VsdCwgZ2V0Q29udGVudHNB
c01IVE1MRGF0YUNhbGxiYWNrKSwgZmFsc2UpOworICAgIGdldFBhZ2Uod2ViVmlldyktPmdldENv
bnRlbnRzQXNNSFRNTERhdGEoRGF0YUNhbGxiYWNrOjpjcmVhdGUodGFzaywgZ2V0Q29udGVudHNB
c01IVE1MRGF0YUNhbGxiYWNrKSwgZmFsc2UpOwogfQogCiAvKioKQEAgLTI5MTgsMTUgKzI4NDks
OSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR0ZpbGUqIGZpbGUsIFdlYktpdFNhdgogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3Nh
dmVfdG9fZmlsZV9maW5pc2goV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIEdFcnJvcioqIGVycm9yKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KEdfSVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIEZBTFNFKTsKLQotICAgIEdTaW1wbGVBc3luY1Jl
c3VsdCogc2ltcGxlID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7Ci0gICAgZ193YXJu
X2lmX2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZSkgPT0g
d2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZSk7Ci0KLSAgICBpZiAoZ19zaW1wbGVfYXN5bmNf
cmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKLSAgICAgICAgcmV0dXJuIEZB
TFNFOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIHdl
YlZpZXcpLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gVFJVRTsKKyAgICByZXR1cm4gZ190YXNrX3By
b3BhZ2F0ZV9ib29sZWFuKEdfVEFTSyhyZXN1bHQpLCBlcnJvcik7CiB9CiAKIC8qKgpAQCAtMzAy
MSwyOCArMjk0NiwyNSBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Rsc19pbmZvKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEdUbHNDZXJ0aWZpY2F0ZSoqCiAgICAgcmV0dXJuICEhY2Vy
dGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCk7CiB9CiAKLXN0cnVjdCBHZXRTbmFwc2hvdEFzeW5j
RGF0YSB7Ci0gICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOwotICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IHNuYXBzaG90OwotfTsKLVdFQktJVF9ERUZJTkVfQVNZTkNfREFU
QV9TVFJVQ1QoR2V0U25hcHNob3RBc3luY0RhdGEpCi0KIHZvaWQgd2ViS2l0V2ViVmlld0RpZFJl
Y2VpdmVTbmFwc2hvdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCB1aW50NjRfdCBjYWxsYmFja0lE
LCBXZWJJbWFnZSogd2ViSW1hZ2UpCiB7Ci0gICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+
IHJlc3VsdCA9IHdlYlZpZXctPnByaXYtPnNuYXBzaG90UmVzdWx0c01hcC50YWtlKGNhbGxiYWNr
SUQpOwotICAgIEdldFNuYXBzaG90QXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8R2V0U25h
cHNob3RBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRl
cihyZXN1bHQuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gd2ViVmlldy0+cHJp
di0+c25hcHNob3RSZXN1bHRzTWFwLnRha2UoY2FsbGJhY2tJRCk7CiAgICAgR0Vycm9yKiBlcnJv
ciA9IDA7Ci0gICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9yX2lmX2NhbmNlbGxlZChkYXRh
LT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKLSAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVz
dWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7Ci0gICAgZWxzZSBpZiAod2ViSW1h
Z2UpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlID0gd2ViSW1h
Z2UtPmJpdG1hcCgpKQotICAgICAgICAgICAgZGF0YS0+c25hcHNob3QgPSBpbWFnZS0+Y3JlYXRl
Q2Fpcm9TdXJmYWNlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJh
bCgmZXJyb3IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZB
SUxFRF9UT19DUkVBVEUsIF8oIlRoZXJlIHdhcyBhbiBlcnJvciBjcmVhdGluZyB0aGUgc25hcHNo
b3QiKSk7Ci0gICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5n
ZXQoKSwgZXJyb3IpOworICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9pZl9jYW5jZWxs
ZWQoZ190YXNrX2dldF9jYW5jZWxsYWJsZSh0YXNrLmdldCgpKSwgJmVycm9yKSkgeworICAgICAg
ICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRhc2suZ2V0KCksIGVycm9yKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQuZ2V0
KCkpOworICAgIGlmICghd2ViSW1hZ2UpIHsKKyAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJy
b3IodGFzay5nZXQoKSwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJS
T1JfRkFJTEVEX1RPX0NSRUFURSwKKyAgICAgICAgICAgIF8oIlRoZXJlIHdhcyBhbiBlcnJvciBj
cmVhdGluZyB0aGUgc25hcHNob3QiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaW1hZ2UgPSB3ZWJJbWFnZS0+Yml0bWFwKCkpCisg
ICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCBpbWFnZS0+Y3JlYXRlQ2Fp
cm9TdXJmYWNlKCkubGVha1JlZigpLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihj
YWlyb19zdXJmYWNlX2Rlc3Ryb3kpKTsKKyAgICBlbHNlCisgICAgICAgIGdfdGFza19yZXR1cm5f
cG9pbnRlcih0YXNrLmdldCgpLCAwLCAwKTsKIH0KIAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFNuYXBzaG90UmVnaW9uVmlzaWJs
ZSk7CkBAIC0zMDg0LDE5ICszMDA2LDEzIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9zbmFw
c2hvdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTbmFwc2hvdFJlZ2lvbiByCiB7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAg
R1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0R1JlZihnX3NpbXBsZV9h
c3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCi0g
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3QpKSk7Ci0gICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEgPSBjcmVhdGVHZXRTbmFw
c2hvdEFzeW5jRGF0YSgpOwotICAgIGRhdGEtPmNhbmNlbGxhYmxlID0gY2FuY2VsbGFibGU7Ci0g
ICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgp
LCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0U25hcHNo
b3RBc3luY0RhdGEpKTsKLQogICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2Fn
ZTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVTbmFwc2hvdENhbGxiYWNrSUQo
KTsKICAgICBtZXNzYWdlLnNldChTdHJpbmc6OmZyb21VVEY4KCJTbmFwc2hvdE9wdGlvbnMiKSwg
V2ViVUludDY0OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdlYktpdFNuYXBzaG90T3B0
aW9uc1RvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKSkpOwogICAgIG1lc3NhZ2Uuc2V0KFN0cmlu
Zzo6ZnJvbVVURjgoIlNuYXBzaG90UmVnaW9uIiksIFdlYlVJbnQ2NDo6Y3JlYXRlKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyZWdpb24pKSk7CiAgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRG
OCgiQ2FsbGJhY2tJRCIpLCBXZWJVSW50NjQ6OmNyZWF0ZShjYWxsYmFja0lEKSk7CiAKLSAgICB3
ZWJWaWV3LT5wcml2LT5zbmFwc2hvdFJlc3VsdHNNYXAuc2V0KGNhbGxiYWNrSUQsIHJlc3VsdC5n
ZXQoKSk7CisgICAgd2ViVmlldy0+cHJpdi0+c25hcHNob3RSZXN1bHRzTWFwLnNldChjYWxsYmFj
a0lELCBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ss
IHVzZXJEYXRhKSkpOwogICAgIGdldFBhZ2Uod2ViVmlldyktPnBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShTdHJpbmc6OmZyb21VVEY4KCJHZXRTbmFwc2hvdCIpLCBJbW11dGFibGVEaWN0aW9u
YXJ5OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7CiB9CiAKQEAgLTMxMTMsMTUgKzMwMjksOSBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0U25hcHNob3RSZWdpb24gcgogY2Fpcm9fc3VyZmFjZV90KiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NuYXBzaG90X2ZpbmlzaChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChH
X0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCAwKTsKLQotICAgIEdTaW1wbGVBc3luY1Jlc3VsdCog
c2ltcGxlID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7Ci0gICAgZ193YXJuX2lmX2Zh
aWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZSkgPT0gd2Via2l0
X3dlYl92aWV3X2dldF9zbmFwc2hvdCk7Ci0KLSAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0
X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoZ190YXNrX2lzX3ZhbGlkKHJlc3VsdCwgd2ViVmlldyksIDAp
OwogCi0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN0YXRpY19jYXN0PEdldFNu
YXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50
ZXIoc2ltcGxlKSktPnNuYXBzaG90LmdldCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2Fp
cm9fc3VyZmFjZV90Kj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKEdfVEFTSyhyZXN1bHQpLCBl
cnJvcikpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203664</attachid>
            <date>2013-06-04 01:47:52 -0700</date>
            <delta_ts>2013-06-18 10:01:38 -0700</delta_ts>
            <desc>Updated patch according to review comments</desc>
            <filename>wk2-gtask-webview2.diff</filename>
            <type>text/plain</type>
            <size>25697</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmOWRmZjUwLi4zOGQ4YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzIg
QEAKIDIwMTMtMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE1pZ3JhdGUgV2ViS2l0V2ViVmlldyB0byBHVGFzaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MTU0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGRpZFZhbGlkYXRlQ29tbWFuZCk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfZmluaXNo
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2spOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19ydW5famF2YXNjcmlwdF9maW5pc2gpOgorICAgICAgICAocmVzb3VyY2VzU3RyZWFtUmVh
ZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9mcm9t
X2dyZXNvdXJjZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZnJv
bV9ncmVzb3VyY2VfZmluaXNoKToKKyAgICAgICAgKGZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFj
ayk6CisgICAgICAgIChnZXRDb250ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2spOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NhdmUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NhdmVfZmlu
aXNoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2gpOgorICAgICAgICAod2ViS2l0V2Vi
Vmlld0RpZFJlY2VpdmVTbmFwc2hvdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKToK
KworMjAxMy0wNi0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CisKICAgICAgICAgW0dUS10gTWlncmF0ZSBXZWJLaXRXZWJDb250ZXh0IHRvIEdUYXNrCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTcxNTMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCA3NTBjZTMwLi5jNWUwNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIGVudW0gewog
fTsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNl
PiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7Ci10eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQ
dHI8R1NpbXBsZUFzeW5jUmVzdWx0PiA+IFNuYXBzaG90UmVzdWx0c01hcDsKK3R5cGVkZWYgSGFz
aE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHVGFzaz4gPiBTbmFwc2hvdFJlc3VsdHNNYXA7CiAKIHN0
cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIH5fV2ViS2l0V2ViVmlld1ByaXZhdGUo
KQpAQCAtMjM2MCwyMiArMjM2MCwxMCBAQCBnZG91YmxlIHdlYmtpdF93ZWJfdmlld19nZXRfem9v
bV9sZXZlbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHJldHVybiB6b29tVGV4dE9ubHkg
PyBwYWdlLT50ZXh0Wm9vbUZhY3RvcigpIDogcGFnZS0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAot
c3RydWN0IFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEgewotICAgIGJvb2wgaXNFbmFi
bGVkOwotICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKLX07Ci1XRUJLSVRf
REVGSU5FX0FTWU5DX0RBVEFfU1RSVUNUKFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEp
Ci0KIHN0YXRpYyB2b2lkIGRpZFZhbGlkYXRlQ29tbWFuZChXS1N0cmluZ1JlZiBjb21tYW5kLCBi
b29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwgV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkK
IHsKLSAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKEdf
U0lNUExFX0FTWU5DX1JFU1VMVChjb250ZXh0KSk7Ci0gICAgVmFsaWRhdGVFZGl0aW5nQ29tbWFu
ZEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3lu
Y0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQu
Z2V0KCkpKTsKLSAgICBHRXJyb3IqIGVycm9yID0gMDsKLSAgICBpZiAoZ19jYW5jZWxsYWJsZV9z
ZXRfZXJyb3JfaWZfY2FuY2VsbGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQot
ICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVy
cm9yKTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGEtPmlzRW5hYmxlZCA9IGlzRW5hYmxlZDsKLSAg
ICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKKyAgICBHUmVm
UHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKEdfVEFTSyhjb250ZXh0KSk7CisgICAgZ190YXNr
X3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIGlzRW5hYmxlZCk7CiB9CiAKIC8qKgpAQCAtMjM5
NiwxMyArMjM4NCw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdf
Y29tbWFuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
Y29tbWFuZCk7CiAKLSAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2Fz
eW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2Vk
aXRpbmdfY29tbWFuZCkpOwotICAgIFZhbGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEqIGRh
dGEgPSBjcmVhdGVWYWxpZGF0ZUVkaXRpbmdDb21tYW5kQXN5bmNEYXRhKCk7Ci0gICAgZGF0YS0+
Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJsZTsKLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0
X29wX3Jlc19ncG9pbnRlcihyZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lO
b3RpZnk+KGRlc3Ryb3lWYWxpZGF0ZUVkaXRpbmdDb21tYW5kQXN5bmNEYXRhKSk7Ci0KLSAgICBn
ZXRQYWdlKHdlYlZpZXcpLT52YWxpZGF0ZUNvbW1hbmQoU3RyaW5nOjpmcm9tVVRGOChjb21tYW5k
KSwgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIGRpZFZhbGlkYXRlQ29t
bWFuZCkpOworICAgIEdUYXNrKiB0YXNrID0gZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJs
ZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT52YWxpZGF0ZUNv
bW1hbmQoU3RyaW5nOjpmcm9tVVRGOChjb21tYW5kKSwgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s6
OmNyZWF0ZSh0YXNrLCBkaWRWYWxpZGF0ZUNvbW1hbmQpKTsKIH0KIAogLyoqCkBAIC0yNDE4LDE2
ICsyNDAxLDkgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGMKIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCBGQUxTRSk7
Ci0KLSAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VM
VChyZXN1bHQpOwotICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRf
c291cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5n
X2NvbW1hbmQpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1
bHQsIHdlYlZpZXcpLCBGQUxTRSk7CiAKLSAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3By
b3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0g
ICAgVmFsaWRhdGVFZGl0aW5nQ29tbWFuZEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFZh
bGlkYXRlRWRpdGluZ0NvbW1hbmRBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0
X29wX3Jlc19ncG9pbnRlcihzaW1wbGUpKTsKLSAgICByZXR1cm4gZGF0YS0+aXNFbmFibGVkOwor
ICAgIHJldHVybiBnX3Rhc2tfcHJvcGFnYXRlX2Jvb2xlYW4oR19UQVNLKHJlc3VsdCksIGVycm9y
KTsKIH0KIAogLyoqCkBAIC0yNDg2LDMzICsyNDYyLDIxIEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQoV2ViS2l0V2ViVmll
dyoKICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+amF2YXNjcmlwdEdsb2JhbENvbnRleHQ7CiB9
CiAKLXN0cnVjdCBSdW5KYXZhU2NyaXB0QXN5bmNEYXRhIHsKLSAgICB+UnVuSmF2YVNjcmlwdEFz
eW5jRGF0YSgpCi0gICAgewotICAgICAgICBpZiAoc2NyaXB0UmVzdWx0KQotICAgICAgICAgICAg
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKHNjcmlwdFJlc3VsdCk7Ci0gICAgfQotCi0g
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogc2NyaXB0UmVzdWx0OwotICAgIEdSZWZQdHI8R0Nh
bmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKLX07Ci1XRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RS
VUNUKFJ1bkphdmFTY3JpcHRBc3luY0RhdGEpCi0KIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdS
dW5KYXZhU2NyaXB0Q2FsbGJhY2soV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgd2tTZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgR1JlZlB0
cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0R1JlZihHX1NJTVBMRV9BU1lOQ19S
RVNVTFQoY29udGV4dCkpOwotICAgIFJ1bkphdmFTY3JpcHRBc3luY0RhdGEqIGRhdGEgPSBzdGF0
aWNfY2FzdDxSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dl
dF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7Ci0gICAgR0Vycm9yKiBlcnJvciA9IDA7
Ci0gICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9yX2lmX2NhbmNlbGxlZChkYXRhLT5jYW5j
ZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKLSAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rh
a2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7Ci0gICAgZWxzZSBpZiAod2tTZXJpYWxpemVk
U2NyaXB0VmFsdWUpIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHRHUmVmKFdFQktJVF9XRUJfVklFVyhnX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX29iamVj
dChHX0FTWU5DX1JFU1VMVChyZXN1bHQuZ2V0KCkpKSkpOwotICAgICAgICBkYXRhLT5zY3JpcHRS
ZXN1bHQgPSB3ZWJraXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKHdlYlZpZXcuZ2V0KCksIHRvSW1w
bCh3a1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGdfc2V0
X2Vycm9yX2xpdGVyYWwoJmVycm9yLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pB
VkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCwgXygiQW4gZXhjZXB0aW9uIHdhcyByYWlzZWQg
aW4gSmF2YVNjcmlwdCIpKTsKLSAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJy
b3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0
R1JlZihHX1RBU0soY29udGV4dCkpOworICAgIGlmIChnX3Rhc2tfcmV0dXJuX2Vycm9yX2lmX2Nh
bmNlbGxlZCh0YXNrLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3a1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSkgeworICAgICAgICBnX3Rhc2tfcmV0dXJuX25ld19lcnJvcih0YXNr
LmdldCgpLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1Jf
U0NSSVBUX0ZBSUxFRCwKKyAgICAgICAgICAgIF8oIkFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGlu
IEphdmFTY3JpcHQiKSk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZ19zaW1wbGVfYXN5
bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7CisKKyAgICBXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291cmNlX29iamVjdCh0YXNrLmdl
dCgpKSk7CisgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIHdlYmtpdEphdmFz
Y3JpcHRSZXN1bHRDcmVhdGUod2ViVmlldywgdG9JbXBsKHdrU2VyaWFsaXplZFNjcmlwdFZhbHVl
KSksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF91bnJlZikpOwogfQogCiAvKioKQEAgLTI1MzQsMTQgKzI0OTgsOCBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHNjcmlwdCk7CiAKLSAgICBH
U2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19P
QkpFQ1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxn
cG9pbnRlcj4od2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KSk7Ci0gICAgUnVuSmF2YVNj
cmlwdEFzeW5jRGF0YSogZGF0YSA9IGNyZWF0ZVJ1bkphdmFTY3JpcHRBc3luY0RhdGEoKTsKLSAg
ICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOwotICAgIGdfc2ltcGxlX2FzeW5jX3Jl
c3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxH
RGVzdHJveU5vdGlmeT4oZGVzdHJveVJ1bkphdmFTY3JpcHRBc3luY0RhdGEpKTsKLQotICAgIGdl
dFBhZ2Uod2ViVmlldyktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6OmZyb21VVEY4
KHNjcmlwdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0Q2FsbGJhY2spKTsKKyAgICBHVGFzayogdGFzayA9IGdfdGFza19uZXcod2ViVmlldywg
Y2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgU2NyaXB0
VmFsdWVDYWxsYmFjazo6Y3JlYXRlKHRhc2ssIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2Fs
bGJhY2spKTsKIH0KIAogLyoqCkBAIC0yNjExLDM1ICsyNTY5LDI2IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFy
KiBzY3JpcHQsCiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdfSVNf
QVNZTkNfUkVTVUxUKHJlc3VsdCksIDApOwotCi0gICAgR1NpbXBsZUFzeW5jUmVzdWx0KiBzaW1w
bGVSZXN1bHQgPSBHX1NJTVBMRV9BU1lOQ19SRVNVTFQocmVzdWx0KTsKLSAgICBnX3dhcm5faWZf
ZmFpbChnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV90YWcoc2ltcGxlUmVzdWx0KSA9
PSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIHdlYlZpZXcpLCAwKTsKIAotICAgIGlmIChnX3Np
bXBsZV9hc3luY19yZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZVJlc3VsdCwgZXJyb3IpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIFJ1bkphdmFTY3JpcHRBc3luY0RhdGEqIGRhdGEgPSBz
dGF0aWNfY2FzdDxSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0
X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlUmVzdWx0KSk7Ci0gICAgcmV0dXJuIGRhdGEtPnNj
cmlwdFJlc3VsdCA/IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9yZWYoZGF0YS0+c2NyaXB0UmVz
dWx0KSA6IDA7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
PihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIoR19UQVNLKHJlc3VsdCksIGVycm9yKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIHJlc291cmNlc1N0cmVhbVJlYWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3Qs
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKIHsKLSAgICBHT3V0cHV0
U3RyZWFtKiBvdXRwdXRTdHJlYW0gPSBHX09VVFBVVF9TVFJFQU0ob2JqZWN0KTsKLSAgICBHUmVm
UHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcnVuSmF2YXNjcmlwdFJlc3VsdCA9IGFkb3B0R1JlZihH
X1NJTVBMRV9BU1lOQ19SRVNVTFQodXNlckRhdGEpKTsKKyAgICBHUmVmUHRyPEdUYXNrPiB0YXNr
ID0gYWRvcHRHUmVmKEdfVEFTSyh1c2VyRGF0YSkpOwogCiAgICAgR0Vycm9yKiBlcnJvciA9IDA7
Ci0gICAgZ19vdXRwdXRfc3RyZWFtX3NwbGljZV9maW5pc2gob3V0cHV0U3RyZWFtLCByZXN1bHQs
ICZlcnJvcik7CisgICAgZ19vdXRwdXRfc3RyZWFtX3NwbGljZV9maW5pc2goR19PVVRQVVRfU1RS
RUFNKG9iamVjdCksIHJlc3VsdCwgJmVycm9yKTsKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocnVuSmF2YXNjcmlwdFJlc3VsdC5nZXQo
KSwgZXJyb3IpOwotICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocnVuSmF2
YXNjcmlwdFJlc3VsdC5nZXQoKSk7CisgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IodGFzay5n
ZXQoKSwgZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR1JlZlB0cjxXZWJL
aXRXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJfVklFVyhnX2FzeW5jX3Jl
c3VsdF9nZXRfc291cmNlX29iamVjdChHX0FTWU5DX1JFU1VMVChydW5KYXZhc2NyaXB0UmVzdWx0
LmdldCgpKSkpKTsKLSAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0
cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG91dHB1dFN0cmVhbSkp
OwotICAgIGdldFBhZ2Uod2ViVmlldy5nZXQoKSktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShT
dHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJl
YW1EYXRhKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShydW5KYXZhc2NyaXB0UmVzdWx0Lmxl
YWtSZWYoKSwgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjaykpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2Jq
ZWN0KHRhc2suZ2V0KCkpKTsKKyAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1v
cnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkp
OworICAgIGdldFBhZ2Uod2ViVmlldyktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6
OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJlYW1EYXRh
KSksCisgICAgICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZSh0YXNrLmxlYWtSZWYoKSwg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjaykpOwogfQogCiAvKioKQEAgLTI2NjIs
MjUgKzI2MTEsMTggQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZnJvbV9n
cmVzb3VyY2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChy
ZXNvdXJjZSk7CiAKLSAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRv
cHRHUmVmKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2ViVmlldyksIGNhbGxi
YWNrLCB1c2VyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9p
bnRlcj4od2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2Zyb21fZ3Jlc291cmNlKSkpOwot
ICAgIFJ1bkphdmFTY3JpcHRBc3luY0RhdGEqIGRhdGEgPSBjcmVhdGVSdW5KYXZhU2NyaXB0QXN5
bmNEYXRhKCk7Ci0gICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJsZTsKLSAgICBnX3Np
bXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCksIGRhdGEs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lSdW5KYXZhU2NyaXB0QXN5
bmNEYXRhKSk7Ci0KICAgICBHRXJyb3IqIGVycm9yID0gMDsKICAgICBHUmVmUHRyPEdJbnB1dFN0
cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19yZXNvdXJjZXNfb3Blbl9zdHJlYW0ocmVz
b3VyY2UsIEdfUkVTT1VSQ0VfTE9PS1VQX0ZMQUdTX05PTkUsICZlcnJvcikpOwogICAgIGlmIChl
cnJvcikgewotICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQu
Z2V0KCksIGVycm9yKTsKLSAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlX2lu
X2lkbGUocmVzdWx0LmdldCgpKTsKKyAgICAgICAgZ190YXNrX3JlcG9ydF9lcnJvcih3ZWJWaWV3
LCBjYWxsYmFjaywgdXNlckRhdGEsIDAsIGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIEdUYXNrKiB0YXNrID0gZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2Fs
bGJhY2ssIHVzZXJEYXRhKTsKICAgICBHUmVmUHRyPEdPdXRwdXRTdHJlYW0+IG91dHB1dFN0cmVh
bSA9IGFkb3B0R1JlZihnX21lbW9yeV9vdXRwdXRfc3RyZWFtX25ldygwLCAwLCBmYXN0UmVhbGxv
YywgZmFzdEZyZWUpKTsKICAgICBnX291dHB1dF9zdHJlYW1fc3BsaWNlX2FzeW5jKG91dHB1dFN0
cmVhbS5nZXQoKSwgaW5wdXRTdHJlYW0uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHT3V0cHV0U3RyZWFtU3BsaWNlRmxhZ3M+KEdfT1VUUFVUX1NU
UkVBTV9TUExJQ0VfQ0xPU0VfU09VUkNFIHwgR19PVVRQVVRfU1RSRUFNX1NQTElDRV9DTE9TRV9U
QVJHRVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QUklPUklUWV9ERUZB
VUxULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGFibGUsIHJlc291
cmNlc1N0cmVhbVJlYWRDYWxsYmFjaywgcmVzdWx0LmxlYWtSZWYoKSk7CisgICAgICAgIHN0YXRp
Y19jYXN0PEdPdXRwdXRTdHJlYW1TcGxpY2VGbGFncz4oR19PVVRQVVRfU1RSRUFNX1NQTElDRV9D
TE9TRV9TT1VSQ0UgfCBHX09VVFBVVF9TVFJFQU1fU1BMSUNFX0NMT1NFX1RBUkdFVCksCisgICAg
ICAgIEdfUFJJT1JJVFlfREVGQVVMVCwgY2FuY2VsbGFibGUsIHJlc291cmNlc1N0cmVhbVJlYWRD
YWxsYmFjaywgdGFzayk7CiB9CiAKIC8qKgpAQCAtMjY5OSwxNiArMjY0MSw5IEBAIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2Zyb21fZ3Jlc291cmNlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiB3ZWJraXRfd2ViX3ZpZXdf
cnVuX2phdmFzY3JpcHRfZnJvbV9ncmVzb3VyY2VfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKEdfSVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIDApOwotCi0gICAgR1Np
bXBsZUFzeW5jUmVzdWx0KiBzaW1wbGVSZXN1bHQgPSBHX1NJTVBMRV9BU1lOQ19SRVNVTFQocmVz
dWx0KTsKLSAgICBnX3dhcm5faWZfZmFpbChnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X3NvdXJj
ZV90YWcoc2ltcGxlUmVzdWx0KSA9PSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZnJv
bV9ncmVzb3VyY2UpOwotCi0gICAgaWYgKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVf
ZXJyb3Ioc2ltcGxlUmVzdWx0LCBlcnJvcikpCi0gICAgICAgIHJldHVybiAwOworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKGdfdGFza19pc192YWxpZChyZXN1bHQsIHdlYlZpZXcpLCAwKTsKIAot
ICAgIFJ1bkphdmFTY3JpcHRBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxSdW5KYXZhU2Ny
aXB0QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIo
c2ltcGxlUmVzdWx0KSk7Ci0gICAgcmV0dXJuIGRhdGEtPnNjcmlwdFJlc3VsdCA/IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9yZWYoZGF0YS0+c2NyaXB0UmVzdWx0KSA6IDA7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYktpdEphdmFzY3JpcHRSZXN1bHQqPihnX3Rhc2tfcHJvcGFnYXRlX3Bv
aW50ZXIoR19UQVNLKHJlc3VsdCksIGVycm9yKSk7CiB9CiAKIC8qKgpAQCAtMjc2NSw0NiArMjcw
MCw0MiBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiBzdHJ1Y3QgVmlld1NhdmVBc3luY0RhdGEg
ewogICAgIFJlZlB0cjxXZWJEYXRhPiB3ZWJEYXRhOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGU7
Ci0gICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOwogfTsKIFdFQktJVF9ERUZJ
TkVfQVNZTkNfREFUQV9TVFJVQ1QoVmlld1NhdmVBc3luY0RhdGEpCiAKIHN0YXRpYyB2b2lkIGZp
bGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBncG9pbnRlciBkYXRhKQogewotICAgIEdGaWxlKiBmaWxlID0gR19GSUxFKG9iamVj
dCk7Ci0gICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHNhdmVkVG9GaWxlUmVzdWx0ID0g
YWRvcHRHUmVmKEdfU0lNUExFX0FTWU5DX1JFU1VMVChkYXRhKSk7Ci0KKyAgICBHUmVmUHRyPEdU
YXNrPiB0YXNrID0gYWRvcHRHUmVmKEdfVEFTSyhkYXRhKSk7CiAgICAgR0Vycm9yKiBlcnJvciA9
IDA7Ci0gICAgaWYgKCFnX2ZpbGVfcmVwbGFjZV9jb250ZW50c19maW5pc2goZmlsZSwgcmVzdWx0
LCAwLCAmZXJyb3IpKQotICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihz
YXZlZFRvRmlsZVJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIGlmICghZ19maWxlX3JlcGxhY2Vf
Y29udGVudHNfZmluaXNoKEdfRklMRShvYmplY3QpLCByZXN1bHQsIDAsICZlcnJvcikpIHsKKyAg
ICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNrLmdldCgpLCBlcnJvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUoc2F2ZWRU
b0ZpbGVSZXN1bHQuZ2V0KCkpOworICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgp
LCBUUlVFKTsKIH0KIAogc3RhdGljIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNr
KFdLRGF0YVJlZiB3a0RhdGEsIFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgR1Jl
ZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0R1JlZihHX1NJTVBMRV9BU1lO
Q19SRVNVTFQoY29udGV4dCkpOwotICAgIFZpZXdTYXZlQXN5bmNEYXRhKiBkYXRhID0gc3RhdGlj
X2Nhc3Q8Vmlld1NhdmVBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jl
c19ncG9pbnRlcihyZXN1bHQuZ2V0KCkpKTsKLSAgICBHRXJyb3IqIGVycm9yID0gMDsKKyAgICBH
UmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKEdfVEFTSyhjb250ZXh0KSk7CisgICAgaWYg
KGdfdGFza19yZXR1cm5fZXJyb3JfaWZfY2FuY2VsbGVkKHRhc2suZ2V0KCkpKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoZ19jYW5jZWxsYWJsZV9zZXRfZXJyb3JfaWZfY2FuY2VsbGVkKGRh
dGEtPmNhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQotICAgICAgICBnX3NpbXBsZV9hc3luY19y
ZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgLy8gV2UgbmVlZCB0byByZXRhaW4gdGhlIGRhdGEgdW50aWwgdGhlIGFzeW5jcm9ub3VzIHBy
b2Nlc3MKLSAgICAgICAgLy8gaW5pdGlhdGVkIGJ5IHRoZSB1c2VyIGhhcyBmaW5pc2hlZCBjb21w
bGV0ZWx5LgotICAgICAgICBkYXRhLT53ZWJEYXRhID0gdG9JbXBsKHdrRGF0YSk7Ci0KLSAgICAg
ICAgLy8gSWYgd2UgYXJlIHNhdmluZyB0byBhIGZpbGUgd2UgbmVlZCB0byB3cml0ZSB0aGUgZGF0
YSBvbiBkaXNrIGJlZm9yZSBmaW5pc2hpbmcuCi0gICAgICAgIGlmIChnX3NpbXBsZV9hc3luY19y
ZXN1bHRfZ2V0X3NvdXJjZV90YWcocmVzdWx0LmdldCgpKSA9PSB3ZWJraXRfd2ViX3ZpZXdfc2F2
ZV90b19maWxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQoR19JU19GSUxFKGRhdGEtPmZpbGUuZ2V0
KCkpKTsKLSAgICAgICAgICAgIGdfZmlsZV9yZXBsYWNlX2NvbnRlbnRzX2FzeW5jKGRhdGEtPmZp
bGUuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihkYXRhLT53ZWJEYXRhLT5i
eXRlcygpKSwgZGF0YS0+d2ViRGF0YS0+c2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgRkFMU0UsIEdfRklMRV9DUkVBVEVfUkVQTEFDRV9ERVNUSU5B
VElPTiwgZGF0YS0+Y2FuY2VsbGFibGUuZ2V0KCksIGZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFj
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfb2JqZWN0X3Jl
ZihyZXN1bHQuZ2V0KCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIFZp
ZXdTYXZlQXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8Vmlld1NhdmVBc3luY0RhdGEqPihn
X3Rhc2tfZ2V0X3Rhc2tfZGF0YSh0YXNrLmdldCgpKSk7CisgICAgLy8gV2UgbmVlZCB0byByZXRh
aW4gdGhlIGRhdGEgdW50aWwgdGhlIGFzeW5jcm9ub3VzIHByb2Nlc3MKKyAgICAvLyBpbml0aWF0
ZWQgYnkgdGhlIHVzZXIgaGFzIGZpbmlzaGVkIGNvbXBsZXRlbHkuCisgICAgZGF0YS0+d2ViRGF0
YSA9IHRvSW1wbCh3a0RhdGEpOworCisgICAgLy8gSWYgd2UgYXJlIHNhdmluZyB0byBhIGZpbGUg
d2UgbmVlZCB0byB3cml0ZSB0aGUgZGF0YSBvbiBkaXNrIGJlZm9yZSBmaW5pc2hpbmcuCisgICAg
aWYgKGdfdGFza19nZXRfc291cmNlX3RhZyh0YXNrLmdldCgpKSA9PSB3ZWJraXRfd2ViX3ZpZXdf
c2F2ZV90b19maWxlKSB7CisgICAgICAgIEFTU0VSVChHX0lTX0ZJTEUoZGF0YS0+ZmlsZS5nZXQo
KSkpOworICAgICAgICBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlID0gZ190YXNrX2dldF9jYW5j
ZWxsYWJsZSh0YXNrLmdldCgpKTsKKyAgICAgICAgZ19maWxlX3JlcGxhY2VfY29udGVudHNfYXN5
bmMoZGF0YS0+ZmlsZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KGRhdGEt
PndlYkRhdGEtPmJ5dGVzKCkpLCBkYXRhLT53ZWJEYXRhLT5zaXplKCksCisgICAgICAgICAgICAw
LCBGQUxTRSwgR19GSUxFX0NSRUFURV9SRVBMQUNFX0RFU1RJTkFUSU9OLCBjYW5jZWxsYWJsZSwg
ZmlsZVJlcGxhY2VDb250ZW50c0NhbGxiYWNrLCB0YXNrLmxlYWtSZWYoKSk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0
LmdldCgpKTsKKyAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CiB9
CiAKIC8qKgpAQCAtMjgzMCwxMyArMjc2MSwxMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zYXZl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNhdmVNb2RlIHNhdmVNb2RlLCBHQ2FuYwog
ICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBNSFRNTCBhdCB0aGUgbW9tZW50LgogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoc2F2ZU1vZGUgPT0gV0VCS0lUX1NBVkVfTU9ERV9NSFRNTCk7CiAKLSAgICBHU2lt
cGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpF
Q1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9p
bnRlcj4od2Via2l0X3dlYl92aWV3X3NhdmUpKTsKLSAgICBWaWV3U2F2ZUFzeW5jRGF0YSogZGF0
YSA9IGNyZWF0ZVZpZXdTYXZlQXN5bmNEYXRhKCk7Ci0gICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBj
YW5jZWxsYWJsZTsKLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRl
cihyZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lW
aWV3U2F2ZUFzeW5jRGF0YSkpOwotCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS0+Z2V0Q29udGVudHNB
c01IVE1MRGF0YShEYXRhQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIGdldENvbnRlbnRzQXNNSFRN
TERhdGFDYWxsYmFjayksIGZhbHNlKTsKKyAgICBHVGFzayogdGFzayA9IGdfdGFza19uZXcod2Vi
VmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7CisgICAgZ190YXNrX3NldF9z
b3VyY2VfdGFnKHRhc2ssIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmll
d19zYXZlKSk7CisgICAgZ190YXNrX3NldF90YXNrX2RhdGEodGFzaywgY3JlYXRlVmlld1NhdmVB
c3luY0RhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveVZpZXdT
YXZlQXN5bmNEYXRhKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+Z2V0Q29udGVudHNBc01IVE1M
RGF0YShEYXRhQ2FsbGJhY2s6OmNyZWF0ZSh0YXNrLCBnZXRDb250ZW50c0FzTUhUTUxEYXRhQ2Fs
bGJhY2spLCBmYWxzZSk7CiB9CiAKIC8qKgpAQCAtMjg1MywxNiArMjc4MSwxNCBAQCB2b2lkIHdl
YmtpdF93ZWJfdmlld19zYXZlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNhdmVNb2Rl
IHNhdmVNb2RlLCBHQ2FuYwogR0lucHV0U3RyZWFtKiB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9maW5p
c2goV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioq
IGVycm9yKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3
ZWJWaWV3KSwgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoR19JU19BU1lOQ19SRVNVTFQo
cmVzdWx0KSwgMCk7Ci0KLSAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExF
X0FTWU5DX1JFU1VMVChyZXN1bHQpOwotICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5j
X3Jlc3VsdF9nZXRfc291cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19zYXZlKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQocmVzdWx0LCB3ZWJWaWV3
KSwgMCk7CiAKLSAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihz
aW1wbGUsIGVycm9yKSkKKyAgICBHVGFzayogdGFzayA9IEdfVEFTSyhyZXN1bHQpOworICAgIGlm
ICghZ190YXNrX3Byb3BhZ2F0ZV9ib29sZWFuKHRhc2ssIGVycm9yKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBHSW5wdXRTdHJlYW0qIGRhdGFTdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJl
YW1fbmV3KCk7Ci0gICAgVmlld1NhdmVBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxWaWV3
U2F2ZUFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVy
KHNpbXBsZSkpOworICAgIFZpZXdTYXZlQXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8Vmll
d1NhdmVBc3luY0RhdGEqPihnX3Rhc2tfZ2V0X3Rhc2tfZGF0YSh0YXNrKSk7CiAgICAgZ3NpemUg
bGVuZ3RoID0gZGF0YS0+d2ViRGF0YS0+c2l6ZSgpOwogICAgIGlmIChsZW5ndGgpCiAgICAgICAg
IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9hZGRfZGF0YShHX01FTU9SWV9JTlBVVF9TVFJFQU0oZGF0
YVN0cmVhbSksIGdfbWVtZHVwKGRhdGEtPndlYkRhdGEtPmJ5dGVzKCksIGxlbmd0aCksIGxlbmd0
aCwgZ19mcmVlKTsKQEAgLTI4OTUsMTQgKzI4MjEsMTMgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
c2F2ZV90b19maWxlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdGaWxlKiBmaWxlLCBXZWJLaXRT
YXYKICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgTUhUTUwgYXQgdGhlIG1vbWVudC4KICAgICBnX3Jl
dHVybl9pZl9mYWlsKHNhdmVNb2RlID09IFdFQktJVF9TQVZFX01PREVfTUhUTUwpOwogCi0gICAg
R1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQgPSBnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdf
T0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUpKTsKKyAgICBHVGFzayogdGFz
ayA9IGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7
CisgICAgZ190YXNrX3NldF9zb3VyY2VfdGFnKHRhc2ssIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50
ZXI+KHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUpKTsKICAgICBWaWV3U2F2ZUFzeW5jRGF0
YSogZGF0YSA9IGNyZWF0ZVZpZXdTYXZlQXN5bmNEYXRhKCk7CiAgICAgZGF0YS0+ZmlsZSA9IGZp
bGU7Ci0gICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJsZTsKLSAgICBnX3NpbXBsZV9h
c3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0
X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lWaWV3U2F2ZUFzeW5jRGF0YSkpOworICAgIGdf
dGFza19zZXRfdGFza19kYXRhKHRhc2ssIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lO
b3RpZnk+KGRlc3Ryb3lWaWV3U2F2ZUFzeW5jRGF0YSkpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3
KS0+Z2V0Q29udGVudHNBc01IVE1MRGF0YShEYXRhQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIGdl
dENvbnRlbnRzQXNNSFRNTERhdGFDYWxsYmFjayksIGZhbHNlKTsKKyAgICBnZXRQYWdlKHdlYlZp
ZXcpLT5nZXRDb250ZW50c0FzTUhUTUxEYXRhKERhdGFDYWxsYmFjazo6Y3JlYXRlKHRhc2ssIGdl
dENvbnRlbnRzQXNNSFRNTERhdGFDYWxsYmFjayksIGZhbHNlKTsKIH0KIAogLyoqCkBAIC0yOTE4
LDE1ICsyODQzLDkgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIEdGaWxlKiBmaWxlLCBXZWJLaXRTYXYKIGdib29sZWFuIHdlYmtpdF93
ZWJfdmlld19zYXZlX3RvX2ZpbGVfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCBGQUxTRSk7Ci0KLSAgICBHU2lt
cGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1bHQpOwot
ICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX3RhZyhz
aW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUpOwotCi0gICAgaWYgKGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVfZXJyb3Ioc2ltcGxlLCBlcnJvcikpCi0gICAgICAg
IHJldHVybiBGQUxTRTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChnX3Rhc2tfaXNfdmFsaWQo
cmVzdWx0LCB3ZWJWaWV3KSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIFRSVUU7CisgICAgcmV0dXJu
IGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0socmVzdWx0KSwgZXJyb3IpOwogfQogCiAv
KioKQEAgLTMwMjEsMjggKzI5NDAsMjIgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF90
bHNfaW5mbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHVGxzQ2VydGlmaWNhdGUqKgogICAgIHJl
dHVybiAhIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpOwogfQogCi1zdHJ1Y3QgR2V0U25h
cHNob3RBc3luY0RhdGEgewotICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsK
LSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzbmFwc2hvdDsKLX07Ci1XRUJLSVRfREVGSU5F
X0FTWU5DX0RBVEFfU1RSVUNUKEdldFNuYXBzaG90QXN5bmNEYXRhKQotCiB2b2lkIHdlYktpdFdl
YlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgdWludDY0X3Qg
Y2FsbGJhY2tJRCwgV2ViSW1hZ2UqIHdlYkltYWdlKQogewotICAgIEdSZWZQdHI8R1NpbXBsZUFz
eW5jUmVzdWx0PiByZXN1bHQgPSB3ZWJWaWV3LT5wcml2LT5zbmFwc2hvdFJlc3VsdHNNYXAudGFr
ZShjYWxsYmFja0lEKTsKLSAgICBHZXRTbmFwc2hvdEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19j
YXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9y
ZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7Ci0gICAgR0Vycm9yKiBlcnJvciA9IDA7Ci0gICAg
aWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9yX2lmX2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJs
ZS5nZXQoKSwgJmVycm9yKSkKLSAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJy
b3IocmVzdWx0LmdldCgpLCBlcnJvcik7Ci0gICAgZWxzZSBpZiAod2ViSW1hZ2UpIHsKLSAgICAg
ICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlID0gd2ViSW1hZ2UtPmJpdG1hcCgp
KQotICAgICAgICAgICAgZGF0YS0+c25hcHNob3QgPSBpbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNl
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCgmZXJyb3IsIFdF
QktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19DUkVB
VEUsIF8oIlRoZXJlIHdhcyBhbiBlcnJvciBjcmVhdGluZyB0aGUgc25hcHNob3QiKSk7Ci0gICAg
ICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3Ip
OworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSB3ZWJWaWV3LT5wcml2LT5zbmFwc2hvdFJlc3Vs
dHNNYXAudGFrZShjYWxsYmFja0lEKTsKKyAgICBpZiAoZ190YXNrX3JldHVybl9lcnJvcl9pZl9j
YW5jZWxsZWQodGFzay5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghd2ViSW1h
Z2UpIHsKKyAgICAgICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgV0VCS0lU
X1NOQVBTSE9UX0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSwK
KyAgICAgICAgICAgIF8oIlRoZXJlIHdhcyBhbiBlcnJvciBjcmVhdGluZyB0aGUgc25hcHNob3Qi
KSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRf
Y29tcGxldGUocmVzdWx0LmdldCgpKTsKKyAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
aW1hZ2UgPSB3ZWJJbWFnZS0+Yml0bWFwKCkpCisgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRl
cih0YXNrLmdldCgpLCBpbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigpLCByZWlu
dGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihjYWlyb19zdXJmYWNlX2Rlc3Ryb3kpKTsKKyAg
ICBlbHNlCisgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCAwLCAwKTsK
IH0KIAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfU05BUFNIT1RfUkVHSU9O
X1ZJU0lCTEUsIFNuYXBzaG90UmVnaW9uVmlzaWJsZSk7CkBAIC0zMDg0LDE5ICsyOTk3LDEzIEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRTbmFwc2hvdFJlZ2lvbiByCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+
IHJlc3VsdCA9IGFkb3B0R1JlZihnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdl
YlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Bv
aW50ZXI+KHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QpKSk7Ci0gICAgR2V0U25hcHNob3RB
c3luY0RhdGEqIGRhdGEgPSBjcmVhdGVHZXRTbmFwc2hvdEFzeW5jRGF0YSgpOwotICAgIGRhdGEt
PmNhbmNlbGxhYmxlID0gY2FuY2VsbGFibGU7Ci0gICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Nl
dF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpLCBkYXRhLCByZWludGVycHJldF9jYXN0PEdE
ZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0U25hcHNob3RBc3luY0RhdGEpKTsKLQogICAgIEltbXV0
YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2FnZTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gZ2VuZXJhdGVTbmFwc2hvdENhbGxiYWNrSUQoKTsKICAgICBtZXNzYWdlLnNldChTdHJpbmc6
OmZyb21VVEY4KCJTbmFwc2hvdE9wdGlvbnMiKSwgV2ViVUludDY0OjpjcmVhdGUoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNob3RPcHRpb25zKG9wdGlv
bnMpKSkpOwogICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIlNuYXBzaG90UmVnaW9u
IiksIFdlYlVJbnQ2NDo6Y3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWdpb24pKSk7CiAg
ICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiQ2FsbGJhY2tJRCIpLCBXZWJVSW50NjQ6
OmNyZWF0ZShjYWxsYmFja0lEKSk7CiAKLSAgICB3ZWJWaWV3LT5wcml2LT5zbmFwc2hvdFJlc3Vs
dHNNYXAuc2V0KGNhbGxiYWNrSUQsIHJlc3VsdC5nZXQoKSk7CisgICAgd2ViVmlldy0+cHJpdi0+
c25hcHNob3RSZXN1bHRzTWFwLnNldChjYWxsYmFja0lELCBhZG9wdEdSZWYoZ190YXNrX25ldyh3
ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSkpOwogICAgIGdldFBhZ2Uo
d2ViVmlldyktPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShTdHJpbmc6OmZyb21VVEY4KCJH
ZXRTbmFwc2hvdCIpLCBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7
CiB9CiAKQEAgLTMxMTMsMTUgKzMwMjAsOSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U25hcHNob3RSZWdpb24gcgogY2Fp
cm9fc3VyZmFjZV90KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAw
KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCAw
KTsKLQotICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogc2ltcGxlID0gR19TSU1QTEVfQVNZTkNfUkVT
VUxUKHJlc3VsdCk7Ci0gICAgZ193YXJuX2lmX2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dl
dF9zb3VyY2VfdGFnKHNpbXBsZSkgPT0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCk7Ci0K
LSAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVy
cm9yKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoZ190YXNr
X2lzX3ZhbGlkKHJlc3VsdCwgd2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGNhaXJvX3N1cmZh
Y2VfcmVmZXJlbmNlKHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVf
YXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlKSktPnNuYXBzaG90LmdldCgp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2Fpcm9fc3VyZmFjZV90Kj4oZ190YXNrX3Byb3Bh
Z2F0ZV9wb2ludGVyKEdfVEFTSyhyZXN1bHQpLCBlcnJvcikpOwogfQogCiB2b2lkIHdlYmtpdFdl
YlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQo=
</data>
<flag name="review"
          id="225131"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>