<?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>86823</bug_id>
          
          <creation_ts>2012-05-18 01:31:21 -0700</creation_ts>
          <short_desc>[GTK] Allow to attach/detach the inspector in WebKit2</short_desc>
          <delta_ts>2012-05-18 08:20:42 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>627464</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-18 01:31:21 -0700</bug_when>
    <thetext>Currently attach/detach is not implemented, we always create a new window for the inspector, and the attach button does nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627482</commentid>
    <comment_count>1</comment_count>
      <attachid>142667</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-18 01:57:42 -0700</bug_when>
    <thetext>Created attachment 142667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627488</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-18 02:01:50 -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>627601</commentid>
    <comment_count>3</comment_count>
      <attachid>142667</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-05-18 05:49:08 -0700</bug_when>
    <thetext>Comment on attachment 142667
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:438
&gt; -    return FALSE;
&gt; +    return TRUE;

These look like a somewhat unrelated fix. In the interest of better bisectability, can you land these three in a separate commit? rs=me on doing that

&gt; Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:156
&gt; +    // This method is called to decide whether to attach the inspector or not depending on whether
&gt; +    // the inspector view fits into the window. Attach is implemented by the client, so return 0
&gt; +    // when the client doesn&apos;t implement attach, to make sure the inspector is never attached.

I don&apos;t understand this comment, who would return 0 here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627616</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-18 06:01:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 142667 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142667&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:438
&gt; &gt; -    return FALSE;
&gt; &gt; +    return TRUE;
&gt; 
&gt; These look like a somewhat unrelated fix. In the interest of better bisectability, can you land these three in a separate commit? rs=me on doing that

It&apos;s actually related, before this patch, it doesn&apos;t really matter whether we return TRUE or FALSE, because the even has been handled by the view. Now, if you click on the inspector view, and the inspector propagates the event, it gets to the inspected web view. This is specially noticeable when scrolling in the inspector and the inspected view is scrolled too at the same time. In any case, I can split this if you want.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:156
&gt; &gt; +    // This method is called to decide whether to attach the inspector or not depending on whether
&gt; &gt; +    // the inspector view fits into the window. Attach is implemented by the client, so return 0
&gt; &gt; +    // when the client doesn&apos;t implement attach, to make sure the inspector is never attached.
&gt; 
&gt; I don&apos;t understand this comment, who would return 0 here?

oops, that comment doesn&apos;t make any sense, I forgot to remove it, it&apos;s part of another patch that I discarded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627707</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-18 08:20:42 -0700</bug_when>
    <thetext>Committed r117595: &lt;http://trac.webkit.org/changeset/117595&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142667</attachid>
            <date>2012-05-18 01:57:42 -0700</date>
            <delta_ts>2012-05-18 05:49:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-inspector.diff</filename>
            <type>text/plain</type>
            <size>26130</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5YjNiMzc5Li40YzUxZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTItMDUtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFsbG93IHRvIGF0dGFjaC9kZXRhY2ggdGhlIGluc3BlY3RvciBp
biBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NjgyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsc28gcmVuYW1lIFdlYkluc3BlY3Rvckd0ay5jcHAgYXMgV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwIHNpbmNlCisgICAgICAgIGl0IGltcGxlbWVudHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG1l
dGhvZHMgb2YgV2ViSW5zcGVjdG9yUHJveHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
Q29udGFpbmVyQWRkKTogQWxsb3cgdG8gYWRkIGEgV2ViVmlldyBjb250YWluaW5nCisgICAgICAg
IHRoZSBpbnNwZWN0b3IgYXMgYW4gaW50ZXJuYWwgY2hpbGQuCisgICAgICAgICh3ZWJraXRXZWJW
aWV3QmFzZUNvbnRhaW5lclJlbW92ZSk6IENoZWNrIHdoZXRoZXIgdGhlIHdpZGdldAorICAgICAg
ICByZW1vdmVkIGlzIHRoZSBpbnNwZWN0b3Igd2ViIHZpZXcuCisgICAgICAgICh3ZWJraXRXZWJW
aWV3QmFzZUNvbnRhaW5lckZvcmFsbCk6IFdoZW4gaW5jbHVkZUludGVybmFscyBpcyBUcnVlLAor
ICAgICAgICBhZGQgYWxzbyB0aGUgaW5zcGVjdG9yIHdlYiB2aWV3IGlmIGl0J3MgcHJlc2VudC4K
KyAgICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBBbGxvY2F0
ZSBzcGFjZSBmb3IgdGhlCisgICAgICAgIGluc3BlY3RvciB3ZWIgdmlldyBpZiBpdCdzIHByZXNl
bnQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQpOiBSZXR1cm4g
VFJVRSBpZiB0aGUgZXZlbnQgaGFzCisgICAgICAgIGJlZW4gaGFuZGxlZCB0byBhdm9pZCBpdHMg
cHJvcGFnYXRpb24uCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VFdmVu
dCk6IERpdHRvLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTY3JvbGxFdmVudCk6IERpdHRv
LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudCk6IERpdHRvLgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3SGVpZ2h0KTogUHJpdmF0
ZSBmdW5jdGlvbiB1c2VkCisgICAgICAgIGJ5IHRoZSBpbnNwZWN0b3IgcHJveHkgdG8gc2V0IHRo
ZSBoZWlnaHQgb2YgdGhlIGluc3BlY3RvciB3ZWIKKyAgICAgICAgdmlldy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvclByb3h5
KTogUmVtb3ZlIHVubmVlZGVkIG1ldGhvZCB3aW5kb3dEZXN0cm95ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAuCisgICAgICAgIChXZWJL
aXQ6Omluc3BlY3RvckZpbGVzQmFzZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjppbnNwZWN0b3JX
aW5kb3dDbG9zZWQpOiBSZW5hbWVkIGFzIGluc3BlY3RvcldpbmRvd0Nsb3NlZAorICAgICAgICBp
bnN0ZWFkIG9mIGluc3BlY3RvcldpbmRvd0Rlc3Ryb3llZCwgc2luY2UgdGhpcyBpcyBjYWxsZWQg
d2hlbiB0aGUKKyAgICAgICAgd2luZG93IG1hbmFnZXIgcmVxdWVzdHMgdG8gY2xvc2UgdGhlIHdp
bmRvdywgYW5kIG5vdCB3aGVuIHRoZQorICAgICAgICB3aWRnZXQgaXMgZGVzdHJveWVkLiBBbHNv
IHJlbW92ZSB0aGUgY2FsbCB0byB3aW5kb3dEZXN0cm95ZWQgdGhhdAorICAgICAgICBoYXMgYmVl
biByZW1vdmVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1D
cmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZUluc3BlY3RvcldpbmRvdyk6IEhlbHBlcgorICAgICAgICBmdW5jdGlvbiB0byBjcmVh
dGUgdGhlIGluc3BlY3RvciB3aW5kb3cgYW5kIGFkZCB0aGUgaW5zcGVjdG9yCisgICAgICAgIHZp
ZXcuIEFsc28gc2V0IHRoZSBpbnNwZWN0b3Igd2luZG93IGFzIHRyYW5zaWVudCBmb3IgdGhlCisg
ICAgICAgIGluc3BlY3RlZCB2aWV3IHRvcGxldmVsIHdpbmRvdy4gQW5kIHVzZSBhIHdlYWsgcG9p
bnRlciB0byBtYWtlCisgICAgICAgIHN1cmUgaW5zcGVjdG9yIHdpbmRvdyBwb2ludGVyIGlzIE5V
TEwgd2hlbiBpdCdzIGRlc3Ryb3llZCwgbm90CisgICAgICAgIG9ubHkgd2hlbiB0aGUgd2luZG93
IGlzIGNsb3NlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
T3Blbik6IENhbGwgcGxhdGZvcm1BdHRhY2ggaWYKKyAgICAgICAgdGhlIGluc3BlY3RvciBpcyBv
cGVuZWQgYXR0YWNoZWQsIG9yIGNyZWF0ZUluc3BlY3RvcldpbmRvdworICAgICAgICBvdGhlcndp
c2UuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURpZENsb3Nl
KTogQWx3YXlzIHNldCB0aGUgdmlldworICAgICAgICBpbnNwZWN0b3IgcG9pbnRlciB0byBOVUxM
LgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJv
bnQpOiBJbXBsZW1lbnQgaXQgYnkKKyAgICAgICAgc2hvd2luZyB0aGUgdG9wbGV2ZWwgd2luZG93
IHdoZXJlIHRoZSBpbnNwZWN0b3IgdmlldyBpcyBjb250YWluZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUlzRnJvbnQpOiBJbXBsZW1lbnQgaXQgYnkKKyAg
ICAgICAgY2hlY2tpbmcgd2hldGhlciB0aGUgdG9wbGV2ZWwgd2luZG93IHdoZXJlIHRoZSBpbnNw
ZWN0b3IgdmlldyBpcworICAgICAgICBjb250YWluZWQgaXMgYWN0aXZlIG9yIG5vdC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkVVJMQ2hhbmdl
ZCk6IFJldHVybgorICAgICAgICBlYXJseSBpZiB0aGVyZSdzIG5vIGluc3BlY3RvciB3aW5kb3cu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5k
b3dIZWlnaHQpOiBSZXR1cm4KKyAgICAgICAgdGhlIGhlaWdodCBvZiB0aGUgaW5wZWN0ZWQgdmll
dy4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKTog
UmVtb3ZlIHRoZSB2aWV3IGZyb20KKyAgICAgICAgdGhlIGN1cnJlbnQgd2luZG93IGlmIHRoZXJl
J3Mgb25lLCBhbmQgaW5zZXJ0IHRoZSBpbnNwZWN0b3IgdmlldworICAgICAgICBpbnRvIHRoZSBp
bnNwZWN0ZWQgdmlldy4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtRGV0YWNoKTogUmVtb3ZlIHRoZSBpbnNwZWN0b3IKKyAgICAgICAgdmlldyBmcm9tIHRoZSBp
bnNwZWN0ZWQgdmlldyBhbmQgY3JlYXRlIGEgbmV3IHdpbmRvdyBmb3IgaXQgaWYKKyAgICAgICAg
aXQncyB2aXNpYmxlLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6IENhbGwKKyAgICAgICAgd2Via2l0V2ViVmlld0Jh
c2VTZXRJbnNwZWN0b3JWaWV3SGVpZ2h0KCkuCisKIDIwMTItMDUtMTcgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIFdlYktpdDIg
R1RLL1F0IGJ1aWxkIGZpeCBhdHRlbXB0IGFmdGVyIHIxMTc1MTYuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA4ZDhjZjZjLi5iMGRiNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTY3NSw3ICs2NzUsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlHdGsu
Y3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAg
XAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCmluZGV4IGIyY2RkZTUuLjRmYWE3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0
b3J5LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5oIgorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdFdlYlZpZXdCYXNlQWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZS5oIgpAQCAtODcsMTAgKzg4LDE1IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlIHsKICAgICBib29sIGZ1bGxTY3JlZW5Nb2RlQWN0aXZlOwogICAgIFdlYkZ1bGxT
Y3JlZW5DbGllbnRHdGsgZnVsbFNjcmVlbkNsaWVudDsKICNlbmRpZgorICAgIEd0a1dpZGdldCog
aW5zcGVjdG9yVmlldzsKKyAgICB1bnNpZ25lZCBpbnNwZWN0b3JWaWV3SGVpZ2h0OwogfTsKIAog
R19ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdU
S19UWVBFX0NPTlRBSU5FUikKIAorLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgdmFsdWUg
bWluaW11bUF0dGFjaGVkSGVpZ2h0IGluIFdlYkluc3BlY3RvclByb3h5Lgorc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGdNaW5pbXVtQXR0YWNoZWRJbnNwZWN0b3JIZWlnaHQgPSAyNTA7CisKIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemVGb3JXaW5kb3coV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHdGtXaW5kb3cqIHdpbmRvdykKIHsKICAgICBnYm9v
bGVhbiByZXNpemVyVmlzaWJsZTsKQEAgLTE3MCw5ICsxNzYsMTYgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VDb250YWluZXJBZGQoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIEd0a1dp
ZGdldCogd2kKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklF
V19CQVNFKGNvbnRhaW5lcik7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKIAotICAgIEd0a0FsbG9jYXRpb24gY2hpbGRBbGxvY2F0aW9uOwotICAg
IGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24od2lkZ2V0LCAmY2hpbGRBbGxvY2F0aW9uKTsKLSAg
ICBwcml2LT5jaGlsZHJlbi5zZXQod2lkZ2V0LCBjaGlsZEFsbG9jYXRpb24pOworICAgIGlmIChX
RUJLSVRfSVNfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpCisgICAgICAgICYmIFdlYkluc3BlY3RvclBy
b3h5Ojppc0luc3BlY3RvclBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdi0+
cGFnZVByb3h5LmdldCgpKSkgeworICAgICAgICBBU1NFUlQocHJpdi0+aW5zcGVjdG9yVmlldyk7
CisgICAgICAgIHByaXYtPmluc3BlY3RvclZpZXcgPSB3aWRnZXQ7CisgICAgICAgIHByaXYtPmlu
c3BlY3RvclZpZXdIZWlnaHQgPSBnTWluaW11bUF0dGFjaGVkSW5zcGVjdG9ySGVpZ2h0OworICAg
IH0gZWxzZSB7CisgICAgICAgIEd0a0FsbG9jYXRpb24gY2hpbGRBbGxvY2F0aW9uOworICAgICAg
ICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKHdpZGdldCwgJmNoaWxkQWxsb2NhdGlvbik7Cisg
ICAgICAgIHByaXYtPmNoaWxkcmVuLnNldCh3aWRnZXQsIGNoaWxkQWxsb2NhdGlvbik7CisgICAg
fQogCiAgICAgZ3RrX3dpZGdldF9zZXRfcGFyZW50KHdpZGdldCwgR1RLX1dJREdFVChjb250YWlu
ZXIpKTsKIH0KQEAgLTE4MywxMSArMTk2LDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlQ29udGFpbmVyUmVtb3ZlKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqCiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKICAgICBH
dGtXaWRnZXQqIHdpZGdldENvbnRhaW5lciA9IEdUS19XSURHRVQoY29udGFpbmVyKTsKIAotICAg
IEFTU0VSVChwcml2LT5jaGlsZHJlbi5jb250YWlucyh3aWRnZXQpKTsKICAgICBnYm9vbGVhbiB3
YXNWaXNpYmxlID0gZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aWRnZXQpOwogICAgIGd0a193aWRn
ZXRfdW5wYXJlbnQod2lkZ2V0KTsKIAotICAgIHByaXYtPmNoaWxkcmVuLnJlbW92ZSh3aWRnZXQp
OworICAgIGlmIChwcml2LT5pbnNwZWN0b3JWaWV3ID09IHdpZGdldCkgeworICAgICAgICBwcml2
LT5pbnNwZWN0b3JWaWV3ID0gMDsKKyAgICAgICAgcHJpdi0+aW5zcGVjdG9yVmlld0hlaWdodCA9
IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHByaXYtPmNoaWxkcmVuLmNvbnRhaW5z
KHdpZGdldCkpOworICAgICAgICBwcml2LT5jaGlsZHJlbi5yZW1vdmUod2lkZ2V0KTsKKyAgICB9
CiAgICAgaWYgKHdhc1Zpc2libGUgJiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aWRnZXRDb250
YWluZXIpKQogICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX3Jlc2l6ZSh3aWRnZXRDb250YWluZXIp
OwogfQpAQCAtMjAxLDYgKzIxOSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29u
dGFpbmVyRm9yYWxsKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBnYm9vbGVhbiBpCiAgICAgV2Vi
S2l0V2ViVmlld0NoaWxkcmVuTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjaGlsZHJlbi5lbmQo
KTsKICAgICBmb3IgKFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcDo6Y29uc3RfaXRlcmF0b3IgY3Vy
cmVudCA9IGNoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCiAgICAg
ICAgICgqY2FsbGJhY2spKGN1cnJlbnQtPmZpcnN0LCBjYWxsYmFja0RhdGEpOworCisgICAgaWYg
KGluY2x1ZGVJbnRlcm5hbHMgJiYgcHJpdi0+aW5zcGVjdG9yVmlldykKKyAgICAgICAgKCpjYWxs
YmFjaykocHJpdi0+aW5zcGVjdG9yVmlldywgY2FsbGJhY2tEYXRhKTsKIH0KIAogdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldywg
R3RrV2lkZ2V0KiBjaGlsZCwgY29uc3QgSW50UmVjdCYgY2hpbGRSZWN0KQpAQCAtMjgyLDkgKzMw
MywxOSBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9u
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogewogICAgIGd0a19jb250YWluZXJfZm9y
ZWFjaChHVEtfQ09OVEFJTkVSKHdlYlZpZXdCYXNlKSwgd2Via2l0V2ViVmlld0Jhc2VDaGlsZEFs
bG9jYXRlLCB3ZWJWaWV3QmFzZSk7CiAKKyAgICBJbnRSZWN0IHZpZXdSZWN0KGFsbG9jYXRpb24t
PngsIGFsbG9jYXRpb24tPnksIGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0aW9uLT5oZWlnaHQp
OwogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2
OworICAgIGlmIChwcml2LT5pbnNwZWN0b3JWaWV3KSB7CisgICAgICAgIEd0a0FsbG9jYXRpb24g
Y2hpbGRBbGxvY2F0aW9uID0gdmlld1JlY3Q7CisgICAgICAgIGNoaWxkQWxsb2NhdGlvbi55ID0g
YWxsb2NhdGlvbi0+aGVpZ2h0IC0gcHJpdi0+aW5zcGVjdG9yVmlld0hlaWdodDsKKyAgICAgICAg
Y2hpbGRBbGxvY2F0aW9uLmhlaWdodCA9IHByaXYtPmluc3BlY3RvclZpZXdIZWlnaHQ7CisgICAg
ICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShwcml2LT5pbnNwZWN0b3JWaWV3LCAmY2hpbGRB
bGxvY2F0aW9uKTsKKworICAgICAgICB2aWV3UmVjdC5zZXRIZWlnaHQoYWxsb2NhdGlvbi0+aGVp
Z2h0IC0gcHJpdi0+aW5zcGVjdG9yVmlld0hlaWdodCk7CisgICAgfQorCiAgICAgaWYgKHByaXYt
PnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5kcmF3
aW5nQXJlYSgpLT5zZXRTaXplKEludFNpemUoYWxsb2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRpb24t
PmhlaWdodCksIEludFNpemUoKSk7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0Fy
ZWEoKS0+c2V0U2l6ZSh2aWV3UmVjdC5zaXplKCksIEludFNpemUoKSk7CiAKICAgICBHdGtXaWRn
ZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3
QmFzZSkpOwogICAgIGlmICh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwp
KQpAQCAtNDA0LDcgKzQzNSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1
dHRvblByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0CiAgICAgICAgIHJl
dHVybiBUUlVFOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVX
ZWJNb3VzZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVudCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYt
PmNsaWNrQ291bnRlci5jbGlja0NvdW50Rm9yR2RrQnV0dG9uRXZlbnQod2lkZ2V0LCBidXR0b25F
dmVudCkpKTsKLSAgICByZXR1cm4gRkFMU0U7CisgICAgcmV0dXJuIFRSVUU7CiB9CiAKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VFdmVudChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50KQpAQCAtNDE1LDcgKzQ0Niw3IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VFdmVudChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRXZlbnRCCiAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdpZGdldCk7CiAg
ICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQo
cmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgMCAvKiBjdXJyZW50Q2xpY2tDb3Vu
dCAqLykpOwogCi0gICAgcmV0dXJuIEZBTFNFOworICAgIHJldHVybiBUUlVFOwogfQogCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VTY3JvbGxFdmVudChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQpAQCAtNDI1LDcgKzQ1Niw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRXZWJWaWV3QmFzZVNjcm9sbEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtF
dmVudFNjcm9sbCoKIAogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRp
dmVXZWJXaGVlbEV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkpKTsKIAot
ICAgIHJldHVybiBGQUxTRTsKKyAgICByZXR1cm4gVFJVRTsKIH0KIAogc3RhdGljIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50TW90aW9uKiBldmVudCkKQEAgLTQzNSw3ICs0NjYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRNbwogCiAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdl
Yk1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgMCAvKiBjdXJy
ZW50Q2xpY2tDb3VudCAqLykpOwogCi0gICAgcmV0dXJuIEZBTFNFOworICAgIHJldHVybiBUUlVF
OwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VRdWVyeVRvb2x0aXAoR3Rr
V2lkZ2V0KiB3aWRnZXQsIGdpbnQgeCwgZ2ludCB5LCBnYm9vbGVhbiBrZXlib2FyZE1vZGUsIEd0
a1Rvb2x0aXAqIHRvb2x0aXApCkBAIC03MTgsMyArNzQ5LDEzIEBAIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VJbml0aWFsaXplRnVsbFNjcmVlbkNsaWVudChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmllCiB7CiAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmZ1bGxTY3JlZW5DbGllbnQu
aW5pdGlhbGl6ZSh3a0NsaWVudCk7CiB9CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNw
ZWN0b3JWaWV3SGVpZ2h0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgdW5z
aWduZWQgaGVpZ2h0KQoreworICAgIGlmICghd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmluc3Bl
Y3RvclZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAod2Via2l0V2ViVmlld0Jhc2UtPnBy
aXYtPmluc3BlY3RvclZpZXdIZWlnaHQgPT0gaGVpZ2h0KQorICAgICAgICByZXR1cm47CisgICAg
d2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmluc3BlY3RvclZpZXdIZWlnaHQgPSBoZWlnaHQ7Cisg
ICAgZ3RrX3dpZGdldF9xdWV1ZV9yZXNpemVfbm9fcmVkcmF3KEdUS19XSURHRVQod2Via2l0V2Vi
Vmlld0Jhc2UpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggY2Q0YzFhMS4uNWUxOTE5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTQ1LDUgKzQ1LDYgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6ZShXZWJLaXRXZWJWaWV3QmFzZSosIEd0a1dpZGdldCos
IGNvbnN0IFdlYkMKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4oV2ViS2l0
V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFeGl0RnVsbFNjcmVlbihXZWJL
aXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUluaXRpYWxpemVGdWxsU2Ny
ZWVuQ2xpZW50KFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV0tGdWxsU2NyZWVuQ2xpZW50R3Rr
Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld0hlaWdodChXZWJLaXRX
ZWJWaWV3QmFzZSosIHVuc2lnbmVkIGhlaWdodCk7CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaAppbmRleCA5NjE0NjcyLi5lYTI2NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtODksOCArODksNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjcmVhdGVJbnNwZWN0b3JXaW5kb3coKTsKICAgICB2b2lkIHVwZGF0ZUluc3BlY3RvcldpbmRv
d1RpdGxlKCkgY29uc3Q7CiAgICAgdm9pZCBpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoKTsK
LSNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHdpbmRvd0Rlc3Ryb3llZCgpOwogI2VuZGlm
CiAKICAgICB2b2lkIHNob3dDb25zb2xlKCk7CkBAIC0xNzYsNiArMTc0LDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHdpbmRvd1JlY2VpdmVkTWVzc2FnZShIV05ELCBVSU5UIG1lc3Nh
Z2UsIFdQQVJBTSwgTFBBUkFNKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZv
aWQgY3JlYXRlSW5zcGVjdG9yV2luZG93KCk7CisjZW5kaWYKKwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBtaW5pbXVtV2luZG93V2lkdGggPSA1MDA7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG1pbmltdW1XaW5kb3dIZWlnaHQgPSA0MDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2FhYWI3Ny4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkluc3BlY3Rvckd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5j
bHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yRmls
ZXNCYXNlUGF0aCgpCi17Ci0gICAgY29uc3QgZ2NoYXIqIGVudmlyb25tZW50UGF0aCA9IGdfZ2V0
ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1BBVEgiKTsKLSAgICBpZiAoZW52aXJvbm1lbnRQYXRoICYm
IGdfZmlsZV90ZXN0KGVudmlyb25tZW50UGF0aCwgR19GSUxFX1RFU1RfSVNfRElSKSkKLSAgICAg
ICAgcmV0dXJuIGVudmlyb25tZW50UGF0aDsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNw
ZWN0b3JGaWxlc1BhdGggPSBEQVRBX0RJUiIiR19ESVJfU0VQQVJBVE9SX1MKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYmtpdGd0ay0iV0VCS0lUR1RLX0FQ
SV9WRVJTSU9OX1NUUklORyIiR19ESVJfU0VQQVJBVE9SX1MKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIndlYmluc3BlY3RvciJHX0RJUl9TRVBBUkFUT1JfUzsK
LSAgICByZXR1cm4gaW5zcGVjdG9yRmlsZXNQYXRoOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gaW5z
cGVjdG9yV2luZG93RGVzdHJveWVkKEd0a1dpZGdldCogd2luZG93LCBHZGtFdmVudCosIGdwb2lu
dGVyIHVzZXJEYXRhKQotewotICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3JQcm94eSA9
IHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4odXNlckRhdGEpOwotCi0gICAgLy8gSW5m
b3JtIFdlYlByb2Nlc3MgYWJvdXQgd2ViaW5zcGVjdG9yIGNsb3N1cmUuIE5vdCBkb2luZyBzbywK
LSAgICAvLyByZXN1bHRzIGluIGZhaWx1cmUgb2Ygc3Vic2VxdWVudCBpbnZvY2F0aW9uIG9mIHdl
Ymluc3BlY3Rvci4KLSAgICBpbnNwZWN0b3JQcm94eS0+Y2xvc2UoKTsKLSAgICBpbnNwZWN0b3JQ
cm94eS0+d2luZG93RGVzdHJveWVkKCk7Ci0KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0Rlc3Ryb3llZCgpCi17Ci0gICAgQVNTRVJUKG1faW5z
cGVjdG9yVmlldyk7Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yV2luZG93KTsKLSAgICBtX2luc3Bl
Y3RvclZpZXcgPSAwOwotICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKLX0KLQotV2ViUGFnZVBy
b3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKLXsK
LSAgICBBU1NFUlQobV9wYWdlKTsKLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAg
bV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShwYWdl
KCktPnByb2Nlc3MoKS0+Y29udGV4dCgpLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSkpOwotICAgIHJl
dHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV9pbnNw
ZWN0b3JWaWV3KSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3Blbigp
Ci17Ci0gICAgQVNTRVJUKCFtX2luc3BlY3RvcldpbmRvdyk7Ci0gICAgbV9pbnNwZWN0b3JXaW5k
b3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKLQotICAgIGd0a193aW5k
b3dfc2V0X3RpdGxlKEdUS19XSU5ET1cobV9pbnNwZWN0b3JXaW5kb3cpLCBfKCJXZWIgSW5zcGVj
dG9yIikpOwotICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKG1faW5z
cGVjdG9yV2luZG93KSwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVpZ2h0KTsK
LSAgICBnX3NpZ25hbF9jb25uZWN0KG1faW5zcGVjdG9yV2luZG93LCAiZGVsZXRlLWV2ZW50Iiwg
R19DQUxMQkFDSyhpbnNwZWN0b3JXaW5kb3dEZXN0cm95ZWQpLCB0aGlzKTsKLQotICAgIGd0a19j
b250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9pbnNwZWN0b3JXaW5kb3cpLCBtX2luc3BlY3Rv
clZpZXcpOwotICAgIGd0a193aWRnZXRfc2hvdyhtX2luc3BlY3RvclZpZXcpOwotICAgIGd0a193
aWRnZXRfc2hvdyhtX2luc3BlY3RvcldpbmRvdyk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtRGlkQ2xvc2UoKQotewotICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgewot
ICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9pbnNwZWN0b3JXaW5kb3cpOwotICAgICAgICBt
X2luc3BlY3RvcldpbmRvdyA9IDA7Ci0gICAgICAgIG1faW5zcGVjdG9yVmlldyA9IDA7Ci0gICAg
fQotfQotCi12b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1Jc0Zyb250KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEdPd25QdHI8Z2NoYXI+IHRpdGxlKGdfc3Ry
ZHVwX3ByaW50ZigiJXMgLSAlcyIsIF8oIldlYiBJbnNwZWN0b3IiKSwgdXJsLnV0ZjgoKS5kYXRh
KCkpKTsKLSAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKG1faW5zcGVjdG9yV2lu
ZG93KSwgdGl0bGUuZ2V0KCkpOwotfQotCi1TdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RvclBhZ2VVUkwoKSBjb25zdAotewotICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVQYXRoKGdfYnVp
bGRfZmlsZW5hbWUoaW5zcGVjdG9yRmlsZXNCYXNlUGF0aCgpLCAiaW5zcGVjdG9yLmh0bWwiLCBO
VUxMKSk7Ci0gICAgR093blB0cjxnY2hhcj4gZmlsZVVSSShnX2ZpbGVuYW1lX3RvX3VyaShmaWxl
UGF0aC5nZXQoKSwgMCwgMCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5n
KGZpbGVVUkkuZ2V0KCkpOwotfQotCi1TdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
ckJhc2VVUkwoKSBjb25zdAotewotICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVVUkkoZ19maWxlbmFt
ZV90b191cmkoaW5zcGVjdG9yRmlsZXNCYXNlUGF0aCgpLCAwLCAwKSk7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZmlsZVVSSS5nZXQoKSk7Ci19Ci0KLXVuc2lnbmVkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1BdHRhY2goKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHVuc2lnbmVkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIwOGY5YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlH
dGsuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAx
MCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Cisj
aW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9y
RmlsZXNCYXNlUGF0aCgpCit7CisgICAgY29uc3QgZ2NoYXIqIGVudmlyb25tZW50UGF0aCA9IGdf
Z2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1BBVEgiKTsKKyAgICBpZiAoZW52aXJvbm1lbnRQYXRo
ICYmIGdfZmlsZV90ZXN0KGVudmlyb25tZW50UGF0aCwgR19GSUxFX1RFU1RfSVNfRElSKSkKKyAg
ICAgICAgcmV0dXJuIGVudmlyb25tZW50UGF0aDsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBp
bnNwZWN0b3JGaWxlc1BhdGggPSBEQVRBX0RJUiIiR19ESVJfU0VQQVJBVE9SX1MKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYmtpdGd0ay0iV0VCS0lUR1RL
X0FQSV9WRVJTSU9OX1NUUklORyIiR19ESVJfU0VQQVJBVE9SX1MKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYmluc3BlY3RvciJHX0RJUl9TRVBBUkFUT1Jf
UzsKKyAgICByZXR1cm4gaW5zcGVjdG9yRmlsZXNQYXRoOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
aW5zcGVjdG9yV2luZG93Q2xvc2VkKEd0a1dpZGdldCogd2luZG93LCBHZGtFdmVudCosIGdwb2lu
dGVyIHVzZXJEYXRhKQoreworICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3JQcm94eSA9
IHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4odXNlckRhdGEpOworCisgICAgLy8gSW5m
b3JtIFdlYlByb2Nlc3MgYWJvdXQgd2ViaW5zcGVjdG9yIGNsb3N1cmUuIE5vdCBkb2luZyBzbywK
KyAgICAvLyByZXN1bHRzIGluIGZhaWx1cmUgb2Ygc3Vic2VxdWVudCBpbnZvY2F0aW9uIG9mIHdl
Ymluc3BlY3Rvci4KKyAgICBpbnNwZWN0b3JQcm94eS0+Y2xvc2UoKTsKKworICAgIHJldHVybiBG
QUxTRTsKK30KKworV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yVmlldyk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZShwYWdlKCktPnByb2Nlc3MoKS0+Y29udGV4dCgpLCBpbnNwZWN0b3JQ
YWdlR3JvdXAoKSkpOworICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lU
X1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmNyZWF0ZUluc3BlY3RvcldpbmRvdygpCit7CisgICAgQVNTRVJUKCFtX2luc3BlY3Rv
cldpbmRvdyk7CisgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lO
RE9XX1RPUExFVkVMKTsKKworICAgIEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0
a193aWRnZXRfZ2V0X3RvcGxldmVsKG1fcGFnZS0+dmlld1dpZGdldCgpKTsKKyAgICBpZiAoV2Vi
Q29yZTo6d2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KGluc3BlY3RlZFZpZXdQYXJlbnQp
KQorICAgICAgICBndGtfd2luZG93X3NldF90cmFuc2llbnRfZm9yKEdUS19XSU5ET1cobV9pbnNw
ZWN0b3JXaW5kb3cpLCBHVEtfV0lORE9XKGluc3BlY3RlZFZpZXdQYXJlbnQpKTsKKworICAgIGd0
a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cobV9pbnNwZWN0b3JXaW5kb3cpLCBfKCJXZWIg
SW5zcGVjdG9yIikpOworICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9X
KG1faW5zcGVjdG9yV2luZG93KSwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVp
Z2h0KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1faW5zcGVjdG9yV2luZG93LCAiZGVsZXRlLWV2
ZW50IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JXaW5kb3dDbG9zZWQpLCB0aGlzKTsKKworICAgIGd0
a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9pbnNwZWN0b3JXaW5kb3cpLCBtX2luc3Bl
Y3RvclZpZXcpOworICAgIGd0a193aWRnZXRfc2hvdyhtX2luc3BlY3RvclZpZXcpOworCisgICAg
Z19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvcldpbmRvdyksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JXaW5kb3cpKTsKKyAgICBndGtfd2lu
ZG93X3ByZXNlbnQoR1RLX1dJTkRPVyhtX2luc3BlY3RvcldpbmRvdykpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW4oKQoreworICAgIEFTU0VSVCghbV9pbnNwZWN0
b3JXaW5kb3cpOworICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOworCisgICAgaWYgKG1faXNB
dHRhY2hlZCkKKyAgICAgICAgcGxhdGZvcm1BdHRhY2goKTsKKyAgICBlbHNlCisgICAgICAgIGNy
ZWF0ZUluc3BlY3RvcldpbmRvdygpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybURpZENsb3NlKCkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKKyAgICAgICAg
Z3RrX3dpZGdldF9kZXN0cm95KG1faW5zcGVjdG9yV2luZG93KTsKKyAgICAgICAgbV9pbnNwZWN0
b3JXaW5kb3cgPSAwOworICAgIH0KKyAgICBtX2luc3BlY3RvclZpZXcgPSAwOworfQorCit2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpCit7CisgICAgR3RrV2lk
Z2V0KiBwYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChtX2luc3BlY3RvclZpZXcpOwor
ICAgIGlmIChXZWJDb3JlOjp3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cocGFyZW50KSkK
KyAgICAgICAgZ3RrX3dpbmRvd19wcmVzZW50KEdUS19XSU5ET1cocGFyZW50KSk7Cit9CisKK2Jv
b2wgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSXNGcm9udCgpCit7CisgICAgR3RrV2lkZ2V0
KiBwYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChtX2luc3BlY3RvclZpZXcpOworICAg
IGlmIChXZWJDb3JlOjp3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cocGFyZW50KSkKKyAg
ICAgICAgcmV0dXJuIG1faXNWaXNpYmxlICYmIGd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5E
T1cocGFyZW50KSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmwpCit7Cisg
ICAgaWYgKCFtX2luc3BlY3RvcldpbmRvdykKKyAgICAgICAgcmV0dXJuOworICAgIEdPd25QdHI8
Z2NoYXI+IHRpdGxlKGdfc3RyZHVwX3ByaW50ZigiJXMgLSAlcyIsIF8oIldlYiBJbnNwZWN0b3Ii
KSwgdXJsLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lO
RE9XKG1faW5zcGVjdG9yV2luZG93KSwgdGl0bGUuZ2V0KCkpOworfQorCitTdHJpbmcgV2ViSW5z
cGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSBjb25zdAoreworICAgIEdPd25QdHI8Z2No
YXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoaW5zcGVjdG9yRmlsZXNCYXNlUGF0aCgpLCAi
aW5zcGVjdG9yLmh0bWwiLCBOVUxMKSk7CisgICAgR093blB0cjxnY2hhcj4gZmlsZVVSSShnX2Zp
bGVuYW1lX3RvX3VyaShmaWxlUGF0aC5nZXQoKSwgMCwgMCkpOworICAgIHJldHVybiBXZWJDb3Jl
OjpmaWxlbmFtZVRvU3RyaW5nKGZpbGVVUkkuZ2V0KCkpOworfQorCitTdHJpbmcgV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSBjb25zdAoreworICAgIEdPd25QdHI8Z2NoYXI+
IGZpbGVVUkkoZ19maWxlbmFtZV90b191cmkoaW5zcGVjdG9yRmlsZXNCYXNlUGF0aCgpLCAwLCAw
KSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZmlsZVVSSS5nZXQoKSk7
Cit9CisKK3Vuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRv
d0hlaWdodCgpCit7CisgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIGRlY2lkZSB3aGV0
aGVyIHRvIGF0dGFjaCB0aGUgaW5zcGVjdG9yIG9yIG5vdCBkZXBlbmRpbmcgb24gd2hldGhlcgor
ICAgIC8vIHRoZSBpbnNwZWN0b3IgdmlldyBmaXRzIGludG8gdGhlIHdpbmRvdy4gQXR0YWNoIGlz
IGltcGxlbWVudGVkIGJ5IHRoZSBjbGllbnQsIHNvIHJldHVybiAwCisgICAgLy8gd2hlbiB0aGUg
Y2xpZW50IGRvZXNuJ3QgaW1wbGVtZW50IGF0dGFjaCwgdG8gbWFrZSBzdXJlIHRoZSBpbnNwZWN0
b3IgaXMgbmV2ZXIgYXR0YWNoZWQuCisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uOworICAg
IGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24obV9wYWdlLT52aWV3V2lkZ2V0KCksICZhbGxvY2F0
aW9uKTsKKyAgICByZXR1cm4gYWxsb2NhdGlvbi5oZWlnaHQ7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKK3sKKyAgICBHUmVmUHRyPEd0a1dpZGdldD4gaW5z
cGVjdG9yVmlldyA9IG1faW5zcGVjdG9yVmlldzsKKyAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cp
IHsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX2luc3BlY3Rv
cldpbmRvdyksIG1faW5zcGVjdG9yVmlldyk7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveSht
X2luc3BlY3RvcldpbmRvdyk7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAgICB9
CisKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFnZS0+dmlld1dpZGdl
dCgpKSwgbV9pbnNwZWN0b3JWaWV3KTsKKyAgICBndGtfd2lkZ2V0X3Nob3cobV9pbnNwZWN0b3JW
aWV3KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQorewor
ICAgIGlmICghbV9wYWdlLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdSZWZQ
dHI8R3RrV2lkZ2V0PiBpbnNwZWN0b3JWaWV3ID0gbV9pbnNwZWN0b3JWaWV3OworICAgIGd0a19j
b250YWluZXJfcmVtb3ZlKEdUS19DT05UQUlORVIobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBtX2lu
c3BlY3RvclZpZXcpOworICAgIGlmICghbV9pc1Zpc2libGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNyZWF0ZUluc3BlY3RvcldpbmRvdygpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAg
ICBpZiAoIW1faXNBdHRhY2hlZCkKKyAgICAgICAgcmV0dXJuOworICAgIHdlYmtpdFdlYlZpZXdC
YXNlU2V0SW5zcGVjdG9yVmlld0hlaWdodChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3BhZ2UtPnZp
ZXdXaWRnZXQoKSksIGhlaWdodCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikK
</data>
<flag name="review"
          id="149050"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>