<?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>75433</bug_id>
          
          <creation_ts>2012-01-02 05:25:45 -0800</creation_ts>
          <short_desc>[GTK] Rename webkit_web_view_load_alternate_html as webkit_web_view_replace_content in WebKit2 GTK+</short_desc>
          <delta_ts>2012-01-05 02:08:26 -0800</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>
          <dependson>75465</dependson>
          
          <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>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>528472</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 05:25:45 -0800</bug_when>
    <thetext>As discussed during the WebKitGTK+ hackfest the method load_alternate_content is a bit confusing. replace_content was suggested as a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528474</commentid>
    <comment_count>1</comment_count>
      <attachid>120872</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 05:30:21 -0800</bug_when>
    <thetext>Created attachment 120872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528475</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-02 05:33:01 -0800</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>528514</commentid>
    <comment_count>3</comment_count>
      <attachid>120872</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-02 08:20:19 -0800</bug_when>
    <thetext>Comment on attachment 120872
Patch

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

Looks fine to me, but I&apos;m holding off on r+ until I understand the change in Source/WebKit2/UIProcess/WebPageProxy.cpp.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:685
&gt; + * Replace the content of @web_view with @content using @content_uri as page URI.
&gt; + * This allows clients to display page-loading errors in the #WebKitWebView itself.
&gt; + * This is typically called from
&gt; + * #WebKitWebLoaderClient::provisional-load-failed or #WebKitWebLoaderClient::load-failed
&gt; + * signals.
&gt; + * The URI passed in @base_uri has to be an absolute URI.

I think it could be useful here to explicitly mention that the difference between this and load_content is that this does not trigger load signals.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:623
&gt;      if (!m_pendingAPIRequestURL.isNull())
&gt;          return m_pendingAPIRequestURL;
&gt;  
&gt; -    // FIXME: What do we do in the case of the unreachable URL?
&gt; +    if (!m_mainFrame-&gt;unreachableURL().isEmpty())
&gt; +        return m_mainFrame-&gt;unreachableURL();
&gt;  
&gt;      switch (m_mainFrame-&gt;loadState()) {

Was this added accidentally?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528519</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 08:25:17 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 120872 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120872&amp;action=review
&gt; 
&gt; Looks fine to me, but I&apos;m holding off on r+ until I understand the change in Source/WebKit2/UIProcess/WebPageProxy.cpp.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:685
&gt; &gt; + * Replace the content of @web_view with @content using @content_uri as page URI.
&gt; &gt; + * This allows clients to display page-loading errors in the #WebKitWebView itself.
&gt; &gt; + * This is typically called from
&gt; &gt; + * #WebKitWebLoaderClient::provisional-load-failed or #WebKitWebLoaderClient::load-failed
&gt; &gt; + * signals.
&gt; &gt; + * The URI passed in @base_uri has to be an absolute URI.
&gt; 
&gt; I think it could be useful here to explicitly mention that the difference between this and load_content is that this does not trigger load signals.

Yes, I plan to do that in a new patch as soon as new loader client patch lands, because in this moment this method do actually trigger load signals. So, once we have the new loader client, I&apos;ll fix it to not trigger load signals when replacing content and I&apos;ll comment it here too.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:623
&gt; &gt;      if (!m_pendingAPIRequestURL.isNull())
&gt; &gt;          return m_pendingAPIRequestURL;
&gt; &gt;  
&gt; &gt; -    // FIXME: What do we do in the case of the unreachable URL?
&gt; &gt; +    if (!m_mainFrame-&gt;unreachableURL().isEmpty())
&gt; &gt; +        return m_mainFrame-&gt;unreachableURL();
&gt; &gt;  
&gt; &gt;      switch (m_mainFrame-&gt;loadState()) {
&gt; 
&gt; Was this added accidentally?

No, when using loadAlternateHTML the active uri is actually the unreachableURL, since it&apos;s the uri you want to use for the new page contents. Othrewise this returns about:blank.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528523</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-02 08:30:20 -0800</bug_when>
    <thetext>
&gt; &gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:623
&gt; &gt; &gt;      if (!m_pendingAPIRequestURL.isNull())
&gt; &gt; &gt;          return m_pendingAPIRequestURL;
&gt; &gt; &gt;  
&gt; &gt; &gt; -    // FIXME: What do we do in the case of the unreachable URL?
&gt; &gt; &gt; +    if (!m_mainFrame-&gt;unreachableURL().isEmpty())
&gt; &gt; &gt; +        return m_mainFrame-&gt;unreachableURL();
&gt; &gt; &gt;  
&gt; &gt; &gt;      switch (m_mainFrame-&gt;loadState()) {
&gt; &gt; 
&gt; &gt; Was this added accidentally?
&gt; 
&gt; No, when using loadAlternateHTML the active uri is actually the unreachableURL, since it&apos;s the uri you want to use for the new page contents. Othrewise this returns about:blank.

It seems like this should be in another bug, since it isn&apos;t strictly renaming the method. Another reason I say this is that I&apos;m confident enough to review the rename, but not familiar enough with this cross-platform code to review it. I&apos;m not sure Anders and Sam are interested in reviewing the API change either. It seems like it should be split off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528527</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 08:33:53 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:623
&gt; &gt; &gt; &gt;      if (!m_pendingAPIRequestURL.isNull())
&gt; &gt; &gt; &gt;          return m_pendingAPIRequestURL;
&gt; &gt; &gt; &gt;  
&gt; &gt; &gt; &gt; -    // FIXME: What do we do in the case of the unreachable URL?
&gt; &gt; &gt; &gt; +    if (!m_mainFrame-&gt;unreachableURL().isEmpty())
&gt; &gt; &gt; &gt; +        return m_mainFrame-&gt;unreachableURL();
&gt; &gt; &gt; &gt;  
&gt; &gt; &gt; &gt;      switch (m_mainFrame-&gt;loadState()) {
&gt; &gt; &gt; 
&gt; &gt; &gt; Was this added accidentally?
&gt; &gt; 
&gt; &gt; No, when using loadAlternateHTML the active uri is actually the unreachableURL, since it&apos;s the uri you want to use for the new page contents. Othrewise this returns about:blank.
&gt; 
&gt; It seems like this should be in another bug, since it isn&apos;t strictly renaming the method. Another reason I say this is that I&apos;m confident enough to review the rename, but not familiar enough with this cross-platform code to review it. I&apos;m not sure Anders and Sam are interested in reviewing the API change either. It seems like it should be split off.

You are right, I added it because it breaks the unit test, but I&apos;ll file a new bug report for it blocking this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528695</commentid>
    <comment_count>7</comment_count>
      <attachid>120919</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-03 01:32:42 -0800</bug_when>
    <thetext>Created attachment 120919
Patch without the WebPageProxy change

Note that with this patch unit tests don&apos;t pass because of bug #75465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529425</commentid>
    <comment_count>8</comment_count>
      <attachid>121088</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-04 02:17:22 -0800</bug_when>
    <thetext>Created attachment 121088
Updated patch

Updated to apply on current git master and added checks to make usre load signals are not emitted when replacing content, now that new loader client patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529552</commentid>
    <comment_count>9</comment_count>
      <attachid>121088</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-04 09:07:36 -0800</bug_when>
    <thetext>Comment on attachment 121088
Updated patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:782
&gt; + * Replace the content of @web_view with @content using @content_uri as page URI.
&gt; + * This allows clients to display page-loading errors in the #WebKitWebView itself.
&gt; + * This is typically called from #WebKitWebView::load-failed signal. The URI passed in
&gt; + * @base_uri has to be an absolute URI.
&gt; + * Signals #WebKitWebView::load-changed and #WebKitWebView::load-failed are not emitted
&gt; + * when replacing content of a #WebKitWebView using this method.

Oh, there is one more thing I forgot to mention here. The documentation should also state that the content type will be HTML. This is one way this method differs from load_content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530079</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-05 01:03:17 -0800</bug_when>
    <thetext>Ok, I&apos;ll land it with a workaround for the unit tests until #75465 is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530113</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-05 02:08:26 -0800</bug_when>
    <thetext>Committed r104129: &lt;http://trac.webkit.org/changeset/104129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120872</attachid>
            <date>2012-01-02 05:30:21 -0800</date>
            <delta_ts>2012-01-03 01:32:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-replace-content.diff</filename>
            <type>text/plain</type>
            <size>14690</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMDE5ZGUzLi5hMjZlODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTItMDEtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFJlbmFtZSB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVf
aHRtbCBhcyB3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250ZW50IGluIFdlYktpdDIgR1RLKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJM
b2FkZXJDbGllbnRMb2FkRmFpbGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3QpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0
UmVwbGFjZUNvbnRlbnQpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6
cmVwbGFjZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZp
ZXdUZXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWN0aXZlVVJMKTogUmV0dXJuIHRoZSB1bnJlYWNoYWJs
ZSBVUkwgYXMKKyAgICAgICAgdGhlIGFjdGl2ZSBVUkwgd2hlbiBpdCBoYXMgYmVlbiBwcm92aWRl
ZC4KKwogMjAxMi0wMS0wMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEVudmlyb25tZW50VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcgZW50
ZXJzIGFuIGluZmluaXRlIGxvb3AgaWYgdGhlIHNlYXJjaCB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5j
cHAKaW5kZXggNmNlYzQ2Zi4uNzYyZWM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTUs
NyArMTk1LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYkxvYWRlckNsaWVudExvYWRGYWls
ZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFcKICAgICAgICAgcmV0dXJuIEZBTFNF
OwogCiAgICAgR093blB0cjxjaGFyPiBodG1sU3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiPGh0bWw+
PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIsIGVycm9yLT5tZXNzYWdlKSk7Ci0gICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwod2ViVmlldywgaHRtbFN0cmluZy5nZXQoKSwgMCwg
ZmFpbGluZ1VSSSk7CisgICAgd2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudCh3ZWJWaWV3
LCBodG1sU3RyaW5nLmdldCgpLCBmYWlsaW5nVVJJLCAwKTsKIAogICAgIHJldHVybiBUUlVFOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcAppbmRleCA3OTg5NmQxLi4wMDY0ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjUwLDUyICs2NTAsNTEgQEAg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGNvbnN0IGdjaGFyKiBwbGFpblQKIH0KIAogLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9hbHRlcm5hdGVfaHRtbDoKKyAqIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3Q6CiAgKiBA
d2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEBjb250ZW50OiB0aGUgYWx0ZXJuYXRlIGNv
bnRlbnQgdG8gZGlzcGxheSBhcyB0aGUgbWFpbiBwYWdlIG9mIHRoZSBAd2ViX3ZpZXcKLSAqIEBi
YXNlX3VyaTogdGhlIGJhc2UgVVJJIGZvciByZWxhdGl2ZSBsb2NhdGlvbnMKLSAqIEB1bnJlYWNo
YWJsZV91cmk6IHRoZSBVUkkgZm9yIHRoZSBhbHRlcm5hdGUgcGFnZSBjb250ZW50CisgKiBAcmVx
dWVzdDogYSAjV2ViS2l0VVJJUmVxdWVzdCB0byBsb2FkCiAgKgotICogUmVxdWVzdCBsb2FkaW5n
IG9mIGFuIGFsdGVybmF0ZSBjb250ZW50IGZvciBhIFVSSSB0aGF0IGlzIHVucmVhY2hhYmxlLiBU
aGlzIGFsbG93cyBjbGllbnRzCi0gKiB0byBkaXNwbGF5IHBhZ2UtbG9hZGluZyBlcnJvcnMgaW4g
dGhlICNXZWJLaXRXZWJWaWV3IGl0c2VsZi4gVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGZyb20K
LSAqICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQtZmFpbGVkIG9yICNX
ZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtZmFpbGVkCi0gKiBzaWduYWxzLgotICogV2hlbiBj
YWxsZWQgZnJvbSB0aG9zZSBzaWduYWxzIHRoaXMgbWV0aG9kIHdpbGwgcHJlc2VydmUgdGhlIGJh
Y2stZm9yd2FyZCBsaXN0LiBUaGUgVVJJIHBhc3NlZCBpbgotICogQGJhc2VfdXJpIGhhcyB0byBi
ZSBhbiBhYnNvbHV0ZSBVUkkuCisgKiBSZXF1ZXN0cyBsb2FkaW5nIG9mIHRoZSBzcGVjaWZpZWQg
I1dlYktpdFVSSVJlcXVlc3QuCiAgKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0aGUg
bG9hZCBvcGVyYXRpb24gdXNpbmcgdGhlCiAgKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IG9mIEB3
ZWJfdmlldy4gU2VlIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudCgpLgogICovCi12
b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IGdjaGFyKiBjb250ZW50LCBjb25zdCBnY2hhciogYmFzZVVSSSwgY29uc3Qg
Z2NoYXIqIHVucmVhY2hhYmxlVVJJKQordm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoY29udGVudCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
VVJJX1JFUVVFU1QocmVxdWVzdCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGh0
bWxTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29udGVudCkp
OwotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBiYXNlVVJMID0gYmFzZVVSSSA/IGFkb3B0V0so
V0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFzZVVSSSkpIDogMDsKLSAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSSSA/IGFkb3B0V0soV0tV
UkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodW5yZWFjaGFibGVVUkkpKSA6IDA7CisgICAgV0tSZXRh
aW5QdHI8V0tVUkxSZWY+IHdrVVJMKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZXF1ZXN0UmVmPiB3a1JlcXVlc3QoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0
aFdLVVJMKHdrVVJMLmdldCgpKSk7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKLSAgICBXS1Bh
Z2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyh0b0FQSShwYWdlKSwgaHRtbFN0cmluZy5nZXQoKSwg
YmFzZVVSTC5nZXQoKSwgdW5yZWFjaGFibGVVUkwuZ2V0KCkpOworICAgIFdLUGFnZUxvYWRVUkxS
ZXF1ZXN0KHRvQVBJKHBhZ2UpLCB3a1JlcXVlc3QuZ2V0KCkpOwogICAgIHdlYmtpdFdlYlZpZXdV
cGRhdGVVUkkod2ViVmlldyk7CiB9CiAKIC8qKgotICogd2Via2l0X3dlYl92aWV3X2xvYWRfcmVx
dWVzdDoKKyAqIHdlYmtpdF93ZWJfdmlld19yZXBsYWNlX2NvbnRlbnQ6CiAgKiBAd2ViX3ZpZXc6
IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZXF1ZXN0OiBhICNXZWJLaXRVUklSZXF1ZXN0IHRvIGxv
YWQKKyAqIEBjb250ZW50OiB0aGUgbmV3IGNvbnRlbnQgdG8gZGlzcGxheSBhcyB0aGUgbWFpbiBw
YWdlIG9mIHRoZSBAd2ViX3ZpZXcKKyAqIEBjb250ZW50X3VyaTogdGhlIFVSSSBmb3IgdGhlIHBh
Z2UgY29udGVudAorICogQGJhc2VfdXJpOiAoYWxsb3ctbm9uZSk6IHRoZSBiYXNlIFVSSSBmb3Ig
cmVsYXRpdmUgbG9jYXRpb25zIG9yICVOVUxMCiAgKgotICogUmVxdWVzdHMgbG9hZGluZyBvZiB0
aGUgc3BlY2lmaWVkICNXZWJLaXRVUklSZXF1ZXN0LgotICogWW91IGNhbiBtb25pdG9yIHRoZSBz
dGF0dXMgb2YgdGhlIGxvYWQgb3BlcmF0aW9uIHVzaW5nIHRoZQotICogI1dlYktpdFdlYkxvYWRl
ckNsaWVudCBvZiBAd2ViX3ZpZXcuIFNlZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGll
bnQoKS4KKyAqIFJlcGxhY2UgdGhlIGNvbnRlbnQgb2YgQHdlYl92aWV3IHdpdGggQGNvbnRlbnQg
dXNpbmcgQGNvbnRlbnRfdXJpIGFzIHBhZ2UgVVJJLgorICogVGhpcyBhbGxvd3MgY2xpZW50cyB0
byBkaXNwbGF5IHBhZ2UtbG9hZGluZyBlcnJvcnMgaW4gdGhlICNXZWJLaXRXZWJWaWV3IGl0c2Vs
Zi4KKyAqIFRoaXMgaXMgdHlwaWNhbGx5IGNhbGxlZCBmcm9tCisgKiAjV2ViS2l0V2ViTG9hZGVy
Q2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLWZhaWxlZCBvciAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50
Ojpsb2FkLWZhaWxlZAorICogc2lnbmFscy4KKyAqIFRoZSBVUkkgcGFzc2VkIGluIEBiYXNlX3Vy
aSBoYXMgdG8gYmUgYW4gYWJzb2x1dGUgVVJJLgogICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19s
b2FkX3JlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VVJJUmVxdWVzdCogcmVx
dWVzdCkKK3ZvaWQgd2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2NoYXIqIGNvbnRlbnRVUkks
IGNvbnN0IGdjaGFyKiBiYXNlVVJJKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VUklf
UkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKGNvbnRlbnRVUkkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+
IHdrVVJMKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHdlYmtpdF91cmlfcmVx
dWVzdF9nZXRfdXJpKHJlcXVlc3QpKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1ZXN0UmVm
PiB3a1JlcXVlc3QoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aFdLVVJMKHdrVVJMLmdl
dCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGh0bWxTdHJpbmcoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29udGVudCkpOworICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiBjb250ZW50VVJMKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KGNvbnRlbnRVUkkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gYmFzZVVSTCA9IGJhc2VV
UkkgPyBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhc2VVUkkpKSA6IDA7CiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9X
RUJfVklFV19CQVNFKHdlYlZpZXcpKTsKLSAgICBXS1BhZ2VMb2FkVVJMUmVxdWVzdCh0b0FQSShw
YWdlKSwgd2tSZXF1ZXN0LmdldCgpKTsKKyAgICBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
Zyh0b0FQSShwYWdlKSwgaHRtbFN0cmluZy5nZXQoKSwgYmFzZVVSTC5nZXQoKSwgY29udGVudFVS
TC5nZXQoKSk7CiAgICAgd2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKIH0KIApAQCAt
ODQ2LDcgKzg0NSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICogICAgIHRoZSByZXF1ZXN0ZWQgVVJJIGlzIHRoZSBn
aXZlbiBvbmUuCiAgKiAgIDwvcGFyYT48L2xpc3RpdGVtPgogICogICA8bGlzdGl0ZW0+PHBhcmE+
Ci0gKiAgICAgSWYgdGhlIGxvYWQgb3BlcmF0aW9uIHdhcyBzdGFydGVkIGJ5IHdlYmtpdF93ZWJf
dmlld19sb2FkX2FsdGVybmF0ZV9odG1sKCksCisgKiAgICAgSWYgdGhlIGxvYWQgb3BlcmF0aW9u
IHdhcyBzdGFydGVkIGJ5IHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwoKSwKICAqICAgICB0aGUg
cmVxdWVzdGVkIFVSSSBpcyAiYWJvdXQ6YmxhbmsiLgogICogICA8L3BhcmE+PC9saXN0aXRlbT4K
ICAqICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtODczLDYgKzg3MiwxMCBAQCBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqICAg
YSBuZXcgbG9hZCBvcGVyYXRpb24gaXMgc3RhcnRlZCBvciBhIG5hdmlnYXRpb24gYWN0aW9uIHdp
dGhpbiB0aGUKICAqICAgc2FtZSBwYWdlIGlzIHBlcmZvcm1lZC4KICAqIDwvcGFyYT48L2xpc3Rp
dGVtPgorICogPGxpc3RpdGVtPjxwYXJhPgorICogICBXaGVuIHRoZSBwYWdlIGNvbnRlbnQgaXMg
cmVwbGFjZWQgdXNpbmcgd2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudCgpLAorICogICB0
aGUgYWN0aXZlIFVSSSBpcyB0aGUgY29udGVudF91cmkgcHJvdmlkZWQuCisgKiA8L3BhcmE+PC9s
aXN0aXRlbT4KICAqIDwvb3JkZXJlZGxpc3Q+CiAgKgogICogWW91IGNhbiBtb25pdG9yIHRoZSBh
Y3RpdmUgVVJJIGJ5IGNvbm5lY3RpbmcgdG8gdGhlIG5vdGlmeTo6dXJpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMDQ0YjA2MC4u
YjI1MDczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaApAQCAtMTE2LDE3ICsxMTYsMTggQEAgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxh
aW5fdGV4dCAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAgICAgICpwbGFpbl90ZXh0KTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRf
d2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbCAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqY29udGVudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
ICAgICpiYXNlX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICp1bnJlYWNoYWJsZV91cmkpOwotV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0ICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAqcmVx
dWVzdCk7CiAKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250ZW50ICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAg
ICAqY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpjb250ZW50X3VyaSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAg
ICpiYXNlX3VyaSk7CisKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYl92aWV3
X2dldF90aXRsZSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggNGMyZjYwNS4uZDk2
YmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC01NCw4ICs1NCw4IEBAIHdlYmtp
dF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudAogd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpCiB3
ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0
Ci13ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbAogd2Via2l0X3dlYl92aWV3X2xv
YWRfcmVxdWVzdAord2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudAogd2Via2l0X3dlYl92
aWV3X2Nhbl9nb19iYWNrCiB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjawogd2Via2l0X3dlYl92aWV3
X2Nhbl9nb19mb3J3YXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDAyN2ZmMDguLjc2MmFhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGll
bnQuY3BwCkBAIC03NywxMyArNzcsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0TG9hZFBsYWluVGV4dChM
b2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGFzc2VydE5vcm1hbExv
YWRIYXBwZW5lZEFuZENsZWFyRXZlbnRzKHRlc3QtPm1fbG9hZEV2ZW50cyk7CiB9CiAKLXN0YXRp
YyB2b2lkIHRlc3RMb2FkQWx0ZXJuYXRlQ29udGVudChMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQotewotICAgIHRlc3QtPmxvYWRBbHRlcm5hdGVIVE1MKCI8aHRtbD48Ym9k
eT5BbHRlcm5hdGUgQ29udGVudDwvYm9keT48L2h0bWw+IiwgMCwga1NlcnZlci0+Z2V0VVJJRm9y
UGF0aCgiL2FsdGVybmF0ZSIpLmRhdGEoKSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7Ci0gICAgYXNzZXJ0Tm9ybWFsTG9hZEhhcHBlbmVkQW5kQ2xlYXJFdmVudHModGVzdC0+
bV9sb2FkRXZlbnRzKTsKLX0KLQogc3RhdGljIHZvaWQgdGVzdExvYWRSZXF1ZXN0KExvYWRUcmFj
a2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRVUklS
ZXF1ZXN0PiByZXF1ZXN0KHdlYmtpdF91cmlfcmVxdWVzdF9uZXcoa1NlcnZlci0+Z2V0VVJJRm9y
UGF0aCgiL25vcm1hbCIpLmRhdGEoKSkpOwpAQCAtMTI0LDYgKzExNywxMyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0TG9hZENhbmNlbGxlZChMb2FkU3RvcFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVz
dDo6TG9hZEZhaWxlZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RSZXBsYWNlQ29udGVudChMb2Fk
VHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnJlcGxhY2VD
b250ZW50KCI8aHRtbD48Ym9keT5OZXcgQ29udGVudDwvYm9keT48L2h0bWw+Iiwga1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiL3JlcGxhY2VkIikuZGF0YSgpLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKyAgICBhc3NlcnROb3JtYWxMb2FkSGFwcGVuZWRBbmRDbGVhckV2
ZW50cyh0ZXN0LT5tX2xvYWRFdmVudHMpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Rp
dGxlKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGVzdC0+bV93ZWJWaWV3KSk7CkBAIC0yNTMs
OSArMjUzLDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViTG9hZGVyQ2xpZW50IiwgImxvYWRpbmctZXJyb3IiLCB0ZXN0TG9hZGluZ0Vycm9y
KTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1odG1s
IiwgdGVzdExvYWRIdG1sKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAibG9hZC1wbGFpbi10ZXh0IiwgdGVzdExvYWRQbGFpblRleHQpOwotICAgIExvYWRUcmFj
a2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJsb2FkLWFsdGVybmF0ZS1jb250ZW50Iiwg
dGVzdExvYWRBbHRlcm5hdGVDb250ZW50KTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAibG9hZC1yZXF1ZXN0IiwgdGVzdExvYWRSZXF1ZXN0KTsKICAgICBMb2Fk
U3RvcFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN0b3AtbG9hZGluZyIsIHRl
c3RMb2FkQ2FuY2VsbGVkKTsKKyAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAicmVwbGFjZS1jb250ZW50IiwgdGVzdFJlcGxhY2VDb250ZW50KTsKICAgICBMb2FkVHJh
Y2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidGl0bGUiLCB0ZXN0V2ViVmlld1RpdGxl
KTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicHJvZ3Jlc3Mi
LCB0ZXN0TG9hZFByb2dyZXNzKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAicmVsb2FkIiwgdGVzdFdlYlZpZXdSZWxvYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDIw
MTE1ZjUuLjkzMjNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTU4LDE4ICs1OCwxOCBAQCB2b2lkIFdl
YlZpZXdUZXN0Ojpsb2FkUGxhaW5UZXh0KGNvbnN0IGNoYXIqIHBsYWluVGV4dCkKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KG1fd2ViVmlldywgcGxhaW5UZXh0KTsKIH0KIAot
dm9pZCBXZWJWaWV3VGVzdDo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgY2hhciogaHRtbCwgY29u
c3QgY2hhciogYmFzZVVSSSwgY29uc3QgY2hhciogdW5yZWFjaGFibGVVUkkpCi17Ci0gICAgbV9h
Y3RpdmVVUkkgPSAiYWJvdXQ6YmxhbmsiOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVy
bmF0ZV9odG1sKG1fd2ViVmlldywgaHRtbCwgYmFzZVVSSSwgdW5yZWFjaGFibGVVUkkpOwotfQot
CiB2b2lkIFdlYlZpZXdUZXN0Ojpsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0
KQogewogICAgIG1fYWN0aXZlVVJJID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVz
dCk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChtX3dlYlZpZXcsIHJlcXVlc3Qp
OwogfQogCit2b2lkIFdlYlZpZXdUZXN0OjpyZXBsYWNlQ29udGVudChjb25zdCBjaGFyKiBodG1s
LCBjb25zdCBjaGFyKiBjb250ZW50VVJJLCBjb25zdCBjaGFyKiBiYXNlVVJJKQoreworICAgIG1f
YWN0aXZlVVJJID0gY29udGVudFVSSTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250
ZW50KG1fd2ViVmlldywgaHRtbCwgY29udGVudFVSSSwgYmFzZVVSSSk7Cit9CisKIHZvaWQgV2Vi
Vmlld1Rlc3Q6OmdvQmFjaygpCiB7CiAgICAgaWYgKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFj
ayhtX3dlYlZpZXcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViVmlld1Rlc3QuaAppbmRleCAwZDEzY2ZjLi42NjIzNTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgK
QEAgLTM0LDggKzM0LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZFVSSShjb25zdCBjaGFyKiB1
cmkpOwogICAgIHZvaWQgbG9hZEh0bWwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFz
ZVVSSSk7CiAgICAgdm9pZCBsb2FkUGxhaW5UZXh0KGNvbnN0IGNoYXIqIHBsYWluVGV4dCk7Ci0g
ICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBi
YXNlVVJJLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZVVSSSk7CiAgICAgdm9pZCBsb2FkUmVxdWVz
dChXZWJLaXRVUklSZXF1ZXN0Kik7CisgICAgdm9pZCByZXBsYWNlQ29udGVudChjb25zdCBjaGFy
KiBodG1sLCBjb25zdCBjaGFyKiBjb250ZW50VVJJLCBjb25zdCBjaGFyKiBiYXNlVVJJKTsKICAg
ICB2b2lkIGdvQmFjaygpOwogICAgIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAgdm9pZCBnb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbShXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZhZjJjZjQuLjdlMjk2NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02MTcsNyArNjE3
LDggQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6YWN0aXZlVVJMKCkgY29uc3QKICAgICBpZiAoIW1f
cGVuZGluZ0FQSVJlcXVlc3RVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBtX3BlbmRpbmdB
UElSZXF1ZXN0VVJMOwogCi0gICAgLy8gRklYTUU6IFdoYXQgZG8gd2UgZG8gaW4gdGhlIGNhc2Ug
b2YgdGhlIHVucmVhY2hhYmxlIFVSTD8KKyAgICBpZiAoIW1fbWFpbkZyYW1lLT51bnJlYWNoYWJs
ZVVSTCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT51bnJlYWNoYWJs
ZVVSTCgpOwogCiAgICAgc3dpdGNoIChtX21haW5GcmFtZS0+bG9hZFN0YXRlKCkpIHsKICAgICBj
YXNlIFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0ZVByb3Zpc2lvbmFsOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120919</attachid>
            <date>2012-01-03 01:32:42 -0800</date>
            <delta_ts>2012-01-04 02:17:22 -0800</delta_ts>
            <desc>Patch without the WebPageProxy change</desc>
            <filename>wk2-replace-content2.diff</filename>
            <type>text/plain</type>
            <size>13843</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YjlkZTNhMC4uZTdkM2FjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDEyLTAxLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBSZW5hbWUgd2Via2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRl
X2h0bWwgYXMgd2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudCBpbiBXZWJLaXQyIEdUSysK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAod2Via2l0V2Vi
TG9hZGVyQ2xpZW50TG9hZEZhaWxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZXBsYWNlX2NvbnRlbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAodGVz
dFJlcGxhY2VDb250ZW50KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6
OnJlcGxhY2VDb250ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJW
aWV3VGVzdC5oOgorCiAyMDEyLTAxLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4ZWQgYSB0eXBvIEkgbWFkZSBpbiByMTAzODcxLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVu
dC5jcHAKaW5kZXggNmNlYzQ2Zi4uNzYyZWM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYkxvYWRlckNsaWVudExvYWRG
YWlsZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFcKICAgICAgICAgcmV0dXJuIEZB
TFNFOwogCiAgICAgR093blB0cjxjaGFyPiBodG1sU3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiPGh0
bWw+PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIsIGVycm9yLT5tZXNzYWdlKSk7Ci0gICAgd2Via2l0
X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwod2ViVmlldywgaHRtbFN0cmluZy5nZXQoKSwg
MCwgZmFpbGluZ1VSSSk7CisgICAgd2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudCh3ZWJW
aWV3LCBodG1sU3RyaW5nLmdldCgpLCBmYWlsaW5nVVJJLCAwKTsKIAogICAgIHJldHVybiBUUlVF
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCA3OTg5NmQxLi4wMDY0ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjUwLDUyICs2NTAsNTEg
QEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IGdjaGFyKiBwbGFpblQKIH0KIAogLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9hbHRlcm5hdGVfaHRtbDoKKyAqIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3Q6CiAg
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEBjb250ZW50OiB0aGUgYWx0ZXJuYXRl
IGNvbnRlbnQgdG8gZGlzcGxheSBhcyB0aGUgbWFpbiBwYWdlIG9mIHRoZSBAd2ViX3ZpZXcKLSAq
IEBiYXNlX3VyaTogdGhlIGJhc2UgVVJJIGZvciByZWxhdGl2ZSBsb2NhdGlvbnMKLSAqIEB1bnJl
YWNoYWJsZV91cmk6IHRoZSBVUkkgZm9yIHRoZSBhbHRlcm5hdGUgcGFnZSBjb250ZW50CisgKiBA
cmVxdWVzdDogYSAjV2ViS2l0VVJJUmVxdWVzdCB0byBsb2FkCiAgKgotICogUmVxdWVzdCBsb2Fk
aW5nIG9mIGFuIGFsdGVybmF0ZSBjb250ZW50IGZvciBhIFVSSSB0aGF0IGlzIHVucmVhY2hhYmxl
LiBUaGlzIGFsbG93cyBjbGllbnRzCi0gKiB0byBkaXNwbGF5IHBhZ2UtbG9hZGluZyBlcnJvcnMg
aW4gdGhlICNXZWJLaXRXZWJWaWV3IGl0c2VsZi4gVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGZy
b20KLSAqICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQtZmFpbGVkIG9y
ICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtZmFpbGVkCi0gKiBzaWduYWxzLgotICogV2hl
biBjYWxsZWQgZnJvbSB0aG9zZSBzaWduYWxzIHRoaXMgbWV0aG9kIHdpbGwgcHJlc2VydmUgdGhl
IGJhY2stZm9yd2FyZCBsaXN0LiBUaGUgVVJJIHBhc3NlZCBpbgotICogQGJhc2VfdXJpIGhhcyB0
byBiZSBhbiBhYnNvbHV0ZSBVUkkuCisgKiBSZXF1ZXN0cyBsb2FkaW5nIG9mIHRoZSBzcGVjaWZp
ZWQgI1dlYktpdFVSSVJlcXVlc3QuCiAgKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0
aGUgbG9hZCBvcGVyYXRpb24gdXNpbmcgdGhlCiAgKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IG9m
IEB3ZWJfdmlldy4gU2VlIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudCgpLgogICov
Ci12b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBjb250ZW50LCBjb25zdCBnY2hhciogYmFzZVVSSSwgY29u
c3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJJKQordm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1
ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QpCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwotICAg
IGdfcmV0dXJuX2lmX2ZhaWwoY29udGVudCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGh0bWxTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29udGVu
dCkpOwotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBiYXNlVVJMID0gYmFzZVVSSSA/IGFkb3B0
V0soV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFzZVVSSSkpIDogMDsKLSAgICBXS1JldGFp
blB0cjxXS1VSTFJlZj4gdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSSSA/IGFkb3B0V0so
V0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodW5yZWFjaGFibGVVUkkpKSA6IDA7CisgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IHdrVVJMKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZXF1ZXN0UmVmPiB3a1JlcXVlc3QoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q3JlYXRl
V2l0aFdLVVJMKHdrVVJMLmdldCgpKSk7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0
V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKLSAgICBX
S1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyh0b0FQSShwYWdlKSwgaHRtbFN0cmluZy5nZXQo
KSwgYmFzZVVSTC5nZXQoKSwgdW5yZWFjaGFibGVVUkwuZ2V0KCkpOworICAgIFdLUGFnZUxvYWRV
UkxSZXF1ZXN0KHRvQVBJKHBhZ2UpLCB3a1JlcXVlc3QuZ2V0KCkpOwogICAgIHdlYmtpdFdlYlZp
ZXdVcGRhdGVVUkkod2ViVmlldyk7CiB9CiAKIC8qKgotICogd2Via2l0X3dlYl92aWV3X2xvYWRf
cmVxdWVzdDoKKyAqIHdlYmtpdF93ZWJfdmlld19yZXBsYWNlX2NvbnRlbnQ6CiAgKiBAd2ViX3Zp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZXF1ZXN0OiBhICNXZWJLaXRVUklSZXF1ZXN0IHRv
IGxvYWQKKyAqIEBjb250ZW50OiB0aGUgbmV3IGNvbnRlbnQgdG8gZGlzcGxheSBhcyB0aGUgbWFp
biBwYWdlIG9mIHRoZSBAd2ViX3ZpZXcKKyAqIEBjb250ZW50X3VyaTogdGhlIFVSSSBmb3IgdGhl
IHBhZ2UgY29udGVudAorICogQGJhc2VfdXJpOiAoYWxsb3ctbm9uZSk6IHRoZSBiYXNlIFVSSSBm
b3IgcmVsYXRpdmUgbG9jYXRpb25zIG9yICVOVUxMCiAgKgotICogUmVxdWVzdHMgbG9hZGluZyBv
ZiB0aGUgc3BlY2lmaWVkICNXZWJLaXRVUklSZXF1ZXN0LgotICogWW91IGNhbiBtb25pdG9yIHRo
ZSBzdGF0dXMgb2YgdGhlIGxvYWQgb3BlcmF0aW9uIHVzaW5nIHRoZQotICogI1dlYktpdFdlYkxv
YWRlckNsaWVudCBvZiBAd2ViX3ZpZXcuIFNlZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9j
bGllbnQoKS4KKyAqIFJlcGxhY2UgdGhlIGNvbnRlbnQgb2YgQHdlYl92aWV3IHdpdGggQGNvbnRl
bnQgdXNpbmcgQGNvbnRlbnRfdXJpIGFzIHBhZ2UgVVJJLgorICogVGhpcyBhbGxvd3MgY2xpZW50
cyB0byBkaXNwbGF5IHBhZ2UtbG9hZGluZyBlcnJvcnMgaW4gdGhlICNXZWJLaXRXZWJWaWV3IGl0
c2VsZi4KKyAqIFRoaXMgaXMgdHlwaWNhbGx5IGNhbGxlZCBmcm9tCisgKiAjV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLWZhaWxlZCBvciAjV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50Ojpsb2FkLWZhaWxlZAorICogc2lnbmFscy4KKyAqIFRoZSBVUkkgcGFzc2VkIGluIEBiYXNl
X3VyaSBoYXMgdG8gYmUgYW4gYWJzb2x1dGUgVVJJLgogICovCi12b2lkIHdlYmtpdF93ZWJfdmll
d19sb2FkX3JlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VVJJUmVxdWVzdCog
cmVxdWVzdCkKK3ZvaWQgd2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2NoYXIqIGNvbnRlbnRV
UkksIGNvbnN0IGdjaGFyKiBiYXNlVVJJKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19V
UklfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKGNvbnRlbnRVUkkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IHdrVVJMKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHdlYmtpdF91cmlf
cmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1ZXN0
UmVmPiB3a1JlcXVlc3QoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aFdLVVJMKHdrVVJM
LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGh0bWxTdHJpbmcoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29udGVudCkpOworICAgIFdLUmV0YWlu
UHRyPFdLVVJMUmVmPiBjb250ZW50VVJMKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGNvbnRlbnRVUkkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gYmFzZVVSTCA9IGJh
c2VVUkkgPyBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhc2VVUkkpKSA6IDA7
CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJ
VF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKLSAgICBXS1BhZ2VMb2FkVVJMUmVxdWVzdCh0b0FQ
SShwYWdlKSwgd2tSZXF1ZXN0LmdldCgpKTsKKyAgICBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZyh0b0FQSShwYWdlKSwgaHRtbFN0cmluZy5nZXQoKSwgYmFzZVVSTC5nZXQoKSwgY29udGVu
dFVSTC5nZXQoKSk7CiAgICAgd2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKIH0KIApA
QCAtODQ2LDcgKzg0NSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2Fy
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICogICAgIHRoZSByZXF1ZXN0ZWQgVVJJIGlzIHRo
ZSBnaXZlbiBvbmUuCiAgKiAgIDwvcGFyYT48L2xpc3RpdGVtPgogICogICA8bGlzdGl0ZW0+PHBh
cmE+Ci0gKiAgICAgSWYgdGhlIGxvYWQgb3BlcmF0aW9uIHdhcyBzdGFydGVkIGJ5IHdlYmtpdF93
ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKCksCisgKiAgICAgSWYgdGhlIGxvYWQgb3BlcmF0
aW9uIHdhcyBzdGFydGVkIGJ5IHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwoKSwKICAqICAgICB0
aGUgcmVxdWVzdGVkIFVSSSBpcyAiYWJvdXQ6YmxhbmsiLgogICogICA8L3BhcmE+PC9saXN0aXRl
bT4KICAqICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtODczLDYgKzg3MiwxMCBAQCBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAq
ICAgYSBuZXcgbG9hZCBvcGVyYXRpb24gaXMgc3RhcnRlZCBvciBhIG5hdmlnYXRpb24gYWN0aW9u
IHdpdGhpbiB0aGUKICAqICAgc2FtZSBwYWdlIGlzIHBlcmZvcm1lZC4KICAqIDwvcGFyYT48L2xp
c3RpdGVtPgorICogPGxpc3RpdGVtPjxwYXJhPgorICogICBXaGVuIHRoZSBwYWdlIGNvbnRlbnQg
aXMgcmVwbGFjZWQgdXNpbmcgd2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudCgpLAorICog
ICB0aGUgYWN0aXZlIFVSSSBpcyB0aGUgY29udGVudF91cmkgcHJvdmlkZWQuCisgKiA8L3BhcmE+
PC9saXN0aXRlbT4KICAqIDwvb3JkZXJlZGxpc3Q+CiAgKgogICogWW91IGNhbiBtb25pdG9yIHRo
ZSBhY3RpdmUgVVJJIGJ5IGNvbm5lY3RpbmcgdG8gdGhlIG5vdGlmeTo6dXJpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMDQ0YjA2
MC4uYjI1MDczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaApAQCAtMTE2LDE3ICsxMTYsMTggQEAgd2Via2l0X3dlYl92aWV3X2xvYWRf
cGxhaW5fdGV4dCAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92
aWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAgICAgICpwbGFpbl90ZXh0KTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJr
aXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbCAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqY29udGVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAg
ICAgICAgICpiYXNlX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICp1bnJlYWNoYWJsZV91cmkpOwotV0VC
S0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0ICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAq
cmVxdWVzdCk7CiAKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGlu
ZyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsK
IAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250ZW50ICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
ICAgICAqY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpjb250ZW50X3VyaSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
ICAgICpiYXNlX3VyaSk7CisKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYl92
aWV3X2dldF90aXRsZSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggNGMyZjYwNS4u
ZDk2YmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC01NCw4ICs1NCw4IEBAIHdl
YmtpdF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudAogd2Via2l0X3dlYl92aWV3X2xvYWRfdXJp
CiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90
ZXh0Ci13ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbAogd2Via2l0X3dlYl92aWV3
X2xvYWRfcmVxdWVzdAord2Via2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudAogd2Via2l0X3dl
Yl92aWV3X2Nhbl9nb19iYWNrCiB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjawogd2Via2l0X3dlYl92
aWV3X2Nhbl9nb19mb3J3YXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDAyN2ZmMDguLjc2MmFhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJD
bGllbnQuY3BwCkBAIC03NywxMyArNzcsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0TG9hZFBsYWluVGV4
dChMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGFzc2VydE5vcm1h
bExvYWRIYXBwZW5lZEFuZENsZWFyRXZlbnRzKHRlc3QtPm1fbG9hZEV2ZW50cyk7CiB9CiAKLXN0
YXRpYyB2b2lkIHRlc3RMb2FkQWx0ZXJuYXRlQ29udGVudChMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQotewotICAgIHRlc3QtPmxvYWRBbHRlcm5hdGVIVE1MKCI8aHRtbD48
Ym9keT5BbHRlcm5hdGUgQ29udGVudDwvYm9keT48L2h0bWw+IiwgMCwga1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL2FsdGVybmF0ZSIpLmRhdGEoKSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7Ci0gICAgYXNzZXJ0Tm9ybWFsTG9hZEhhcHBlbmVkQW5kQ2xlYXJFdmVudHModGVz
dC0+bV9sb2FkRXZlbnRzKTsKLX0KLQogc3RhdGljIHZvaWQgdGVzdExvYWRSZXF1ZXN0KExvYWRU
cmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRV
UklSZXF1ZXN0PiByZXF1ZXN0KHdlYmtpdF91cmlfcmVxdWVzdF9uZXcoa1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL25vcm1hbCIpLmRhdGEoKSkpOwpAQCAtMTI0LDYgKzExNywxMyBAQCBzdGF0aWMg
dm9pZCB0ZXN0TG9hZENhbmNlbGxlZChMb2FkU3RvcFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5n
VGVzdDo6TG9hZEZhaWxlZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RSZXBsYWNlQ29udGVudChM
b2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnJlcGxh
Y2VDb250ZW50KCI8aHRtbD48Ym9keT5OZXcgQ29udGVudDwvYm9keT48L2h0bWw+Iiwga1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL3JlcGxhY2VkIikuZGF0YSgpLCAwKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBhc3NlcnROb3JtYWxMb2FkSGFwcGVuZWRBbmRDbGVh
ckV2ZW50cyh0ZXN0LT5tX2xvYWRFdmVudHMpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d1RpdGxlKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGVzdC0+bV93ZWJWaWV3KSk7CkBAIC0y
NTMsOSArMjUzLDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViTG9hZGVyQ2xpZW50IiwgImxvYWRpbmctZXJyb3IiLCB0ZXN0TG9hZGluZ0Vy
cm9yKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1o
dG1sIiwgdGVzdExvYWRIdG1sKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAibG9hZC1wbGFpbi10ZXh0IiwgdGVzdExvYWRQbGFpblRleHQpOwotICAgIExvYWRU
cmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJsb2FkLWFsdGVybmF0ZS1jb250ZW50
IiwgdGVzdExvYWRBbHRlcm5hdGVDb250ZW50KTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAibG9hZC1yZXF1ZXN0IiwgdGVzdExvYWRSZXF1ZXN0KTsKICAgICBM
b2FkU3RvcFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN0b3AtbG9hZGluZyIs
IHRlc3RMb2FkQ2FuY2VsbGVkKTsKKyAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAicmVwbGFjZS1jb250ZW50IiwgdGVzdFJlcGxhY2VDb250ZW50KTsKICAgICBMb2Fk
VHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidGl0bGUiLCB0ZXN0V2ViVmlld1Rp
dGxlKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicHJvZ3Jl
c3MiLCB0ZXN0TG9hZFByb2dyZXNzKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAicmVsb2FkIiwgdGVzdFdlYlZpZXdSZWxvYWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4
IDIwMTE1ZjUuLjkzMjNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTU4LDE4ICs1OCwxOCBAQCB2b2lk
IFdlYlZpZXdUZXN0Ojpsb2FkUGxhaW5UZXh0KGNvbnN0IGNoYXIqIHBsYWluVGV4dCkKICAgICB3
ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KG1fd2ViVmlldywgcGxhaW5UZXh0KTsKIH0K
IAotdm9pZCBXZWJWaWV3VGVzdDo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgY2hhciogaHRtbCwg
Y29uc3QgY2hhciogYmFzZVVSSSwgY29uc3QgY2hhciogdW5yZWFjaGFibGVVUkkpCi17Ci0gICAg
bV9hY3RpdmVVUkkgPSAiYWJvdXQ6YmxhbmsiOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2Fs
dGVybmF0ZV9odG1sKG1fd2ViVmlldywgaHRtbCwgYmFzZVVSSSwgdW5yZWFjaGFibGVVUkkpOwot
fQotCiB2b2lkIFdlYlZpZXdUZXN0Ojpsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0KiByZXF1
ZXN0KQogewogICAgIG1fYWN0aXZlVVJJID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVx
dWVzdCk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChtX3dlYlZpZXcsIHJlcXVl
c3QpOwogfQogCit2b2lkIFdlYlZpZXdUZXN0OjpyZXBsYWNlQ29udGVudChjb25zdCBjaGFyKiBo
dG1sLCBjb25zdCBjaGFyKiBjb250ZW50VVJJLCBjb25zdCBjaGFyKiBiYXNlVVJJKQoreworICAg
IG1fYWN0aXZlVVJJID0gY29udGVudFVSSTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9j
b250ZW50KG1fd2ViVmlldywgaHRtbCwgY29udGVudFVSSSwgYmFzZVVSSSk7Cit9CisKIHZvaWQg
V2ViVmlld1Rlc3Q6OmdvQmFjaygpCiB7CiAgICAgaWYgKHdlYmtpdF93ZWJfdmlld19jYW5fZ29f
YmFjayhtX3dlYlZpZXcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaAppbmRleCAwZDEzY2ZjLi42NjIzNTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0
LmgKQEAgLTM0LDggKzM0LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZFVSSShjb25zdCBjaGFy
KiB1cmkpOwogICAgIHZvaWQgbG9hZEh0bWwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciog
YmFzZVVSSSk7CiAgICAgdm9pZCBsb2FkUGxhaW5UZXh0KGNvbnN0IGNoYXIqIHBsYWluVGV4dCk7
Ci0gICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFy
KiBiYXNlVVJJLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZVVSSSk7CiAgICAgdm9pZCBsb2FkUmVx
dWVzdChXZWJLaXRVUklSZXF1ZXN0Kik7CisgICAgdm9pZCByZXBsYWNlQ29udGVudChjb25zdCBj
aGFyKiBodG1sLCBjb25zdCBjaGFyKiBjb250ZW50VVJJLCBjb25zdCBjaGFyKiBiYXNlVVJJKTsK
ICAgICB2b2lkIGdvQmFjaygpOwogICAgIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAgdm9pZCBnb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121088</attachid>
            <date>2012-01-04 02:17:22 -0800</date>
            <delta_ts>2012-01-04 09:07:36 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-replace-content3.diff</filename>
            <type>text/plain</type>
            <size>17185</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMzdkN2E4Li5jYmZmYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMDEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFJlbmFtZSB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVf
aHRtbCBhcyB3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250ZW50IGluIFdlYktpdDIgR1RLKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRG
YWlsKTogVXNlIHdlYmtpdF93ZWJfdmlld19yZXBsYWNlX2NvbnRlbnQoKS4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdMb2FkQ2hhbmdlZCk6IERvIG5vdCBlbWl0IGxvYWQtY2hhbmdlZCBzaWduYWwg
d2hlbgorICAgICAgICByZXBsYWNpbmcgY29udGVudC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdM
b2FkRmFpbGVkKTogRG8gbm90IGVtaXQgbG9hZC1mYWlsZWQgc2lnbmFsIHdoZW4KKyAgICAgICAg
cmVwbGFjaW5nIGNvbnRlbnQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9h
ZFByb2dyZXNzKTogRG8gbm90IGVtaXQKKyAgICAgICAgbm90aWZ5Ojplc3RpbWF0ZWQtbG9hZC1w
cm9ncmVzcyBzaWduYWwgd2hlbiByZXBsYWNpbmcgY29udGVudC4KKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19yZXBsYWNlX2NvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAg
IChyZXBsYWNlQ29udGVudFRpdGxlQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKHJlcGxhY2VD
b250ZW50TG9hZENhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJWaWV3UmVwbGFjZUNvbnRlbnQp
OgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJWaWV3VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6cmVwbGFjZUNvbnRlbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0Lmg6CisKIDIw
MTItMDEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFNjcm9sbGJhcnMgYXJlIGRyYXduIGJlaGluZCB0aGUgd2luZG93IHJlc2l6
ZSBncmlwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IDYzYTA5OWMuLjU1OWI3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC03Niw2ICs3Niw3IEBA
IHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIENTdHJpbmcgY3VzdG9tVGV4dEVu
Y29kaW5nOwogICAgIGRvdWJsZSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3M7CiAgICAgQ1N0cmluZyBh
Y3RpdmVVUkk7CisgICAgYm9vbCByZXBsYWNpbmdDb250ZW50OwogCiAgICAgR1JlZlB0cjxXZWJL
aXRXZWJMb2FkZXJDbGllbnQ+IGxvYWRlckNsaWVudDsKICAgICBHUmVmUHRyPFdlYktpdFVJQ2xp
ZW50PiB1aUNsaWVudDsKQEAgLTk2LDcgKzk3LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdl
YlZpZXdMb2FkRmFpbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQsIGMK
ICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgR093blB0cjxjaGFyPiBodG1sU3RyaW5nKGdf
c3RyZHVwX3ByaW50ZigiPGh0bWw+PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIsIGVycm9yLT5tZXNz
YWdlKSk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwod2ViVmlldywg
aHRtbFN0cmluZy5nZXQoKSwgMCwgZmFpbGluZ1VSSSk7CisgICAgd2Via2l0X3dlYl92aWV3X3Jl
cGxhY2VfY29udGVudCh3ZWJWaWV3LCBodG1sU3RyaW5nLmdldCgpLCBmYWlsaW5nVVJJLCAwKTsK
IAogICAgIHJldHVybiBUUlVFOwogfQpAQCAtNTM5LDYgKzU0MCwxMiBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFz
cykKIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKIHsKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+
cmVwbGFjaW5nQ29udGVudCkgeworICAgICAgICBpZiAobG9hZEV2ZW50ID09IFdFQktJVF9MT0FE
X0ZJTklTSEVEKQorICAgICAgICAgICAgd2ViVmlldy0+cHJpdi0+cmVwbGFjaW5nQ29udGVudCA9
IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGxvYWRFdmVudCAhPSBX
RUJLSVRfTE9BRF9GSU5JU0hFRCkKICAgICAgICAgd2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJW
aWV3KTsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9DSEFOR0VEXSwg
MCwgbG9hZEV2ZW50KTsKQEAgLTU0Niw2ICs1NTMsOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2Fk
Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50
KQogCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJv
ciAqZXJyb3IpCiB7CisgICAgaWYgKHdlYlZpZXctPnByaXYtPnJlcGxhY2luZ0NvbnRlbnQpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwogICAgIGdfc2lnbmFs
X2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0ZBSUxFRF0sIDAsIGxvYWRFdmVudCwgZmFpbGlu
Z1VSSSwgZXJyb3IsICZyZXR1cm5WYWx1ZSk7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBz
aWduYWxzW0xPQURfQ0hBTkdFRF0sIDAsIFdFQktJVF9MT0FEX0ZJTklTSEVEKTsKQEAgLTU2Myw4
ICs1NzMsMTIgQEAgdm9pZCB3ZWJraXRXZWJWaWV3U2V0VGl0bGUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgQ1N0cmluZyYgdGl0bGUpCiAKIHZvaWQgd2Via2l0V2ViVmlld1NldEVzdGlt
YXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBkb3VibGUgZXN0aW1hdGVk
TG9hZFByb2dyZXNzKQogeworICAgIGlmICh3ZWJWaWV3LT5wcml2LT5yZXBsYWNpbmdDb250ZW50
KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAod2ViVmlldy0+cHJpdi0+ZXN0aW1hdGVkTG9h
ZFByb2dyZXNzID09IGVzdGltYXRlZExvYWRQcm9ncmVzcykKICAgICAgICAgcmV0dXJuOworCiAg
ICAgd2ViVmlldy0+cHJpdi0+ZXN0aW1hdGVkTG9hZFByb2dyZXNzID0gZXN0aW1hdGVkTG9hZFBy
b2dyZXNzOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJWaWV3KSwgImVzdGltYXRl
ZC1sb2FkLXByb2dyZXNzIik7CiB9CkBAIC03MzMsNTEgKzc0Nyw1NSBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19sb2FkX3BsYWluX3RleHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIHBsYWluVAogfQogCiAvKioKLSAqIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9o
dG1sOgorICogd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdDoKICAqIEB3ZWJfdmlldzogYSAj
V2ViS2l0V2ViVmlldwotICogQGNvbnRlbnQ6IHRoZSBhbHRlcm5hdGUgY29udGVudCB0byBkaXNw
bGF5IGFzIHRoZSBtYWluIHBhZ2Ugb2YgdGhlIEB3ZWJfdmlldwotICogQGJhc2VfdXJpOiB0aGUg
YmFzZSBVUkkgZm9yIHJlbGF0aXZlIGxvY2F0aW9ucwotICogQHVucmVhY2hhYmxlX3VyaTogdGhl
IFVSSSBmb3IgdGhlIGFsdGVybmF0ZSBwYWdlIGNvbnRlbnQKKyAqIEByZXF1ZXN0OiBhICNXZWJL
aXRVUklSZXF1ZXN0IHRvIGxvYWQKICAqCi0gKiBSZXF1ZXN0IGxvYWRpbmcgb2YgYW4gYWx0ZXJu
YXRlIGNvbnRlbnQgZm9yIGEgVVJJIHRoYXQgaXMgdW5yZWFjaGFibGUuIFRoaXMgYWxsb3dzIGNs
aWVudHMKLSAqIHRvIGRpc3BsYXkgcGFnZS1sb2FkaW5nIGVycm9ycyBpbiB0aGUgI1dlYktpdFdl
YlZpZXcgaXRzZWxmLiBUaGlzIGlzIHR5cGljYWxseSBjYWxsZWQgZnJvbQotICogI1dlYktpdFdl
YlZpZXc6OmxvYWQtZmFpbGVkIHNpZ25hbC4KLSAqIFdoZW4gY2FsbGVkIGZyb20gdGhhdCBzaWdu
YWwgdGhpcyBtZXRob2Qgd2lsbCBwcmVzZXJ2ZSB0aGUgYmFjay1mb3J3YXJkIGxpc3QuIFRoZSBV
UkkgcGFzc2VkIGluCi0gKiBAYmFzZV91cmkgaGFzIHRvIGJlIGFuIGFic29sdXRlIFVSSS4KKyAq
IFJlcXVlc3RzIGxvYWRpbmcgb2YgdGhlIHNwZWNpZmllZCAjV2ViS2l0VVJJUmVxdWVzdC4KICAq
IFlvdSBjYW4gbW9uaXRvciB0aGUgbG9hZCBvcGVyYXRpb24gYnkgY29ubmVjdGluZyB0bwogICog
I1dlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwuCiAgKi8KLXZvaWQgd2Via2l0X3dl
Yl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
Z2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBiYXNlVVJJLCBjb25zdCBnY2hhciogdW5yZWFj
aGFibGVVUkkpCit2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3QoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChjb250ZW50KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VUklfUkVRVUVTVChy
ZXF1ZXN0KSk7CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaHRtbFN0cmluZyhBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb250ZW50KSk7Ci0gICAgV0tSZXRh
aW5QdHI8V0tVUkxSZWY+IGJhc2VVUkwgPSBiYXNlVVJJID8gYWRvcHRXSyhXS1VSTENyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhiYXNlVVJJKSkgOiAwOwotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1
bnJlYWNoYWJsZVVSTCA9IHVucmVhY2hhYmxlVVJJID8gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhV
VEY4Q1N0cmluZyh1bnJlYWNoYWJsZVVSSSkpIDogMDsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gd2tVUkwoQWRvcHRXSywgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcod2Via2l0X3VyaV9y
ZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlcXVlc3RS
ZWY+IHdrUmVxdWVzdChBZG9wdFdLLCBXS1VSTFJlcXVlc3RDcmVhdGVXaXRoV0tVUkwod2tVUkwu
Z2V0KCkpKTsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBh
Z2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpOwotICAgIFdLUGFnZUxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKHRvQVBJKHBhZ2UpLCBodG1sU3RyaW5nLmdldCgpLCBiYXNlVVJMLmdldCgp
LCB1bnJlYWNoYWJsZVVSTC5nZXQoKSk7CisgICAgV0tQYWdlTG9hZFVSTFJlcXVlc3QodG9BUEko
cGFnZSksIHdrUmVxdWVzdC5nZXQoKSk7CiAgICAgd2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJW
aWV3KTsKIH0KIAogLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0OgorICogd2Vi
a2l0X3dlYl92aWV3X3JlcGxhY2VfY29udGVudDoKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2Vi
VmlldwotICogQHJlcXVlc3Q6IGEgI1dlYktpdFVSSVJlcXVlc3QgdG8gbG9hZAorICogQGNvbnRl
bnQ6IHRoZSBuZXcgY29udGVudCB0byBkaXNwbGF5IGFzIHRoZSBtYWluIHBhZ2Ugb2YgdGhlIEB3
ZWJfdmlldworICogQGNvbnRlbnRfdXJpOiB0aGUgVVJJIGZvciB0aGUgcGFnZSBjb250ZW50Cisg
KiBAYmFzZV91cmk6IChhbGxvdy1ub25lKTogdGhlIGJhc2UgVVJJIGZvciByZWxhdGl2ZSBsb2Nh
dGlvbnMgb3IgJU5VTEwKICAqCi0gKiBSZXF1ZXN0cyBsb2FkaW5nIG9mIHRoZSBzcGVjaWZpZWQg
I1dlYktpdFVSSVJlcXVlc3QuCi0gKiBZb3UgY2FuIG1vbml0b3IgdGhlIGxvYWQgb3BlcmF0aW9u
IGJ5IGNvbm5lY3RpbmcgdG8KLSAqICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWNoYW5nZWQgc2lnbmFs
LgorICogUmVwbGFjZSB0aGUgY29udGVudCBvZiBAd2ViX3ZpZXcgd2l0aCBAY29udGVudCB1c2lu
ZyBAY29udGVudF91cmkgYXMgcGFnZSBVUkkuCisgKiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIGRp
c3BsYXkgcGFnZS1sb2FkaW5nIGVycm9ycyBpbiB0aGUgI1dlYktpdFdlYlZpZXcgaXRzZWxmLgor
ICogVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGZyb20gI1dlYktpdFdlYlZpZXc6OmxvYWQtZmFp
bGVkIHNpZ25hbC4gVGhlIFVSSSBwYXNzZWQgaW4KKyAqIEBiYXNlX3VyaSBoYXMgdG8gYmUgYW4g
YWJzb2x1dGUgVVJJLgorICogU2lnbmFscyAjV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkIGFu
ZCAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgYXJlIG5vdCBlbWl0dGVkCisgKiB3aGVuIHJl
cGxhY2luZyBjb250ZW50IG9mIGEgI1dlYktpdFdlYlZpZXcgdXNpbmcgdGhpcyBtZXRob2QuCiAg
Ki8KLXZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVw
bGFjZV9jb250ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBjb250ZW50
LCBjb25zdCBnY2hhciogY29udGVudFVSSSwgY29uc3QgZ2NoYXIqIGJhc2VVUkkpCiB7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKGNvbnRlbnQpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udGVudFVSSSk7CiAK
LSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgV0tVUkxDcmVhdGVXaXRo
VVRGOENTdHJpbmcod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpKTsKLSAgICBX
S1JldGFpblB0cjxXS1VSTFJlcXVlc3RSZWY+IHdrUmVxdWVzdChBZG9wdFdLLCBXS1VSTFJlcXVl
c3RDcmVhdGVXaXRoV0tVUkwod2tVUkwuZ2V0KCkpKTsKKyAgICAvLyBSZXNldCB0aGUgcHJvZ3Jl
c3Mgb2YgYSBwb3NzaWJsZSBvbmdvaW5nIGxvYWQuCisgICAgd2Via2l0V2ViVmlld1NldEVzdGlt
YXRlZExvYWRQcm9ncmVzcyh3ZWJWaWV3LCAwKTsKKyAgICB3ZWJWaWV3LT5wcml2LT5yZXBsYWNp
bmdDb250ZW50ID0gdHJ1ZTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBodG1sU3Ry
aW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnRlbnQpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1VSTFJlZj4gY29udGVudFVSTChBZG9wdFdLLCBXS1VSTENyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhjb250ZW50VVJJKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGJh
c2VVUkwgPSBiYXNlVVJJID8gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYXNl
VVJJKSkgOiAwOwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0
UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0gICAgV0tQYWdlTG9hZFVSTFJl
cXVlc3QodG9BUEkocGFnZSksIHdrUmVxdWVzdC5nZXQoKSk7CisgICAgV0tQYWdlTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcodG9BUEkocGFnZSksIGh0bWxTdHJpbmcuZ2V0KCksIGJhc2VVUkwuZ2V0
KCksIGNvbnRlbnRVUkwuZ2V0KCkpOwogICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmll
dyk7CiB9CiAKQEAgLTkyNiw3ICs5NDQsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2Fu
X2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqICAgICB0aGUgcmVxdWVzdGVk
IFVSSSBpcyB0aGUgZ2l2ZW4gb25lLgogICogICA8L3BhcmE+PC9saXN0aXRlbT4KICAqICAgPGxp
c3RpdGVtPjxwYXJhPgotICogICAgIElmIHRoZSBsb2FkIG9wZXJhdGlvbiB3YXMgc3RhcnRlZCBi
eSB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbCgpLAorICogICAgIElmIHRoZSBs
b2FkIG9wZXJhdGlvbiB3YXMgc3RhcnRlZCBieSB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKCks
CiAgKiAgICAgdGhlIHJlcXVlc3RlZCBVUkkgaXMgImFib3V0OmJsYW5rIi4KICAqICAgPC9wYXJh
PjwvbGlzdGl0ZW0+CiAgKiAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTk1Myw2ICs5NzEsMTAgQEAg
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgKiAgIG9uZSBhbmQgaXQgd2lsbCBub3QgY2hhbmdlIHVubGVzcyBhIG5ldyBsb2Fk
IG9wZXJhdGlvbiBpcyBzdGFydGVkCiAgKiAgIG9yIGEgbmF2aWdhdGlvbiBhY3Rpb24gd2l0aGlu
IHRoZSBzYW1lIHBhZ2UgaXMgcGVyZm9ybWVkLgogICogPC9wYXJhPjwvbGlzdGl0ZW0+CisgKiA8
bGlzdGl0ZW0+PHBhcmE+CisgKiAgIFdoZW4gdGhlIHBhZ2UgY29udGVudCBpcyByZXBsYWNlZCB1
c2luZyB3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250ZW50KCksCisgKiAgIHRoZSBhY3RpdmUg
VVJJIGlzIHRoZSBjb250ZW50X3VyaSBwcm92aWRlZC4KKyAqIDwvcGFyYT48L2xpc3RpdGVtPgog
ICogPC9vcmRlcmVkbGlzdD4KICAqCiAgKiBZb3UgY2FuIG1vbml0b3IgdGhlIGFjdGl2ZSBVUkkg
YnkgY29ubmVjdGluZyB0byB0aGUgbm90aWZ5Ojp1cmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCAwMmM4M2E4Li42NmEzZmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
CkBAIC0xMzksMTcgKzEzOSwxOCBAQCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0ICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAg
ICAgICAgKnBsYWluX3RleHQpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19s
b2FkX2FsdGVybmF0ZV9odG1sICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnY2hhciAgICAgICAgICAgICAgICpjb250ZW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKmJhc2Vf
dXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAgICAgKnVucmVhY2hhYmxlX3VyaSk7Ci1XRUJLSVRfQVBJIHZvaWQK
IHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3QgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAgICAgICAgICpyZXF1ZXN0KTsKIAog
V0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfdmlld19yZXBsYWNlX2NvbnRlbnQgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpjb250ZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgICAgKmNvbnRlbnRfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKmJhc2VfdXJp
KTsKKwogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpdGxl
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCA1M2QyMWQ5Li4wYWYwZjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTUzLDggKzUzLDggQEAgd2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkKIHdlYmtpdF93ZWJfdmlld19s
b2FkX2h0bWwKIHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQKLXdlYmtpdF93ZWJfdmll
d19sb2FkX2FsdGVybmF0ZV9odG1sCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0Cit3ZWJr
aXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250ZW50CiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2sK
IHdlYmtpdF93ZWJfdmlld19nb19iYWNrCiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudC5jcHAKaW5kZXggMDlmYmE0My4uYWFh
OWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYkxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudC5jcHAKQEAgLTc4LDEz
ICs3OCw2IEBAIHN0YXRpYyB2b2lkIHRlc3RMb2FkUGxhaW5UZXh0KExvYWRUcmFja2luZ1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgYXNzZXJ0Tm9ybWFsTG9hZEhhcHBlbmVkQW5kQ2xl
YXJFdmVudHModGVzdC0+bV9sb2FkRXZlbnRzKTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdExvYWRB
bHRlcm5hdGVDb250ZW50KExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCi17
Ci0gICAgdGVzdC0+bG9hZEFsdGVybmF0ZUhUTUwoIjxodG1sPjxib2R5PkFsdGVybmF0ZSBDb250
ZW50PC9ib2R5PjwvaHRtbD4iLCAwLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYWx0ZXJuYXRl
IikuZGF0YSgpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBhc3Nl
cnROb3JtYWxMb2FkSGFwcGVuZWRBbmRDbGVhckV2ZW50cyh0ZXN0LT5tX2xvYWRFdmVudHMpOwot
fQotCiBzdGF0aWMgdm9pZCB0ZXN0TG9hZFJlcXVlc3QoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHsKICAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+IHJlcXVlc3Qo
d2Via2l0X3VyaV9yZXF1ZXN0X25ldyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvbm9ybWFsIiku
ZGF0YSgpKSk7CkBAIC0yNTEsNyArMjQ0LDYgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIExvYWRU
cmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViTG9hZGVyQ2xpZW50IiwgImxvYWRpbmctZXJyb3Ii
LCB0ZXN0TG9hZGluZ0Vycm9yKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAibG9hZC1odG1sIiwgdGVzdExvYWRIdG1sKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1wbGFpbi10ZXh0IiwgdGVzdExvYWRQbGFpblRl
eHQpOwotICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJsb2FkLWFs
dGVybmF0ZS1jb250ZW50IiwgdGVzdExvYWRBbHRlcm5hdGVDb250ZW50KTsKICAgICBMb2FkVHJh
Y2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1yZXF1ZXN0IiwgdGVzdExvYWRS
ZXF1ZXN0KTsKICAgICBMb2FkU3RvcFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InN0b3AtbG9hZGluZyIsIHRlc3RMb2FkQ2FuY2VsbGVkKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAidGl0bGUiLCB0ZXN0V2ViVmlld1RpdGxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1ZGNiYWRkLi5iYWRmMjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YlZpZXcuY3BwCkBAIC02Nyw2ICs2NywyNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NldHRp
bmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKIH0KIAorc3RhdGlj
IHZvaWQgcmVwbGFjZUNvbnRlbnRUaXRsZUNoYW5nZWRDYWxsYmFjayhXZWJWaWV3VGVzdCogdGVz
dCkKK3sKKyAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworfQorCitzdGF0
aWMgdm9pZCByZXBsYWNlQ29udGVudExvYWRDYWxsYmFjaygpCit7CisgICAgZ19hc3NlcnRfbm90
X3JlYWNoZWQoKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdSZXBsYWNlQ29udGVudChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQodGVzdC0+bV93ZWJWaWV3LCAibm90aWZ5Ojp0aXRsZSIsIEdfQ0FMTEJBQ0socmVw
bGFjZUNvbnRlbnRUaXRsZUNoYW5nZWRDYWxsYmFjayksIHRlc3QpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3QodGVzdC0+bV93ZWJWaWV3LCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhyZXBsYWNl
Q29udGVudExvYWRDYWxsYmFjayksIHRlc3QpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+
bV93ZWJWaWV3LCAibG9hZC1mYWlsZWQiLCBHX0NBTExCQUNLKHJlcGxhY2VDb250ZW50TG9hZENh
bGxiYWNrKSwgdGVzdCk7CisgICAgdGVzdC0+cmVwbGFjZUNvbnRlbnQoIjxodG1sPjxoZWFkPjx0
aXRsZT5Db250ZW50IFJlcGxhY2VkPC90aXRsZT48L2hlYWQ+PGJvZHk+TmV3IENvbnRlbnQ8L2Jv
ZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9mb28uY29tL2Jh
ciIsIDApOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKK30KKwogc3Rh
dGljIGNvbnN0IGNoYXIqIGtBbGVydERpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBhbGVydCBk
aWFsb2cgbWVzc2FnZSI7CiBzdGF0aWMgY29uc3QgY2hhcioga0NvbmZpcm1EaWFsb2dNZXNzYWdl
ID0gIldlYktpdEdUSysgY29uZmlybSBkaWFsb2cgbWVzc2FnZSI7CiBzdGF0aWMgY29uc3QgY2hh
cioga1Byb21wdERpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBwcm9tcHQgZGlhbG9nIG1lc3Nh
Z2UiOwpAQCAtMzQyLDYgKzM2Miw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRlZmF1bHQtY29udGV4dCIsIHRlc3RXZWJWaWV3RGVm
YXVsdENvbnRleHQpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY3Vz
dG9tLWNoYXJzZXQiLCB0ZXN0V2ViVmlld0N1c3RvbUNoYXJzZXQpOwogICAgIFdlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld1NldHRpbmdzKTsK
KyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlcGxhY2UtY29udGVudCIs
IHRlc3RXZWJWaWV3UmVwbGFjZUNvbnRlbnQpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImNyZWF0ZS1yZWFkeS1jbG9zZSIsIHRlc3RXZWJWaWV3Q3JlYXRlUmVhZHlD
bG9zZSk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiamF2YXNjcmlw
dC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CiAgICAgVUlDbGllbnRU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3BlcnRpZXMiLCB0ZXN0V2ViVmll
d1dpbmRvd1Byb3BlcnRpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDIwMTE1ZjUuLjkzMjNiMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJW
aWV3VGVzdC5jcHAKQEAgLTU4LDE4ICs1OCwxOCBAQCB2b2lkIFdlYlZpZXdUZXN0Ojpsb2FkUGxh
aW5UZXh0KGNvbnN0IGNoYXIqIHBsYWluVGV4dCkKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9w
bGFpbl90ZXh0KG1fd2ViVmlldywgcGxhaW5UZXh0KTsKIH0KIAotdm9pZCBXZWJWaWV3VGVzdDo6
bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVSSSwg
Y29uc3QgY2hhciogdW5yZWFjaGFibGVVUkkpCi17Ci0gICAgbV9hY3RpdmVVUkkgPSAiYWJvdXQ6
YmxhbmsiOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKG1fd2ViVmll
dywgaHRtbCwgYmFzZVVSSSwgdW5yZWFjaGFibGVVUkkpOwotfQotCiB2b2lkIFdlYlZpZXdUZXN0
Ojpsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIG1fYWN0aXZl
VVJJID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChtX3dlYlZpZXcsIHJlcXVlc3QpOwogfQogCit2b2lkIFdlYlZp
ZXdUZXN0OjpyZXBsYWNlQ29udGVudChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBjb250
ZW50VVJJLCBjb25zdCBjaGFyKiBiYXNlVVJJKQoreworICAgIG1fYWN0aXZlVVJJID0gY29udGVu
dFVSSTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcmVwbGFjZV9jb250ZW50KG1fd2ViVmlldywgaHRt
bCwgY29udGVudFVSSSwgYmFzZVVSSSk7Cit9CisKIHZvaWQgV2ViVmlld1Rlc3Q6OmdvQmFjaygp
CiB7CiAgICAgaWYgKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayhtX3dlYlZpZXcpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3
VGVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rl
c3QuaAppbmRleCAwZDEzY2ZjLi42NjIzNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgKQEAgLTM0LDggKzM0LDggQEAg
cHVibGljOgogICAgIHZvaWQgbG9hZFVSSShjb25zdCBjaGFyKiB1cmkpOwogICAgIHZvaWQgbG9h
ZEh0bWwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVSSSk7CiAgICAgdm9pZCBs
b2FkUGxhaW5UZXh0KGNvbnN0IGNoYXIqIHBsYWluVGV4dCk7Ci0gICAgdm9pZCBsb2FkQWx0ZXJu
YXRlSFRNTChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBiYXNlVVJJLCBjb25zdCBjaGFy
KiB1bnJlYWNoYWJsZVVSSSk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0
Kik7CisgICAgdm9pZCByZXBsYWNlQ29udGVudChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFy
KiBjb250ZW50VVJJLCBjb25zdCBjaGFyKiBiYXNlVVJJKTsKICAgICB2b2lkIGdvQmFjaygpOwog
ICAgIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRMaXN0SXRlbShX
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKik7Cg==
</data>
<flag name="review"
          id="121478"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>