<?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>99836</bug_id>
          
          <creation_ts>2012-10-19 06:45:54 -0700</creation_ts>
          <short_desc>[GTK] Add API to get the WebKitWebView associated to a WebKitDownload to WebKit2 GTK+</short_desc>
          <delta_ts>2012-10-24 00:40:46 -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>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746270</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-19 06:45:54 -0700</bug_when>
    <thetext>In WebKit2 all downloads are started by the web context, when a download has been started by the policy checker or context menu action it has a web view associated, but it&apos;s not currently possible to get it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746275</commentid>
    <comment_count>1</comment_count>
      <attachid>169614</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-19 06:56:08 -0700</bug_when>
    <thetext>Created attachment 169614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746280</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-19 06:58:42 -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>746322</commentid>
    <comment_count>3</comment_count>
      <attachid>169614</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-19 08:38:58 -0700</bug_when>
    <thetext>Comment on attachment 169614
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2780
&gt; +WebKitDownload* webkit_web_view_download_uri(WebKitWebView* webView, const char* uri)

Why is it useful to start a download with with a WebView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746955</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-20 01:37:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 169614 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169614&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2780
&gt; &gt; +WebKitDownload* webkit_web_view_download_uri(WebKitWebView* webView, const char* uri)
&gt; 
&gt; Why is it useful to start a download with with a WebView?

To use the web view as the initiating page of the download. This allow you to show the downloasd in the right window, for example in the application. Imagine you are implementing your own custom context menu, for example, you want to start the download associated to the web view that showed the context menu. Note that WebContext::download() takes a initiating web page as first argument, but we are always passing NULL in this moment. We could have webkit_web_context_download_uri_for_web_view() to pass an initiating page to download() but I think it&apos;s more natural to have the method in the web view instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749196</commentid>
    <comment_count>5</comment_count>
      <attachid>169614</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-23 18:29:04 -0700</bug_when>
    <thetext>Comment on attachment 169614
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:295
&gt; + * start a download from a particular #WebKitWebView use

Nit: start -&gt; starting

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:993
&gt; +void webkitWebViewBaseSetDownloadRequestHandler(WebKitWebViewBase* webViewBase, WebKitWebViewBaseDownloadRequestHandler downloadHandler)
&gt; +{
&gt; +    webViewBase-&gt;priv-&gt;downloadHandler = downloadHandler;
&gt; +}
&gt; +
&gt; +void webkitWebViewBaseHandleDownloadRequest(WebKitWebViewBase* webViewBase, DownloadProxy* download)
&gt; +{
&gt; +    if (webViewBase-&gt;priv-&gt;downloadHandler)
&gt; +        webViewBase-&gt;priv-&gt;downloadHandler(webViewBase, download);
&gt; +}

I guess this is to avoid exposing any API in the base class. I think we should think seriously about just getting rid of WebKitWebViewBase before the stable release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749436</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-24 00:40:46 -0700</bug_when>
    <thetext>Committed r132323: &lt;http://trac.webkit.org/changeset/132323&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169614</attachid>
            <date>2012-10-19 06:56:08 -0700</date>
            <delta_ts>2012-10-23 18:29:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-download-web-view.diff</filename>
            <type>text/plain</type>
            <size>28205</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmOWE2NWY5Li4wNDMwOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjYg
QEAKIDIwMTItMTAtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gZ2V0IHRoZSBXZWJLaXRXZWJWaWV3IGFzc29j
aWF0ZWQgdG8gYSBXZWJLaXREb3dubG9hZCB0byBXZWJLaXQyIEdUSysKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHdlYmtpdF9kb3dubG9hZF9nZXRf
d2ViX3ZpZXcoKSB0byBnZXQgdGhlIFdlYktpdFdlYlZpZXcgdGhhdAorICAgICAgICBpbml0aWF0
ZWQgdGhlIGRvd25sb2FkIGFuZCB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpKCkgdG8gc3Rh
cnQKKyAgICAgICAgYSBuZXcgZG93bmxvYWQgYXNzb2NpYXRlZCB0byBhIFdlYktpdFdlYlZpZXcu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOiBDYWxs
CisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlRG93bmxvYWRSZXF1ZXN0KCkuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFBhZ2VD
bGllbnRJbXBsKTogQWRkIGhhbmRsZURvd25sb2FkUmVxdWVzdCgpLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcDoKKyAgICAgICAgKHdlYmtpdERvd25sb2Fk
U2V0V2ViVmlldyk6IFNldCB0aGUgV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHRvCisgICAgICAg
IHRoZSBkb3dubG9hZC4KKyAgICAgICAgKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcpOiBQ
dWJsaWMgbWV0aG9kIHRvIGdldCB0aGUKKyAgICAgICAgV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVk
IHRvIHRoZSBkb3dubG9hZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3du
bG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSk6IFVzZSB0aGUgbmV3IGhl
bHBlcgorICAgICAgICB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZCgpLgorICAgICAgICAo
d2Via2l0V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gc3RhcnQg
YSBuZXcKKyAgICAgICAgZG93bmxvYWQgdGhhdCBpcyBhbHNvIHVzZWQgYnkgV2ViS2l0V2ViVmll
dy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0hhbmRsZURvd25sb2FkUmVxdWVzdCk6IENhbGwKKyAgICAgICAgd2Vi
a2l0RG93bmxvYWRTZXRXZWJWaWV3KCkgdG8gYXNzb2NpYXRlIHRoZSBkb3dubG9hZCB3aXRoIHRo
ZQorICAgICAgICBXZWJLaXRXZWJWaWV3LgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVj
dGVkKTogU2V0IGEgZG93bmxvYWQgcmVxdWVzdCBoYW5kbGVyLgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Rvd25sb2FkX3VyaSk6IFB1YmxpYyBtZXRob2QgdG8gc3RhcnQgYSBuZXcKKyAgICAg
ICAgZG93bmxvYWQgYXNzb2NpYXRlZCB0byB0aGUgd2ViIHZpZXcuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2V0RG93
bmxvYWRSZXF1ZXN0SGFuZGxlcik6IFNldCBhIGZ1bmN0aW9uCisgICAgICAgIHBvaW50ZXIgdG8g
YmUgY2FsbGVkIHdoZW4gYSBuZXcgZG93bmxvYWQgaXMgcmVxdWVzdCBmb3IgdGhlIHdlYgorICAg
ICAgICB2aWV3LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VIYW5kbGVEb3dubG9hZFJlcXVl
c3QpOiBDYWxsIHRoZSBkb3dubG9hZAorICAgICAgICByZXF1ZXN0IGhhbmRsZXIgaWYgYW55Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
RG93bmxvYWRzLmNwcDoKKyAgICAgICAgKHRlc3REb3dubG9hZExvY2FsRmlsZSk6CisgICAgICAg
ICh0ZXN0RG93bmxvYWRMb2NhbEZpbGVFcnJvcik6CisgICAgICAgICh0ZXN0RG93bmxvYWRSZW1v
dGVGaWxlKToKKyAgICAgICAgKHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcik6CisgICAgICAg
ICh0ZXN0V2ViVmlld0Rvd25sb2FkVVJJKToKKyAgICAgICAgKHRlc3RQb2xpY3lSZXNwb25zZURv
d25sb2FkKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKFBhZ2VDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOgorCisyMDEyLTEwLTE5ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSRUdSRVNT
SU9OIChyMTMwNjQwIC0gcjEzMDY0NCk6IFRlc3RDb29raWVNYW5hZ2VyIEFQSSB0ZXN0IGlzIGZh
aWxpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
NzM4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAppbmRleCBkNDJiOGI3Li4yNDhkMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMDYsNCArMzA2
LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdE
YXRhJiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxTaGEKICAgICB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0
RHJhZyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBkcmFnRGF0YSwgZHJhZ0lt
YWdlKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERv
d25sb2FkUHJveHkqIGRvd25sb2FkKQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlRG93
bmxvYWRSZXF1ZXN0KFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIGRvd25sb2Fk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBmNGFmZDA2Li5kOWIzNGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgZG91YmxlIGN1c3Rv
bVJlcHJlc2VudGF0aW9uWm9vbUZhY3RvcigpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21S
ZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKTsKIAorICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopOworCiAgICAgLy8gTWVtYmVycyBvZiBQ
YWdlQ2xpZW50SW1wbCBjbGFzcwogICAgIEd0a1dpZGdldCogbV92aWV3V2lkZ2V0OwogICAgIFdl
YkNvcmU6OktleUJpbmRpbmdUcmFuc2xhdG9yIG1fa2V5QmluZGluZ1RyYW5zbGF0b3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAK
aW5kZXggY2MzYjUxZi4uYTY3NTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcApAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3Qg
X1dlYktpdERvd25sb2FkUHJpdmF0ZSB7CiAKICAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+
IHJlcXVlc3Q7CiAgICAgR1JlZlB0cjxXZWJLaXRVUklSZXNwb25zZT4gcmVzcG9uc2U7CisgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldzsKICAgICBDU3RyaW5nIGRlc3RpbmF0aW9uVVJJOwogICAg
IGd1aW50NjQgY3VycmVudFNpemU7CiAgICAgYm9vbCBpc0NhbmNlbGxlZDsKQEAgLTcxLDcgKzcy
LDEwIEBAIEdfREVGSU5FX1RZUEUoV2ViS2l0RG93bmxvYWQsIHdlYmtpdF9kb3dubG9hZCwgR19U
WVBFX09CSkVDVCkKIAogc3RhdGljIHZvaWQgd2Via2l0RG93bmxvYWRGaW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgV0VCS0lUX0RPV05MT0FEKG9iamVjdCktPnByaXYtPn5XZWJLaXRE
b3dubG9hZFByaXZhdGUoKTsKKyAgICBXZWJLaXREb3dubG9hZFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfRE9XTkxPQUQob2JqZWN0KS0+cHJpdjsKKyAgICBpZiAocHJpdi0+d2ViVmlldykKKyAgICAg
ICAgZ19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRlcihHX09CSkVDVChwcml2LT53ZWJWaWV3KSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZwcml2LT53ZWJWaWV3KSk7CisgICAgcHJpdi0+fldl
YktpdERvd25sb2FkUHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb3dubG9h
ZF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBAIC0yNzgsNiArMjgyLDEy
IEBAIHZvaWQgd2Via2l0RG93bmxvYWRTZXRSZXNwb25zZShXZWJLaXREb3dubG9hZCogZG93bmxv
YWQsIFdlYktpdFVSSVJlc3BvbnNlKiByZXNwCiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KGRvd25sb2FkKSwgInJlc3BvbnNlIik7CiB9CiAKK3ZvaWQgd2Via2l0RG93bmxvYWRTZXRXZWJW
aWV3KFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sK
KyAgICBkb3dubG9hZC0+cHJpdi0+d2ViVmlldyA9IHdlYlZpZXc7CisgICAgZ19vYmplY3RfYWRk
X3dlYWtfcG9pbnRlcihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZkb3dubG9hZC0+cHJpdi0+d2ViVmlldykpOworfQorCiBib29sIHdlYmtpdERvd25sb2FkSXND
YW5jZWxsZWQoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkKQogewogICAgIHJldHVybiBkb3dubG9h
ZC0+cHJpdi0+aXNDYW5jZWxsZWQ7CkBAIC01MzAsMyArNTQwLDE5IEBAIGd1aW50NjQgd2Via2l0
X2Rvd25sb2FkX2dldF9yZWNlaXZlZF9kYXRhX2xlbmd0aChXZWJLaXREb3dubG9hZCogZG93bmxv
YWQpCiAKICAgICByZXR1cm4gZG93bmxvYWQtPnByaXYtPmN1cnJlbnRTaXplOwogfQorCisvKioK
KyAqIHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXc6CisgKiBAZG93bmxvYWQ6IGEgI1dlYktp
dERvd25sb2FkCisgKgorICogR2V0IHRoZSAjV2ViS2l0V2ViVmlldyB0aGF0IGluaXRpYXRlZCB0
aGUgZG93bmxvYWQuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktp
dFdlYlZpZXcgdGhhdCBpbml0aWF0ZWQgQGRvd25sb2FkLAorICogICAgb3IgJU5VTEwgaWYgQGRv
d25sb2FkIHdhcyBub3QgaW5pdGlhdGVkIGJ5IGEgI1dlYktpdFdlYlZpZXcuCisgKi8KK1dlYktp
dFdlYlZpZXcqIHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoV2ViS2l0RG93bmxvYWQqIGRv
d25sb2FkKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ET1dOTE9BRChk
b3dubG9hZCksIDApOworCisgICAgcmV0dXJuIGRvd25sb2FkLT5wcml2LT53ZWJWaWV3OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmgK
aW5kZXggYTAyYWE1Ny4uNDQ4YmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5oCkBAIC04MSw3ICs4MSwxMCBAQCBXRUJLSVRfQVBJ
IGdkb3VibGUKIHdlYmtpdF9kb3dubG9hZF9nZXRfZWxhcHNlZF90aW1lICAgICAgICAgKFdlYktp
dERvd25sb2FkICpkb3dubG9hZCk7CiAKIFdFQktJVF9BUEkgZ3VpbnQ2NAotd2Via2l0X2Rvd25s
b2FkX2dldF9yZWNlaXZlZF9kYXRhX2xlbmd0aCAoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkKTsK
K3dlYmtpdF9kb3dubG9hZF9nZXRfcmVjZWl2ZWRfZGF0YV9sZW5ndGggKFdlYktpdERvd25sb2Fk
ICpkb3dubG9hZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViVmlldyAqCit3ZWJraXRfZG93bmxv
YWRfZ2V0X3dlYl92aWV3ICAgICAgICAgICAgIChXZWJLaXREb3dubG9hZCAqZG93bmxvYWQpOwog
CiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXREb3dubG9hZFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdERvd25sb2FkUHJpdmF0ZS5oCmluZGV4IDIxNWY1NjUuLmQ3YjQzMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2Fk
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERv
d25sb2FkUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiBXZWJLaXREb3dubG9hZCogd2Via2l0
RG93bmxvYWRDcmVhdGUoV2ViS2l0OjpEb3dubG9hZFByb3h5Kik7CiBib29sIHdlYmtpdERvd25s
b2FkSXNDYW5jZWxsZWQoV2ViS2l0RG93bmxvYWQqKTsKIHZvaWQgd2Via2l0RG93bmxvYWRTZXRS
ZXNwb25zZShXZWJLaXREb3dubG9hZCosIFdlYktpdFVSSVJlc3BvbnNlKik7Cit2b2lkIHdlYmtp
dERvd25sb2FkU2V0V2ViVmlldyhXZWJLaXREb3dubG9hZCosIFdlYktpdFdlYlZpZXcqKTsKIHZv
aWQgd2Via2l0RG93bmxvYWROb3RpZnlQcm9ncmVzcyhXZWJLaXREb3dubG9hZCosIGd1aW50NjQg
Ynl0ZXNSZWNlaXZlZCk7CiB2b2lkIHdlYmtpdERvd25sb2FkRmFpbGVkKFdlYktpdERvd25sb2Fk
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogdm9pZCB3ZWJraXREb3dubG9hZENh
bmNlbGxlZChXZWJLaXREb3dubG9hZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBjYTYwYTVkLi4zOTM1MWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMjkwLDcgKzI5MCwxMCBAQCBzdGF0aWMgRG93bmxvYWRzTWFwJiBk
b3dubG9hZHNNYXAoKQogICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKICAqIEB1cmk6
IHRoZSBVUkkgdG8gZG93bmxvYWQKICAqCi0gKiBSZXF1ZXN0cyBkb3dubG9hZGluZyBvZiB0aGUg
c3BlY2lmaWVkIFVSSSBzdHJpbmcuCisgKiBSZXF1ZXN0cyBkb3dubG9hZGluZyBvZiB0aGUgc3Bl
Y2lmaWVkIFVSSSBzdHJpbmcuIFRoZSBkb3dubG9hZCBvcGVyYXRpb24KKyAqIHdpbGwgbm90IGJl
IGFzc29jaWF0ZWQgdG8gYW55ICNXZWJLaXRXZWJWaWV3LCBpZiB5b3UgYXJlIGludGVyZXN0ZWQg
aW4KKyAqIHN0YXJ0IGEgZG93bmxvYWQgZnJvbSBhIHBhcnRpY3VsYXIgI1dlYktpdFdlYlZpZXcg
dXNlCisgKiB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpKCkgaW5zdGVhZC4KICAqCiAgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNXZWJLaXREb3dubG9hZCByZXByZXNlbnRp
bmcgdGhlCiAgKiAgICB0aGUgZG93bmxvYWQgb3BlcmF0aW9uLgpAQCAtMzAwLDEwICszMDMsNyBA
QCBXZWJLaXREb3dubG9hZCogd2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaShXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
dXJpLCAwKTsKIAotICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkgPSBjb250ZXh0LT5w
cml2LT5jb250ZXh0LT5kb3dubG9hZCgwLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoU3RyaW5n
Ojpmcm9tVVRGOCh1cmkpKSk7Ci0gICAgV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkID0gd2Via2l0
RG93bmxvYWRDcmVhdGUoZG93bmxvYWRQcm94eSk7Ci0gICAgZG93bmxvYWRzTWFwKCkuc2V0KGRv
d25sb2FkUHJveHksIGRvd25sb2FkKTsKLSAgICByZXR1cm4gZG93bmxvYWQ7CisgICAgcmV0dXJu
IHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2FkKGNvbnRleHQsIHVyaSwgMCk7CiB9CiAKIC8q
KgpAQCAtNjk1LDYgKzY5NSwxNCBAQCBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eQogICAgIHJldHVy
biBkb3dubG9hZC5nZXQoKTsKIH0KIAorV2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRT
dGFydERvd25sb2FkKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHVyaSwg
V2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSkKK3sKKyAgICBEb3dubG9hZFByb3h5KiBkb3du
bG9hZFByb3h5ID0gY29udGV4dC0+cHJpdi0+Y29udGV4dC0+ZG93bmxvYWQoaW5pdGlhdGluZ1Bh
Z2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaSkpKTsKKyAg
ICBXZWJLaXREb3dubG9hZCogZG93bmxvYWQgPSB3ZWJraXREb3dubG9hZENyZWF0ZShkb3dubG9h
ZFByb3h5KTsKKyAgICBkb3dubG9hZHNNYXAoKS5zZXQoZG93bmxvYWRQcm94eSwgZG93bmxvYWQp
OworICAgIHJldHVybiBkb3dubG9hZDsKK30KKwogdm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3Zl
RG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKIHsKICAgICBkb3dubG9hZHNN
YXAoKS5yZW1vdmUoZG93bmxvYWRQcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCBhY2Uy
M2RmLi5mOTdlMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIAog
V2ViS2l0OjpXZWJDb250ZXh0KiB3ZWJraXRXZWJDb250ZXh0R2V0Q29udGV4dChXZWJLaXRXZWJD
b250ZXh0Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93
bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5Kik7CitXZWJLaXREb3dubG9hZCogd2Via2l0V2Vi
Q29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwg
V2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25s
b2FkKFdlYktpdDo6RG93bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxv
YWRTdGFydGVkKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwogV2ViS2l0OjpX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5h
Z2VyKFdlYktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZGUwZjI4ZC4uNTA2ZjExYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRDb250ZXh0TWVudVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXREb3dubG9hZFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIKICNpbmNsdWRlICJXZWJLaXRFcnJvci5o
IgogI2luY2x1ZGUgIldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaCIKQEAgLTM5MCw2ICsz
OTEsMTIgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2gKICAgICByZXR1cm4gVFJVRTsKIH0KIAor
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0hhbmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCit7Cisg
ICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0
T3JDcmVhdGVEb3dubG9hZChkb3dubG9hZFByb3h5KTsKKyAgICB3ZWJraXREb3dubG9hZFNldFdl
YlZpZXcoZG93bmxvYWQuZ2V0KCksIFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3QmFzZSkpOworfQor
CiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQog
ewogICAgIGlmIChHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+
Y29uc3RydWN0ZWQpCkBAIC00MDAsNiArNDA3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKIAogICAgIHdlYmtpdFdl
YlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgd2Via2l0V2ViQ29udGV4dEdldENv
bnRleHQocHJpdi0+Y29udGV4dCksIDApOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0RG93bmxv
YWRSZXF1ZXN0SGFuZGxlcih3ZWJWaWV3QmFzZSwgd2Via2l0V2ViVmlld0hhbmRsZURvd25sb2Fk
UmVxdWVzdCk7CiAKICAgICBhdHRhY2hMb2FkZXJDbGllbnRUb1ZpZXcod2ViVmlldyk7CiAgICAg
YXR0YWNoVUlDbGllbnRUb1ZpZXcod2ViVmlldyk7CkBAIC0yNzU4LDMgKzI3NjYsMjQgQEAgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2goV2ViS2l0V2ViVmlldyog
d2ViVmlldywgR0FzeW5jUmVzdWwKIAogICAgIHJldHVybiBUUlVFOwogfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfdmlld19kb3dubG9hZF91cmk6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEB1cmk6IHRoZSBVUkkgdG8gZG93bmxvYWQKKyAqCisgKiBSZXF1ZXN0cyBkb3dubG9h
ZGluZyBvZiB0aGUgc3BlY2lmaWVkIFVSSSBzdHJpbmcgZm9yIEB3ZWJfdmlldy4KKyAqCisgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNXZWJLaXREb3dubG9hZCByZXByZXNlbnRp
bmcgdGhlCisgKiAgICB0aGUgZG93bmxvYWQgb3BlcmF0aW9uLgorICovCitXZWJLaXREb3dubG9h
ZCogd2Via2l0X3dlYl92aWV3X2Rvd25sb2FkX3VyaShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBjaGFyKiB1cmkpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIDApOwor
CisgICAgV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dFN0YXJ0RG93
bmxvYWQod2ViVmlldy0+cHJpdi0+Y29udGV4dCwgdXJpLCBnZXRQYWdlKHdlYlZpZXcpKTsKKyAg
ICB3ZWJraXREb3dubG9hZFNldFdlYlZpZXcoZG93bmxvYWQsIHdlYlZpZXcpOworCisgICAgcmV0
dXJuIGRvd25sb2FkOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCmluZGV4IGFjMmUyODEuLjdjODM4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTM3MSw2ICszNzEs
MTAgQEAgd2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2ggICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAg
ICAgICAgICAgICAgICAgICoqZXJyb3IpOwogCitXRUJLSVRfQVBJIFdlYktpdERvd25sb2FkICoK
K3dlYmtpdF93ZWJfdmlld19kb3dubG9hZF91cmkgICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgICAgICAg
ICAqdXJpKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZTViYWM2
Ny4uMDE1ZjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMTA4LDYgKzEwOCw4IEBAIHN0cnVjdCBfV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBib29sIGlzRm9jdXNlZCA6IDE7CiAgICAgYm9v
bCBpc1Zpc2libGUgOiAxOwogCisgICAgV2ViS2l0V2ViVmlld0Jhc2VEb3dubG9hZFJlcXVlc3RI
YW5kbGVyIGRvd25sb2FkSGFuZGxlcjsKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBib29sIGZ1bGxTY3JlZW5Nb2RlQWN0aXZlOwogICAgIFdlYkZ1bGxTY3JlZW5DbGllbnRHdGsg
ZnVsbFNjcmVlbkNsaWVudDsKQEAgLTk3OCwzICs5ODAsMTQgQEAgYm9vbCB3ZWJraXRXZWJWaWV3
QmFzZUlzSW5XaW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewogICAgIHJl
dHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdzsKIH0KKwordm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVNldERvd25sb2FkUmVxdWVzdEhhbmRsZXIoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJLaXRXZWJWaWV3QmFzZURvd25sb2FkUmVxdWVzdEhhbmRs
ZXIgZG93bmxvYWRIYW5kbGVyKQoreworICAgIHdlYlZpZXdCYXNlLT5wcml2LT5kb3dubG9hZEhh
bmRsZXIgPSBkb3dubG9hZEhhbmRsZXI7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VIYW5k
bGVEb3dubG9hZFJlcXVlc3QoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBEb3dubG9h
ZFByb3h5KiBkb3dubG9hZCkKK3sKKyAgICBpZiAod2ViVmlld0Jhc2UtPnByaXYtPmRvd25sb2Fk
SGFuZGxlcikKKyAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPmRvd25sb2FkSGFuZGxlcih3ZWJW
aWV3QmFzZSwgZG93bmxvYWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCBkZGIzZTE0
Li5lZjA1ZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtNjAsNCArNjAsOCBAQCBib29s
IHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdlYktpdFdlYlZpZXdCYXNlKik7CiBib29sIHdl
YmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKFdlYktpdFdlYlZpZXdCYXNlKik7CiBib29sIHdlYmtp
dFdlYlZpZXdCYXNlSXNJbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSopOwogCit0eXBlZGVmIHZv
aWQgKCpXZWJLaXRXZWJWaWV3QmFzZURvd25sb2FkUmVxdWVzdEhhbmRsZXIpIChXZWJLaXRXZWJW
aWV3QmFzZSosIFdlYktpdDo6RG93bmxvYWRQcm94eSopOwordm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVNldERvd25sb2FkUmVxdWVzdEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJLaXRXZWJW
aWV3QmFzZURvd25sb2FkUmVxdWVzdEhhbmRsZXIpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhh
bmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6RG93bmxvYWRQ
cm94eSopOworCiAjZW5kaWYgLy8gV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CmluZGV4IGY1NjI2N2IuLjJmNmY1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNl
Y3Rpb25zLnR4dApAQCAtMTIyLDYgKzEyMiw3IEBAIHdlYmtpdF93ZWJfdmlld19zYXZlCiB3ZWJr
aXRfd2ViX3ZpZXdfc2F2ZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUKIHdl
YmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGVfZmluaXNoCit3ZWJraXRfd2ViX3ZpZXdfZG93bmxv
YWRfdXJpCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0CkBAIC0zOTUsNiArMzk2LDcgQEAgd2Via2l0X2Rvd25sb2FkX2NhbmNlbAog
d2Via2l0X2Rvd25sb2FkX2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3MKIHdlYmtpdF9kb3dubG9hZF9n
ZXRfZWxhcHNlZF90aW1lCiB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlY2VpdmVkX2RhdGFfbGVuZ3Ro
Cit3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3CiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgog
V2ViS2l0RG93bmxvYWRDbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdERvd25sb2Fkcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0RG93bmxvYWRzLmNwcAppbmRleCA5YzMyNjJiLi41NmE2MmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
RG93bmxvYWRzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0RG93bmxvYWRzLmNwcApAQCAtMTksOCArMTksOCBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKLSNpbmNsdWRlICJUZXN0TWFpbi5oIgogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIu
aCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgpAQCAtMTg0LDYg
KzE4NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZExvY2FsRmlsZShEb3dubG9hZFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxv
YWQgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSh0ZXN0LT5tX3dl
YkNvbnRleHQsIHNvdXJjZVVSSS5nZXQoKSkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG93bmxvYWQuZ2V0KCkpKTsKICAgICB0ZXN0
LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVzKCk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3du
bG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIFZlY3RvcjxEb3dubG9h
ZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwog
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNSk7CkBAIC0yNDgsNiArMjQ5
LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJv
clRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4g
ZG93bmxvYWQgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSh0ZXN0
LT5tX3dlYkNvbnRleHQsICJmaWxlOi8vL2Zvby9iYXIiKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZC5nZXQoKSkpOwog
ICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkRmluaXNoZXMoKTsKKyAgICBnX2Fzc2VydCghd2Vi
a2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgVmVjdG9y
PERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxvYWRF
dmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAzKTsKQEAgLTI2
NCw2ICsyNjYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRMb2NhbEZpbGVFcnJvcihEb3du
bG9hZEVycm9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBkb3dubG9hZCA9IGFkb3B0
R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfZG93bmxvYWRfdXJpKHRlc3QtPm1fd2ViQ29udGV4dCwg
dXJpLmdldCgpKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChkb3dubG9hZC5nZXQoKSkpOwogICAgIHRlc3QtPndhaXRVbnRpbERvd25s
b2FkRmluaXNoZXMoKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmll
dyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgZXZlbnRzID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50
czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOwpAQCAtMjc5LDYg
KzI4Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZExvY2FsRmlsZUVycm9yKERvd25sb2Fk
RXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGRvd25sb2FkID0gYWRvcHRHUmVm
KHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCB1cmku
Z2V0KCkpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKGRvd25sb2FkLmdldCgpKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRG
aW5pc2hlcygpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRv
d25sb2FkLmdldCgpKSk7CiAKICAgICBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwog
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CkBAIC0zMjQsNiArMzI4
LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZShEb3dubG9hZFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSh0ZXN0LT5tX3dlYkNv
bnRleHQsIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBkZiIpLmRhdGEoKSkpOwogICAg
IHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG93
bmxvYWQuZ2V0KCkpKTsKICAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVzKCk7Cisg
ICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkp
KTsKIAogICAgIFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0
ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgp
LCA9PSwgNSk7CkBAIC0zNTEsNiArMzU2LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVt
b3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEo
KSkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1QoZG93bmxvYWQuZ2V0KCkpKTsKICAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlz
aGVzKCk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxv
YWQuZ2V0KCkpKTsKIAogICAgIFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBl
dmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVu
dHMuc2l6ZSgpLCA9PSwgNCk7CkBAIC0zNjcsNiArMzczLDcgQEAgc3RhdGljIHZvaWQgdGVzdERv
d25sb2FkUmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIGRvd25sb2FkID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9h
ZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5w
ZGYiKS5kYXRhKCkpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZp
bmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkLmdldCgpKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRG93
bmxvYWRGaW5pc2hlcygpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92
aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKICAgICBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZl
bnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CkBAIC0zODIs
NiArMzg5LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKERvd25s
b2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGRvd25sb2FkID0gYWRvcHRH
UmVmKHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCBr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKS5kYXRhKCkpKTsKICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkLmdl
dCgpKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlcygpOworICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKICAg
ICBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChl
dmVudHMuc2l6ZSgpLCA9PSwgNCk7CkBAIC0zOTQsNiArNDAyLDExMCBAQCBzdGF0aWMgdm9pZCB0
ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgdGVzdC0+Y2hlY2tEZXN0aW5hdGlvbkFuZERlbGV0ZUZpbGUoZG93bmxv
YWQuZ2V0KCksIGtTZXJ2ZXJTdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKK2NsYXNzIFdlYlZpZXdE
b3dubG9hZFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElC
X1RFU1RfRklYVFVSRShXZWJWaWV3RG93bmxvYWRUZXN0KTsKKworICAgIHN0YXRpYyB2b2lkIGRv
d25sb2FkU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdERv
d25sb2FkKiBkb3dubG9hZCwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkKKyAgICB7CisgICAg
ICAgIHRlc3QtPm1fZG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZCkpOworICAgICAg
ICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICB9CisKKyAgICBXZWJWaWV3RG93bmxvYWRUZXN0
KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0KG1fd2ViVmlldyksICJkb3dubG9hZC1zdGFydGVkIiwgR19DQUxMQkFDSyhkb3dubG9h
ZFN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIH5XZWJWaWV3RG93bmxvYWRU
ZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hl
ZCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQobV93ZWJWaWV3KSwgR19TSUdOQUxfTUFUQ0hf
REFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7CisgICAgfQorCisgICAgdm9pZCB3YWl0VW50aWxEb3du
bG9hZFN0YXJ0ZWQoKQorICAgIHsKKyAgICAgICAgbV9kb3dubG9hZCA9IDA7CisgICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgZ19hc3NlcnQobV9kb3dubG9hZC5n
ZXQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIGRvd25sb2FkRGVjaWRlRGVzdGlu
YXRpb25DYWxsYmFjayhXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAg
IEdPd25QdHI8Y2hhcj4gZGVzdGluYXRpb24oZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9y
eSwgc3VnZ2VzdGVkRmlsZW5hbWUsIE5VTEwpKTsKKyAgICAgICAgR093blB0cjxjaGFyPiBkZXN0
aW5hdGlvblVSSShnX2ZpbGVuYW1lX3RvX3VyaShkZXN0aW5hdGlvbi5nZXQoKSwgMCwgMCkpOwor
ICAgICAgICB3ZWJraXRfZG93bmxvYWRfc2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5h
dGlvblVSSS5nZXQoKSk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIGRvd25sb2FkRmluaXNoZWRDYWxsYmFjayhXZWJLaXREb3dubG9hZCogZG93bmxvYWQs
IFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5xdWl0TWFp
bkxvb3AoKTsKKyAgICB9CisKKyAgICB2b2lkIHdhaXRVbnRpbERvd25sb2FkRmluaXNoZWQoKQor
ICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX2Rvd25sb2FkLmdldCgpLCAiZGVjaWRl
LWRlc3RpbmF0aW9uIiwgR19DQUxMQkFDSyhkb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX2Rvd25sb2FkLmdldCgpLCAi
ZmluaXNoZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkRmluaXNoZWRDYWxsYmFjayksIHRoaXMpOwor
ICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgR1JlZlB0
cjxXZWJLaXREb3dubG9hZD4gbV9kb3dubG9hZDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3RG93bmxvYWRVUkkoV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IGFkb3B0R1JlZih3ZWJr
aXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpKHRlc3QtPm1fd2ViVmlldywga1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgpKSk7CisgICAgdGVzdC0+d2FpdFVudGlsRG93bmxv
YWRTdGFydGVkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9kb3du
bG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxE
b3dubG9hZEZpbmlzaGVkKCk7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBkb3dubG9hZEZpbGUgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRp
b24oZG93bmxvYWQuZ2V0KCkpKSk7CisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGRvd25sb2FkRmls
ZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oZG93bmxvYWRGaWxlLmdldCgpLCBH
X0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUsIHN0YXRpY19jYXN0PEdGaWxlUXVlcnlJbmZv
RmxhZ3M+KDApLCAwLCAwKSk7CisgICAgZ19hc3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dldF9z
aXplKGRvd25sb2FkRmlsZUluZm8uZ2V0KCkpLCA+LCAwKTsKKyAgICBnX2ZpbGVfZGVsZXRlKGRv
d25sb2FkRmlsZS5nZXQoKSwgMCwgMCk7Cit9CisKK2NsYXNzIFBvbGljeVJlc3BvbnNlRG93bmxv
YWRUZXN0OiBwdWJsaWMgV2ViVmlld0Rvd25sb2FkVGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9H
TElCX1RFU1RfRklYVFVSRShQb2xpY3lSZXNwb25zZURvd25sb2FkVGVzdCk7CisKKyAgICBzdGF0
aWMgZ2Jvb2xlYW4gZGVjaWRlUG9saWN5Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uLCBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUg
dHlwZSwgUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBp
ZiAodHlwZSAhPSBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfUkVTUE9OU0UpCisgICAgICAg
ICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3du
bG9hZChkZWNpc2lvbik7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIFBvbGlj
eVJlc3BvbnNlRG93bmxvYWRUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0soZGVjaWRlUG9saWN5Q2FsbGJh
Y2spLCB0aGlzKTsKKyAgICB9CisKKyAgICB+UG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3QoKQor
ICAgIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fd2Vi
VmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7CisgICAgfQorCisg
ICAgdm9pZCBjYW5jZWxEb3dubG9hZEFuZFdhaXRVbnRpbEZpbmlzaGVkKCkKKyAgICB7CisgICAg
ICAgIHdlYmtpdF9kb3dubG9hZF9jYW5jZWwobV9kb3dubG9hZC5nZXQoKSk7CisgICAgICAgIHdh
aXRVbnRpbERvd25sb2FkRmluaXNoZWQoKTsKKyAgICAgICAgbV9kb3dubG9hZCA9IDA7CisgICAg
fQorfTsKKworc3RhdGljIHZvaWQgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWQoUG9saWN5UmVz
cG9uc2VEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gVGVzdCB0
aGF0IGEgZG93bmxvYWQgc3RhcnRlZCBieSB0aGUgdGhlIHBvbGljeSBjaGVja2VyIGNvbnRhaW5z
IHRoZSB3ZWIgdmlldy4KKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii90ZXN0LnBkZiIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVk
KCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9kb3dubG9hZF9nZXRf
d2ViX3ZpZXcodGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpOworICAgIHRlc3QtPmNhbmNlbERvd25s
b2FkQW5kV2FpdFVudGlsRmluaXNoZWQoKTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAg
IGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwpAQCAtNDA2LDYgKzUxOCw4IEBAIHZv
aWQgYmVmb3JlQWxsKCkKICAgICBEb3dubG9hZEVycm9yVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAi
bG9jYWwtZmlsZS1lcnJvciIsIHRlc3REb3dubG9hZExvY2FsRmlsZUVycm9yKTsKICAgICBEb3du
bG9hZFRlc3Q6OmFkZCgiRG93bmxvYWRzIiwgInJlbW90ZS1maWxlIiwgdGVzdERvd25sb2FkUmVt
b3RlRmlsZSk7CiAgICAgRG93bmxvYWRFcnJvclRlc3Q6OmFkZCgiRG93bmxvYWRzIiwgInJlbW90
ZS1maWxlLWVycm9yIiwgdGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKTsKKyAgICBXZWJWaWV3
RG93bmxvYWRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZG93bmxvYWQtdXJpIiwgdGVzdFdl
YlZpZXdEb3dubG9hZFVSSSk7CisgICAgUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3Q6OmFkZCgi
RG93bmxvYWRzIiwgInBvbGljeS1kZWNpc2lvbi1kb3dubG9hZCIsIHRlc3RQb2xpY3lSZXNwb25z
ZURvd25sb2FkKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAppbmRleCBjNmZiOTE4Li45YjliNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKQEAgLTEyOCw5ICsxMjgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFt
ZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCkgPSAwOwogI2VuZGlmIC8vIFBM
QVRGT1JNKFFUKS4KIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExB
VEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopID0gMDsKLSNlbmRpZiAv
LyBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQorI2VuZGlmIC8vIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKIAogI2lmIFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShFRkwpCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCA1NmM3Y2ZlLi41ZDk1MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTI4Myw3ICsxMjgzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJh
bWVQcm94eSogZnIKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAg
IERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPmNyZWF0ZURv
d25sb2FkUHJveHkoKTsKICAgICAgICAgZG93bmxvYWRJRCA9IGRvd25sb2FkLT5kb3dubG9hZElE
KCk7Ci0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspCiAgICAgICAgIC8vIE91ciBkZXNpZ24g
ZG9lcyBub3Qgc3VwcHBvcnQgZG93bmxvYWRzIHdpdGhvdXQgYSBXZWJQYWdlLgogICAgICAgICBo
YW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOwogI2VuZGlmCkBAIC0yNzQyLDEyICsyNzQy
LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVZvbHVtZShmbG9hdCB2b2x1bWUpCiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNZWRpYVZvbHVtZSh2b2x1
bWUpLCBtX3BhZ2VJRCk7ICAgIAogfQogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVG
TCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspCiB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRv
d25sb2FkKQogewogICAgIG1fcGFnZUNsaWVudC0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25s
b2FkKTsKIH0KLSNlbmRpZiAvLyBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQorI2VuZGlm
IC8vIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKIAogI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hh
bmdlQ29udGVudHNTaXplKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTU1MjhhYi4uN2ZkNDQxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjUzLDcgKzY1Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmlu
ZyYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBM
QVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kik7CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="182980"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>