<?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>98270</bug_id>
          
          <creation_ts>2012-10-03 08:21:20 -0700</creation_ts>
          <short_desc>[GTK][WK2] Add API to retrieve a snapshot from a webview</short_desc>
          <delta_ts>2013-04-16 11:28:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>733719</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-10-03 08:21:20 -0700</bug_when>
    <thetext>We already have the WK1 api for this, now let&apos;s add API to WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733725</commentid>
    <comment_count>1</comment_count>
      <attachid>166901</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-10-03 08:31:08 -0700</bug_when>
    <thetext>Created attachment 166901
First iteration of the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733729</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 08:34:41 -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>733730</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 08:35:06 -0700</bug_when>
    <thetext>Attachment 166901 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2706:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734167</commentid>
    <comment_count>4</comment_count>
      <attachid>166901</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-03 16:31:27 -0700</bug_when>
    <thetext>Comment on attachment 166901
First iteration of the patch

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

Looks pretty good to me, but there&apos;s a memory leak.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2630
&gt; +static void didGetSnapshot(WKImageRef snapshot, WKErrorRef, void *context)

Nit: The asterisk is in the wrong place here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2638
&gt; +        data-&gt;snapshot = WKImageCreateCairoSurface(snapshot);

You probably want to use adoptRef here, since I&apos;m assuming that WKImageCreateCairoSurface returns a new reference.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2671
&gt; + * Finishes an asynchronous opreation started with webkit_web_view_get_snapshot().

Nit: opreation -&gt; operation

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2673
&gt; + * Returns: a #cairo_surface_t with the retrieved snapshot

It makes sense to include a transfer annotation here and mention it specifically in the documentation. Right now you aren&apos;t returning a new reference, so if the user doesn&apos;t ref the result immediately it will be freed. I imagine this didn&apos;t cause a crash for you because of the leak above.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2678
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
&gt; +    g_return_val_if_fail(G_IS_ASYNC_RESULT(result), FALSE);

Probably better to return 0 instead of FALSE here, just for the sake of correctness. They are the same thing in the end, but it looks a little funky. :)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2684
&gt; +        return FALSE;

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2688
&gt; +    GetSnapshotAsyncData* data = static_cast&lt;GetSnapshotAsyncData*&gt;(g_simple_async_result_get_op_res_gpointer(simple));
&gt; +
&gt; +    return data-&gt;snapshot.get();

This can just be: static_cast&lt;GetSnapshotAsyncData*&gt;(g_simple_async_result_get_op_res_gpointer(simple))-&gt;snapshot.get();

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1269
&gt; +    RefPtr&lt;WebImage&gt; snapshotImage = scaledSnapshotWithOptions(contentRect, 1, SnapshotOptionsShareable | SnapshotOptionsExcludeSelectionHighlighting);

It seems it could be useful to just expose scaledSnapshotWithOptions to the IPC layer. Wouldn&apos;t that make something like webkit_web_view_get_scaled_snapshot_with_options possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734414</commentid>
    <comment_count>5</comment_count>
      <attachid>166901</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-04 00:07:59 -0700</bug_when>
    <thetext>Comment on attachment 166901
First iteration of the patch

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

Looks great! good work :-)

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2638
&gt;&gt; +        data-&gt;snapshot = WKImageCreateCairoSurface(snapshot);
&gt; 
&gt; You probably want to use adoptRef here, since I&apos;m assuming that WKImageCreateCairoSurface returns a new reference.

Don&apos;t use the C API, use toImpl(wkSnapshot)-&gt;bitmap()-&gt;createCairoSurface() that returns a PassRefPtr so you don&apos;t need to adopt it

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2673
&gt;&gt; + * Returns: a #cairo_surface_t with the retrieved snapshot
&gt; 
&gt; It makes sense to include a transfer annotation here and mention it specifically in the documentation. Right now you aren&apos;t returning a new reference, so if the user doesn&apos;t ref the result immediately it will be freed. I imagine this didn&apos;t cause a crash for you because of the leak above.

We should return a reference and use transfer full

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2675
&gt; +cairo_surface_t* webkit_web_view_get_snapshot_finish(WebKitWebView* webView, GAsyncResult* result, GError **error)

GError **error -&gt; GError** error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786835</commentid>
    <comment_count>6</comment_count>
      <attachid>178430</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-09 11:35:39 -0800</bug_when>
    <thetext>Created attachment 178430
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

Reviewed by NOBODY (OOPS!).

        This adds the GTK+ API necessary to retrieve a snapshot
        from a webview asynchronously.

        * UIProcess/API/gtk/WebKitPrivate.h: Add WKImageCairo.h
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (GetSnapshotAsyncData):
        (didGetSnapshot):
        (webkit_web_view_get_snapshot):
        (webkit_web_view_get_snapshot_finish): Add the public API.
        * UIProcess/API/gtk/WebKitWebView.h: Ditto.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new
        API to the docs.
        * UIProcess/WebPageProxy.cpp:
        (WebKit):
        (WebKit::WebPageProxy::getSnapshot):
        Add a proxy method to request a snapshot from the web process.
        * UIProcess/WebPageProxy.h:
        (WebKit):
        (WebPageProxy): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createSnapshotOfVisibleContent): Add a method to
        take a snapshot from the visible content of the web page, this
        method will send a message back to the UI process with the image
        handle.
        (WebKit):
        * WebProcess/WebPage/WebPage.h: Ditto.
        (WebPage):
        * WebProcess/WebPage/WebPage.messages.in: Add the message for
        CreateSnapshotOfVisibleContent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786838</commentid>
    <comment_count>7</comment_count>
      <attachid>178430</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-09 11:48:45 -0800</bug_when>
    <thetext>Comment on attachment 178430
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

This patch is simpler because some of the required stuff for IPC of images was added already in commit 0ee64d53.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786856</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-09 12:52:02 -0800</bug_when>
    <thetext>Attachment 178430 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2832:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787198</commentid>
    <comment_count>9</comment_count>
      <attachid>178516</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-10 04:34:02 -0800</bug_when>
    <thetext>Created attachment 178516
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

Reviewed by NOBODY (OOPS!).

        This adds the GTK+ API necessary to retrieve a snapshot
        from a webview asynchronously.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (GetSnapshotAsyncData):
        (didGetSnapshot):
        (webkit_web_view_get_snapshot):
        (webkit_web_view_get_snapshot_finish): Add the public API.
        * UIProcess/API/gtk/WebKitWebView.h: Ditto.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new
        API to the docs.
        * UIProcess/WebPageProxy.cpp:
        (WebKit):
        (WebKit::WebPageProxy::getSnapshot):
        Add a proxy method to request a snapshot from the web process.
        * UIProcess/WebPageProxy.h:
        (WebKit):
        (WebPageProxy): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createSnapshotOfVisibleContent): Add a method to
        take a snapshot from the visible content of the web page, this
        method will send a message back to the UI process with the image
        handle.
        (WebKit):
        * WebProcess/WebPage/WebPage.h: Ditto.
        (WebPage):
        * WebProcess/WebPage/WebPage.messages.in: Add the message for
        CreateSnapshotOfVisibleContent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787200</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 04:39:03 -0800</bug_when>
    <thetext>Attachment 178516 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2834:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787765</commentid>
    <comment_count>11</comment_count>
      <attachid>178647</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-10 15:21:32 -0800</bug_when>
    <thetext>Created attachment 178647
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

Reviewed by NOBODY (OOPS!).

        This adds the GTK+ API necessary to retrieve a snapshot
        from a webview asynchronously.

        * UIProcess/API/gtk/WebKitError.cpp:
        (webkit_snapshot_error_quark):
        * UIProcess/API/gtk/WebKitError.h: Add snapshotting error
        handling.
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (GetSnapshotAsyncData):
        (didGetSnapshot):
        (webkit_web_view_get_snapshot):
        (webkit_web_view_get_snapshot_finish): Add the public API.
        * UIProcess/API/gtk/WebKitWebView.h: Ditto.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new
        API to the docs.
        * UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
        (testWebViewSnapshot):
        (beforeAll): Add tests for the snapshotting API.
        * UIProcess/WebPageProxy.cpp:
        (WebKit):
        (WebKit::WebPageProxy::getSnapshot):
        Add a proxy method to request a snapshot from the web process.
        * UIProcess/WebPageProxy.h:
        (WebKit):
        (WebPageProxy): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createSnapshotOfVisibleContent): Add a method to
        take a snapshot from the visible content of the web page, this
        method will send a message back to the UI process with the image
        handle.
        (WebKit):
        * WebProcess/WebPage/WebPage.h: Ditto.
        (WebPage):
        * WebProcess/WebPage/WebPage.messages.in: Add the message for
        CreateSnapshotOfVisibleContent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787768</commentid>
    <comment_count>12</comment_count>
      <attachid>178647</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-10 15:23:14 -0800</bug_when>
    <thetext>Comment on attachment 178647
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

This patch:

- Adds a few tests.
- Adds a parameter for the snapshot options.
- Fixes a few corner cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787777</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 15:30:51 -0800</bug_when>
    <thetext>Attachment 178647 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2837:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787893</commentid>
    <comment_count>14</comment_count>
      <attachid>178647</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-10 17:43:43 -0800</bug_when>
    <thetext>Comment on attachment 178647
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

Attachment 178647 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15257378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788195</commentid>
    <comment_count>15</comment_count>
      <attachid>178750</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-11 01:53:13 -0800</bug_when>
    <thetext>Created attachment 178750
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

Reviewed by NOBODY (OOPS!).

        This adds the GTK+ API necessary to retrieve a snapshot
        from a webview asynchronously.

        * UIProcess/API/gtk/WebKitError.cpp:
        (webkit_snapshot_error_quark):
        * UIProcess/API/gtk/WebKitError.h: Add snapshotting error
        handling.
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (GetSnapshotAsyncData):
        (didGetSnapshot):
        (webkit_web_view_get_snapshot):
        (webkit_web_view_get_snapshot_finish): Add the public API.
        * UIProcess/API/gtk/WebKitWebView.h: Ditto.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new
        API to the docs.
        * UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
        (testWebViewSnapshot):
        (beforeAll): Add tests for the snapshotting API.
        * UIProcess/WebPageProxy.cpp:
        (WebKit):
        (WebKit::WebPageProxy::getSnapshot):
        Add a proxy method to request a snapshot from the web process.
        * UIProcess/WebPageProxy.h:
        (WebKit):
        (WebPageProxy): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createSnapshotOfVisibleContent): Add a method to
        take a snapshot from the visible content of the web page, this
        method will send a message back to the UI process with the image
        handle.
        (WebKit):
        * WebProcess/WebPage/WebPage.h: Ditto.
        (WebPage):
        * WebProcess/WebPage/WebPage.messages.in: Add the message for
        CreateSnapshotOfVisibleContent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788198</commentid>
    <comment_count>16</comment_count>
      <attachid>178750</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-11 01:54:20 -0800</bug_when>
    <thetext>Comment on attachment 178750
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

This fixes the above error and also simplifies the WebKitSnapshotOptions. Now we only expose WEBKIT_SNAPSHOT_INCLUDE_SELECTION_HIGHLIGHTING.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788204</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 01:56:57 -0800</bug_when>
    <thetext>Attachment 178750 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2837:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788441</commentid>
    <comment_count>18</comment_count>
      <attachid>178750</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-11 07:33:56 -0800</bug_when>
    <thetext>Comment on attachment 178750
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

Attachment 178750 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15257680</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789671</commentid>
    <comment_count>19</comment_count>
      <attachid>179075</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-12 10:23:00 -0800</bug_when>
    <thetext>Created attachment 179075
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

Reviewed by NOBODY (OOPS!).

        This adds the GTK+ API necessary to retrieve a snapshot
        from a webview asynchronously.

        * UIProcess/API/gtk/WebKitError.cpp:
        (webkit_snapshot_error_quark):
        * UIProcess/API/gtk/WebKitError.h: Add snapshotting error
        handling.
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (GetSnapshotAsyncData):
        (didGetSnapshot):
        (webkit_web_view_get_snapshot_of_visible_area):
        (webkit_web_view_get_snapshot):
        (webkit_web_view_get_snapshot_finish): Add the public API.
        * UIProcess/API/gtk/WebKitWebView.h: Ditto.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add the new
        API to the docs.
        * UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
        (testWebViewSnapshot):
        (beforeAll): Add tests for the snapshotting API.
        * UIProcess/WebPageProxy.cpp:
        (WebKit):
        (WebKit::WebPageProxy::getSnapshot):
        Add a proxy method to request a snapshot from the web process.
        * UIProcess/WebPageProxy.h:
        (WebKit):
        (WebPageProxy): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createSnapshot): Add a method to take a snapshot
        for a given region in the WebPage, this method will send a message
        back to the UI process with the image handle.
        (WebKit):
        * WebProcess/WebPage/WebPage.h: Ditto.
        (WebPage):
        * WebProcess/WebPage/WebPage.messages.in: Add the message for
        CreateSnapshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789676</commentid>
    <comment_count>20</comment_count>
      <attachid>179075</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-12-12 10:28:48 -0800</bug_when>
    <thetext>Comment on attachment 179075
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

- Renamed API.
- Added a method to take a snapshot of a specific region.
- More tests.
- Cats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789682</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 10:32:38 -0800</bug_when>
    <thetext>Attachment 179075 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2905:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796286</commentid>
    <comment_count>22</comment_count>
      <attachid>179075</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-21 07:00:06 -0800</bug_when>
    <thetext>Comment on attachment 179075
[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270

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

Sorry for the delay reviewing it :-( Looks mostly good, there are just a few minor issues and lack of more tests.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitError.h:141
&gt; +    WEBKIT_SNAPSHOT_ERROR_FAILED = 799

FAILED_TO_CREATE maybe?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2879
&gt; + **/

Use single * here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2883
&gt; +    webkit_web_view_get_snapshot(webView, rect, options, cancellable, callback, userData);

Move the common code to a helper funtion and call it from here, but create a different async result, every async methods should have its corresponding _finish method. Add webkit_web_view_get_snapshot_of_visible_area_finish()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2889
&gt; + * @rect: a #GdkRectangle with the region to take the snapshot of

I guess this is in document coordinates?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2896
&gt; + * Asynchronously retrieves a snapshot of the @web_view at @rect. If
&gt; + * @rect is empty, this function works exactly like

Maybe the empty special case could return a snapshot of the whole page, since we already have a convenient variant to get the visible area, this would make easier to get the whole page without having to query its size first.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2902
&gt; +void webkit_web_view_get_snapshot(WebKitWebView* webView, GdkRectangle rect, WebKitSnapshotOptions options, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer userData)

The rectangle should be a pointer.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2925
&gt; + * Returns: (transfer full) : a #cairo_surface_t with the retrieved snapshot

Extra space between ) and :

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2926
&gt; + **/

Since * here too.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:154
&gt; + * @WEBKIT_SNAPSHOT_OPTIONS_INCLUDE_SELECTION_HIGHLIGHTING: Whether to include in the
&gt; + * snapshot the highlight of the selected content.

Are you sure this is the selection and not the search results? I&apos;ve tried the patch and I get the selection rendered in both cases.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1131
&gt; +    cairo_surface_destroy(surface);

We need more tests, for example, we should tests the snapshot options, and check that the snapshot is different when there&apos;s something selected and the include selection option is used. There&apos;s code to compare pixbufs in search unit tests, comparing cairo surfaces should be easy too.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:764
&gt; +    void getSnapshot(PassRefPtr&lt;ImageCallback&gt;, WebCore::IntRect, SnapshotOptions);

You should probably pass a const reference for the IntRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810447</commentid>
    <comment_count>23</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-01-18 03:52:28 -0800</bug_when>
    <thetext>I&apos;m back working on this these days.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2889
&gt; &gt; + * @rect: a #GdkRectangle with the region to take the snapshot of
&gt; 
&gt; I guess this is in document coordinates?

Yes, I&apos;ll add that to the docs.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2896
&gt; &gt; + * Asynchronously retrieves a snapshot of the @web_view at @rect. If
&gt; &gt; + * @rect is empty, this function works exactly like
&gt; 
&gt; Maybe the empty special case could return a snapshot of the whole page, since we already have a convenient variant to get the visible area, this would make easier to get the whole page without having to query its size first.
&gt; 

Yes, that&apos;s doable. However I am starting to think that this way the API is a bit confusing. I&apos;ll add a patch here anyway followign what you suggest and we can discuss whether we can make it a bit nicer.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:154
&gt; &gt; + * @WEBKIT_SNAPSHOT_OPTIONS_INCLUDE_SELECTION_HIGHLIGHTING: Whether to include in the
&gt; &gt; + * snapshot the highlight of the selected content.
&gt; 
&gt; Are you sure this is the selection and not the search results? I&apos;ve tried the patch and I get the selection rendered in both cases.

Yes, I am sure. Actually it was due to a bug that I spotted now, but I tested this and it is indeed the selection.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1131
&gt; &gt; +    cairo_surface_destroy(surface);
&gt; 
&gt; We need more tests, for example, we should tests the snapshot options, and check that the snapshot is different when there&apos;s something selected and the include selection option is used. There&apos;s code to compare pixbufs in search unit tests, comparing cairo surfaces should be easy too.

I&apos;ll check this after I post a new patch so that we can make a bit of progress in the review and API discussion while I add further tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810583</commentid>
    <comment_count>24</comment_count>
      <attachid>183454</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-01-18 07:32:45 -0800</bug_when>
    <thetext>Created attachment 183454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810586</commentid>
    <comment_count>25</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-01-18 07:37:08 -0800</bug_when>
    <thetext>So about the API. Right now we allow for the three following cases:

1. Make a snapshot of a particular region of the document.

   To do this, call webkit_webview_get_snapshot() with a non-NULL rectangle.

2. Make a snapshot of the whole document.

  To do this, call webkit_webview_get_snapshot() with a NULL rectangle.

3. Make a snapshot of the visible are of the document.

   To do this, call webkit_webview_get_snapshot_of_visible_area().

I have a feeling that this is very confusing. I feel inclined to have either only one method that can deal with the whole array of possibilities or to have one different method for each of the three cases above. But the special-casing of NULL for &quot;full document&quot; is rather weird to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810607</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 08:02:05 -0800</bug_when>
    <thetext>Attachment 183454 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2999:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3046:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810886</commentid>
    <comment_count>27</comment_count>
      <attachid>183518</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-01-18 11:33:30 -0800</bug_when>
    <thetext>Created attachment 183518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810887</commentid>
    <comment_count>28</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-01-18 11:34:19 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=183518) [details]
&gt; Patch

I added a good bunch of extra test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810926</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 12:25:39 -0800</bug_when>
    <thetext>Attachment 183518 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2999:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3046:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1150:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811625</commentid>
    <comment_count>30</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-20 09:06:08 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; I have a feeling that this is very confusing. I feel inclined to have either only one method that can deal with the whole array of possibilities or to have one different method for each of the three cases above. But the special-casing of NULL for &quot;full document&quot; is rather weird to me.

Your idea of having this as a single method sounds appealing. Perhaps use the SnapshotOptions enum to allow specifying which of these cases is wanted? You&apos;d still need the rectangle argument, but it would only be taken into consideration if you request it through the options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818770</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-01-29 02:57:46 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #25)
&gt; &gt; I have a feeling that this is very confusing. I feel inclined to have either only one method that can deal with the whole array of possibilities or to have one different method for each of the three cases above. But the special-casing of NULL for &quot;full document&quot; is rather weird to me.
&gt; 
&gt; Your idea of having this as a single method sounds appealing. Perhaps use the SnapshotOptions enum to allow specifying which of these cases is wanted? You&apos;d still need the rectangle argument, but it would only be taken into consideration if you request it through the options.

Or something in the middle, two methods, one receiving options and the other a rectangle:

webkit_web_view_get_snapshot(view, options);
webkit_web_view_get_snapshot_of_area(view, area);

and options is an enum with document, visible_area options. I think having three different methods is the less confusing option, in any case, the advantage of having an enum is that it can be extended, but I would avoid having a parameter that is used depending on another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849882</commentid>
    <comment_count>32</comment_count>
      <attachid>191951</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-07 01:54:49 -0800</bug_when>
    <thetext>Created attachment 191951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849890</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 02:05:55 -0800</bug_when>
    <thetext>Attachment 191951 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/ImageOptions.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitError.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp&apos;]&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3000:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850006</commentid>
    <comment_count>34</comment_count>
      <attachid>191951</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-07 05:55:28 -0800</bug_when>
    <thetext>Comment on attachment 191951
Patch

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

This looks pretty good! I have some comments though, see below.

&gt; Source/WebKit2/Shared/ImageOptions.h:46
&gt; +enum SnapshotRegion {
&gt; +    SnapshotRegionVisible = 0,
&gt; +    SnapshotRegionFullDocument
&gt; +};

This is GTK+ specific in cross platform code. I think we can add this to a gtk+ specific private header.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2936
&gt; +void WebKitWebViewDidReceiveSnapshotOfVisibleArea(WebKitWebView* webView, uint64_t callbackID, WebKit::WebImage* webImage)

First W should be lowercase. Also the OfVisibleArea sounds weird, since there are region options. webKitWebViewDidReceiveSnapshot() ? You don&apos;t need to use WebKit:: here in the cpp.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2952
&gt; +    g_simple_async_result_complete(result.get());

You should remove the result from the map when the operation is done. You can also get the result from the map with take() instead of get() and then you don&apos;t need to remove it.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2955
&gt; +

Nit: extra empty line here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2964
&gt; +    switch (region) {
&gt; +    case WEBKIT_SNAPSHOT_REGION_VISIBLE:
&gt; +        return SnapshotRegionVisible;
&gt; +    case WEBKIT_SNAPSHOT_REGION_FULL_DOCUMENT:
&gt; +        return SnapshotRegionFullDocument;
&gt; +    }
&gt; +    ASSERT_NOT_REACHED();

You can use COMPILE_ASSERT_MATCHING_ENUM to make sure the enum values are the same at compile time, and use the values directly without a conversion function.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2993
&gt; + *

Remove this extra line.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3008
&gt; +    message.set(String::fromUTF8(&quot;CallbackID&quot;), WebUInt64::create(GPOINTER_TO_UINT(result)));

I think it would be easier and more consistent to use uint64_t directly. Define a function to get the callback, something like:

uint64_t generateSnapshotCallbackID()
{
        static uint64_t uniqueCallbackID = 1;
        return uniqueCallbackID++;
}

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3010
&gt; +    webView-&gt;priv-&gt;snapshotResultsMap.set(GPOINTER_TO_UINT(result), result);

The result is leaked here, because the map takes a reference. So, you can use a GRefPtr adopting the ref and pass .get() to the map.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1129
&gt; +        &amp;&amp; !g_strcmp0(const_cast&lt;const char*&gt;(reinterpret_cast&lt;char*&gt;(cairo_image_surface_get_data(s1))),

I don&apos;t think g_strcmp0 is correct in this case, this is not NULL terminated strings, but data. You can probably use memcmp instead.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1136
&gt; +    cairo_surface_t* surface1;
&gt; +    cairo_surface_t* surface2;

Declare this when first used.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1141
&gt; +    surface1 = test-&gt;waitForSnapshot(WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_NONE);

Does this returns an error too? It seems that finish() only returns NULL in case of error. Is it considered an error to ask for the snapshot of a visible region when the visible region is empty?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1155
&gt; +    g_assert(cairo_image_surface_get_width(surface1) &lt;= 50);
&gt; +    g_assert(cairo_image_surface_get_height(surface1) &lt;= 50);
&gt; +    int width = cairo_image_surface_get_width(surface1);
&gt; +    int height = cairo_image_surface_get_height(surface1);

Why not moving the assert after getting widget/height? Use g_assert_cmpint to compare integers.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1163
&gt; +    g_assert(cairo_image_surface_get_width(surface1) == width);
&gt; +    g_assert(cairo_image_surface_get_height(surface1) == height);

Use g_asser_cmpint

&gt; Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp:201
&gt; +void WebViewTest::SelectAll()

This should be selectAll()

&gt; Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h:51
&gt; +    void SelectAll();

selectAll()

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:106
&gt; +        if (frameView) {

frameView is only used inside the if, you can do:

if (WebCore::FrameView* frameView = page-&gt;mainFrameView()) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850068</commentid>
    <comment_count>35</comment_count>
      <attachid>191951</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-07 07:27:23 -0800</bug_when>
    <thetext>Comment on attachment 191951
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2936
&gt;&gt; +void WebKitWebViewDidReceiveSnapshotOfVisibleArea(WebKitWebView* webView, uint64_t callbackID, WebKit::WebImage* webImage)
&gt; 
&gt; First W should be lowercase. Also the OfVisibleArea sounds weird, since there are region options. webKitWebViewDidReceiveSnapshot() ? You don&apos;t need to use WebKit:: here in the cpp.

Name is a left-over from the previous code.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1141
&gt;&gt; +    surface1 = test-&gt;waitForSnapshot(WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_NONE);
&gt; 
&gt; Does this returns an error too? It seems that finish() only returns NULL in case of error. Is it considered an error to ask for the snapshot of a visible region when the visible region is empty?

Yes, we consider it an error too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850076</commentid>
    <comment_count>36</comment_count>
      <attachid>191994</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-07 07:35:36 -0800</bug_when>
    <thetext>Created attachment 191994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850083</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 07:41:58 -0800</bug_when>
    <thetext>Attachment 191994 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitError.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp&apos;]&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2996:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1126:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1131:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850107</commentid>
    <comment_count>38</comment_count>
      <attachid>191994</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-07 08:16:05 -0800</bug_when>
    <thetext>Comment on attachment 191994
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2996
&gt;&gt; +                                                           reinterpret_cast&lt;gpointer&gt;(webkit_web_view_get_snapshot));
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

You need to adopt the ref. Also fix the style issues, please

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3019
&gt; + * Returns: (transfer full): a #cairo_surface_t with the retrieved snapshot

or %NULL in case of error

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1123
&gt; +static gboolean compare_cairo_surfaces(cairo_surface_t* s1, cairo_surface_t* s2)

Sorry I didn&apos;t notice this before, this should be 

bool compareCairoSurfaces(). 

But compare functions usually return 0, &lt;0 or &gt;0. This just returns whether they are equal or not so I would use cairoSurfacesEqual() or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850160</commentid>
    <comment_count>39</comment_count>
      <attachid>192018</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-07 09:24:19 -0800</bug_when>
    <thetext>Created attachment 192018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850161</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 09:26:28 -0800</bug_when>
    <thetext>Attachment 192018 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitError.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp&apos;]&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2996:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1126:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1131:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitError.h&quot;
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851259</commentid>
    <comment_count>41</comment_count>
      <attachid>192018</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-08 09:42:03 -0800</bug_when>
    <thetext>Comment on attachment 192018
Patch

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

Looks sane to me.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:96
&gt; +        WebUInt64* callbackID = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;CallbackID&quot;)));
&gt; +        WebImage* image = static_cast&lt;WebImage*&gt;(message.get(String::fromUTF8(&quot;Snapshot&quot;)));

You can just use the implicit String constructor here instead of String::fromUTF8 since the strings themselves are valid Latin1. For example:

WebUInt64* callbackID = static_cast&lt;WebUInt64*&gt;(message.get(&quot;CallbackID&quot;));

if that doesn&apos;t work:

WebUInt64* callbackID = static_cast&lt;WebUInt64*&gt;(message.get(String(&quot;CallbackID&quot;)));

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h:124
&gt; +    SnapshotRegionVisible = 0,

I don&apos;t think you need = 0 here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2936
&gt; +void WebKitWebViewDidReceiveSnapshot(WebKitWebView* webView, uint64_t callbackID, WebImage* webImage)

Shoud be webkitWebViewDidReceiveSnapshot

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2945
&gt; +        RefPtr&lt;ShareableBitmap&gt; image = webImage-&gt;bitmap();
&gt; +        if (image)

This can be one line.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2958
&gt; +static unsigned WebKitSnapshotOptionsToSnapshotOptions(WebKitSnapshotOptions options)

Function names should start with a small letter so webkitSnapshotOptionsToSnapshotOptions.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2969
&gt; +static uint64_t
&gt; +generateSnapshotCallbackID(void)

This should be one line and you don&apos;t need the void argument list.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:101
&gt; +{
&gt; +    if (messageName == String::fromUTF8(&quot;GetSnapshot&quot;)) {
&gt; +        SnapshotOptions snapshotOptions = static_cast&lt;SnapshotOptions&gt;(static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;SnapshotOptions&quot;)))-&gt;value());
&gt; +        uint64_t callbackID = static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;CallbackID&quot;)))-&gt;value();
&gt; +        SnapshotRegion region = static_cast&lt;SnapshotRegion&gt;(static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;SnapshotRegion&quot;)))-&gt;value());

Similar comments here about the strings as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851428</commentid>
    <comment_count>42</comment_count>
      <attachid>192271</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-08 12:28:02 -0800</bug_when>
    <thetext>Created attachment 192271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851434</commentid>
    <comment_count>43</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-08 12:31:23 -0800</bug_when>
    <thetext>Thanks for all the reviews. I have added a new test to make sure that cancelling the asynchronous method works properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852182</commentid>
    <comment_count>44</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-11 04:23:50 -0700</bug_when>
    <thetext>The patch looks good to me and works nicely, thanks! Adding WebKit2 owners to CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853174</commentid>
    <comment_count>45</comment_count>
      <attachid>192271</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 01:22:12 -0700</bug_when>
    <thetext>Comment on attachment 192271
Patch

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

I&apos;ve a few more really minor comments that could be improved before landing

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2988
&gt; + **/

Nit: don&apos;t use double * here, it&apos;s only needed to start the comment block. This doesn&apos;t really matter, but it&apos;s consistent with all other api docs comments.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3018
&gt; + **/

Ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:23
&gt; +#include &quot;FrameView.h&quot;

Use #include &lt;WebCore/Foo.h&gt; to include webcore headers.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:99
&gt; +        SnapshotOptions snapshotOptions = static_cast&lt;SnapshotOptions&gt;(static_cast&lt;WebUInt64*&gt;(message.get(String::fromUTF8(&quot;SnapshotOptions&quot;)))-&gt;value());

You removed all the fromUTF8 except this one String::fromUTF8(&quot;SnapshotOptions&quot;).

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:149
&gt; +    ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
&gt; +    webkitWebExtensionDidReceiveMessageToPage(WEBKIT_WEB_EXTENSION(clientInfo), toImpl(page), toImpl(name)-&gt;string(), *toImpl(static_cast&lt;WKDictionaryRef&gt;(messageBody)));

Since these are messages to pages, they should be handled by WebKitWebPage. Add webkitWebPageDidReceiveMessage instead of webkitWebExtensionDidReceiveMessageToPage, and move the code there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853237</commentid>
    <comment_count>46</comment_count>
      <attachid>192682</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-12 02:42:00 -0700</bug_when>
    <thetext>Created attachment 192682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853253</commentid>
    <comment_count>47</comment_count>
      <attachid>192682</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 02:53:59 -0700</bug_when>
    <thetext>Comment on attachment 192682
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:111
&gt; +    webkitWebPageDidReceiveMessage(toImpl(page), toImpl(name)-&gt;string(), *toImpl(static_cast&lt;WKDictionaryRef&gt;(messageBody)));

This should receive a WebKitWebPage that already has a pointer to the WebPage. Use extension-&gt;priv-&gt;pages.get(toImpl(page)); we could return early or even assert if this message if for a page we don&apos;t know about. I guess early return just in case the message is received after the web page is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853291</commentid>
    <comment_count>48</comment_count>
      <attachid>192698</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-12 03:45:38 -0700</bug_when>
    <thetext>Created attachment 192698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853297</commentid>
    <comment_count>49</comment_count>
      <attachid>192698</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-12 03:49:57 -0700</bug_when>
    <thetext>Comment on attachment 192698
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853458</commentid>
    <comment_count>50</comment_count>
      <attachid>192271</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-12 07:54:53 -0700</bug_when>
    <thetext>Comment on attachment 192271
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2988
&gt;&gt; + **/
&gt; 
&gt; Nit: don&apos;t use double * here, it&apos;s only needed to start the comment block. This doesn&apos;t really matter, but it&apos;s consistent with all other api docs comments.

If we&apos;re going to enforce this we really need to add a style checker rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854011</commentid>
    <comment_count>51</comment_count>
      <attachid>192698</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-12 19:22:49 -0700</bug_when>
    <thetext>Comment on attachment 192698
Patch

Attachment 192698 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17213007

New failing tests:
fast/css/sticky/inline-sticky.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854110</commentid>
    <comment_count>52</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-13 01:13:25 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; (From update of attachment 192271 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192271&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2988
&gt; &gt;&gt; + **/
&gt; &gt; 
&gt; &gt; Nit: don&apos;t use double * here, it&apos;s only needed to start the comment block. This doesn&apos;t really matter, but it&apos;s consistent with all other api docs comments.
&gt; 
&gt; If we&apos;re going to enforce this we really need to add a style checker rule.

Well, I&apos;m not going to reject any patch because of this, but if I ask someone to change anything else in the patch, I&apos;ll suggest to use a single * for consistency. But I don&apos;t think this is that important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854111</commentid>
    <comment_count>53</comment_count>
      <attachid>192698</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-03-13 01:15:21 -0700</bug_when>
    <thetext>Comment on attachment 192698
Patch

That&apos;s a false-positive. Flipping again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876578</commentid>
    <comment_count>54</comment_count>
      <attachid>192698</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-16 09:29:53 -0700</bug_when>
    <thetext>Comment on attachment 192698
Patch

Rejecting attachment 192698 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 192698, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
e Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp
Hunk #1 FAILED at 20.
Hunk #2 succeeded at 199 (offset 72 lines).
1 out of 2 hunks FAILED -- saving rejects to file Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp.rej
patching file Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPagePrivate.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Anders Carlsson&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/172060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876609</commentid>
    <comment_count>55</comment_count>
      <attachid>198345</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2013-04-16 10:43:01 -0700</bug_when>
    <thetext>Created attachment 198345
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876638</commentid>
    <comment_count>56</comment_count>
      <attachid>198345</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-16 11:28:26 -0700</bug_when>
    <thetext>Comment on attachment 198345
Patch for landing

Clearing flags on attachment: 198345

Committed r148526: &lt;http://trac.webkit.org/changeset/148526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876639</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-16 11:28:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166901</attachid>
            <date>2012-10-03 08:31:08 -0700</date>
            <delta_ts>2012-12-09 11:35:39 -0800</delta_ts>
            <desc>First iteration of the patch</desc>
            <filename>0001-GTK-WK2-Add-API-to-retrieve-a-snapshot-from-a-webvie.patch</filename>
            <type>text/plain</type>
            <size>15842</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSBjM2UxYTJjZGFlYTFhYmFmMzRmOGRmMTJlMzRmNThkYjcwODM1YTFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogV2VkLCAzIE9jdCAyMDEyIDE4OjI3OjQ3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0g
ICAgICAgICBbR1RLXVtXSzJdIEFkZCBBUEkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEK
IHdlYnZpZXcgICAgICAgIAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MjcwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBUaGlz
IGFkZHMgdGhlIEdUSysgQVBJIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhIHNuYXBzaG90CiAgICAg
ICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9ub3VzbHkuCgogICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGQgV0tJbWFnZUNhaXJvLmgKICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgogICAgICAgIChHZXRTbmFwc2hvdEFzeW5j
RGF0YSk6CiAgICAgICAgKGRpZEdldFNuYXBzaG90KToKICAgICAgICAod2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdCk6CiAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmlu
aXNoKTogQWRkIHRoZSBwdWJsaWMgQVBJLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oOiBEaXR0by4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3CiAgICAgICAgQVBJIHRvIHRoZSBkb2Nz
LgogICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CiAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjppbWFnZUNhbGxiYWNrKToKICAgICAgICBBZGQgYSBuZXcgSW1hZ2VDYWxs
YmFjayBjbGFzcyBmb3IgY2FsbGJhY2tzIHRoYXQgcmV0dXJuIGFuIGltYWdlLgogICAgICAgIChX
ZWJLaXQpOgogICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToK
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNuYXBzaG90KToKICAgICAgICBBZGQg
YSBwcm94eSBtZXRob2QgdG8gcmVxdWVzdCBhIHNuYXBzaG90IGZyb20gdGhlCiAgICAgICAgd2Vi
IHByb2Nlc3MuCiAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiAgICAgICAgKFdl
YktpdCk6CiAgICAgICAgKFdlYlBhZ2VQcm94eSk6IERpdHRvLgogICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRkIHRoZQogICAgICAgIG5ldyBtZXNzYWdlLgog
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgogICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29udGVudCk6CiAgICAgICAgQWRkIGEg
bWV0aG9kIHRvIHRha2UgYSBzbmFwc2hvdCBmcm9tIHRoZSB2aXNpYmxlIGNvbnRlbnQKICAgICAg
ICBvZiB0aGUgd2ViIHBhZ2UsIHRoaXMgbWV0aG9kIHdpbGwgc2VuZCBhIG1lc3NhZ2UgYmFjawog
ICAgICAgIHRvIHRoZSBVSSBwcm9jZXNzIHdpdGggdGhlIGltYWdlIGhhbmRsZS4KICAgICAgICAo
V2ViS2l0KToKICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgog
ICAgICAgIChXZWJQYWdlKToKICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOiBBZGQgdGhlIG1lc3NhZ2UKICAgICAgICBmb3IgQ3JlYXRlU25hcHNob3RPZlZp
c2libGVDb250ZW50LgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgNDMgKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCAgIHwgIDEgKwogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgfCA2NyArKysrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8IDEx
ICsrKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
IHwgIDIgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAgICAg
ICAgfCAyNiArKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCAgICAgICAgICAgIHwgIDYgKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gIHwgIDEgKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwICAgICAgfCAxMyArKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCAgICAgICAgfCAgMSArCiAuLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiB8ICAxICsKIDExIGZpbGVzIGNoYW5nZWQsIDE3MiBp
bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNiNzM3OGEuLjZjYzZjZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NiBAQAorMjAxMi0xMC0wMyAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRy
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dLMl0gQWRkIEFQSSB0byByZXRyaWV2ZSBh
IHNuYXBzaG90IGZyb20gYSB3ZWJ2aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgR1RLKyBBUEkgbmVjZXNzYXJ5IHRvIHJldHJp
ZXZlIGEgc25hcHNob3QKKyAgICAgICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9ub3VzbHkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmg6IEFkZCBXS0ltYWdl
Q2Fpcm8uaAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgor
ICAgICAgICAoR2V0U25hcHNob3RBc3luY0RhdGEpOgorICAgICAgICAoZGlkR2V0U25hcHNob3Qp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCk6IEFkZCB0aGUgcHVibGljIEFQSS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0
aGUgbmV3CisgICAgICAgIEFQSSB0byB0aGUgZG9jcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbWFnZUNhbGxi
YWNrKToKKyAgICAgICAgQWRkIGEgbmV3IEltYWdlQ2FsbGJhY2sgY2xhc3MgZm9yIGNhbGxiYWNr
cyB0aGF0IHJldHVybiBhbiBpbWFnZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRTbmFwc2hvdCk6CisgICAgICAgIEFkZCBhIHByb3h5IG1ldGhvZCB0byBy
ZXF1ZXN0IGEgc25hcHNob3QgZnJvbSB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlBhZ2VQcm94eSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46IEFkZCB0aGUKKyAgICAgICAgbmV3IG1lc3NhZ2UuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
cmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQpOgorICAgICAgICBBZGQgYSBtZXRob2QgdG8g
dGFrZSBhIHNuYXBzaG90IGZyb20gdGhlIHZpc2libGUgY29udGVudAorICAgICAgICBvZiB0aGUg
d2ViIHBhZ2UsIHRoaXMgbWV0aG9kIHdpbGwgc2VuZCBhIG1lc3NhZ2UgYmFjaworICAgICAgICB0
byB0aGUgVUkgcHJvY2VzcyB3aXRoIHRoZSBpbWFnZSBoYW5kbGUuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAg
ICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46IEFkZCB0aGUgbWVzc2FnZQorICAgICAgICBmb3IgQ3JlYXRlU25hcHNob3RPZlZpc2li
bGVDb250ZW50LgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJh
c2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQcml2YXRlLmgKaW5kZXggOWNlYWZlYy4uM2FhZDJiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLSWNvbkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0lu
c3BlY3RvckNsaWVudEd0ay5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
aW5kZXggNjYwZDVhZi4uYjI0Mjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI2MjAsMyArMjYyMCw3MCBAQCBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxlX2ZpbmlzaChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBHQXN5bmNSZXN1bAogCiAgICAgcmV0dXJuIFRSVUU7CiB9CisKK3N0cnVjdCBHZXRT
bmFwc2hvdEFzeW5jRGF0YSB7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxl
OworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHNuYXBzaG90OworfTsKK1dFQktJVF9ERUZJ
TkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0U25hcHNob3RBc3luY0RhdGEpCisKK3N0YXRpYyB2b2lk
IGRpZEdldFNuYXBzaG90KFdLSW1hZ2VSZWYgc25hcHNob3QsIFdLRXJyb3JSZWYsIHZvaWQgKmNv
bnRleHQpCit7CisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0
R1JlZihHX1NJTVBMRV9BU1lOQ19SRVNVTFQoY29udGV4dCkpOworICAgIEdldFNuYXBzaG90QXN5
bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8R2V0U25hcHNob3RBc3luY0RhdGEqPihnX3NpbXBs
ZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCkpKTsKKyAgICBH
RXJyb3IqIGVycm9yID0gMDsKKyAgICBpZiAoZ19jYW5jZWxsYWJsZV9zZXRfZXJyb3JfaWZfY2Fu
Y2VsbGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQorICAgICAgICBnX3NpbXBs
ZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKKyAgICBlbHNl
CisgICAgICAgIGRhdGEtPnNuYXBzaG90ID0gV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShzbmFw
c2hvdCk7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdDoKKyAqIEB3ZWJfdmll
dzogYSAjV2ViS2l0V2ViVmlldworICogQGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dD
YW5jZWxsYWJsZQorICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpOiBhICNHQXN5bmNSZWFkeUNh
bGxiYWNrCisgKiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHVzZXIgZGF0YQorICoKKyAqIEFzeW5j
aHJvbm91c2x5IHJldHJpZXZlcyBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHdlYiBwYWdlLgor
ICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUg
Y2FsbGVkLiBZb3UgbXVzdCBjYWxsCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2Zp
bmlzaCgpIHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKiovCit2b2lkIHdl
YmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0NhbmNl
bGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50
ZXIgdXNlckRhdGEpCit7CisgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQgPSBnX3NpbXBs
ZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNo
b3QpKTsKKyAgICBHZXRTbmFwc2hvdEFzeW5jRGF0YSogZGF0YSA9IGNyZWF0ZUdldFNuYXBzaG90
QXN5bmNEYXRhKCk7CisgICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJsZTsKKyAgICBn
X3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQsIGRhdGEsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lHZXRTbmFwc2hvdEFzeW5jRGF0
YSkpOworCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+Z2V0U25hcHNob3QoSW1hZ2VDYWxsYmFjazo6
Y3JlYXRlKHJlc3VsdCwgZGlkR2V0U25hcHNob3QpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2NhdGlv
biBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNoZXMgYW4gYXN5bmNo
cm9ub3VzIG9wcmVhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dCgpLgorICoKKyAqIFJldHVybnM6IGEgI2NhaXJvX3N1cmZhY2VfdCB3aXRoIHRoZSByZXRyaWV2
ZWQgc25hcHNob3QKKyAqKi8KK2NhaXJvX3N1cmZhY2VfdCogd2Via2l0X3dlYl92aWV3X2dldF9z
bmFwc2hvdF9maW5pc2goV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIEdFcnJvciAqKmVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdf
SVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIEZBTFNFKTsKKworICAgIEdTaW1wbGVBc3luY1Jlc3Vs
dCogc2ltcGxlID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7CisgICAgZ193YXJuX2lm
X2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZSkgPT0gd2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCk7CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVz
dWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIEZBTFNF
OworCisgICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRTbmFw
c2hvdEFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVy
KHNpbXBsZSkpOworCisgICAgcmV0dXJuIGRhdGEtPnNuYXBzaG90LmdldCgpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDM3
YWRkM2EuLjEzYzRjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTM1OSw2ICszNTksMTcgQEAgd2Via2l0X3dlYl92aWV3X3Nh
dmVfdG9fZmlsZV9maW5pc2ggICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKncKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAg
ICoqZXJyb3IpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNo
b3QgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNr
ICAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitX
RUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90
X2ZpbmlzaCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAq
KmVycm9yKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dAppbmRleCA3ZmIyYjQ5Li4zZDZlODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAg
LTEyMCw2ICsxMjAsOCBAQCB3ZWJraXRfd2ViX3ZpZXdfc2F2ZQogd2Via2l0X3dlYl92aWV3X3Nh
dmVfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxlCiB3ZWJraXRfd2ViX3ZpZXdf
c2F2ZV90b19maWxlX2ZpbmlzaAord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdAord2Via2l0
X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2gKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODk3OTIxNy4uMmQzOTk4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM0NjEsNiArMzQ2MSwxOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cHJpbnRGaW5pc2hlZENhbGxiYWNrKGNvbnN0IFJlc291cmNlRXJy
b3ImIHByaW50RXJyb3IsIHVpbnQ2NAogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpp
bWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit7CisgICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IFdlYkltYWdl
OjpjcmVhdGUoU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKSk7CisgICAgUmVmUHRyPElt
YWdlQ2FsbGJhY2s+IGNhbGxiYWNrID0gbV9pbWFnZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQp
OworICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBh
c3NlcnQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGltYWdlLmdldCgpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJv
eHk6OmZvY3VzZWRGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBpZiAoIWZy
YW1lSUQpIHsKQEAgLTM1ODcsNiArMzU5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkQ3Jhc2goKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAo
bV9wcmludEZpbmlzaGVkQ2FsbGJhY2tzKTsKICNlbmRpZgorICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX2ltYWdlQ2FsbGJhY2tzKTsKIAogICAgIFZlY3RvcjxXZWJFZGl0Q29tbWFuZFByb3h5
Kj4gZWRpdENvbW1hbmRWZWN0b3I7CiAgICAgY29weVRvVmVjdG9yKG1fZWRpdENvbW1hbmRTZXQs
IGVkaXRDb21tYW5kVmVjdG9yKTsKQEAgLTQwNjIsNCArNDA3NSwxNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQsIFZl
Y3RvcjxTdHJpbgogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAg
ICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7CisgICAgbV9pbWFnZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2Fs
bGJhY2suZ2V0KCkpOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
cmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggNmUzMjI2YS4uZWI0M2U3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTgzLDYgKzE4Myw4IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmLCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqPiBT
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxXS0Vycm9yUmVmPiBQcmludEZpbmlzaGVkQ2FsbGJh
Y2s7CiAjZW5kaWYKIAordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tJbWFnZVJlZj4gSW1hZ2VD
YWxsYmFjazsKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBzdHJ1Y3QgUXVldWVkVG91Y2hF
dmVudHMgewogICAgIFF1ZXVlZFRvdWNoRXZlbnRzKGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
IGV2ZW50KQpAQCAtNjgyLDYgKzY4NCw3IEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKEdUSykK
ICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmlu
dEluZm8mLCBQYXNzUmVmUHRyPFByaW50RmluaXNoZWRDYWxsYmFjaz4pOwogI2VuZGlmCisgICAg
dm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHBlbmRpbmdBUElSZXF1ZXN0VVJM
KCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQVBJUmVxdWVzdFVSTDsgfQogCkBAIC03MzEsNiAr
NzM0LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5kQ29sb3JDaG9vc2VyKCk7CiAjZW5kaWYKIAor
ICAgIHZvaWQgZ2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPik7CisKIHByaXZh
dGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqLCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKQEAgLTEwNTgsNiArMTA2
Myw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+ID4gbV9wcmludEZpbmlzaGVkQ2FsbGJhY2tz
OwogI2VuZGlmCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEltYWdlQ2FsbGJhY2s+ID4g
bV9pbWFnZUNhbGxiYWNrczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94eSo+IG1f
ZWRpdENvbW1hbmRTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDU4OGM3ZDIuLmVlOTQ5NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY5LDYg
KzE2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUHJpbnRGaW5pc2hlZENh
bGxiYWNrKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAjZW5kaWYKIAorICAgIEltYWdlQ2FsbGJhY2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBpbWFnZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBQYWdlU2NhbGVGYWN0
b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9yKQogCiAjaWYgUExBVEZPUk0oR1RLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNkMzlk
YjIuLmZkZGM4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTEyNjAsNiArMTI2MCwxOSBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQ
YWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQog
ICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRl
U25hcHNob3RPZlZpc2libGVDb250ZW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAg
ICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIEludFJlY3QgY29udGVudFJl
Y3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7CisgICAgUmVmUHRyPFdl
YkltYWdlPiBzbmFwc2hvdEltYWdlID0gc2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb250ZW50
UmVjdCwgMSwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlIHwgU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZyk7CisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7CisgICAgc25hcHNob3RJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRsZShoYW5kbGUp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUs
IGNhbGxiYWNrSUQpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKIHsKICAg
ICBtX3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5ZDRkZDQ2Li5hNWYwYjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM1NSw2ICszNTUsNyBA
QCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jik7CiAKICAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiBzY2FsZWRTbmFwc2hv
dFdpdGhPcHRpb25zKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBkb3VibGUgc2NhbGVGYWN0b3Is
IFNuYXBzaG90T3B0aW9ucyk7CisgICAgdm9pZCBjcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRl
bnQodWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGN1
cnJlbnRFdmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGQ5N2FkMzEuLjg4ZDZiOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0zMDIsNCArMzAyLDUgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgUExBVEZP
Uk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgU2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1dpbmRvd0lkKGludDY0X3QgaWQpCiAjZW5kaWYKKyAgICBDcmVhdGVTbmFwc2hvdE9m
VmlzaWJsZUNvbnRlbnQodWludDY0X3QgY2FsbGJhY2tJRCkKIH0KLS0gCjEuNy4xMS40Cgo=
</data>
<flag name="review"
          id="179392"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178430</attachid>
            <date>2012-12-09 11:35:39 -0800</date>
            <delta_ts>2012-12-10 04:34:02 -0800</delta_ts>
            <desc>[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270</desc>
            <filename>-GTKWK2-Add-API-to-retrieve-a-snapshot-from-a-webv.patch</filename>
            <type>text/plain</type>
            <size>13377</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSBjMjY1ZmU5NGVlMzhlYzMyZDlkNDViODBmZGYyM2E0MTA2MGFmYmVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogV2VkLCAzIE9jdCAyMDEyIDE4OjI3OjQ3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0g
ICAgICAgICBbR1RLXVtXSzJdIEFkZCBBUEkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEK
IHdlYnZpZXcgICAgICAgIAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MjcwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBUaGlz
IGFkZHMgdGhlIEdUSysgQVBJIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhIHNuYXBzaG90CiAgICAg
ICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9ub3VzbHkuCgogICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGQgV0tJbWFnZUNhaXJvLmgKICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgogICAgICAgIChHZXRTbmFwc2hvdEFzeW5j
RGF0YSk6CiAgICAgICAgKGRpZEdldFNuYXBzaG90KToKICAgICAgICAod2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdCk6CiAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmlu
aXNoKTogQWRkIHRoZSBwdWJsaWMgQVBJLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oOiBEaXR0by4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3CiAgICAgICAgQVBJIHRvIHRoZSBkb2Nz
LgogICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CiAgICAgICAgKFdlYktpdCk6
CiAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTbmFwc2hvdCk6CiAgICAgICAgQWRk
IGEgcHJveHkgbWV0aG9kIHRvIHJlcXVlc3QgYSBzbmFwc2hvdCBmcm9tIHRoZSB3ZWIgcHJvY2Vz
cy4KICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKICAgICAgICAoV2ViS2l0KToK
ICAgICAgICAoV2ViUGFnZVByb3h5KTogRGl0dG8uCiAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CiAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlU25hcHNob3RP
ZlZpc2libGVDb250ZW50KTogQWRkIGEgbWV0aG9kIHRvCiAgICAgICAgdGFrZSBhIHNuYXBzaG90
IGZyb20gdGhlIHZpc2libGUgY29udGVudCBvZiB0aGUgd2ViIHBhZ2UsIHRoaXMKICAgICAgICBt
ZXRob2Qgd2lsbCBzZW5kIGEgbWVzc2FnZSBiYWNrIHRvIHRoZSBVSSBwcm9jZXNzIHdpdGggdGhl
IGltYWdlCiAgICAgICAgaGFuZGxlLgogICAgICAgIChXZWJLaXQpOgogICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCiAgICAgICAgKFdlYlBhZ2UpOgogICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCB0aGUgbWVzc2Fn
ZSBmb3IKICAgICAgICBDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQuCi0tLQogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNyArKysrKysr
KysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCAg
IHwgIDEgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAgfCA2OSArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8IDEwICsrKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IHwgIDIgKwogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAgICAgICAgfCAxMyArKysrCiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgICAgICB8ICAyICsKIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgICAgIHwgMTMgKysrKwogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICAgICAgfCAgMSArCiAuLi4v
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiB8ICAxICsKIDEw
IGZpbGVzIGNoYW5nZWQsIDE0OSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI3NzUyNWYu
LjcxOTNmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0xMC0wMyAgQ2xhdWRp
byBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dLMl0g
QWRkIEFQSSB0byByZXRyaWV2ZSBhIHNuYXBzaG90IGZyb20gYSB3ZWJ2aWV3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI3MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgR1RLKyBB
UEkgbmVjZXNzYXJ5IHRvIHJldHJpZXZlIGEgc25hcHNob3QKKyAgICAgICAgZnJvbSBhIHdlYnZp
ZXcgYXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQ
cml2YXRlLmg6IEFkZCBXS0ltYWdlQ2Fpcm8uaAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoR2V0U25hcHNob3RBc3luY0RhdGEpOgorICAg
ICAgICAoZGlkR2V0U25hcHNob3QpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFw
c2hvdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCk6IEFk
ZCB0aGUgcHVibGljIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3CisgICAgICAgIEFQSSB0byB0aGUgZG9jcy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U25hcHNob3QpOgorICAgICAgICBBZGQg
YSBwcm94eSBtZXRob2QgdG8gcmVxdWVzdCBhIHNuYXBzaG90IGZyb20gdGhlIHdlYiBwcm9jZXNz
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVNuYXBz
aG90T2ZWaXNpYmxlQ29udGVudCk6IEFkZCBhIG1ldGhvZCB0bworICAgICAgICB0YWtlIGEgc25h
cHNob3QgZnJvbSB0aGUgdmlzaWJsZSBjb250ZW50IG9mIHRoZSB3ZWIgcGFnZSwgdGhpcworICAg
ICAgICBtZXRob2Qgd2lsbCBzZW5kIGEgbWVzc2FnZSBiYWNrIHRvIHRoZSBVSSBwcm9jZXNzIHdp
dGggdGhlIGltYWdlCisgICAgICAgIGhhbmRsZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCisgICAgICAgIChXZWJQYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRk
IHRoZSBtZXNzYWdlIGZvcgorICAgICAgICBDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQu
CisKIDIwMTItMTItMDkgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIEZpeCB1bnVzZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2FybmluZ3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRleCBiZTM5ZTgw
Li44NWFkMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbG9jYXRp
b25Qb3NpdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJY29uRGF0YWJhc2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0
b3IuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW5zcGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBmYjBjNWVkLi4zYWE5NWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIgogI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCisj
aW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlLmgiCkBAIC0yNzkxLDMgKzI3OTIsNzEgQEAgV2Vi
S2l0RG93bmxvYWQqIHdlYmtpdF93ZWJfdmlld19kb3dubG9hZF91cmkoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgY2hhcioKIAogICAgIHJldHVybiBkb3dubG9hZDsKIH0KKworc3RydWN0
IEdldFNuYXBzaG90QXN5bmNEYXRhIHsKKyAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2Vs
bGFibGU7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc25hcHNob3Q7Cit9OworV0VCS0lU
X0RFRklORV9BU1lOQ19EQVRBX1NUUlVDVChHZXRTbmFwc2hvdEFzeW5jRGF0YSkKKworc3RhdGlj
IHZvaWQgZGlkR2V0U25hcHNob3QoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdl
SGFuZGxlLCBXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQoreworICAgIEdSZWZQdHI8R1NpbXBs
ZUFzeW5jUmVzdWx0PiByZXN1bHQgPSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxUKGNv
bnRleHQpKTsKKyAgICBHZXRTbmFwc2hvdEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdl
dFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3Bv
aW50ZXIocmVzdWx0LmdldCgpKSk7CisgICAgR0Vycm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdf
Y2FuY2VsbGFibGVfc2V0X2Vycm9yX2lmX2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQo
KSwgJmVycm9yKSkKKyAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVz
dWx0LmdldCgpLCBlcnJvcik7CisgICAgZWxzZSBpZiAoIWltYWdlSGFuZGxlLmlzTnVsbCgpKSB7
CisgICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOworICAgICAgICBp
ZiAoaW1hZ2UpCisgICAgICAgICAgICBkYXRhLT5zbmFwc2hvdCA9IGltYWdlLT5jcmVhdGVDYWly
b1N1cmZhY2UoKTsKKyAgICB9CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJl
c3VsdC5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdDoK
KyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQGNhbmNlbGxhYmxlOiAoYWxsb3ct
bm9uZSk6IGEgI0dDYW5jZWxsYWJsZQorICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpOiBhICNH
QXN5bmNSZWFkeUNhbGxiYWNrCisgKiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHVzZXIgZGF0YQor
ICoKKyAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50
IHdlYiBwYWdlLgorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxi
YWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgbXVzdCBjYWxsCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90X2ZpbmlzaCgpIHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisg
KiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxs
YmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1
bHQgPSBnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFj
aywgdXNlckRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3QpKTsKKyAgICBHZXRTbmFwc2hvdEFzeW5jRGF0YSogZGF0YSA9IGNyZWF0
ZUdldFNuYXBzaG90QXN5bmNEYXRhKCk7CisgICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBjYW5jZWxs
YWJsZTsKKyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1
bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lHZXRTbmFw
c2hvdEFzeW5jRGF0YSkpOworCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+Z2V0U25hcHNob3QoSW1h
Z2VDYWxsYmFjazo6Y3JlYXRlKHJlc3VsdCwgZGlkR2V0U25hcHNob3QpKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAj
V2ViS2l0V2ViVmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJl
dHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNo
ZXMgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdCgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKSA6IGEgI2Nh
aXJvX3N1cmZhY2VfdCB3aXRoIHRoZSByZXRyaWV2ZWQgc25hcHNob3QKKyAqKi8KK2NhaXJvX3N1
cmZhY2VfdCogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2goV2ViS2l0V2ViVmll
dyogd2ViVmlldywgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgMCk7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoR19JU19BU1lOQ19SRVNVTFQocmVzdWx0KSwgMCk7CisK
KyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChy
ZXN1bHQpOworICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291
cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QpOworCisgICAg
aWYgKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVfZXJyb3Ioc2ltcGxlLCBlcnJvcikp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNl
KHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0
X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlKSktPnNuYXBzaG90LmdldCgpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA3
YzgzODEzLi40OTYyNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCkBAIC0zNzQsNiArMzc0LDE2IEBAIHdlYmtpdF93ZWJfdmlld19z
YXZlX3RvX2ZpbGVfZmluaXNoICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJ
VF9BUEkgV2ViS2l0RG93bmxvYWQgKgogd2Via2l0X3dlYl92aWV3X2Rvd25sb2FkX3VyaSAgICAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICAgICAgICAgICAgICAgICp1cmkpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAqY2FuY2VsbGFi
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAg
ICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgord2Via2l0X3dl
Yl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICAgKnJlc3VsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3Ig
ICAgICAgICAgICAgICAgICAgKiplcnJvcik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CmluZGV4IDJmNmY1NGIuLjUyNDcxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dApAQCAtMTIzLDYgKzEyMyw4IEBAIHdlYmtpdF93ZWJfdmlld19zYXZlX2ZpbmlzaAog
d2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZQogd2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmls
ZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19kb3dubG9hZF91cmkKK3dlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3QKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoCiAKIDxTVUJT
RUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDE0MDZiM2IuLmFi
MGE2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00
MjA0LDQgKzQyMDQsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0
KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKIH0KICNlbmRpZgogCit2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxs
YmFjaykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjYWxsYmFjay0+aW52YWxp
ZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9pbWFnZUNhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQoY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2EzMTU2OS4uZjU0OTJkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzYxLDYgKzc2MSw4IEBAIHB1YmxpYzoKICAg
ICBkb3VibGUgbWluaW11bUxheW91dFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTGF5
b3V0V2lkdGg7IH0KICAgICB2b2lkIHNldE1pbmltdW1MYXlvdXRXaWR0aChkb3VibGUpOwogCisg
ICAgdm9pZCBnZXRTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlQ2FsbGJhY2s+KTsKKwogcHJpdmF0
ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1By
b3h5PiwgV2ViUGFnZUdyb3VwKiwgdWludDY0X3QgcGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ4NTMyZjUuLjI3MGRkOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTE0MDQsNiArMTQwNCwxOSBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRT
bmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQogICAgIHJldHVybiBz
bmFwc2hvdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlU25hcHNob3RPZlZp
c2libGVDb250ZW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1l
VmlldykKKyAgICAgICAgcmV0dXJuOworICAgIEludFJlY3QgY29udGVudFJlY3QgPSBmcmFtZVZp
ZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7CisgICAgUmVmUHRyPFdlYkltYWdlPiBzbmFw
c2hvdEltYWdlID0gc2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb250ZW50UmVjdCwgMSwgU25h
cHNob3RPcHRpb25zU2hhcmVhYmxlIHwgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhp
Z2hsaWdodGluZyk7CisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAg
c25hcHNob3RJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQp
KTsKK30KKwogdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKIHsKICAgICBtX3VpQ2xpZW50
LnBhZ2VEaWRTY3JvbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCAzYjZkZDhlLi5iZmQzYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM2MCw2ICszNjAsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7CiAKICAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25z
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBkb3VibGUgc2NhbGVGYWN0b3IsIFNuYXBzaG90T3B0
aW9ucyk7CisgICAgdm9pZCBjcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQodWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAKICAgICBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGN1cnJlbnRFdmVudCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IDYzODM1ODMuLjc0ZDJlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMTMs
NCArMzEzLDUgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgUExBVEZPUk0oR1RLKSAmJiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRv
d0lkKGludDY0X3QgaWQpCiAjZW5kaWYKKyAgICBDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRl
bnQodWludDY0X3QgY2FsbGJhY2tJRCkKIH0KLS0gCjEuNy4xMS43
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178516</attachid>
            <date>2012-12-10 04:34:02 -0800</date>
            <delta_ts>2012-12-10 15:21:32 -0800</delta_ts>
            <desc>[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270</desc>
            <filename>-GTKWK2-Add-API-to-retrieve-a-snapshot-from-a-webv.patch</filename>
            <type>text/plain</type>
            <size>13753</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSA1ODZjMWE3Y2EwNWUyY2I1MDg5OTQ4NWJhNTMwNzNkMjBlZTVkNzIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogV2VkLCAzIE9jdCAyMDEyIDE4OjI3OjQ3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0g
ICAgICAgICBbR1RLXVtXSzJdIEFkZCBBUEkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEK
IHdlYnZpZXcgICAgICAgIAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MjcwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBUaGlz
IGFkZHMgdGhlIEdUSysgQVBJIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhIHNuYXBzaG90CiAgICAg
ICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9ub3VzbHkuCgogICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CiAgICAgICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToK
ICAgICAgICAoZGlkR2V0U25hcHNob3QpOgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90KToKICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2gpOiBB
ZGQgdGhlIHB1YmxpYyBBUEkuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3Lmg6IERpdHRvLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LXNlY3Rpb25zLnR4dDogQWRkIHRoZSBuZXcKICAgICAgICBBUEkgdG8gdGhlIGRvY3MuCiAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgICAgICAoV2ViS2l0KToKICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNuYXBzaG90KToKICAgICAgICBBZGQgYSBwcm94
eSBtZXRob2QgdG8gcmVxdWVzdCBhIHNuYXBzaG90IGZyb20gdGhlIHdlYiBwcm9jZXNzLgogICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgogICAgICAgIChXZWJLaXQpOgogICAgICAg
IChXZWJQYWdlUHJveHkpOiBEaXR0by4KICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVTbmFwc2hvdE9mVmlzaWJs
ZUNvbnRlbnQpOiBBZGQgYSBtZXRob2QgdG8KICAgICAgICB0YWtlIGEgc25hcHNob3QgZnJvbSB0
aGUgdmlzaWJsZSBjb250ZW50IG9mIHRoZSB3ZWIgcGFnZSwgdGhpcwogICAgICAgIG1ldGhvZCB3
aWxsIHNlbmQgYSBtZXNzYWdlIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3Mgd2l0aCB0aGUgaW1hZ2UK
ICAgICAgICBoYW5kbGUuCiAgICAgICAgKFdlYktpdCk6CiAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOiBEaXR0by4KICAgICAgICAoV2ViUGFnZSk6CiAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkIHRoZSBtZXNzYWdlIGZvcgog
ICAgICAgIENyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29udGVudC4KLS0tCiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2ICsrKysrKysrKysKIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIHwgNzcgKysr
KysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oICAgfCAxOCArKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQgfCAgMyArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgICAgICB8IDEzICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCAgICAgICAgICAgIHwgIDIgKwogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgfCAxNSArKysrKwogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICAgICAgfCAgMSArCiAuLi4vV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiB8ICAxICsKIDkgZmlsZXMgY2hh
bmdlZCwgMTY2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjc3NTI1Zi4uMmM1MjQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTAzICBDbGF1ZGlvIFNhYXZlZHJh
ICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0syXSBBZGQgQVBJIHRv
IHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsrIEFQSSBuZWNlc3Nh
cnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdAorICAgICAgICBmcm9tIGEgd2VidmlldyBhc3luY2hy
b25vdXNseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
OgorICAgICAgICAoR2V0U25hcHNob3RBc3luY0RhdGEpOgorICAgICAgICAoZGlkR2V0U25hcHNo
b3QpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCk6CisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCk6IEFkZCB0aGUgcHVibGljIEFQSS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IERpdHRvLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFk
ZCB0aGUgbmV3CisgICAgICAgIEFQSSB0byB0aGUgZG9jcy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0U25hcHNob3QpOgorICAgICAgICBBZGQgYSBwcm94eSBtZXRob2QgdG8g
cmVxdWVzdCBhIHNuYXBzaG90IGZyb20gdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQYWdl
UHJveHkpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29udGVu
dCk6IEFkZCBhIG1ldGhvZCB0bworICAgICAgICB0YWtlIGEgc25hcHNob3QgZnJvbSB0aGUgdmlz
aWJsZSBjb250ZW50IG9mIHRoZSB3ZWIgcGFnZSwgdGhpcworICAgICAgICBtZXRob2Qgd2lsbCBz
ZW5kIGEgbWVzc2FnZSBiYWNrIHRvIHRoZSBVSSBwcm9jZXNzIHdpdGggdGhlIGltYWdlCisgICAg
ICAgIGhhbmRsZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDogRGl0dG8uCisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkIHRoZSBtZXNzYWdlIGZvcgor
ICAgICAgICBDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQuCisKIDIwMTItMTItMDkgIEth
bmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCB1bnVzZWQg
cGFyYW1ldGVyIGNvbXBpbGUgd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZmIwYzVlZC4uNmMyNDU2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJXZWJD
b250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAj
aW5jbHVkZSAiV2ViRGF0YS5oIgpAQCAtMjc5MSwzICsyNzkyLDc5IEBAIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGNoYXIqCiAKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CisKK3N0cnVjdCBHZXRTbmFwc2hv
dEFzeW5jRGF0YSB7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOworICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHNuYXBzaG90OworfTsKK1dFQktJVF9ERUZJTkVfQVNZ
TkNfREFUQV9TVFJVQ1QoR2V0U25hcHNob3RBc3luY0RhdGEpCisKK3N0YXRpYyB2b2lkIGRpZEdl
dFNuYXBzaG90KGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgV0tF
cnJvclJlZiwgdm9pZCogY29udGV4dCkKK3sKKyAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3Vs
dD4gcmVzdWx0ID0gYWRvcHRHUmVmKEdfU0lNUExFX0FTWU5DX1JFU1VMVChjb250ZXh0KSk7Cisg
ICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRTbmFwc2hvdEFz
eW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHJlc3Vs
dC5nZXQoKSkpOworICAgIEdFcnJvciogZXJyb3IgPSAwOworICAgIGlmIChnX2NhbmNlbGxhYmxl
X3NldF9lcnJvcl9pZl9jYW5jZWxsZWQoZGF0YS0+Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvcikp
CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwg
ZXJyb3IpOworICAgIGVsc2UgaWYgKCFpbWFnZUhhbmRsZS5pc051bGwoKSkgeworICAgICAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBpbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGlt
YWdlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKKyAgICAgICAgaWYgKGltYWdlKQor
ICAgICAgICAgICAgZGF0YS0+c25hcHNob3QgPSBpbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7
CisgICAgfQorCisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQo
KSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdDoKKyAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldworICogQG9wdGlvbnM6IHRoZSAjV2ViS2l0U25hcHNob3RP
cHRpb25zIGZvciB0aGUgc25hcHNob3QKKyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBh
ICNHQ2FuY2VsbGFibGUKKyAqIEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogYSAjR0FzeW5jUmVh
ZHlDYWxsYmFjaworICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB1c2VyIGRhdGEKKyAqCisgKiBB
c3luY2hyb25vdXNseSByZXRyaWV2ZXMgYSBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCB3ZWIgcGFn
ZS4KKyAqCisgKiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxs
IGJlIGNhbGxlZC4gWW91IG11c3QgY2FsbAorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dF9maW5pc2goKSB0byBnZXQgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLgorICoqLwordm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBH
QXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBH
U2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19P
QkpFQ1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxn
cG9pbnRlcj4od2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCkpOworICAgIEdldFNuYXBzaG90
QXN5bmNEYXRhKiBkYXRhID0gY3JlYXRlR2V0U25hcHNob3RBc3luY0RhdGEoKTsKKyAgICBkYXRh
LT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9z
ZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJv
eU5vdGlmeT4oZGVzdHJveUdldFNuYXBzaG90QXN5bmNEYXRhKSk7CisKKyAgICBTbmFwc2hvdE9w
dGlvbnMgc25hcHNob3RPcHRpb25zOworICAgIGlmIChvcHRpb25zICYgV0VCS0lUX1NOQVBTSE9U
X09QVElPTlNfUEFJTlRfU0VMRUNUSU9OX1JFQ1RBTkdMRSkKKyAgICAgICAgc25hcHNob3RPcHRp
b25zIHw9IFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlOworICAgIGlmIChv
cHRpb25zICYgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfRVhDTFVERV9TRUxFQ1RJT05fSElHSExJ
R0hUSU5HKQorICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZzsKKworICAgIGdldFBhZ2Uod2ViVmlldyktPmdldFNuYXBz
aG90KEltYWdlQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIGRpZEdldFNuYXBzaG90KSwgb3B0aW9u
cyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2g6Cisg
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jlc3Vs
dAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGlnbm9y
ZQorICoKKyAqIEZpbmlzaGVzIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRo
IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgZnVsbCkgOiBhICNjYWlyb19zdXJmYWNlX3Qgd2l0aCB0aGUgcmV0cmlldmVkIHNuYXBzaG90
CisgKiovCitjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmlu
aXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3Iq
KiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldyksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdfSVNfQVNZTkNfUkVTVUxU
KHJlc3VsdCksIDApOworCisgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiBzaW1wbGUgPSBHX1NJTVBM
RV9BU1lOQ19SRVNVTFQocmVzdWx0KTsKKyAgICBnX3dhcm5faWZfZmFpbChnX3NpbXBsZV9hc3lu
Y19yZXN1bHRfZ2V0X3NvdXJjZV90YWcoc2ltcGxlKSA9PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90KTsKKworICAgIGlmIChnX3NpbXBsZV9hc3luY19yZXN1bHRfcHJvcGFnYXRlX2Vycm9y
KHNpbXBsZSwgZXJyb3IpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjYWlyb19z
dXJmYWNlX3JlZmVyZW5jZShzdGF0aWNfY2FzdDxHZXRTbmFwc2hvdEFzeW5jRGF0YSo+KGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBsZSkpLT5zbmFwc2hvdC5n
ZXQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmgKaW5kZXggN2M4MzgxMy4uYTA0M2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMTI5LDYgKzEyOSwxMyBAQCB0
eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9TQVZFX01PREVfTUhUTUwKIH0gV2ViS2l0U2F2ZU1v
ZGU7CiAKK3R5cGVkZWYgZW51bSB7CisgIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUsCisK
KyAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfRVhDTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5H
ID0gMSA8PCAwLAorICBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19QQUlOVF9TRUxFQ1RJT05fUkVD
VEFOR0xFICAgPSAxIDw8IDEKK30gV2ViS2l0U25hcHNob3RPcHRpb25zOworCiBzdHJ1Y3QgX1dl
YktpdFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKIApAQCAtMzc0LDYg
KzM4MSwxNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxlX2ZpbmlzaCAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdERvd25sb2FkICoKIHdlYmtp
dF93ZWJfdmlld19kb3dubG9hZF91cmkgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgICAgICAgICAqdXJp
KTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNu
YXBzaG90T3B0aW9ucyAgICAgIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAqY2FuY2Vs
bGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAg
ICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgord2Via2l0
X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICAgKnJlc3VsdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJy
b3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CmluZGV4IDJmNmY1NGIuLjczYmU1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNl
Y3Rpb25zLnR4dApAQCAtNjgsNiArNjgsNyBAQCBXZWJLaXRXZWJWaWV3CiBXZWJLaXRMb2FkRXZl
bnQKIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZQogV2ViS2l0U2F2ZU1vZGUKK1dlYktpdFNuYXBz
aG90T3B0aW9ucwogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJ
TkdfQ09NTUFORF9DVVQKQEAgLTEyMyw2ICsxMjQsOCBAQCB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9m
aW5pc2gKIHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGUKIHdlYmtpdF93ZWJfdmlld19zYXZl
X3RvX2ZpbGVfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpCit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3NuYXBzaG90Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaAog
CiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxNDA2
YjNiLi43MDkxZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNDIwNCw0ICs0MjA0LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVVJJ
UmVxdWVzdChTdHJpbmcgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCiB9CiAjZW5kaWYK
IAordm9pZCBXZWJQYWdlUHJveHk6OmdldFNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2VDYWxsYmFj
az4gY2FsbGJhY2ssIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQoreworICAgIGlmICghaXNWYWxp
ZCgpKSB7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKKyAgICBtX2ltYWdlQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7
CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVNuYXBzaG90
T2ZWaXNpYmxlQ29udGVudChjYWxsYmFja0lELCBvcHRpb25zKSwgbV9wYWdlSUQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCAzYTMxNTY5Li42YjlmMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC03NjEsNiArNzYxLDggQEAgcHVibGljOgogICAgIGRvdWJsZSBtaW5pbXVt
TGF5b3V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRXaWR0aDsgfQogICAg
IHZvaWQgc2V0TWluaW11bUxheW91dFdpZHRoKGRvdWJsZSk7CiAKKyAgICB2b2lkIGdldFNuYXBz
aG90KFBhc3NSZWZQdHI8SW1hZ2VDYWxsYmFjaz4sIFNuYXBzaG90T3B0aW9ucyk7CisKIHByaXZh
dGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqLCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkODUzMmY1Li40ZWRiZGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0xNDA0LDYgKzE0MDQsMjEgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVk
U25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAgICByZXR1cm4g
c25hcHNob3QucmVsZWFzZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNyZWF0ZVNuYXBzaG90T2ZW
aXNpYmxlQ29udGVudCh1aW50NjRfdCBjYWxsYmFja0lELCBTbmFwc2hvdE9wdGlvbnMgc25hcHNo
b3RPcHRpb25zKQoreworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsK
KyAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
ZmFsc2UpOworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gU25hcHNob3RPcHRpb25zU2hh
cmVhYmxlIHwgc25hcHNob3RPcHRpb25zOworCisgICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hv
dEltYWdlID0gc2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb250ZW50UmVjdCwgMSwgb3B0aW9u
cyk7CisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgc25hcHNob3RJ
bWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKK30KKwog
dm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKIHsKICAgICBtX3VpQ2xpZW50LnBhZ2VEaWRT
Y3JvbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCAzYjZkZDhlLi5kODUxMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM2MCw2ICszNjAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29y
ZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKICAg
ICBQYXNzUmVmUHRyPFdlYkltYWdlPiBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBkb3VibGUgc2NhbGVGYWN0b3IsIFNuYXBzaG90T3B0aW9ucyk7Cisg
ICAgdm9pZCBjcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQodWludDY0X3QgY2FsbGJhY2tJ
RCwgU25hcHNob3RPcHRpb25zKTsKIAogICAgIHN0YXRpYyBjb25zdCBXZWJFdmVudCogY3VycmVu
dEV2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNjM4MzU4My4uNGUwMzBjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTMxMyw0ICszMTMsNSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICNpZiBQTEFURk9STShH
VEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBTZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nV2luZG93SWQoaW50NjRfdCBpZCkKICNlbmRpZgorICAgIENyZWF0ZVNuYXBzaG90T2ZWaXNp
YmxlQ29udGVudCh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50MzJfdCBzbmFwc2hvdE9wdGlvbnMp
CiB9Ci0tIAoxLjcuMTEuNw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178647</attachid>
            <date>2012-12-10 15:21:32 -0800</date>
            <delta_ts>2012-12-11 01:53:13 -0800</delta_ts>
            <desc>[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270</desc>
            <filename>-GTKWK2-Add-API-to-retrieve-a-snapshot-from-a-webv.patch</filename>
            <type>text/plain</type>
            <size>19516</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSAwNDM0ZTZhY2FkNWMzNjA3ZGMzYzk4MDM3ZjZjODJjZWNlMGQ4YzU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogV2VkLCAzIE9jdCAyMDEyIDE4OjI3OjQ3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0g
ICAgICAgICBbR1RLXVtXSzJdIEFkZCBBUEkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEK
IHdlYnZpZXcgICAgICAgIAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MjcwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBUaGlz
IGFkZHMgdGhlIEdUSysgQVBJIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhIHNuYXBzaG90CiAgICAg
ICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9ub3VzbHkuCgogICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RXJyb3IuY3BwOgogICAgICAgICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVh
cmspOgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaDogQWRkIHNuYXBz
aG90dGluZyBlcnJvcgogICAgICAgIGhhbmRsaW5nLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CiAgICAgICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKICAg
ICAgICAoZGlkR2V0U25hcHNob3QpOgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90KToKICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2gpOiBBZGQg
dGhlIHB1YmxpYyBBUEkuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
Lmg6IERpdHRvLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNl
Y3Rpb25zLnR4dDogQWRkIHRoZSBuZXcKICAgICAgICBBUEkgdG8gdGhlIGRvY3MuCiAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CiAgICAgICAg
KHRlc3RXZWJWaWV3U25hcHNob3QpOgogICAgICAgIChiZWZvcmVBbGwpOiBBZGQgdGVzdHMgZm9y
IHRoZSBzbmFwc2hvdHRpbmcgQVBJLgogICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CiAgICAgICAgKFdlYktpdCk6CiAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRT
bmFwc2hvdCk6CiAgICAgICAgQWRkIGEgcHJveHkgbWV0aG9kIHRvIHJlcXVlc3QgYSBzbmFwc2hv
dCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKICAgICAgICAoV2ViS2l0KToKICAgICAgICAoV2ViUGFnZVByb3h5KTogRGl0dG8uCiAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CiAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Y3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KTogQWRkIGEgbWV0aG9kIHRvCiAg
ICAgICAgdGFrZSBhIHNuYXBzaG90IGZyb20gdGhlIHZpc2libGUgY29udGVudCBvZiB0aGUgd2Vi
IHBhZ2UsIHRoaXMKICAgICAgICBtZXRob2Qgd2lsbCBzZW5kIGEgbWVzc2FnZSBiYWNrIHRvIHRo
ZSBVSSBwcm9jZXNzIHdpdGggdGhlIGltYWdlCiAgICAgICAgaGFuZGxlLgogICAgICAgIChXZWJL
aXQpOgogICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCiAgICAg
ICAgKFdlYlBhZ2UpOgogICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46IEFkZCB0aGUgbWVzc2FnZSBmb3IKICAgICAgICBDcmVhdGVTbmFwc2hvdE9mVmlzaWJs
ZUNvbnRlbnQuCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCA0MyArKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEVycm9yLmNwcCAgIHwgIDUgKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEVycm9yLmggICAgIHwgMTQgKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgfCA4MCArKysrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8IDE4
ICsrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dCB8ICA2ICsrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwICB8IDUyICsrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCAgICAgICAgICB8IDEzICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCAgICAgICAgICAgIHwgIDIgKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgfCAxNiArKysrKwogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICAgICAgfCAgMSArCiAuLi4vV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiB8ICAxICsKIDEyIGZpbGVzIGNoYW5n
ZWQsIDI1MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI3NzUyNWYuLjk0YjQ0MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0xMC0wMyAgQ2xhdWRpbyBTYWF2ZWRyYSAg
PGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dLMl0gQWRkIEFQSSB0byBy
ZXRyaWV2ZSBhIHNuYXBzaG90IGZyb20gYSB3ZWJ2aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgR1RLKyBBUEkgbmVjZXNzYXJ5
IHRvIHJldHJpZXZlIGEgc25hcHNob3QKKyAgICAgICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9u
b3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHA6Cisg
ICAgICAgICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmspOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVycm9yLmg6IEFkZCBzbmFwc2hvdHRpbmcgZXJyb3IKKyAgICAgICAg
aGFuZGxpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6
CisgICAgICAgIChHZXRTbmFwc2hvdEFzeW5jRGF0YSk6CisgICAgICAgIChkaWRHZXRTbmFwc2hv
dCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKTogQWRkIHRoZSBwdWJsaWMgQVBJLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDogQWRk
IHRoZSBuZXcKKyAgICAgICAgQVBJIHRvIHRoZSBkb2NzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3
U25hcHNob3QpOgorICAgICAgICAoYmVmb3JlQWxsKTogQWRkIHRlc3RzIGZvciB0aGUgc25hcHNo
b3R0aW5nIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U25hcHNob3Qp
OgorICAgICAgICBBZGQgYSBwcm94eSBtZXRob2QgdG8gcmVxdWVzdCBhIHNuYXBzaG90IGZyb20g
dGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBEaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29udGVudCk6IEFkZCBhIG1ldGhvZCB0bworICAg
ICAgICB0YWtlIGEgc25hcHNob3QgZnJvbSB0aGUgdmlzaWJsZSBjb250ZW50IG9mIHRoZSB3ZWIg
cGFnZSwgdGhpcworICAgICAgICBtZXRob2Qgd2lsbCBzZW5kIGEgbWVzc2FnZSBiYWNrIHRvIHRo
ZSBVSSBwcm9jZXNzIHdpdGggdGhlIGltYWdlCisgICAgICAgIGhhbmRsZS4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCisg
ICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjogQWRkIHRoZSBtZXNzYWdlIGZvcgorICAgICAgICBDcmVhdGVTbmFwc2hvdE9m
VmlzaWJsZUNvbnRlbnQuCisKIDIwMTItMTItMDkgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIEZpeCB1bnVzZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2Fybmlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVy
cm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNw
cAppbmRleCBkYWYwOWVjLi4wMmQ5MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCkBAIC04MiwzICs4Miw4IEBAIEdRdWFyayB3ZWJr
aXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyaygpCiB7CiAgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9z
dGF0aWNfc3RyaW5nKCJXZWJLaXRKYXZhc2NyaXB0RXJyb3IiKTsKIH0KKworR1F1YXJrIHdlYmtp
dF9zbmFwc2hvdF9lcnJvcl9xdWFyaygpCit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0
aWNfc3RyaW5nKCJXZWJLaXRTbmFwc2hvdEVycm9yIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAppbmRleCBjMjA1ODE2Li45MzBjOTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgKQEAg
LTM1LDYgKzM1LDcgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfRE9XTkxPQURfRVJS
T1IgICB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsgKCkKICNkZWZpbmUgV0VCS0lUX1BSSU5U
X0VSUk9SICAgICAgd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrICgpCiAjZGVmaW5lIFdFQktJVF9K
QVZBU0NSSVBUX0VSUk9SIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAoKQorI2RlZmluZSBXRUJL
SVRfU05BUFNIT1RfRVJST1IgICB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsgKCkKIAogLyoq
CiAgKiBXZWJLaXROZXR3b3JrRXJyb3I6CkBAIC0xMzAsNiArMTMxLDE2IEBAIHR5cGVkZWYgZW51
bSB7CiAgICAgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCA9IDY5OQogfSBX
ZWJLaXRKYXZhc2NyaXB0RXJyb3I7CiAKKy8qKgorICogV2ViS2l0U25hcHNob3RFcnJvcjoKKyAq
IEBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEOiBBbiBlcnJvciBvY2N1cnJlZCB3aGVuIGNy
ZWF0aW5nIGEgd2VicGFnZSBzbmFwc2hvdC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRl
bm90ZSBlcnJvcnMgaGFwcGVuZGluZyB3aGVuIGNyZWF0aW5nIHNuYXBzaG90cyBvZiAjV2ViS2l0
V2ViVmlldworICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9G
QUlMRUQgPSA3OTkKK30gV2ViS2l0U25hcHNob3RFcnJvcjsKKwogV0VCS0lUX0FQSSBHUXVhcmsK
IHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrICAgICh2b2lkKTsKIApAQCAtMTQ4LDYgKzE1OSw5
IEBAIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkgR1F1
YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyayAodm9pZCk7CiAKK1dFQktJVF9BUEkg
R1F1YXJrCit3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsgICAodm9pZCk7CisKIEdfRU5EX0RF
Q0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCBmYjBjNWVkLi5iOGVjN2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjEsNiAr
MjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIK
IAorI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJE
YXRhLmgiCkBAIC0yNzkxLDMgKzI3OTIsODIgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdF93ZWJf
dmlld19kb3dubG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhcioKIAog
ICAgIHJldHVybiBkb3dubG9hZDsKIH0KKworc3RydWN0IEdldFNuYXBzaG90QXN5bmNEYXRhIHsK
KyAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGU7CisgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gc25hcHNob3Q7Cit9OworV0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVD
VChHZXRTbmFwc2hvdEFzeW5jRGF0YSkKKworc3RhdGljIHZvaWQgZGlkR2V0U25hcHNob3QoY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlLCBXS0Vycm9yUmVmLCB2b2lk
KiBjb250ZXh0KQoreworICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQgPSBh
ZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxUKGNvbnRleHQpKTsKKyAgICBHZXRTbmFwc2hv
dEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7Cisg
ICAgR0Vycm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9yX2lm
X2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKKyAgICAgICAgZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAg
ZWxzZSBpZiAoIWltYWdlSGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UmVhZE9ubHkpOworICAgICAgICBpZiAoaW1hZ2UpCisgICAgICAgICAgICBk
YXRhLT5zbmFwc2hvdCA9IGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKCZlcnJvciwgV0VCS0lUX1NOQVBTSE9UX0VS
Uk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVELCBfKCJUaGVyZSB3YXMgYW4gZXJyb3Ig
Y3JlYXRpbmcgdGhlIHNuYXBzaG90IikpOworICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRf
dGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKKyAgICB9CisKKyAgICBnX3NpbXBsZV9h
c3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90OgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Cisg
KiBAb3B0aW9uczogdGhlICNXZWJLaXRTbmFwc2hvdE9wdGlvbnMgZm9yIHRoZSBzbmFwc2hvdAor
ICogQGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJsZQorICogQGNhbGxi
YWNrOiAoc2NvcGUgYXN5bmMpOiBhICNHQXN5bmNSZWFkeUNhbGxiYWNrCisgKiBAdXNlcl9kYXRh
OiAoY2xvc3VyZSk6IHVzZXIgZGF0YQorICoKKyAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyBh
IHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHdlYiBwYWdlLgorICoKKyAqIFdoZW4gdGhlIG9wZXJh
dGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgbXVzdCBjYWxs
CisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCgpIHRvIGdldCB0aGUgcmVz
dWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlv
bnMsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJh
Y2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0
ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVCh3ZWJWaWV3KSwgY2FsbGJhY2ss
IHVzZXJEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NuYXBzaG90KSk7CisgICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEgPSBjcmVhdGVH
ZXRTbmFwc2hvdEFzeW5jRGF0YSgpOworICAgIGRhdGEtPmNhbmNlbGxhYmxlID0gY2FuY2VsbGFi
bGU7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0
LCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0U25hcHNo
b3RBc3luY0RhdGEpKTsKKworICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnM7Cisg
ICAgaWYgKG9wdGlvbnMgJiBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19QQUlOVF9TRUxFQ1RJT05f
UkVDVEFOR0xFKQorICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zUGFp
bnRTZWxlY3Rpb25SZWN0YW5nbGU7CisgICAgaWYgKG9wdGlvbnMgJiBXRUJLSVRfU05BUFNIT1Rf
T1BUSU9OU19FWENMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcpCisgICAgICAgIHNuYXBzaG90
T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nOwor
CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+Z2V0U25hcHNob3QoSW1hZ2VDYWxsYmFjazo6Y3JlYXRl
KHJlc3VsdCwgZGlkR2V0U25hcHNob3QpLCBvcHRpb25zKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2Vi
VmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2Nh
dGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNoZXMgYW4gYXN5
bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3X2dldF9zbmFw
c2hvdCgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKSA6IGEgI2NhaXJvX3N1cmZh
Y2VfdCB3aXRoIHRoZSByZXRyaWV2ZWQgc25hcHNob3QKKyAqKi8KK2NhaXJvX3N1cmZhY2VfdCog
d2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2goV2ViS2l0V2ViVmlldyogd2ViVmll
dywgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgMCk7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoR19JU19BU1lOQ19SRVNVTFQocmVzdWx0KSwgMCk7CisKKyAgICBHU2lt
cGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1bHQpOwor
ICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX3RhZyhz
aW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QpOworCisgICAgaWYgKGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVfZXJyb3Ioc2ltcGxlLCBlcnJvcikpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN0YXRpY19j
YXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9y
ZXNfZ3BvaW50ZXIoc2ltcGxlKSktPnNuYXBzaG90LmdldCgpKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA3YzgzODEzLi5h
MDQzZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCkBAIC0xMjksNiArMTI5LDEzIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lU
X1NBVkVfTU9ERV9NSFRNTAogfSBXZWJLaXRTYXZlTW9kZTsKIAordHlwZWRlZiBlbnVtIHsKKyAg
V0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSwKKworICBXRUJLSVRfU05BUFNIT1RfT1BUSU9O
U19FWENMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcgPSAxIDw8IDAsCisgIFdFQktJVF9TTkFQ
U0hPVF9PUFRJT05TX1BBSU5UX1NFTEVDVElPTl9SRUNUQU5HTEUgICA9IDEgPDwgMQorfSBXZWJL
aXRTbmFwc2hvdE9wdGlvbnM7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0
V2ViVmlld0Jhc2UgcGFyZW50OwogCkBAIC0zNzQsNiArMzgxLDE3IEBAIHdlYmtpdF93ZWJfdmll
d19zYXZlX3RvX2ZpbGVfZmluaXNoICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdF
QktJVF9BUEkgV2ViS2l0RG93bmxvYWQgKgogd2Via2l0X3dlYl92aWV3X2Rvd25sb2FkX3VyaSAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICp1cmkpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U25hcHNob3RPcHRpb25zICAgICAgb3B0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
Q2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAg
ICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJL
SVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2Zp
bmlzaCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz
eW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAqKmVy
cm9yKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggMmY2
ZjU0Yi4uN2QyZjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC02OCw2ICs2OCw3
IEBAIFdlYktpdFdlYlZpZXcKIFdlYktpdExvYWRFdmVudAogV2ViS2l0UG9saWN5RGVjaXNpb25U
eXBlCiBXZWJLaXRTYXZlTW9kZQorV2ViS2l0U25hcHNob3RPcHRpb25zCiAKIDxTVUJTRUNUSU9O
IEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMTIzLDYg
KzEyNCw4IEBAIHdlYmtpdF93ZWJfdmlld19zYXZlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3Nh
dmVfdG9fZmlsZQogd2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2gKIHdlYmtpdF93
ZWJfdmlld19kb3dubG9hZF91cmkKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QKK3dlYmtp
dF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC01OTcsMTggKzYwMCwyMSBA
QCBXRUJLSVRfUE9MSUNZX0VSUk9SCiBXRUJLSVRfRE9XTkxPQURfRVJST1IKIFdFQktJVF9QUklO
VF9FUlJPUgogV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IKK1dFQktJVF9TTkFQU0hPVF9FUlJPUgog
V2ViS2l0TmV0d29ya0Vycm9yCiBXZWJLaXRQbHVnaW5FcnJvcgogV2ViS2l0UG9saWN5RXJyb3IK
IFdlYktpdERvd25sb2FkRXJyb3IKIFdlYktpdFByaW50RXJyb3IKIFdlYktpdEphdmFzY3JpcHRF
cnJvcgorV2ViS2l0U25hcHNob3RFcnJvcgogd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsKIHdl
YmtpdF9wbHVnaW5fZXJyb3JfcXVhcmsKIHdlYmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsKIHdlYmtp
dF9kb3dubG9hZF9lcnJvcl9xdWFyawogd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrCiB3ZWJraXRf
amF2YXNjcmlwdF9lcnJvcl9xdWFyaword2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrCiA8L1NF
Q1RJT04+CiAKIDxTRUNUSU9OPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDA4Y2RiZTgu
LjgxNThjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwNTAsNiArMTA1MCw1NyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NhdmUoU2F2ZVdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGludChnX2ZpbGVfaW5mb19nZXRfc2l6ZShmaWxl
SW5mby5nZXQoKSksID09LCB0b3RhbEJ5dGVzRnJvbVN0cmVhbSk7CiB9CiAKK2NsYXNzIFNuYXBz
aG90V2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9H
TElCX1RFU1RfRklYVFVSRShTbmFwc2hvdFdlYlZpZXdUZXN0KTsKKworICAgIFNuYXBzaG90V2Vi
Vmlld1Rlc3QoKQorICAgICAgICA6IG1fc3VyZmFjZSgwKQorICAgIHsKKyAgICB9CisKKyAgICB+
U25hcHNob3RXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ry
b3kobV9zdXJmYWNlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBvblNuYXBzaG90UmVhZHko
V2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCAqcmVzLCBTbmFwc2hvdFdlYlZp
ZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAg
ICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2Zpbmlz
aCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBnX2Fzc2VydCghdGVz
dC0+bV9zdXJmYWNlIHx8ICFlcnJvci5nZXQoKSk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAg
ICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfU05BUFNIT1RfRVJST1Is
IFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRUQpOworICAgICAgICB0ZXN0LT5xdWl0TWFpbkxv
b3AoKTsKKyAgICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHdhaXRGb3JTbmFwc2hvdCgpCisg
ICAgeworICAgICAgICBtX3N1cmZhY2UgPSAwOworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90KG1fd2ViVmlldywgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSwgMCwgcmVp
bnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihvblNuYXBzaG90UmVhZHkpLCB0aGlz
KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVy
biBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3N1cmZhY2UpOworICAgIH0KKworICAgIGNhaXJv
X3N1cmZhY2VfdCogbV9zdXJmYWNlOworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTbmFw
c2hvdChTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+
PHA+V2hhdGV2ZXI8L3A+PC9ib2R5PjwvaHRtbD4iLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKworICAgIHN1cmZhY2UgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoKTsK
KyAgICBnX2Fzc2VydCghc3VyZmFjZSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0
VW50aWxNYXBwZWQoKTsKKyAgICBzdXJmYWNlID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KCk7Cisg
ICAgZ19hc3NlcnQoc3VyZmFjZSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2Up
OworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KTsK
QEAgLTEwNjksNiArMTEyMCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNhbi1zaG93LW1pbWUtdHlwZSIsIHRlc3RXZWJWaWV3Q2Fu
U2hvd01JTUVUeXBlKTsKICAgICBGb3JtQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKTsKICAgICBTYXZlV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzYXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsKKyAgICBT
bmFwc2hvdFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic25hcHNob3QiLCB0ZXN0
V2ViVmlld1NuYXBzaG90KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDE0MDZiM2IuLjcwOTFlNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjA0LDQgKzQyMDQsMTcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJp
bmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFjaywgU25hcHNob3RP
cHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgY2FsbGJh
Y2stPmludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1faW1hZ2VDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKworICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KGNhbGxi
YWNrSUQsIG9wdGlvbnMpLCBtX3BhZ2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDNhMzE1NjkuLjZiOWYy
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc2MSw2ICs3
NjEsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1pbmltdW1MYXlvdXRXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWluaW11bUxheW91dFdpZHRoOyB9CiAgICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0
V2lkdGgoZG91YmxlKTsKIAorICAgIHZvaWQgZ2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNh
bGxiYWNrPiwgU25hcHNob3RPcHRpb25zKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHko
UGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdyb3VwKiwg
dWludDY0X3QgcGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGQ4NTMyZjUuLjlmNjlmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MDQsNiArMTQwNCwyMiBAQCBQ
YXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNv
bnN0IEludFJlY3QmIHJlY3QsIGRvdQogICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMpCit7CisgICAgRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAg
ICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIEludFJlY3QgY29udGVudFJl
Y3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7CisgICAgU25hcHNob3RP
cHRpb25zIG9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUgfCBzbmFwc2hvdE9wdGlv
bnM7CisKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90SW1hZ2UgPSBzY2FsZWRTbmFwc2hv
dFdpdGhPcHRpb25zKGNvbnRlbnRSZWN0LCAxLCBvcHRpb25zKTsKKworICAgIFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoc25hcHNob3RJbWFnZSkKKyAgICAgICAgc25h
cHNob3RJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsK
K30KKwogdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKIHsKICAgICBtX3VpQ2xpZW50LnBh
Z2VEaWRTY3JvbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAzYjZkZDhlLi5kODUxMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM2MCw2ICszNjAsNyBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
CiAKICAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBkb3VibGUgc2NhbGVGYWN0b3IsIFNuYXBzaG90T3B0aW9u
cyk7CisgICAgdm9pZCBjcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQodWludDY0X3QgY2Fs
bGJhY2tJRCwgU25hcHNob3RPcHRpb25zKTsKIAogICAgIHN0YXRpYyBjb25zdCBXZWJFdmVudCog
Y3VycmVudEV2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNjM4MzU4My4uNGUwMzBjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTMxMyw0ICszMTMsNSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICNpZiBQTEFU
Rk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBTZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nV2luZG93SWQoaW50NjRfdCBpZCkKICNlbmRpZgorICAgIENyZWF0ZVNuYXBzaG90
T2ZWaXNpYmxlQ29udGVudCh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50MzJfdCBzbmFwc2hvdE9w
dGlvbnMpCiB9Ci0tIAoxLjcuMTEuNw==
</data>
<flag name="commit-queue"
          id="195245"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178750</attachid>
            <date>2012-12-11 01:53:13 -0800</date>
            <delta_ts>2012-12-12 10:23:00 -0800</delta_ts>
            <desc>[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270</desc>
            <filename>-GTKWK2-Add-API-to-retrieve-a-snapshot-from-a-webv.patch</filename>
            <type>text/plain</type>
            <size>19627</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSA2YmUyNmM0MWI1MjMwZDFhNDA5NzNmY2QzNzE4ZDUzODc2ZDBhMjIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogV2VkLCAzIE9jdCAyMDEyIDE4OjI3OjQ3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0g
ICAgICAgICBbR1RLXVtXSzJdIEFkZCBBUEkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEK
IHdlYnZpZXcgICAgICAgIAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MjcwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBUaGlz
IGFkZHMgdGhlIEdUSysgQVBJIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhIHNuYXBzaG90CiAgICAg
ICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9ub3VzbHkuCgogICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RXJyb3IuY3BwOgogICAgICAgICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVh
cmspOgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaDogQWRkIHNuYXBz
aG90dGluZyBlcnJvcgogICAgICAgIGhhbmRsaW5nLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CiAgICAgICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKICAg
ICAgICAoZGlkR2V0U25hcHNob3QpOgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90KToKICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2gpOiBBZGQg
dGhlIHB1YmxpYyBBUEkuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
Lmg6IERpdHRvLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNl
Y3Rpb25zLnR4dDogQWRkIHRoZSBuZXcKICAgICAgICBBUEkgdG8gdGhlIGRvY3MuCiAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CiAgICAgICAg
KHRlc3RXZWJWaWV3U25hcHNob3QpOgogICAgICAgIChiZWZvcmVBbGwpOiBBZGQgdGVzdHMgZm9y
IHRoZSBzbmFwc2hvdHRpbmcgQVBJLgogICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CiAgICAgICAgKFdlYktpdCk6CiAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRT
bmFwc2hvdCk6CiAgICAgICAgQWRkIGEgcHJveHkgbWV0aG9kIHRvIHJlcXVlc3QgYSBzbmFwc2hv
dCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKICAgICAgICAoV2ViS2l0KToKICAgICAgICAoV2ViUGFnZVByb3h5KTogRGl0dG8uCiAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CiAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Y3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KTogQWRkIGEgbWV0aG9kIHRvCiAg
ICAgICAgdGFrZSBhIHNuYXBzaG90IGZyb20gdGhlIHZpc2libGUgY29udGVudCBvZiB0aGUgd2Vi
IHBhZ2UsIHRoaXMKICAgICAgICBtZXRob2Qgd2lsbCBzZW5kIGEgbWVzc2FnZSBiYWNrIHRvIHRo
ZSBVSSBwcm9jZXNzIHdpdGggdGhlIGltYWdlCiAgICAgICAgaGFuZGxlLgogICAgICAgIChXZWJL
aXQpOgogICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCiAgICAg
ICAgKFdlYlBhZ2UpOgogICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46IEFkZCB0aGUgbWVzc2FnZSBmb3IKICAgICAgICBDcmVhdGVTbmFwc2hvdE9mVmlzaWJs
ZUNvbnRlbnQuCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCA0MyArKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEVycm9yLmNwcCAgIHwgIDUgKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEVycm9yLmggICAgIHwgMTQgKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgfCA3OCArKysrKysrKysrKysrKysrKysrKysr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8IDI1
ICsrKysrKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0IHwgIDYgKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAgIHwgNTIgKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgICAgICB8IDEzICsrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCAgICAgICAgICAgIHwgIDIgKwogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgfCAxNiArKysrKwogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICAgICAgfCAgMSArCiAuLi4vV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiB8ICAxICsKIDEyIGZpbGVzIGNo
YW5nZWQsIDI1NiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI3NzUyNWYuLjk0YjQ0MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0xMC0wMyAgQ2xhdWRpbyBTYWF2ZWRy
YSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dLMl0gQWRkIEFQSSB0
byByZXRyaWV2ZSBhIHNuYXBzaG90IGZyb20gYSB3ZWJ2aWV3CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI3MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgR1RLKyBBUEkgbmVjZXNz
YXJ5IHRvIHJldHJpZXZlIGEgc25hcHNob3QKKyAgICAgICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNo
cm9ub3VzbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHA6
CisgICAgICAgICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmspOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmg6IEFkZCBzbmFwc2hvdHRpbmcgZXJyb3IKKyAgICAg
ICAgaGFuZGxpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHA6CisgICAgICAgIChHZXRTbmFwc2hvdEFzeW5jRGF0YSk6CisgICAgICAgIChkaWRHZXRTbmFw
c2hvdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKTogQWRkIHRoZSBwdWJsaWMgQVBJ
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDog
QWRkIHRoZSBuZXcKKyAgICAgICAgQVBJIHRvIHRoZSBkb2NzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJW
aWV3U25hcHNob3QpOgorICAgICAgICAoYmVmb3JlQWxsKTogQWRkIHRlc3RzIGZvciB0aGUgc25h
cHNob3R0aW5nIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U25hcHNo
b3QpOgorICAgICAgICBBZGQgYSBwcm94eSBtZXRob2QgdG8gcmVxdWVzdCBhIHNuYXBzaG90IGZy
b20gdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29udGVudCk6IEFkZCBhIG1ldGhvZCB0bwor
ICAgICAgICB0YWtlIGEgc25hcHNob3QgZnJvbSB0aGUgdmlzaWJsZSBjb250ZW50IG9mIHRoZSB3
ZWIgcGFnZSwgdGhpcworICAgICAgICBtZXRob2Qgd2lsbCBzZW5kIGEgbWVzc2FnZSBiYWNrIHRv
IHRoZSBVSSBwcm9jZXNzIHdpdGggdGhlIGltYWdlCisgICAgICAgIGhhbmRsZS4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8u
CisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjogQWRkIHRoZSBtZXNzYWdlIGZvcgorICAgICAgICBDcmVhdGVTbmFwc2hv
dE9mVmlzaWJsZUNvbnRlbnQuCisKIDIwMTItMTItMDkgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFu
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCB1bnVzZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2Fy
bmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9y
LmNwcAppbmRleCBkYWYwOWVjLi4wMmQ5MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCkBAIC04MiwzICs4Miw4IEBAIEdRdWFyayB3
ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyaygpCiB7CiAgICAgcmV0dXJuIGdfcXVhcmtfZnJv
bV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRKYXZhc2NyaXB0RXJyb3IiKTsKIH0KKworR1F1YXJrIHdl
YmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyaygpCit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9z
dGF0aWNfc3RyaW5nKCJXZWJLaXRTbmFwc2hvdEVycm9yIik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAppbmRleCBjMjA1ODE2Li45MzBjOTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJv
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgK
QEAgLTM1LDYgKzM1LDcgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfRE9XTkxPQURf
RVJST1IgICB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsgKCkKICNkZWZpbmUgV0VCS0lUX1BS
SU5UX0VSUk9SICAgICAgd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrICgpCiAjZGVmaW5lIFdFQktJ
VF9KQVZBU0NSSVBUX0VSUk9SIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAoKQorI2RlZmluZSBX
RUJLSVRfU05BUFNIT1RfRVJST1IgICB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsgKCkKIAog
LyoqCiAgKiBXZWJLaXROZXR3b3JrRXJyb3I6CkBAIC0xMzAsNiArMTMxLDE2IEBAIHR5cGVkZWYg
ZW51bSB7CiAgICAgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCA9IDY5OQog
fSBXZWJLaXRKYXZhc2NyaXB0RXJyb3I7CiAKKy8qKgorICogV2ViS2l0U25hcHNob3RFcnJvcjoK
KyAqIEBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEOiBBbiBlcnJvciBvY2N1cnJlZCB3aGVu
IGNyZWF0aW5nIGEgd2VicGFnZSBzbmFwc2hvdC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRv
IGRlbm90ZSBlcnJvcnMgaGFwcGVuZGluZyB3aGVuIGNyZWF0aW5nIHNuYXBzaG90cyBvZiAjV2Vi
S2l0V2ViVmlldworICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9TTkFQU0hPVF9FUlJP
Ul9GQUlMRUQgPSA3OTkKK30gV2ViS2l0U25hcHNob3RFcnJvcjsKKwogV0VCS0lUX0FQSSBHUXVh
cmsKIHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrICAgICh2b2lkKTsKIApAQCAtMTQ4LDYgKzE1
OSw5IEBAIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkg
R1F1YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyayAodm9pZCk7CiAKK1dFQktJVF9B
UEkgR1F1YXJrCit3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsgICAodm9pZCk7CisKIEdfRU5E
X0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBmYjBjNWVkLi40YmRjM2Y1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjEs
NiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcu
aCIKIAorI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJX
ZWJEYXRhLmgiCkBAIC0yNzkxLDMgKzI3OTIsODAgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdF93
ZWJfdmlld19kb3dubG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhcioK
IAogICAgIHJldHVybiBkb3dubG9hZDsKIH0KKworc3RydWN0IEdldFNuYXBzaG90QXN5bmNEYXRh
IHsKKyAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGU7CisgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc25hcHNob3Q7Cit9OworV0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NU
UlVDVChHZXRTbmFwc2hvdEFzeW5jRGF0YSkKKworc3RhdGljIHZvaWQgZGlkR2V0U25hcHNob3Qo
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlLCBXS0Vycm9yUmVmLCB2
b2lkKiBjb250ZXh0KQoreworICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQg
PSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxUKGNvbnRleHQpKTsKKyAgICBHZXRTbmFw
c2hvdEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4o
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7
CisgICAgR0Vycm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9y
X2lmX2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKKyAgICAgICAg
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7Cisg
ICAgZWxzZSBpZiAoIWltYWdlSGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOworICAgICAgICBpZiAoaW1hZ2UpCisgICAgICAgICAg
ICBkYXRhLT5zbmFwc2hvdCA9IGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKCZlcnJvciwgV0VCS0lUX1NOQVBTSE9U
X0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVELCBfKCJUaGVyZSB3YXMgYW4gZXJy
b3IgY3JlYXRpbmcgdGhlIHNuYXBzaG90IikpOworICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1
bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKKyAgICB9CisKKyAgICBnX3NpbXBs
ZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90OgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3
CisgKiBAb3B0aW9uczogdGhlICNXZWJLaXRTbmFwc2hvdE9wdGlvbnMgZm9yIHRoZSBzbmFwc2hv
dAorICogQGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJsZQorICogQGNh
bGxiYWNrOiAoc2NvcGUgYXN5bmMpOiBhICNHQXN5bmNSZWFkeUNhbGxiYWNrCisgKiBAdXNlcl9k
YXRhOiAoY2xvc3VyZSk6IHVzZXIgZGF0YQorICoKKyAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZl
cyBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHdlYiBwYWdlLgorICoKKyAqIFdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgbXVzdCBj
YWxsCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCgpIHRvIGdldCB0aGUg
cmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRf
c25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U25hcHNob3RPcHRpb25zIG9w
dGlvbnMsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2Fs
bGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogcmVz
dWx0ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVCh3ZWJWaWV3KSwgY2FsbGJh
Y2ssIHVzZXJEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NuYXBzaG90KSk7CisgICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEgPSBjcmVh
dGVHZXRTbmFwc2hvdEFzeW5jRGF0YSgpOworICAgIGRhdGEtPmNhbmNlbGxhYmxlID0gY2FuY2Vs
bGFibGU7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVz
dWx0LCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0U25h
cHNob3RBc3luY0RhdGEpKTsKKworICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnM7
CisgICAgaWYgKCEob3B0aW9ucyAmIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xVREVfU0VM
RUNUSU9OX0hJR0hMSUdIVElORykpCisgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hv
dE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nOworCisgICAgZ2V0UGFnZSh3ZWJW
aWV3KS0+Z2V0U25hcHNob3QoSW1hZ2VDYWxsYmFjazo6Y3JlYXRlKHJlc3VsdCwgZGlkR2V0U25h
cHNob3QpLCBvcHRpb25zKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90X2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJlc3VsdDog
YSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3Ig
JU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNoZXMgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlv
biBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCgpLgorICoKKyAqIFJl
dHVybnM6ICh0cmFuc2ZlciBmdWxsKSA6IGEgI2NhaXJvX3N1cmZhY2VfdCB3aXRoIHRoZSByZXRy
aWV2ZWQgc25hcHNob3QKKyAqKi8KK2NhaXJvX3N1cmZhY2VfdCogd2Via2l0X3dlYl92aWV3X2dl
dF9zbmFwc2hvdF9maW5pc2goV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoR19J
U19BU1lOQ19SRVNVTFQocmVzdWx0KSwgMCk7CisKKyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNp
bXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1bHQpOworICAgIGdfd2Fybl9pZl9mYWls
KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93
ZWJfdmlld19nZXRfc25hcHNob3QpOworCisgICAgaWYgKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9w
cm9wYWdhdGVfZXJyb3Ioc2ltcGxlLCBlcnJvcikpCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5
bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxl
KSktPnNuYXBzaG90LmdldCgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA3YzgzODEzLi44NGM3MjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xMjks
NiArMTI5LDIwIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1NBVkVfTU9ERV9NSFRNTAog
fSBXZWJLaXRTYXZlTW9kZTsKIAorLyoqCisgKiBXZWJLaXRTbmFwc2hvdE9wdGlvbnM6CisgKiBA
V0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORToKKyAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9O
U19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkc6IFdoZXRoZXIgdG8gaW5jbHVkZSBpbiB0
aGUKKyAqIHNuYXBzaG90IHRoZSBoaWdobGlnaHQgb2YgdGhlIHNlbGVjdGVkIGNvbnRlbnQuCisg
KgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbnMgd2hlbiB0YWtpbmcgYSBz
bmFwc2hvdAorICogZnJvbSBhICNXZWJLaXRXZWJWaWV3LgorICovCit0eXBlZGVmIGVudW0gewor
ICBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FID0gMCwKKyAgV0VCS0lUX1NOQVBTSE9UX09Q
VElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HID0gMSA8PCAwLAorfSBXZWJLaXRT
bmFwc2hvdE9wdGlvbnM7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0V2Vi
Vmlld0Jhc2UgcGFyZW50OwogCkBAIC0zNzQsNiArMzg4LDE3IEBAIHdlYmtpdF93ZWJfdmlld19z
YXZlX3RvX2ZpbGVfZmluaXNoICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJ
VF9BUEkgV2ViS2l0RG93bmxvYWQgKgogd2Via2l0X3dlYl92aWV3X2Rvd25sb2FkX3VyaSAgICAg
ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICAgICAgICAgICAgICAgICp1cmkpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U25hcHNob3RPcHRpb25zICAgICAgb3B0aW9ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2Fu
Y2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAgICAg
ICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRf
QVBJIGNhaXJvX3N1cmZhY2VfdCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2Zpbmlz
aCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5j
UmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAqKmVycm9y
KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggMmY2ZjU0
Yi4uN2QyZjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC02OCw2ICs2OCw3IEBA
IFdlYktpdFdlYlZpZXcKIFdlYktpdExvYWRFdmVudAogV2ViS2l0UG9saWN5RGVjaXNpb25UeXBl
CiBXZWJLaXRTYXZlTW9kZQorV2ViS2l0U25hcHNob3RPcHRpb25zCiAKIDxTVUJTRUNUSU9OIEVk
aXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMTIzLDYgKzEy
NCw4IEBAIHdlYmtpdF93ZWJfdmlld19zYXZlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3NhdmVf
dG9fZmlsZQogd2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2gKIHdlYmtpdF93ZWJf
dmlld19kb3dubG9hZF91cmkKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QKK3dlYmtpdF93
ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC01OTcsMTggKzYwMCwyMSBAQCBX
RUJLSVRfUE9MSUNZX0VSUk9SCiBXRUJLSVRfRE9XTkxPQURfRVJST1IKIFdFQktJVF9QUklOVF9F
UlJPUgogV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IKK1dFQktJVF9TTkFQU0hPVF9FUlJPUgogV2Vi
S2l0TmV0d29ya0Vycm9yCiBXZWJLaXRQbHVnaW5FcnJvcgogV2ViS2l0UG9saWN5RXJyb3IKIFdl
YktpdERvd25sb2FkRXJyb3IKIFdlYktpdFByaW50RXJyb3IKIFdlYktpdEphdmFzY3JpcHRFcnJv
cgorV2ViS2l0U25hcHNob3RFcnJvcgogd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsKIHdlYmtp
dF9wbHVnaW5fZXJyb3JfcXVhcmsKIHdlYmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsKIHdlYmtpdF9k
b3dubG9hZF9lcnJvcl9xdWFyawogd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrCiB3ZWJraXRfamF2
YXNjcmlwdF9lcnJvcl9xdWFyaword2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrCiA8L1NFQ1RJ
T04+CiAKIDxTRUNUSU9OPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDA4Y2RiZTguLjgx
NThjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwNTAsNiArMTA1MCw1NyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NhdmUoU2F2ZVdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGludChnX2ZpbGVfaW5mb19nZXRfc2l6ZShmaWxlSW5m
by5nZXQoKSksID09LCB0b3RhbEJ5dGVzRnJvbVN0cmVhbSk7CiB9CiAKK2NsYXNzIFNuYXBzaG90
V2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElC
X1RFU1RfRklYVFVSRShTbmFwc2hvdFdlYlZpZXdUZXN0KTsKKworICAgIFNuYXBzaG90V2ViVmll
d1Rlc3QoKQorICAgICAgICA6IG1fc3VyZmFjZSgwKQorICAgIHsKKyAgICB9CisKKyAgICB+U25h
cHNob3RXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3ko
bV9zdXJmYWNlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBvblNuYXBzaG90UmVhZHkoV2Vi
S2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCAqcmVzLCBTbmFwc2hvdFdlYlZpZXdU
ZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAg
ICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCh3
ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBnX2Fzc2VydCghdGVzdC0+
bV9zdXJmYWNlIHx8ICFlcnJvci5nZXQoKSk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAg
ICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfU05BUFNIT1RfRVJST1IsIFdF
QktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRUQpOworICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3Ao
KTsKKyAgICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHdhaXRGb3JTbmFwc2hvdCgpCisgICAg
eworICAgICAgICBtX3N1cmZhY2UgPSAwOworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90KG1fd2ViVmlldywgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSwgMCwgcmVpbnRl
cnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihvblNuYXBzaG90UmVhZHkpLCB0aGlzKTsK
KyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVybiBj
YWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3N1cmZhY2UpOworICAgIH0KKworICAgIGNhaXJvX3N1
cmZhY2VfdCogbV9zdXJmYWNlOworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTbmFwc2hv
dChTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PHA+
V2hhdGV2ZXI8L3A+PC9ib2R5PjwvaHRtbD4iLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKworICAgIHN1cmZhY2UgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoKTsKKyAg
ICBnX2Fzc2VydCghc3VyZmFjZSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50
aWxNYXBwZWQoKTsKKyAgICBzdXJmYWNlID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KCk7CisgICAg
Z19hc3NlcnQoc3VyZmFjZSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwor
fQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KTsKQEAg
LTEwNjksNiArMTEyMCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgImNhbi1zaG93LW1pbWUtdHlwZSIsIHRlc3RXZWJWaWV3Q2FuU2hv
d01JTUVUeXBlKTsKICAgICBGb3JtQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1
Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzYXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsKKyAgICBTbmFw
c2hvdFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic25hcHNob3QiLCB0ZXN0V2Vi
Vmlld1NuYXBzaG90KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDE0MDZiM2IuLjcwOTFlNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjA0LDQgKzQyMDQsMTcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcs
IHVpbnQ2NF90IHJlcXVlc3RJRCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFjaywgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgY2FsbGJhY2st
PmludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1faW1hZ2VDYWxsYmFja3Mu
c2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KGNhbGxiYWNr
SUQsIG9wdGlvbnMpLCBtX3BhZ2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDNhMzE1NjkuLjZiOWYyYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc2MSw2ICs3NjEs
OCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1pbmltdW1MYXlvdXRXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWluaW11bUxheW91dFdpZHRoOyB9CiAgICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0V2lk
dGgoZG91YmxlKTsKIAorICAgIHZvaWQgZ2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxi
YWNrPiwgU25hcHNob3RPcHRpb25zKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdyb3VwKiwgdWlu
dDY0X3QgcGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGQ4NTMyZjUuLjlmNjlmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MDQsNiArMTQwNCwyMiBAQCBQYXNz
UmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0
IEludFJlY3QmIHJlY3QsIGRvdQogICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZTo6Y3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMpCit7CisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBp
ZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIEludFJlY3QgY29udGVudFJlY3Qg
PSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSk7CisgICAgU25hcHNob3RPcHRp
b25zIG9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUgfCBzbmFwc2hvdE9wdGlvbnM7
CisKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90SW1hZ2UgPSBzY2FsZWRTbmFwc2hvdFdp
dGhPcHRpb25zKGNvbnRlbnRSZWN0LCAxLCBvcHRpb25zKTsKKworICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoc25hcHNob3RJbWFnZSkKKyAgICAgICAgc25hcHNo
b3RJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKK30K
Kwogdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKIHsKICAgICBtX3VpQ2xpZW50LnBhZ2VE
aWRTY3JvbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCAzYjZkZDhlLi5kODUxMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM2MCw2ICszNjAsNyBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAK
ICAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBkb3VibGUgc2NhbGVGYWN0b3IsIFNuYXBzaG90T3B0aW9ucyk7
CisgICAgdm9pZCBjcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQodWludDY0X3QgY2FsbGJh
Y2tJRCwgU25hcHNob3RPcHRpb25zKTsKIAogICAgIHN0YXRpYyBjb25zdCBXZWJFdmVudCogY3Vy
cmVudEV2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNjM4MzU4My4uNGUwMzBjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTMxMyw0ICszMTMsNSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICNpZiBQTEFURk9S
TShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBTZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nV2luZG93SWQoaW50NjRfdCBpZCkKICNlbmRpZgorICAgIENyZWF0ZVNuYXBzaG90T2ZW
aXNpYmxlQ29udGVudCh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50MzJfdCBzbmFwc2hvdE9wdGlv
bnMpCiB9Ci0tIAoxLjcuMTEuNw==
</data>
<flag name="commit-queue"
          id="195366"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179075</attachid>
            <date>2012-12-12 10:23:00 -0800</date>
            <delta_ts>2013-01-18 07:32:37 -0800</delta_ts>
            <desc>[GTK][WK2] Add API to retrieve a snapshot from a webview         https://bugs.webkit.org/show_bug.cgi?id=98270</desc>
            <filename>-GTKWK2-Add-API-to-retrieve-a-snapshot-from-a-webv.patch</filename>
            <type>text/plain</type>
            <size>22146</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSA2YzMwZTI5OWUyZmU5NzNhMTVmNjNmOWYzMWUwYzg3NjIyZjE2MDM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogV2VkLCAzIE9jdCAyMDEyIDE4OjI3OjQ3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0g
ICAgICAgICBbR1RLXVtXSzJdIEFkZCBBUEkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEK
IHdlYnZpZXcgICAgICAgIAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MjcwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBUaGlz
IGFkZHMgdGhlIEdUSysgQVBJIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhIHNuYXBzaG90CiAgICAg
ICAgZnJvbSBhIHdlYnZpZXcgYXN5bmNocm9ub3VzbHkuCgogICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RXJyb3IuY3BwOgogICAgICAgICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVh
cmspOgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaDogQWRkIHNuYXBz
aG90dGluZyBlcnJvcgogICAgICAgIGhhbmRsaW5nLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CiAgICAgICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKICAg
ICAgICAoZGlkR2V0U25hcHNob3QpOgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90X29mX3Zpc2libGVfYXJlYSk6CiAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNo
b3QpOgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCk6IEFkZCB0
aGUgcHVibGljIEFQSS4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aDogRGl0dG8uCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0OiBBZGQgdGhlIG5ldwogICAgICAgIEFQSSB0byB0aGUgZG9jcy4KICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKICAgICAgICAo
dGVzdFdlYlZpZXdTbmFwc2hvdCk6CiAgICAgICAgKGJlZm9yZUFsbCk6IEFkZCB0ZXN0cyBmb3Ig
dGhlIHNuYXBzaG90dGluZyBBUEkuCiAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKICAgICAgICAoV2ViS2l0KToKICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNu
YXBzaG90KToKICAgICAgICBBZGQgYSBwcm94eSBtZXRob2QgdG8gcmVxdWVzdCBhIHNuYXBzaG90
IGZyb20gdGhlIHdlYiBwcm9jZXNzLgogICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgogICAgICAgIChXZWJLaXQpOgogICAgICAgIChXZWJQYWdlUHJveHkpOiBEaXR0by4KICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjcmVhdGVTbmFwc2hvdCk6IEFkZCBhIG1ldGhvZCB0byB0YWtlIGEgc25hcHNob3QKICAg
ICAgICBmb3IgYSBnaXZlbiByZWdpb24gaW4gdGhlIFdlYlBhZ2UsIHRoaXMgbWV0aG9kIHdpbGwg
c2VuZCBhIG1lc3NhZ2UKICAgICAgICBiYWNrIHRvIHRoZSBVSSBwcm9jZXNzIHdpdGggdGhlIGlt
YWdlIGhhbmRsZS4KICAgICAgICAoV2ViS2l0KToKICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6IERpdHRvLgogICAgICAgIChXZWJQYWdlKToKICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGQgdGhlIG1lc3NhZ2UgZm9yCiAgICAg
ICAgQ3JlYXRlU25hcHNob3QuCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgNDMgKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAgICB8ICAgNSArKwogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaCAgICAgfCAgMTQgKysrCiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCB8IDEwMCArKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aCAgIHwgIDM0ICsrKysrKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0IHwgICA3ICsrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwICB8ICA2OCArKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAgICAgICAgfCAgMTMgKysrCiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgICAgICB8ICAxNiArKysrCiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgICAgICB8ICAgMSArCiAu
Li4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiB8ICAgMSAr
CiAxMiBmaWxlcyBjaGFuZ2VkLCAzMDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZDJk
YzhmLi5jYzliZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTItMTAtMDMgIENs
YXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtX
SzJdIEFkZCBBUEkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEgd2VidmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgyNzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdGhlIEdU
SysgQVBJIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBhIHNuYXBzaG90CisgICAgICAgIGZyb20gYSB3
ZWJ2aWV3IGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RXJyb3IuY3BwOgorICAgICAgICAod2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oOiBBZGQgc25hcHNob3R0aW5n
IGVycm9yCisgICAgICAgIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoR2V0U25hcHNob3RBc3luY0RhdGEpOgorICAgICAg
ICAoZGlkR2V0U25hcHNob3QpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dF9vZl92aXNpYmxlX2FyZWEpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCk6IEFkZCB0
aGUgcHVibGljIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3CisgICAgICAgIEFQSSB0byB0aGUgZG9jcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAg
ICAgICh0ZXN0V2ViVmlld1NuYXBzaG90KToKKyAgICAgICAgKGJlZm9yZUFsbCk6IEFkZCB0ZXN0
cyBmb3IgdGhlIHNuYXBzaG90dGluZyBBUEkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldFNuYXBzaG90KToKKyAgICAgICAgQWRkIGEgcHJveHkgbWV0aG9kIHRvIHJlcXVlc3Qg
YSBzbmFwc2hvdCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFnZVByb3h5KTog
RGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVTbmFwc2hvdCk6IEFkZCBhIG1ldGhvZCB0byB0YWtl
IGEgc25hcHNob3QKKyAgICAgICAgZm9yIGEgZ2l2ZW4gcmVnaW9uIGluIHRoZSBXZWJQYWdlLCB0
aGlzIG1ldGhvZCB3aWxsIHNlbmQgYSBtZXNzYWdlCisgICAgICAgIGJhY2sgdG8gdGhlIFVJIHBy
b2Nlc3Mgd2l0aCB0aGUgaW1hZ2UgaGFuZGxlLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOiBEaXR0by4KKyAgICAgICAgKFdlYlBhZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGQg
dGhlIG1lc3NhZ2UgZm9yCisgICAgICAgIENyZWF0ZVNuYXBzaG90LgorCiAyMDEyLTEyLTEyICBT
aW1vbiBQZW5hICA8c3BlbmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgc2VjdGlv
bnMgZG9jdW1lbnRhdGlvbiB0byBXZWJLaXQyIEdUSysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKaW5kZXggZGM0OGIxYy4uYzA2ZGM2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJy
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9y
LmNwcApAQCAtOTEsMyArOTEsOCBAQCBHUXVhcmsgd2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVh
cmsoKQogewogICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0SmF2
YXNjcmlwdEVycm9yIik7CiB9CisKK0dRdWFyayB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmso
KQoreworICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0U25hcHNo
b3RFcnJvciIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVycm9yLmgKaW5kZXggYzIwNTgxNi4uOTMwYzkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oCkBAIC0zNSw2ICszNSw3IEBAIEdfQkVHSU5f
REVDTFMKICNkZWZpbmUgV0VCS0lUX0RPV05MT0FEX0VSUk9SICAgd2Via2l0X2Rvd25sb2FkX2Vy
cm9yX3F1YXJrICgpCiAjZGVmaW5lIFdFQktJVF9QUklOVF9FUlJPUiAgICAgIHdlYmtpdF9wcmlu
dF9lcnJvcl9xdWFyayAoKQogI2RlZmluZSBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiB3ZWJraXRf
cHJpbnRfZXJyb3JfcXVhcmsgKCkKKyNkZWZpbmUgV0VCS0lUX1NOQVBTSE9UX0VSUk9SICAgd2Vi
a2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrICgpCiAKIC8qKgogICogV2ViS2l0TmV0d29ya0Vycm9y
OgpAQCAtMTMwLDYgKzEzMSwxNiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9KQVZBU0NS
SVBUX0VSUk9SX1NDUklQVF9GQUlMRUQgPSA2OTkKIH0gV2ViS2l0SmF2YXNjcmlwdEVycm9yOwog
CisvKioKKyAqIFdlYktpdFNuYXBzaG90RXJyb3I6CisgKiBAV0VCS0lUX1NOQVBTSE9UX0VSUk9S
X0ZBSUxFRDogQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiBjcmVhdGluZyBhIHdlYnBhZ2Ugc25hcHNo
b3QuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgZXJyb3JzIGhhcHBlbmRpbmcg
d2hlbiBjcmVhdGluZyBzbmFwc2hvdHMgb2YgI1dlYktpdFdlYlZpZXcKKyAqLwordHlwZWRlZiBl
bnVtIHsKKyAgICBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEID0gNzk5Cit9IFdlYktpdFNu
YXBzaG90RXJyb3I7CisKIFdFQktJVF9BUEkgR1F1YXJrCiB3ZWJraXRfbmV0d29ya19lcnJvcl9x
dWFyayAgICAodm9pZCk7CiAKQEAgLTE0OCw2ICsxNTksOSBAQCB3ZWJraXRfcHJpbnRfZXJyb3Jf
cXVhcmsgICAgICAodm9pZCk7CiBXRUJLSVRfQVBJIEdRdWFyawogd2Via2l0X2phdmFzY3JpcHRf
ZXJyb3JfcXVhcmsgKHZvaWQpOwogCitXRUJLSVRfQVBJIEdRdWFyaword2Via2l0X3NuYXBzaG90
X2Vycm9yX3F1YXJrICAgKHZvaWQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
MzUyYjdmZS4uODZjMTg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJJbWFnZU9wdGlv
bnMuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250
ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgpAQCAtMjgzNywzICsyODM4
LDEwMiBAQCBXZWJLaXREb3dubG9hZCogd2Via2l0X3dlYl92aWV3X2Rvd25sb2FkX3VyaShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKgogCiAgICAgcmV0dXJuIGRvd25sb2FkOwog
fQorCitzdHJ1Y3QgR2V0U25hcHNob3RBc3luY0RhdGEgeworICAgIEdSZWZQdHI8R0NhbmNlbGxh
YmxlPiBjYW5jZWxsYWJsZTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzbmFwc2hvdDsK
K307CitXRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RSVUNUKEdldFNuYXBzaG90QXN5bmNEYXRh
KQorCitzdGF0aWMgdm9pZCBkaWRHZXRTbmFwc2hvdChjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgaW1hZ2VIYW5kbGUsIFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpCit7CisgICAgR1Jl
ZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0R1JlZihHX1NJTVBMRV9BU1lO
Q19SRVNVTFQoY29udGV4dCkpOworICAgIEdldFNuYXBzaG90QXN5bmNEYXRhKiBkYXRhID0gc3Rh
dGljX2Nhc3Q8R2V0U25hcHNob3RBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0
X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCkpKTsKKyAgICBHRXJyb3IqIGVycm9yID0gMDsK
KyAgICBpZiAoZ19jYW5jZWxsYWJsZV9zZXRfZXJyb3JfaWZfY2FuY2VsbGVkKGRhdGEtPmNhbmNl
bGxhYmxlLmdldCgpLCAmZXJyb3IpKQorICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfdGFr
ZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKKyAgICBlbHNlIGlmICghaW1hZ2VIYW5kbGUu
aXNOdWxsKCkpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaW1hZ2UgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7
CisgICAgICAgIGlmIChpbWFnZSkKKyAgICAgICAgICAgIGRhdGEtPnNuYXBzaG90ID0gaW1hZ2Ut
PmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdfc2V0X2Vycm9y
X2xpdGVyYWwoJmVycm9yLCBXRUJLSVRfU05BUFNIT1RfRVJST1IsIFdFQktJVF9TTkFQU0hPVF9F
UlJPUl9GQUlMRUQsIF8oIlRoZXJlIHdhcyBhbiBlcnJvciBjcmVhdGluZyB0aGUgc25hcHNob3Qi
KSk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQo
KSwgZXJyb3IpOworICAgIH0KKworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShy
ZXN1bHQuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rf
b2ZfdmlzaWJsZV9hcmVhOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAb3B0
aW9uczogdGhlICNXZWJLaXRTbmFwc2hvdE9wdGlvbnMgZm9yIHRoZSBzbmFwc2hvdAorICogQGNh
bmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJsZQorICogQGNhbGxiYWNrOiAo
c2NvcGUgYXN5bmMpOiBhICNHQXN5bmNSZWFkeUNhbGxiYWNrCisgKiBAdXNlcl9kYXRhOiAoY2xv
c3VyZSk6IHVzZXIgZGF0YQorICoKKyAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyBhIHNuYXBz
aG90IG9mIHRoZSB2aXNpYmxlIGFyZWEgb2YgQHdlYl92aWV3LgorICoKKyAqIFdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgbXVzdCBj
YWxsCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCgpIHRvIGdldCB0aGUg
cmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRf
c25hcHNob3Rfb2ZfdmlzaWJsZV9hcmVhKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNS
ZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBHZGtSZWN0
YW5nbGUgcmVjdCA9IHswLCAwLCAwLCAwfTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90KHdlYlZpZXcsIHJlY3QsIG9wdGlvbnMsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRh
dGEpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Q6CisgKiBAd2Vi
X3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZWN0OiBhICNHZGtSZWN0YW5nbGUgd2l0aCB0
aGUgcmVnaW9uIHRvIHRha2UgdGhlIHNuYXBzaG90IG9mCisgKiBAb3B0aW9uczogI1dlYktpdFNu
YXBzaG90T3B0aW9ucyBmb3IgdGhlIHNuYXBzaG90CisgKiBAY2FuY2VsbGFibGU6IChhbGxvdy1u
b25lKTogYSAjR0NhbmNlbGxhYmxlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IGEgI0dB
c3luY1JlYWR5Q2FsbGJhY2sKKyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdXNlciBkYXRhCisg
KgorICogQXN5bmNocm9ub3VzbHkgcmV0cmlldmVzIGEgc25hcHNob3Qgb2YgdGhlIEB3ZWJfdmll
dyBhdCBAcmVjdC4gSWYKKyAqIEByZWN0IGlzIGVtcHR5LCB0aGlzIGZ1bmN0aW9uIHdvcmtzIGV4
YWN0bHkgbGlrZQorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9vZl92aXNpYmxlX2Fy
ZWEoKQorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkLiBZb3UgbXVzdCBjYWxsCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90X2ZpbmlzaCgpIHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKiovCit2
b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
R2RrUmVjdGFuZ2xlIHJlY3QsIFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBHQ2FuY2Vs
bGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRl
ciB1c2VyRGF0YSkKK3sKKyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxl
X2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dCkpOworICAgIEdldFNuYXBzaG90QXN5bmNEYXRhKiBkYXRhID0gY3JlYXRlR2V0U25hcHNob3RB
c3luY0RhdGEoKTsKKyAgICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxlOworICAgIGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdCwgZGF0YSwgcmVp
bnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveUdldFNuYXBzaG90QXN5bmNEYXRh
KSk7CisKKyAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zOworICAgIGlmICghKG9w
dGlvbnMgJiBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElH
SFRJTkcpKQorICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZzsKKworICAgIGdldFBhZ2Uod2ViVmlldyktPmdldFNuYXBz
aG90KEltYWdlQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIGRpZEdldFNuYXBzaG90KSwgSW50UmVj
dChyZWN0KSwgb3B0aW9ucyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFw
c2hvdF9maW5pc2g6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZXN1bHQ6
IGEgI0dBc3luY1Jlc3VsdAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yIG9y
ICVOVUxMIHRvIGlnbm9yZQorICoKKyAqIEZpbmlzaGVzIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRp
b24gc3RhcnRlZCB3aXRoIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoKS4KKyAqCisgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCkgOiBhICNjYWlyb19zdXJmYWNlX3Qgd2l0aCB0aGUgcmV0
cmlldmVkIHNuYXBzaG90CisgKiovCitjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3RfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdf
SVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIDApOworCisgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiBz
aW1wbGUgPSBHX1NJTVBMRV9BU1lOQ19SRVNVTFQocmVzdWx0KTsKKyAgICBnX3dhcm5faWZfZmFp
bChnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV90YWcoc2ltcGxlKSA9PSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90KTsKKworICAgIGlmIChnX3NpbXBsZV9hc3luY19yZXN1bHRf
cHJvcGFnYXRlX2Vycm9yKHNpbXBsZSwgZXJyb3IpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShzdGF0aWNfY2FzdDxHZXRTbmFwc2hvdEFz
eW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHNpbXBs
ZSkpLT5zbmFwc2hvdC5nZXQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggZmRiYzY2Ni4uNTkwMTUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMTQ2
LDYgKzE0NiwyMSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9JTlNFQ1VSRV9DT05URU5U
X0RJU1BMQVlFRAogfSBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudDsKIAorCisvKioKKyAqIFdl
YktpdFNuYXBzaG90T3B0aW9uczoKKyAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FOiBE
byBub3QgaW5jbHVkZSBhbnkgc3BlY2lhbCBvcHRpb25zLgorICogQFdFQktJVF9TTkFQU0hPVF9P
UFRJT05TX0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORzogV2hldGhlciB0byBpbmNsdWRl
IGluIHRoZQorICogc25hcHNob3QgdGhlIGhpZ2hsaWdodCBvZiB0aGUgc2VsZWN0ZWQgY29udGVu
dC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9ucyB3aGVuIHRha2lu
ZyBhIHNuYXBzaG90CisgKiBmcm9tIGEgI1dlYktpdFdlYlZpZXcuCisgKi8KK3R5cGVkZWYgZW51
bSB7CisgIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUgPSAwLAorICBXRUJLSVRfU05BUFNI
T1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcgPSAxIDw8IDAsCit9IFdl
YktpdFNuYXBzaG90T3B0aW9uczsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJL
aXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTM5Myw2ICs0MDgsMjUgQEAgd2Via2l0X3dlYl92
aWV3X3NhdmVfdG9fZmlsZV9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwog
V0VCS0lUX0FQSSBXZWJLaXREb3dubG9hZCAqCiB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJp
ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJf
dmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgKnVyaSk7CitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9hcmVhICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTbmFwc2hvdE9wdGlvbnMgICAgICBvcHRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sg
ICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCAgICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSAg
ICAgICAgICAgICAgIHJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0U25hcHNob3RPcHRpb25zICAgICAgb3B0aW9ucywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFi
bGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAgICAgICBjYWxs
YmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBncG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIGNh
aXJvX3N1cmZhY2VfdCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0
ICAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsKIAog
R19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZmMzMTc2ZC4uNjAy
Nzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC02OSw2ICs2OSw3IEBAIFdlYktp
dExvYWRFdmVudAogV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlCiBXZWJLaXRTYXZlTW9kZQogV2Vi
S2l0SW5zZWN1cmVDb250ZW50RXZlbnQKK1dlYktpdFNuYXBzaG90T3B0aW9ucwogCiA8U1VCU0VD
VElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTEy
NCw2ICsxMjUsOSBAQCB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9maW5pc2gKIHdlYmtpdF93ZWJfdmll
d19zYXZlX3RvX2ZpbGUKIHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGVfZmluaXNoCiB3ZWJr
aXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X29m
X3Zpc2libGVfYXJlYQord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdAord2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdF9maW5pc2gKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTU5OSwxOCArNjAzLDIxIEBAIFdFQktJ
VF9QT0xJQ1lfRVJST1IKIFdFQktJVF9ET1dOTE9BRF9FUlJPUgogV0VCS0lUX1BSSU5UX0VSUk9S
CiBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUgorV0VCS0lUX1NOQVBTSE9UX0VSUk9SCiBXZWJLaXRO
ZXR3b3JrRXJyb3IKIFdlYktpdFBsdWdpbkVycm9yCiBXZWJLaXRQb2xpY3lFcnJvcgogV2ViS2l0
RG93bmxvYWRFcnJvcgogV2ViS2l0UHJpbnRFcnJvcgogV2ViS2l0SmF2YXNjcmlwdEVycm9yCitX
ZWJLaXRTbmFwc2hvdEVycm9yCiB3ZWJraXRfbmV0d29ya19lcnJvcl9xdWFyawogd2Via2l0X3Bs
dWdpbl9lcnJvcl9xdWFyawogd2Via2l0X3BvbGljeV9lcnJvcl9xdWFyawogd2Via2l0X2Rvd25s
b2FkX2Vycm9yX3F1YXJrCiB3ZWJraXRfcHJpbnRfZXJyb3JfcXVhcmsKIHdlYmtpdF9qYXZhc2Ny
aXB0X2Vycm9yX3F1YXJrCit3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsKIDwvU0VDVElPTj4K
IAogPFNFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZWE1ZTQwNC4uNzZkNjM4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTA2NCw2ICsxMDY0LDczIEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3U2F2ZShTYXZlV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgZ19hc3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dldF9zaXplKGZpbGVJbmZvLmdl
dCgpKSwgPT0sIHRvdGFsQnl0ZXNGcm9tU3RyZWFtKTsKIH0KIAorY2xhc3MgU25hcHNob3RXZWJW
aWV3VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVT
VF9GSVhUVVJFKFNuYXBzaG90V2ViVmlld1Rlc3QpOworCisgICAgU25hcHNob3RXZWJWaWV3VGVz
dCgpCisgICAgICAgIDogbV9zdXJmYWNlKDApCisgICAgeworICAgIH0KKworICAgIH5TbmFwc2hv
dFdlYlZpZXdUZXN0KCkKKyAgICB7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShtX3N1
cmZhY2UpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RSZWFkeShXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0ICpyZXMsIFNuYXBzaG90V2ViVmlld1Rlc3Qq
IHRlc3QpCisgICAgeworICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIHRl
c3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92
aWV3LCByZXMsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1
cmZhY2UgfHwgIWVycm9yLmdldCgpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAg
Z19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lU
X1NOQVBTSE9UX0VSUk9SX0ZBSUxFRCk7CisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwor
ICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogd2FpdEZvclNuYXBzaG90T2ZWaXNpYmxlQXJl
YSgpCisgICAgeworICAgICAgICBtX3N1cmZhY2UgPSAwOworICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NuYXBzaG90X29mX3Zpc2libGVfYXJlYShtX3dlYlZpZXcsIFdFQktJVF9TTkFQU0hP
VF9PUFRJT05TX05PTkUsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4o
b25TbmFwc2hvdFJlYWR5KSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wKTsKKworICAgICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UobV9zdXJmYWNl
KTsKKyAgICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHdhaXRGb3JTbmFwc2hvdChHZGtSZWN0
YW5nbGUgcmVjdCkKKyAgICB7CisgICAgICAgIG1fc3VyZmFjZSA9IDA7CisgICAgICAgIHdlYmtp
dF93ZWJfdmlld19nZXRfc25hcHNob3QobV93ZWJWaWV3LCByZWN0LCBXRUJLSVRfU05BUFNIT1Rf
T1BUSU9OU19OT05FLCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KG9u
U25hcHNob3RSZWFkeSksIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9v
cCk7CisKKyAgICAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc3VyZmFjZSk7
CisgICAgfQorCisgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7Cit9OworCitzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOworICAgIHRlc3QtPmxv
YWRIdG1sKCI8aHRtbD48Ym9keT48cD5XaGF0ZXZlcjwvcD48L2JvZHk+PC9odG1sPiIsIDApOwor
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgc3VyZmFjZSA9IHRlc3Qt
PndhaXRGb3JTbmFwc2hvdE9mVmlzaWJsZUFyZWEoKTsKKyAgICBnX2Fzc2VydCghc3VyZmFjZSk7
CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBzdXJm
YWNlID0gdGVzdC0+d2FpdEZvclNuYXBzaG90T2ZWaXNpYmxlQXJlYSgpOworICAgIGdfYXNzZXJ0
KHN1cmZhY2UpOworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKKworICAgIEdk
a1JlY3RhbmdsZSByZWN0ID0gezEwLCAxMCwgMTAsIDEwfTsKKyAgICBzdXJmYWNlID0gdGVzdC0+
d2FpdEZvclNuYXBzaG90KHJlY3QpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UpOworICAgIGdfYXNz
ZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgPT0sIHJl
Y3Qud2lkdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9o
ZWlnaHQoc3VyZmFjZSksID09LCByZWN0LmhlaWdodCk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KHN1cmZhY2UpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1
bHRDb250ZXh0KTsKQEAgLTEwODMsNiArMTE1MCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNhbi1zaG93LW1pbWUtdHlwZSIsIHRl
c3RXZWJWaWV3Q2FuU2hvd01JTUVUeXBlKTsKICAgICBGb3JtQ2xpZW50VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKTsKICAgICBT
YXZlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzYXZlIiwgdGVzdFdlYlZpZXdT
YXZlKTsKKyAgICBTbmFwc2hvdFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic25h
cHNob3QiLCB0ZXN0V2ViVmlld1NuYXBzaG90KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdlYWFjNTIuLjZjODkw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjA0
LDQgKzQyMDQsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0
cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKIH0KICNlbmRpZgogCit2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFj
aywgSW50UmVjdCByZWN0LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSkgeworICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7CisgICAgbV9pbWFnZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0
KCkpOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVTbmFw
c2hvdChjYWxsYmFja0lELCByZWN0LCBvcHRpb25zKSwgbV9wYWdlSUQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCAzYTMxNTY5Li5hY2Q1YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC03NjEsNiArNzYxLDggQEAgcHVibGljOgogICAgIGRvdWJsZSBtaW5pbXVtTGF5b3V0
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRXaWR0aDsgfQogICAgIHZvaWQg
c2V0TWluaW11bUxheW91dFdpZHRoKGRvdWJsZSk7CiAKKyAgICB2b2lkIGdldFNuYXBzaG90KFBh
c3NSZWZQdHI8SW1hZ2VDYWxsYmFjaz4sIFdlYkNvcmU6OkludFJlY3QsIFNuYXBzaG90T3B0aW9u
cyk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqLCBQYXNzUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4MDZm
OTAzLi5iNmYxYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xNDExLDYgKzE0MTEsMjIgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2Vi
UGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UK
ICAgICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNyZWF0
ZVNuYXBzaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRp
b25zIHNuYXBzaG90T3B0aW9ucykKK3sKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fbWFp
bkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAg
ICByZXR1cm47CisgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IHJlY3QuaXNFbXB0eSgpID8gZnJh
bWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoZmFsc2UpIDogcmVjdDsKKyAgICBTbmFwc2hvdE9w
dGlvbnMgb3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSB8IHNuYXBzaG90T3B0aW9u
czsKKworICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3RJbWFnZSA9IHNjYWxlZFNuYXBzaG90
V2l0aE9wdGlvbnMoY29udGVudFJlY3QsIDEsIG9wdGlvbnMpOworCisgICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChzbmFwc2hvdEltYWdlKQorICAgICAgICBzbmFw
c2hvdEltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpJbWFnZUNhbGxiYWNrKGhhbmRsZSwgY2FsbGJhY2tJRCkpOwor
fQorCiB2b2lkIFdlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwoKQogewogICAgIG1fdWlDbGllbnQucGFn
ZURpZFNjcm9sbCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDEzNDU2YWEuLmMwMmIxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzYyLDYgKzM2Miw3IEBAIHB1YmxpYzoKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
IAogICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGRvdWJsZSBzY2FsZUZhY3RvciwgU25hcHNob3RPcHRpb25z
KTsKKyAgICB2b2lkIGNyZWF0ZVNuYXBzaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6
OkludFJlY3QsIFNuYXBzaG90T3B0aW9ucyk7CiAKICAgICBzdGF0aWMgY29uc3QgV2ViRXZlbnQq
IGN1cnJlbnRFdmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDYzODM1ODMuLmJjYzg0Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0zMTMsNCArMzEzLDUgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgUExB
VEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgU2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1dpbmRvd0lkKGludDY0X3QgaWQpCiAjZW5kaWYKKyAgICBDcmVhdGVTbmFwc2hv
dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQzMl90IHNu
YXBzaG90T3B0aW9ucykKIH0KLS0gCjEuNy4xMS43
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183454</attachid>
            <date>2013-01-18 07:32:45 -0800</date>
            <delta_ts>2013-01-18 11:33:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130118172944.patch</filename>
            <type>text/plain</type>
            <size>25407</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmE0ZWE4NTFhYWMwOTA0
OTFkZDgxZTQxNWExZGU3MTU0Yzg0MmM1ZS4uYTg4M2JiMmE2MmIzNjdkM2NmZmNhOTFjNjUyZDM0
NGQ3MzQwNGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEwLTAzICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdAorICAgICAgICBmcm9tIGEgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4KKworICAgICAgICAqIFNoYXJlZC9JbWFnZU9wdGlvbnMuaDog
YWRkIFNuYXBzaG90T3B0aW9uc1Zpc2libGVBcmVhIGZvcgorICAgICAgICBzbmFwc2hvdHMgb2Yg
dGhlIHZpc2libGUgYXJlYSBpbiBhIHdlYnZpZXcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RXJyb3IuY3BwOgorICAgICAgICAod2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJr
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oOiBBZGQgc25hcHNo
b3R0aW5nIGVycm9yCisgICAgICAgIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoR2V0U25hcHNob3RBc3luY0RhdGEpOgor
ICAgICAgICAoZGlkR2V0U25hcHNob3QpOgorICAgICAgICAoV2ViS2l0V2ViVmlld0dldFNuYXBz
aG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9h
cmVhKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9h
cmVhX2ZpbmlzaCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKTogQWRkIHRoZSBwdWJs
aWMgQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dDogQWRkIHRoZSBuZXcKKyAgICAgICAgQVBJIHRvIHRoZSBkb2NzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRl
c3RXZWJWaWV3U25hcHNob3QpOgorICAgICAgICAoYmVmb3JlQWxsKTogQWRkIHRlc3RzIGZvciB0
aGUgc25hcHNob3R0aW5nIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0
U25hcHNob3QpOgorICAgICAgICBBZGQgYSBwcm94eSBtZXRob2QgdG8gcmVxdWVzdCBhIHNuYXBz
aG90IGZyb20gdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMpOiBTdXBwb3J0IHRoZSBuZXcK
KyAgICAgICAgU25hcHNob3RPcHRpb25zVmlzaWJsZUFyZWEuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNyZWF0ZVNuYXBzaG90KTogQWRkIGEgbWV0aG9kIHRvIHRha2UgYSBzbmFwc2hvdAor
ICAgICAgICBmb3IgYSBnaXZlbiByZWdpb24gaW4gdGhlIFdlYlBhZ2UsIHRoaXMgbWV0aG9kIHdp
bGwgc2VuZCBhIG1lc3NhZ2UKKyAgICAgICAgYmFjayB0byB0aGUgVUkgcHJvY2VzcyB3aXRoIHRo
ZSBpbWFnZSBoYW5kbGUuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCB0aGUgbWVzc2FnZSBm
b3IKKyAgICAgICAgQ3JlYXRlU25hcHNob3QuCisKIDIwMTMtMDEtMTggIEh1YW5nIERvbmdzdW5n
ICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3M6IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpIHJldHVybnMgYSBkaXJ0eSBy
ZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oCmluZGV4IDMzNDNiNDY1YTExYjgx
NjkzNGY1NzcxYmVkMTM4YWJjMTQ1YTc4ZmIuLmQ5OWI3Yjc4M2UxNDFhZmIzMjM1MjQ4OGQzODc3
M2MwZGFiZTlkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFnZU9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKQEAgLTM2LDcg
KzM2LDggQEAgZW51bSB7CiAgICAgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlID0gMSA8PCAwLAog
ICAgIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcgPSAxIDw8IDEs
CiAgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMgPSAxIDw8IDIsCi0gICAgU25h
cHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGUgPSAxIDw8IDMKKyAgICBTbmFwc2hv
dE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSA9IDEgPDwgMywKKyAgICBTbmFwc2hvdE9w
dGlvbnNWaXNpYmxlQXJlYSA9IDEgPDwgNAogfTsKIHR5cGVkZWYgdWludDMyX3QgU25hcHNob3RP
cHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRF
cnJvci5jcHAKaW5kZXggZGM0OGIxYzAxMWFjMDdkM2Q5MTIwZmFmMmE2YWI0OThjMmE4YTBkMC4u
YzA2ZGM2MWE1OGNjNGFhMGE2YzE2ZGE2NTQ2NDA0YTYwZTAxMjRmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcApAQCAtOTEsMyArOTEs
OCBAQCBHUXVhcmsgd2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVhcmsoKQogewogICAgIHJldHVy
biBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0SmF2YXNjcmlwdEVycm9yIik7CiB9
CisKK0dRdWFyayB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsoKQoreworICAgIHJldHVybiBn
X3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0U25hcHNob3RFcnJvciIpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgKaW5kZXggYzIw
NTgxNjgzZDQ3ODkwODA0ODUzYTQ4NzE0NjAxNDFjYWM0YTBmYy4uZTdkZTkzYmMyNWUwZGRjZDQ0
NDNlYmFjNzI5ZmU5NTk4M2E2YmNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRFcnJvci5oCkBAIC0zNSw2ICszNSw3IEBAIEdfQkVHSU5fREVDTFMKICNk
ZWZpbmUgV0VCS0lUX0RPV05MT0FEX0VSUk9SICAgd2Via2l0X2Rvd25sb2FkX2Vycm9yX3F1YXJr
ICgpCiAjZGVmaW5lIFdFQktJVF9QUklOVF9FUlJPUiAgICAgIHdlYmtpdF9wcmludF9lcnJvcl9x
dWFyayAoKQogI2RlZmluZSBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiB3ZWJraXRfcHJpbnRfZXJy
b3JfcXVhcmsgKCkKKyNkZWZpbmUgV0VCS0lUX1NOQVBTSE9UX0VSUk9SICAgd2Via2l0X3NuYXBz
aG90X2Vycm9yX3F1YXJrICgpCiAKIC8qKgogICogV2ViS2l0TmV0d29ya0Vycm9yOgpAQCAtMTMw
LDYgKzEzMSwxNiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9S
X1NDUklQVF9GQUlMRUQgPSA2OTkKIH0gV2ViS2l0SmF2YXNjcmlwdEVycm9yOwogCisvKioKKyAq
IFdlYktpdFNuYXBzaG90RXJyb3I6CisgKiBAV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9U
T19DUkVBVEU6IEFuIGVycm9yIG9jY3VycmVkIHdoZW4gY3JlYXRpbmcgYSB3ZWJwYWdlIHNuYXBz
aG90LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIGVycm9ycyBoYXBwZW5kaW5n
IHdoZW4gY3JlYXRpbmcgc25hcHNob3RzIG9mICNXZWJLaXRXZWJWaWV3CisgKi8KK3R5cGVkZWYg
ZW51bSB7CisgICAgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19DUkVBVEUgPSA3OTkK
K30gV2ViS2l0U25hcHNob3RFcnJvcjsKKwogV0VCS0lUX0FQSSBHUXVhcmsKIHdlYmtpdF9uZXR3
b3JrX2Vycm9yX3F1YXJrICAgICh2b2lkKTsKIApAQCAtMTQ4LDYgKzE1OSw5IEBAIHdlYmtpdF9w
cmludF9lcnJvcl9xdWFyayAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkgR1F1YXJrCiB3ZWJraXRf
amF2YXNjcmlwdF9lcnJvcl9xdWFyayAodm9pZCk7CiAKK1dFQktJVF9BUEkgR1F1YXJrCit3ZWJr
aXRfc25hcHNob3RfZXJyb3JfcXVhcmsgICAodm9pZCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcAppbmRleCBiMDQzZDkxOTc3OTY2NjVkZjRlNGY3YTk4Mjk0ODZhNWU0NjYyMTEyLi42MzQy
MDA3MTVhNDI0MmI2N2Q4N2I2MGMwODk5M2JlZTFmMzIyZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjEsNiArMjEs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAor
I2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJEYXRh
LmgiCkBAIC0yOTM0LDMgKzI5MzUsMTM5IEBAIFdlYktpdFZpZXdNb2RlIHdlYmtpdF93ZWJfdmll
d19nZXRfdmlld19tb2RlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICAgICByZXR1cm4gd2Vi
Vmlldy0+cHJpdi0+dmlld01vZGU7CiB9CisKK3N0cnVjdCBHZXRTbmFwc2hvdEFzeW5jRGF0YSB7
CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOworICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IHNuYXBzaG90OworfTsKK1dFQktJVF9ERUZJTkVfQVNZTkNfREFUQV9TVFJV
Q1QoR2V0U25hcHNob3RBc3luY0RhdGEpCisKK3N0YXRpYyB2b2lkIGRpZEdldFNuYXBzaG90KGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgV0tFcnJvclJlZiwgdm9p
ZCogY29udGV4dCkKK3sKKyAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0g
YWRvcHRHUmVmKEdfU0lNUExFX0FTWU5DX1JFU1VMVChjb250ZXh0KSk7CisgICAgR2V0U25hcHNo
b3RBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRTbmFwc2hvdEFzeW5jRGF0YSo+KGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSkpOwor
ICAgIEdFcnJvciogZXJyb3IgPSAwOworICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9p
Zl9jYW5jZWxsZWQoZGF0YS0+Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvcikpCisgICAgICAgIGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAg
IGVsc2UgaWYgKCFpbWFnZUhhbmRsZS5pc051bGwoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBpbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKKyAgICAgICAgaWYgKGltYWdlKQorICAgICAgICAgICAg
ZGF0YS0+c25hcHNob3QgPSBpbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCgmZXJyb3IsIFdFQktJVF9TTkFQU0hPVF9F
UlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19DUkVBVEUsIF8oIlRoZXJlIHdh
cyBhbiBlcnJvciBjcmVhdGluZyB0aGUgc25hcHNob3QiKSk7CisgICAgICAgIGdfc2ltcGxlX2Fz
eW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIH0KKworICAg
IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQuZ2V0KCkpOworfQorCitzdGF0
aWMgdm9pZAorV2ViS2l0V2ViVmlld0dldFNuYXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0LCBHZGtSZWN0YW5nbGUqIHJlY3QsIGdib29sZWFu
IHZpc2libGVfYXJlYSwgV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEdDYW5jZWxsYWJs
ZSogY2FuY2VsbGFibGUpCit7CisgICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEgPSBjcmVh
dGVHZXRTbmFwc2hvdEFzeW5jRGF0YSgpOworICAgIGRhdGEtPmNhbmNlbGxhYmxlID0gY2FuY2Vs
bGFibGU7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVz
dWx0LCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0U25h
cHNob3RBc3luY0RhdGEpKTsKKworICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMg
PSAwOworICAgIGlmICghKG9wdGlvbnMgJiBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19JTkNMVURF
X1NFTEVDVElPTl9ISUdITElHSFRJTkcpKQorICAgICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25h
cHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZzsKKworICAgIGlmICh2aXNp
YmxlX2FyZWEpCisgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNWaXNp
YmxlQXJlYTsKKworICAgIEludFJlY3QgaW50UmVjdCA9IHJlY3QgPyBJbnRSZWN0KCpyZWN0KSA6
IEludFJlY3QoMCwgMCwgMCwgMCk7CisKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT5nZXRTbmFwc2hv
dChJbWFnZUNhbGxiYWNrOjpjcmVhdGUocmVzdWx0LCBkaWRHZXRTbmFwc2hvdCksIGludFJlY3Qs
IHNuYXBzaG90T3B0aW9ucyk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFw
c2hvdF9vZl92aXNpYmxlX2FyZWE6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAq
IEBvcHRpb25zOiB0aGUgI1dlYktpdFNuYXBzaG90T3B0aW9ucyBmb3IgdGhlIHNuYXBzaG90Cisg
KiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNlbGxhYmxlCisgKiBAY2FsbGJh
Y2s6IChzY29wZSBhc3luYyk6IGEgI0dBc3luY1JlYWR5Q2FsbGJhY2sKKyAqIEB1c2VyX2RhdGE6
IChjbG9zdXJlKTogdXNlciBkYXRhCisgKgorICogQXN5bmNocm9ub3VzbHkgcmV0cmlldmVzIGEg
c25hcHNob3Qgb2YgdGhlIHZpc2libGUgYXJlYSBvZiBAd2ViX3ZpZXcuCisgKgorICogV2hlbiB0
aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBt
dXN0IGNhbGwKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKCkgdG8gZ2V0
IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NuYXBzaG90X29mX3Zpc2libGVfYXJlYShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0Fz
eW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgR1Np
bXBsZUFzeW5jUmVzdWx0KiByZXN1bHQgPSBnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JK
RUNUKHdlYlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Bv
aW50ZXI+KHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9hcmVhKSk7Cisg
ICAgV2ViS2l0V2ViVmlld0dldFNuYXBzaG90KHdlYlZpZXcsIHJlc3VsdCwgMCwgVFJVRSwgb3B0
aW9ucywgY2FuY2VsbGFibGUpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3Rfb2ZfdmlzaWJsZV9hcmVhX2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2Vi
VmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2Nh
dGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNoZXMgYW4gYXN5
bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3X2dldF9zbmFw
c2hvdF9vZl92aXNpYmxlX2FyZWEoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6
IGEgI2NhaXJvX3N1cmZhY2VfdCB3aXRoIHRoZSByZXRyaWV2ZWQgc25hcHNob3QKKyAqKi8KK2Nh
aXJvX3N1cmZhY2VfdCogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9vZl92aXNpYmxlX2Fy
ZWFfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBH
RXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldyksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdfSVNfQVNZTkNf
UkVTVUxUKHJlc3VsdCksIDApOworCisgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiBzaW1wbGUgPSBH
X1NJTVBMRV9BU1lOQ19SRVNVTFQocmVzdWx0KTsKKyAgICBnX3dhcm5faWZfZmFpbChnX3NpbXBs
ZV9hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV90YWcoc2ltcGxlKSA9PSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NuYXBzaG90X29mX3Zpc2libGVfYXJlYSk7CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5bmNf
cmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8R2V0U25h
cHNob3RBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRl
cihzaW1wbGUpKS0+c25hcHNob3QuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3Q6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZWN0
OiBhICNHZGtSZWN0YW5nbGUgc3BlY2lmeWluZyB0aGUgcmVnaW9uLCBpbiBkb2N1bWVudCBjb29y
ZGluYXRlcywgd2hlcmUgdG8gdGFrZSB0aGUgc25hcHNob3Qgb2YKKyAqIEBvcHRpb25zOiAjV2Vi
S2l0U25hcHNob3RPcHRpb25zIGZvciB0aGUgc25hcHNob3QKKyAqIEBjYW5jZWxsYWJsZTogKGFs
bG93LW5vbmUpOiBhICNHQ2FuY2VsbGFibGUKKyAqIEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTog
YSAjR0FzeW5jUmVhZHlDYWxsYmFjaworICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB1c2VyIGRh
dGEKKyAqCisgKiBBc3luY2hyb25vdXNseSByZXRyaWV2ZXMgYSBzbmFwc2hvdCBvZiB0aGUgQHdl
Yl92aWV3IGF0IEByZWN0LiBJZgorICogQHJlY3QgaXMgZW1wdHksIHRoaXMgZnVuY3Rpb24gd29y
a3MgZXhhY3RseSBsaWtlCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X29mX3Zpc2li
bGVfYXJlYSgpCisgKgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJh
Y2sgd2lsbCBiZSBjYWxsZWQuIFlvdSBtdXN0IGNhbGwKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRf
c25hcHNob3RfZmluaXNoKCkgdG8gZ2V0IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi4KKyAq
Ki8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBHZGtSZWN0YW5nbGUqIHJlY3QsIFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBH
Q2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBn
cG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2Vy
RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4od2Via2l0X3dlYl92aWV3X2dldF9z
bmFwc2hvdCkpOworCisgICAgV2ViS2l0V2ViVmlld0dldFNuYXBzaG90KHdlYlZpZXcsIHJlc3Vs
dCwgcmVjdCwgRkFMU0UsIG9wdGlvbnMsIGNhbmNlbGxhYmxlKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0
V2ViVmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBs
b2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNoZXMgYW4g
YXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3X2dldF9z
bmFwc2hvdCgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSAjY2Fpcm9fc3Vy
ZmFjZV90IHdpdGggdGhlIHJldHJpZXZlZCBzbmFwc2hvdAorICoqLworY2Fpcm9fc3VyZmFjZV90
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQpLCAwKTsKKworICAgIEdT
aW1wbGVBc3luY1Jlc3VsdCogc2ltcGxlID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7
CisgICAgZ193YXJuX2lmX2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFn
KHNpbXBsZSkgPT0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCk7CisKKyAgICBpZiAoZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2Uoc3RhdGlj
X2Nhc3Q8R2V0U25hcHNob3RBc3luY0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29w
X3Jlc19ncG9pbnRlcihzaW1wbGUpKS0+c25hcHNob3QuZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGI2NzlkOWQ5
NzhkZmEwNGE5YzdmOGM5Yzk3OTM0NDc1ODYwZjBmN2MuLmVlNTI4ZmE2YmVkMGQ1NjUwY2QxNjFh
YTRhMzA4MzI4NjMwNDQ1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTE1OSw2ICsxNTksMjAgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICBXRUJLSVRfVklFV19NT0RFX1NPVVJDRQogfSBXZWJLaXRWaWV3TW9kZTsKIAorLyoqCisg
KiBXZWJLaXRTbmFwc2hvdE9wdGlvbnM6CisgKiBAV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9O
RTogRG8gbm90IGluY2x1ZGUgYW55IHNwZWNpYWwgb3B0aW9ucy4KKyAqIEBXRUJLSVRfU05BUFNI
T1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkc6IFdoZXRoZXIgdG8gaW5j
bHVkZSBpbiB0aGUKKyAqIHNuYXBzaG90IHRoZSBoaWdobGlnaHQgb2YgdGhlIHNlbGVjdGVkIGNv
bnRlbnQuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbnMgd2hlbiB0
YWtpbmcgYSBzbmFwc2hvdAorICogZnJvbSBhICNXZWJLaXRXZWJWaWV3LgorICovCit0eXBlZGVm
IGVudW0geworICBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FID0gMCwKKyAgV0VCS0lUX1NO
QVBTSE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HID0gMSA8PCAwLAor
fSBXZWJLaXRTbmFwc2hvdE9wdGlvbnM7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50OwogCkBAIC00MTcsNiArNDMxLDMxIEBAIHdlYmtpdF93
ZWJfdmlld19zZXRfdmlld19tb2RlICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcKIFdFQktJVF9BUEkgV2ViS2l0Vmlld01vZGUKIHdlYmtpdF93ZWJfdmlld19nZXRfdmlld19t
b2RlICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndl
Yl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90
X29mX3Zpc2libGVfYXJlYSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFNuYXBzaG90T3B0aW9ucyAgICAgIG9wdGlvbnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAg
ICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICAgIGNhbGxiYWNrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Bv
aW50ZXIgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKKworV0VCS0lUX0FQSSBjYWlyb19z
dXJmYWNlX3QgKgord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9vZl92aXNpYmxlX2FyZWFf
ZmluaXNoICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQg
ICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCAgICAgICAgICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0
YW5nbGUgICAgICAgICAgICAgICpyZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U25hcHNob3RPcHRpb25zICAgICAgb3B0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFj
ayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOwor
CitXRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90X2ZpbmlzaCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAg
ICAgICAgICAqKmVycm9yKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNl
Y3Rpb25zLnR4dAppbmRleCA5OGFhMTEzZDNjMDA3MzcxMTE1YWE4NmMzMDg4NTg3MmViNzQ0Y2Vl
Li4xYjc3ZjViMWViOGNhOGY0OGFhZWIyNWJlNGU4YzQ5YzU0YTNjMjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQKQEAgLTc0LDYgKzc0LDcgQEAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBl
CiBXZWJLaXRTYXZlTW9kZQogV2ViS2l0Vmlld01vZGUKIFdlYktpdEluc2VjdXJlQ29udGVudEV2
ZW50CitXZWJLaXRTbmFwc2hvdE9wdGlvbnMKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5k
cz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0xMzIsNiArMTMzLDEwIEBAIHdlYmtp
dF93ZWJfdmlld19zYXZlX3RvX2ZpbGVfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRf
dXJpCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3ZpZXdfbW9kZQogd2Via2l0X3dlYl92aWV3X2dldF92
aWV3X21vZGUKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9hcmVhCit3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X29mX3Zpc2libGVfYXJlYV9maW5pc2gKK3dlYmtp
dF93ZWJfdmlld19nZXRfc25hcHNob3QKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmlu
aXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0CkBAIC02MDcsMTggKzYxMiwyMSBAQCBXRUJLSVRfUE9MSUNZX0VSUk9SCiBXRUJL
SVRfRE9XTkxPQURfRVJST1IKIFdFQktJVF9QUklOVF9FUlJPUgogV0VCS0lUX0pBVkFTQ1JJUFRf
RVJST1IKK1dFQktJVF9TTkFQU0hPVF9FUlJPUgogV2ViS2l0TmV0d29ya0Vycm9yCiBXZWJLaXRQ
bHVnaW5FcnJvcgogV2ViS2l0UG9saWN5RXJyb3IKIFdlYktpdERvd25sb2FkRXJyb3IKIFdlYktp
dFByaW50RXJyb3IKIFdlYktpdEphdmFzY3JpcHRFcnJvcgorV2ViS2l0U25hcHNob3RFcnJvcgog
d2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsKIHdlYmtpdF9wbHVnaW5fZXJyb3JfcXVhcmsKIHdl
YmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsKIHdlYmtpdF9kb3dubG9hZF9lcnJvcl9xdWFyawogd2Vi
a2l0X3ByaW50X2Vycm9yX3F1YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyaword2Vi
a2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwCmluZGV4IDZlZDRhMzhlMzAxMTVhYmQxMDZiNWJjZWJkZjU4M2FjYTI5
NDhiZmQuLmUyMjhiYzdlMzlhYTM3YjE2MTgzODQyYmU5NmMzMGU3OTExMWZmYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwODUsNiArMTA4NSw4MyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld01vZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3Nl
cnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgaW5kZXhIVE1MKTsKIH0KIAorY2xhc3Mg
U25hcHNob3RXZWJWaWV3VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBN
QUtFX0dMSUJfVEVTVF9GSVhUVVJFKFNuYXBzaG90V2ViVmlld1Rlc3QpOworCisgICAgU25hcHNo
b3RXZWJWaWV3VGVzdCgpCisgICAgICAgIDogbV9zdXJmYWNlKDApCisgICAgeworICAgIH0KKwor
ICAgIH5TbmFwc2hvdFdlYlZpZXdUZXN0KCkKKyAgICB7CisgICAgICAgIGNhaXJvX3N1cmZhY2Vf
ZGVzdHJveShtX3N1cmZhY2UpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RP
ZlZpc2libGVBcmVhUmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCAq
cmVzLCBTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworICAgICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NuYXBzaG90X29mX3Zpc2libGVfYXJlYV9maW5pc2god2ViX3ZpZXcsIHJlcywgJmVycm9y
Lm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSB8fCAhZXJyb3Iu
Z2V0KCkpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBnX2Fzc2VydF9lcnJvcihl
cnJvci5nZXQoKSwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1Jf
RkFJTEVEX1RPX0NSRUFURSk7CisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dywgR0FzeW5jUmVzdWx0ICpyZXMsIFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QpCisgICAgewor
ICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIHRlc3QtPm1fc3VyZmFjZSA9
IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJv
ci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UgfHwgIWVycm9y
LmdldCgpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgZ19hc3NlcnRfZXJyb3Io
ZXJyb3IuZ2V0KCksIFdFQktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VSUk9S
X0ZBSUxFRF9UT19DUkVBVEUpOworICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICB9
CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHdhaXRGb3JTbmFwc2hvdE9mVmlzaWJsZUFyZWEoKQor
ICAgIHsKKyAgICAgICAgbV9zdXJmYWNlID0gMDsKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dl
dF9zbmFwc2hvdF9vZl92aXNpYmxlX2FyZWEobV93ZWJWaWV3LCBXRUJLSVRfU05BUFNIT1RfT1BU
SU9OU19OT05FLCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KG9uU25h
cHNob3RPZlZpc2libGVBcmVhUmVhZHkpLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVu
KG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZSht
X3N1cmZhY2UpOworICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogd2FpdEZvclNuYXBzaG90
KEdka1JlY3RhbmdsZSogcmVjdCkKKyAgICB7CisgICAgICAgIG1fc3VyZmFjZSA9IDA7CisgICAg
ICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QobV93ZWJWaWV3LCByZWN0LCBXRUJLSVRf
U05BUFNIT1RfT1BUSU9OU19OT05FLCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KG9uU25hcHNob3RSZWFkeSksIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7CisKKyAgICAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1f
c3VyZmFjZSk7CisgICAgfQorCisgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7Cit9Owor
CitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOworICAg
IHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48cD5XaGF0ZXZlcjwvcD48L2JvZHk+PC9odG1s
PiIsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgc3VyZmFj
ZSA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdE9mVmlzaWJsZUFyZWEoKTsKKyAgICBnX2Fzc2VydCgh
c3VyZmFjZSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsK
KyAgICBzdXJmYWNlID0gdGVzdC0+d2FpdEZvclNuYXBzaG90T2ZWaXNpYmxlQXJlYSgpOworICAg
IGdfYXNzZXJ0KHN1cmZhY2UpOworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsK
KworICAgIEdka1JlY3RhbmdsZSByZWN0ID0geyAxMCwgMTAsIDEwLCAxMCB9OworICAgIHN1cmZh
Y2UgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoJnJlY3QpOworICAgIGdfYXNzZXJ0KHN1cmZhY2Up
OworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJm
YWNlKSwgPT0sIHJlY3Qud2lkdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSksID09LCByZWN0LmhlaWdodCk7CisgICAgY2Fpcm9f
c3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0
V2ViVmlld0RlZmF1bHRDb250ZXh0KTsKQEAgLTExMDUsNiArMTE4Miw3IEBAIHZvaWQgYmVmb3Jl
QWxsKCkKICAgICBGb3JtQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1m
b3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJzYXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInZpZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7Cisg
ICAgU25hcHNob3RXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90Iiwg
dGVzdFdlYlZpZXdTbmFwc2hvdCk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2ZDk4NWMxN2QyM2Q5YzM2MDU5ZjZl
YzIxNzNjY2I3MGEzZGYzZGMzLi4zMDEzMTgwZmQ2OGE2Y2Q5NWI1ZWM3YTdhMTk5NjAzYTA2NGNm
Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDMx
OCw0ICs0MzE4LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYWluRnJhbWVJblZpZXdTb3Vy
Y2VNb2RlKGJvb2wgaW5WaWV3U291cmNlTW9kZSkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUluVmlld1NvdXJjZU1vZGUoaW5WaWV3U291cmNlTW9k
ZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmdldFNuYXBzaG90KFBhc3NS
ZWZQdHI8SW1hZ2VDYWxsYmFjaz4gY2FsbGJhY2ssIGNvbnN0IEludFJlY3QmIHJlY3QsIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGNh
bGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2ltYWdlQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7CisKKyAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVNuYXBzaG90KGNhbGxiYWNrSUQsIHJlY3Qs
IG9wdGlvbnMpLCBtX3BhZ2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDE4ZTUxOWQzMjFkNzZlYTljZGU4
MGJjNTQ0Y2E4ZTYzMTBhNDEwZmQuLmZkOGNkZmMzODBiZjNkMTQ5NDdmYTdlMGZlMzEwMWEwNmNj
Zjk1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc1OCw2
ICs3NTgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE1haW5GcmFtZUluVmlld1NvdXJjZU1v
ZGUoYm9vbCk7CiAKKyAgICB2b2lkIGdldFNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2VDYWxsYmFj
az4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMpOworCiBwcml2YXRl
OgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+LCBXZWJQYWdlR3JvdXAqLCB1aW50NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjBiMWZiNjY0YzgyNDFiMDMy
OGNlZWM3ZmVlZTlmMjg3ZTgyYWE3Ny4uY2E2ZDIyMTY2MDQ4MDU1MGY2MzBkYWViYWM2MjU3YzMz
N2JmNThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMTQwMyw3ICsxNDAzLDggQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6
c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAgICBp
ZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBJbnRTaXplIGJpdG1hcFNp
emUgPSByZWN0LnNpemUoKTsKKyAgICBJbnRSZWN0IHNuYXBzaG90UmVjdCA9IG9wdGlvbnMgJiBT
bmFwc2hvdE9wdGlvbnNWaXNpYmxlQXJlYSA/IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KGZhbHNlKSA6IHJlY3Q7CisgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gc25hcHNob3RSZWN0LnNp
emUoKTsKICAgICBmbG9hdCBjb21iaW5lZFNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3IgKiBjb3Jl
UGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJpdG1hcFNpemUuc2NhbGUoY29tYmlu
ZWRTY2FsZUZhY3Rvcik7CiAKQEAgLTE0MTMsNyArMTQxNCw3IEBAIFBhc3NSZWZQdHI8V2ViSW1h
Z2U+IFdlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoY29uc3QgSW50UmVjdCYgcmVj
dCwgZG91CiAKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0Nv
bnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAg
IGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihjb21iaW5lZFNjYWxlRmFj
dG9yKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0Lnko
KSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC54KCksIC1z
bmFwc2hvdFJlY3QueSgpKTsKIAogICAgIEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFwaG90IHNo
b3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRlU2VsZWN0aW9uOwogICAgIGlm
IChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZykK
QEAgLTE0MjMsNyArMTQyNCw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNjYWxl
ZFNuYXBzaG90V2l0aE9wdGlvbnMoY29uc3QgSW50UmVjdCYgcmVjdCwgZG91CiAgICAgaWYgKG9w
dGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykKICAgICAgICAgY29vcmRp
bmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpWaWV3Q29vcmRpbmF0ZXM7CiAKLSAgICBmcmFtZVZpZXct
PnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0KCksIHJlY3QsIHNo
b3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3BhY2UpOworICAgIGZyYW1lVmlldy0+cGFp
bnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgc25hcHNob3RSZWN0
LCBzaG91bGRQYWludFNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKIAogICAgIGlmIChvcHRp
b25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGUpIHsKICAgICAgICAg
RmxvYXRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+
c2VsZWN0aW9uKCktPmJvdW5kcygpOwpAQCAtMTQzNCw2ICsxNDM1LDIyIEBAIFBhc3NSZWZQdHI8
V2ViSW1hZ2U+IFdlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoY29uc3QgSW50UmVj
dCYgcmVjdCwgZG91CiAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKIH0KIAordm9pZCBX
ZWJQYWdlOjpjcmVhdGVTbmFwc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBJbnRSZWN0
JiByZWN0LCBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zKQoreworICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgaWYg
KCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0g
cmVjdC5pc0VtcHR5KCkgPyBJbnRSZWN0KEludFBvaW50KDAsIDApLCBmcmFtZVZpZXctPmNvbnRl
bnRzU2l6ZSgpKSA6IHJlY3Q7CisgICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBTbmFwc2hv
dE9wdGlvbnNTaGFyZWFibGUgfCBzbmFwc2hvdE9wdGlvbnM7CisKKyAgICBSZWZQdHI8V2ViSW1h
Z2U+IHNuYXBzaG90SW1hZ2UgPSBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnRlbnRSZWN0
LCAxLCBvcHRpb25zKTsKKworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAg
ICBpZiAoc25hcHNob3RJbWFnZSkKKyAgICAgICAgc25hcHNob3RJbWFnZS0+Yml0bWFwKCktPmNy
ZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1h
Z2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpwYWdl
RGlkU2Nyb2xsKCkKIHsKICAgICBtX3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3YjViOTNmMmY1
ZjBlMTY3YTEzZjFlZTA5NTY0N2JhMDJlODA0ZDY4Li5lMzU5MGFhZmIwMGNkOGJlYTNlZWQwNDg2
MjVlM2MzOWY3NjcxYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTM2MCw2ICszNjAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW50UmVj
dCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKICAgICBQYXNzUmVm
UHRyPFdlYkltYWdlPiBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBkb3VibGUgc2NhbGVGYWN0b3IsIFNuYXBzaG90T3B0aW9ucyk7CisgICAgdm9pZCBj
cmVhdGVTbmFwc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgU25hcHNob3RPcHRpb25zKTsKIAogICAgIHN0YXRpYyBjb25zdCBXZWJFdmVudCogY3VycmVu
dEV2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTMyODkyYzBlNzBiNDgyOTM5ZDZiNGQyMWExOWM2
ZGNhN2Y2OWQ0MS4uYTNhY2E5NzU0MTdiZWJlNDE1MmIyMDY1NzczNWI1YmFlMjlmMTc1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTMwOSw0ICszMDksNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICNlbmRp
ZgogCiAgICAgU2V0TWFpbkZyYW1lSW5WaWV3U291cmNlTW9kZShib29sIGluVmlld1NvdXJjZU1v
ZGUpCisKKyAgICBDcmVhdGVTbmFwc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QsIHVpbnQzMl90IHNuYXBzaG90T3B0aW9ucykKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183518</attachid>
            <date>2013-01-18 11:33:30 -0800</date>
            <delta_ts>2013-03-07 01:54:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130118213028.patch</filename>
            <type>text/plain</type>
            <size>29186</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmE0ZWE4NTFhYWMwOTA0
OTFkZDgxZTQxNWExZGU3MTU0Yzg0MmM1ZS4uZmE3YTc1ZGVjOGQ1MWQ3ODg1NTQwMzYyNTRkOTVl
YWI0NDA4MDJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTEwLTAzICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdAorICAgICAgICBmcm9tIGEgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4KKworICAgICAgICAqIFNoYXJlZC9JbWFnZU9wdGlvbnMuaDog
YWRkIFNuYXBzaG90T3B0aW9uc1Zpc2libGVBcmVhIGZvcgorICAgICAgICBzbmFwc2hvdHMgb2Yg
dGhlIHZpc2libGUgYXJlYSBpbiBhIHdlYnZpZXcuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RXJyb3IuY3BwOgorICAgICAgICAod2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJr
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oOiBBZGQgc25hcHNo
b3R0aW5nIGVycm9yCisgICAgICAgIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoR2V0U25hcHNob3RBc3luY0RhdGEpOgor
ICAgICAgICAoZGlkR2V0U25hcHNob3QpOgorICAgICAgICAoV2ViS2l0V2ViVmlld0dldFNuYXBz
aG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9h
cmVhKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9h
cmVhX2ZpbmlzaCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKTogQWRkIHRoZSBwdWJs
aWMgQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25z
LnR4dDogQWRkIHRoZSBuZXcKKyAgICAgICAgQVBJIHRvIHRoZSBkb2NzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGNv
bXBhcmVfY2Fpcm9fc3VyZmFjZXMpOiBNZXRob2QgdG8gY29tcGFyZSB0d28gY2Fpcm8gc3VyZmFj
ZXMuCisgICAgICAgICh0ZXN0V2ViVmlld1NuYXBzaG90KToKKyAgICAgICAgKGJlZm9yZUFsbCk6
IEFkZCB0ZXN0cyBmb3IgdGhlIHNuYXBzaG90dGluZyBBUEkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OlNl
bGVjdEFsbCk6IEFkZCBtZXRob2QgdG8gc2VsZWN0IHRoZSBjb250ZW50cyBvZgorICAgICAgICB0
aGUgd2VidmlldyBpbiB0aGUgdGVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJWaWV3VGVzdC5oOiBTYW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpn
ZXRTbmFwc2hvdCk6CisgICAgICAgIEFkZCBhIHByb3h5IG1ldGhvZCB0byByZXF1ZXN0IGEgc25h
cHNob3QgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6IERpdHRv
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyk6IFN1cHBvcnQgdGhlIG5l
dworICAgICAgICBTbmFwc2hvdE9wdGlvbnNWaXNpYmxlQXJlYS4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y3JlYXRlU25hcHNob3QpOiBBZGQgYSBtZXRob2QgdG8gdGFrZSBhIHNuYXBzaG90
CisgICAgICAgIGZvciBhIGdpdmVuIHJlZ2lvbiBpbiB0aGUgV2ViUGFnZSwgdGhpcyBtZXRob2Qg
d2lsbCBzZW5kIGEgbWVzc2FnZQorICAgICAgICBiYWNrIHRvIHRoZSBVSSBwcm9jZXNzIHdpdGgg
dGhlIGltYWdlIGhhbmRsZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0dG8uCisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkIHRoZSBtZXNzYWdl
IGZvcgorICAgICAgICBDcmVhdGVTbmFwc2hvdC4KKwogMjAxMy0wMS0xOCAgSHVhbmcgRG9uZ3N1
bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFw
aGljczogQ29vcmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKCkgcmV0dXJucyBhIGRpcnR5
IHJlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmgKaW5kZXggMzM0M2I0NjVhMTFi
ODE2OTM0ZjU3NzFiZWQxMzhhYmMxNDVhNzhmYi4uZDk5YjdiNzgzZTE0MWFmYjMyMzUyNDg4ZDM4
NzczYzBkYWJlOWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltYWdlT3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFnZU9wdGlvbnMuaApAQCAtMzYs
NyArMzYsOCBAQCBlbnVtIHsKICAgICBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUgPSAxIDw8IDAs
CiAgICAgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZyA9IDEgPDwg
MSwKICAgICBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcyA9IDEgPDwgMiwKLSAgICBT
bmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSA9IDEgPDwgMworICAgIFNuYXBz
aG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlID0gMSA8PCAzLAorICAgIFNuYXBzaG90
T3B0aW9uc1Zpc2libGVBcmVhID0gMSA8PCA0CiB9OwogdHlwZWRlZiB1aW50MzJfdCBTbmFwc2hv
dE9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVycm9yLmNwcAppbmRleCBkYzQ4YjFjMDExYWMwN2QzZDkxMjBmYWYyYTZhYjQ5OGMyYThhMGQw
Li5jMDZkYzYxYTU4Y2M0YWEwYTZjMTZkYTY1NDY0MDRhNjBlMDEyNGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCkBAIC05MSwzICs5
MSw4IEBAIEdRdWFyayB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyaygpCiB7CiAgICAgcmV0
dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRKYXZhc2NyaXB0RXJyb3IiKTsK
IH0KKworR1F1YXJrIHdlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyaygpCit7CisgICAgcmV0dXJu
IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRTbmFwc2hvdEVycm9yIik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAppbmRleCBj
MjA1ODE2ODNkNDc4OTA4MDQ4NTNhNDg3MTQ2MDE0MWNhYzRhMGZjLi5lN2RlOTNiYzI1ZTBkZGNk
NDQ0M2ViYWM3MjlmZTk1OTgzYTZiY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVycm9yLmgKQEAgLTM1LDYgKzM1LDcgQEAgR19CRUdJTl9ERUNMUwog
I2RlZmluZSBXRUJLSVRfRE9XTkxPQURfRVJST1IgICB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVh
cmsgKCkKICNkZWZpbmUgV0VCS0lUX1BSSU5UX0VSUk9SICAgICAgd2Via2l0X3ByaW50X2Vycm9y
X3F1YXJrICgpCiAjZGVmaW5lIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SIHdlYmtpdF9wcmludF9l
cnJvcl9xdWFyayAoKQorI2RlZmluZSBXRUJLSVRfU05BUFNIT1RfRVJST1IgICB3ZWJraXRfc25h
cHNob3RfZXJyb3JfcXVhcmsgKCkKIAogLyoqCiAgKiBXZWJLaXROZXR3b3JrRXJyb3I6CkBAIC0x
MzAsNiArMTMxLDE2IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX0pBVkFTQ1JJUFRfRVJS
T1JfU0NSSVBUX0ZBSUxFRCA9IDY5OQogfSBXZWJLaXRKYXZhc2NyaXB0RXJyb3I7CiAKKy8qKgor
ICogV2ViS2l0U25hcHNob3RFcnJvcjoKKyAqIEBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVE
X1RPX0NSRUFURTogQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiBjcmVhdGluZyBhIHdlYnBhZ2Ugc25h
cHNob3QuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgZXJyb3JzIGhhcHBlbmRp
bmcgd2hlbiBjcmVhdGluZyBzbmFwc2hvdHMgb2YgI1dlYktpdFdlYlZpZXcKKyAqLwordHlwZWRl
ZiBlbnVtIHsKKyAgICBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSA9IDc5
OQorfSBXZWJLaXRTbmFwc2hvdEVycm9yOworCiBXRUJLSVRfQVBJIEdRdWFyawogd2Via2l0X25l
dHdvcmtfZXJyb3JfcXVhcmsgICAgKHZvaWQpOwogCkBAIC0xNDgsNiArMTU5LDkgQEAgd2Via2l0
X3ByaW50X2Vycm9yX3F1YXJrICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBHUXVhcmsKIHdlYmtp
dF9qYXZhc2NyaXB0X2Vycm9yX3F1YXJrICh2b2lkKTsKIAorV0VCS0lUX0FQSSBHUXVhcmsKK3dl
YmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyayAgICh2b2lkKTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IGIwNDNkOTE5Nzc5NjY2NWRmNGU0ZjdhOTgyOTQ4NmE1ZTQ2NjIxMTIuLjYz
NDIwMDcxNWE0MjQyYjY3ZDg3YjYwYzA4OTkzYmVlMWYzMjJmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMSw2ICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgog
CisjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVt
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYkRh
dGEuaCIKQEAgLTI5MzQsMyArMjkzNSwxMzkgQEAgV2ViS2l0Vmlld01vZGUgd2Via2l0X3dlYl92
aWV3X2dldF92aWV3X21vZGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIAogICAgIHJldHVybiB3
ZWJWaWV3LT5wcml2LT52aWV3TW9kZTsKIH0KKworc3RydWN0IEdldFNuYXBzaG90QXN5bmNEYXRh
IHsKKyAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGU7CisgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc25hcHNob3Q7Cit9OworV0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NU
UlVDVChHZXRTbmFwc2hvdEFzeW5jRGF0YSkKKworc3RhdGljIHZvaWQgZGlkR2V0U25hcHNob3Qo
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlLCBXS0Vycm9yUmVmLCB2
b2lkKiBjb250ZXh0KQoreworICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQg
PSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxUKGNvbnRleHQpKTsKKyAgICBHZXRTbmFw
c2hvdEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4o
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7
CisgICAgR0Vycm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9y
X2lmX2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKKyAgICAgICAg
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7Cisg
ICAgZWxzZSBpZiAoIWltYWdlSGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOworICAgICAgICBpZiAoaW1hZ2UpCisgICAgICAgICAg
ICBkYXRhLT5zbmFwc2hvdCA9IGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKCZlcnJvciwgV0VCS0lUX1NOQVBTSE9U
X0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSwgXygiVGhlcmUg
d2FzIGFuIGVycm9yIGNyZWF0aW5nIHRoZSBzbmFwc2hvdCIpKTsKKyAgICAgICAgZ19zaW1wbGVf
YXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAgfQorCisg
ICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7Cit9CisKK3N0
YXRpYyB2b2lkCitXZWJLaXRXZWJWaWV3R2V0U25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQsIEdka1JlY3RhbmdsZSogcmVjdCwgZ2Jvb2xl
YW4gdmlzaWJsZV9hcmVhLCBXZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgR0NhbmNlbGxh
YmxlKiBjYW5jZWxsYWJsZSkKK3sKKyAgICBHZXRTbmFwc2hvdEFzeW5jRGF0YSogZGF0YSA9IGNy
ZWF0ZUdldFNuYXBzaG90QXN5bmNEYXRhKCk7CisgICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBjYW5j
ZWxsYWJsZTsKKyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihy
ZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lHZXRT
bmFwc2hvdEFzeW5jRGF0YSkpOworCisgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9u
cyA9IDA7CisgICAgaWYgKCEob3B0aW9ucyAmIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xV
REVfU0VMRUNUSU9OX0hJR0hMSUdIVElORykpCisgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBT
bmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nOworCisgICAgaWYgKHZp
c2libGVfYXJlYSkKKyAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1Zp
c2libGVBcmVhOworCisgICAgSW50UmVjdCBpbnRSZWN0ID0gcmVjdCA/IEludFJlY3QoKnJlY3Qp
IDogSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgIGdldFBhZ2Uod2ViVmlldyktPmdldFNuYXBz
aG90KEltYWdlQ2FsbGJhY2s6OmNyZWF0ZShyZXN1bHQsIGRpZEdldFNuYXBzaG90KSwgaW50UmVj
dCwgc25hcHNob3RPcHRpb25zKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90X29mX3Zpc2libGVfYXJlYToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwor
ICogQG9wdGlvbnM6IHRoZSAjV2ViS2l0U25hcHNob3RPcHRpb25zIGZvciB0aGUgc25hcHNob3QK
KyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBhICNHQ2FuY2VsbGFibGUKKyAqIEBjYWxs
YmFjazogKHNjb3BlIGFzeW5jKTogYSAjR0FzeW5jUmVhZHlDYWxsYmFjaworICogQHVzZXJfZGF0
YTogKGNsb3N1cmUpOiB1c2VyIGRhdGEKKyAqCisgKiBBc3luY2hyb25vdXNseSByZXRyaWV2ZXMg
YSBzbmFwc2hvdCBvZiB0aGUgdmlzaWJsZSBhcmVhIG9mIEB3ZWJfdmlldy4KKyAqCisgKiBXaGVu
IHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4gWW91
IG11c3QgY2FsbAorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2goKSB0byBn
ZXQgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLgorICovCit2b2lkIHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9hcmVhKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBH
QXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBH
U2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19P
QkpFQ1Qod2ViVmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxn
cG9pbnRlcj4od2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9vZl92aXNpYmxlX2FyZWEpKTsK
KyAgICBXZWJLaXRXZWJWaWV3R2V0U25hcHNob3Qod2ViVmlldywgcmVzdWx0LCAwLCBUUlVFLCBv
cHRpb25zLCBjYW5jZWxsYWJsZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9z
bmFwc2hvdF9vZl92aXNpYmxlX2FyZWFfZmluaXNoOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRX
ZWJWaWV3CisgKiBAcmVzdWx0OiBhICNHQXN5bmNSZXN1bHQKKyAqIEBlcnJvcjogcmV0dXJuIGxv
Y2F0aW9uIGZvciBlcnJvciBvciAlTlVMTCB0byBpZ25vcmUKKyAqCisgKiBGaW5pc2hlcyBhbiBh
c3luY2hyb25vdXMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90X29mX3Zpc2libGVfYXJlYSgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxs
KTogYSAjY2Fpcm9fc3VyZmFjZV90IHdpdGggdGhlIHJldHJpZXZlZCBzbmFwc2hvdAorICoqLwor
Y2Fpcm9fc3VyZmFjZV90KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X29mX3Zpc2libGVf
YXJlYV9maW5pc2goV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoR19JU19BU1lO
Q19SRVNVTFQocmVzdWx0KSwgMCk7CisKKyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9
IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1bHQpOworICAgIGdfd2Fybl9pZl9mYWlsKGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9hcmVhKTsKKworICAgIGlmIChnX3NpbXBsZV9hc3lu
Y19yZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZSwgZXJyb3IpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShzdGF0aWNfY2FzdDxHZXRT
bmFwc2hvdEFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2lu
dGVyKHNpbXBsZSkpLT5zbmFwc2hvdC5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJl
Y3Q6IGEgI0dka1JlY3RhbmdsZSBzcGVjaWZ5aW5nIHRoZSByZWdpb24sIGluIGRvY3VtZW50IGNv
b3JkaW5hdGVzLCB3aGVyZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBvZgorICogQG9wdGlvbnM6ICNX
ZWJLaXRTbmFwc2hvdE9wdGlvbnMgZm9yIHRoZSBzbmFwc2hvdAorICogQGNhbmNlbGxhYmxlOiAo
YWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJsZQorICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMp
OiBhICNHQXN5bmNSZWFkeUNhbGxiYWNrCisgKiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHVzZXIg
ZGF0YQorICoKKyAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyBhIHNuYXBzaG90IG9mIHRoZSBA
d2ViX3ZpZXcgYXQgQHJlY3QuIElmCisgKiBAcmVjdCBpcyBlbXB0eSwgdGhpcyBmdW5jdGlvbiB3
b3JrcyBleGFjdGx5IGxpa2UKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2Zfdmlz
aWJsZV9hcmVhKCkKKyAqCisgKiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxs
YmFjayB3aWxsIGJlIGNhbGxlZC4gWW91IG11c3QgY2FsbAorICogd2Via2l0X3dlYl92aWV3X2dl
dF9zbmFwc2hvdF9maW5pc2goKSB0byBnZXQgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLgor
ICoqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEdka1JlY3RhbmdsZSogcmVjdCwgV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMs
IEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ss
IGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0ID0g
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVCh3ZWJWaWV3KSwgY2FsbGJhY2ssIHVz
ZXJEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90KSk7CisKKyAgICBXZWJLaXRXZWJWaWV3R2V0U25hcHNob3Qod2ViVmlldywgcmVz
dWx0LCByZWN0LCBGQUxTRSwgb3B0aW9ucywgY2FuY2VsbGFibGUpOworfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoOgorICogQHdlYl92aWV3OiBhICNXZWJL
aXRXZWJWaWV3CisgKiBAcmVzdWx0OiBhICNHQXN5bmNSZXN1bHQKKyAqIEBlcnJvcjogcmV0dXJu
IGxvY2F0aW9uIGZvciBlcnJvciBvciAlTlVMTCB0byBpZ25vcmUKKyAqCisgKiBGaW5pc2hlcyBh
biBhc3luY2hyb25vdXMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90KCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhICNjYWlyb19z
dXJmYWNlX3Qgd2l0aCB0aGUgcmV0cmlldmVkIHNuYXBzaG90CisgKiovCitjYWlyb19zdXJmYWNl
X3QqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEdfSVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIDApOworCisgICAg
R1NpbXBsZUFzeW5jUmVzdWx0KiBzaW1wbGUgPSBHX1NJTVBMRV9BU1lOQ19SRVNVTFQocmVzdWx0
KTsKKyAgICBnX3dhcm5faWZfZmFpbChnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV90
YWcoc2ltcGxlKSA9PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KTsKKworICAgIGlmIChn
X3NpbXBsZV9hc3luY19yZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZSwgZXJyb3IpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShzdGF0
aWNfY2FzdDxHZXRTbmFwc2hvdEFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRf
b3BfcmVzX2dwb2ludGVyKHNpbXBsZSkpLT5zbmFwc2hvdC5nZXQoKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYjY3OWQ5
ZDk3OGRmYTA0YTljN2Y4YzljOTc5MzQ0NzU4NjBmMGY3Yy4uZWU1MjhmYTZiZWQwZDU2NTBjZDE2
MWFhNGEzMDgzMjg2MzA0NDVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMTU5LDYgKzE1OSwyMCBAQCB0eXBlZGVmIGVudW0g
ewogICAgIFdFQktJVF9WSUVXX01PREVfU09VUkNFCiB9IFdlYktpdFZpZXdNb2RlOwogCisvKioK
KyAqIFdlYktpdFNuYXBzaG90T3B0aW9uczoKKyAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19O
T05FOiBEbyBub3QgaW5jbHVkZSBhbnkgc3BlY2lhbCBvcHRpb25zLgorICogQFdFQktJVF9TTkFQ
U0hPVF9PUFRJT05TX0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORzogV2hldGhlciB0byBp
bmNsdWRlIGluIHRoZQorICogc25hcHNob3QgdGhlIGhpZ2hsaWdodCBvZiB0aGUgc2VsZWN0ZWQg
Y29udGVudC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9ucyB3aGVu
IHRha2luZyBhIHNuYXBzaG90CisgKiBmcm9tIGEgI1dlYktpdFdlYlZpZXcuCisgKi8KK3R5cGVk
ZWYgZW51bSB7CisgIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUgPSAwLAorICBXRUJLSVRf
U05BUFNIT1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcgPSAxIDw8IDAs
Cit9IFdlYktpdFNuYXBzaG90T3B0aW9uczsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAg
ICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTQxNyw2ICs0MzEsMzEgQEAgd2Via2l0
X3dlYl92aWV3X3NldF92aWV3X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldwogV0VCS0lUX0FQSSBXZWJLaXRWaWV3TW9kZQogd2Via2l0X3dlYl92aWV3X2dldF92aWV3
X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAq
d2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNo
b3Rfb2ZfdmlzaWJsZV9hcmVhICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0U25hcHNob3RPcHRpb25zICAgICAgb3B0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAg
ICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
cG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOworCitXRUJLSVRfQVBJIGNhaXJv
X3N1cmZhY2VfdCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X29mX3Zpc2libGVfYXJl
YV9maW5pc2ggIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3Vs
dCAgICAgICAgICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka1Jl
Y3RhbmdsZSAgICAgICAgICAgICAgKnJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTbmFwc2hvdE9wdGlvbnMgICAgICBvcHRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxi
YWNrICAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSk7
CisKK1dFQktJVF9BUEkgY2Fpcm9fc3VyZmFjZV90ICoKK3dlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3RfZmluaXNoICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICAgICAgICAgICoqZXJyb3IpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CmluZGV4IDk4YWExMTNkM2MwMDczNzExMTVhYTg2YzMwODg1ODcyZWI3NDRj
ZWUuLjFiNzdmNWIxZWI4Y2E4ZjQ4YWFlYjI1YmU0ZThjNDljNTRhM2MyOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLXNlY3Rpb25zLnR4dApAQCAtNzQsNiArNzQsNyBAQCBXZWJLaXRQb2xpY3lEZWNpc2lvblR5
cGUKIFdlYktpdFNhdmVNb2RlCiBXZWJLaXRWaWV3TW9kZQogV2ViS2l0SW5zZWN1cmVDb250ZW50
RXZlbnQKK1dlYktpdFNuYXBzaG90T3B0aW9ucwogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1h
bmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTEzMiw2ICsxMzMsMTAgQEAgd2Vi
a2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19kb3dubG9h
ZF91cmkKIHdlYmtpdF93ZWJfdmlld19zZXRfdmlld19tb2RlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3ZpZXdfbW9kZQord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9vZl92aXNpYmxlX2FyZWEK
K3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rfb2ZfdmlzaWJsZV9hcmVhX2ZpbmlzaAord2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdAord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9m
aW5pc2gKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQKQEAgLTYwNywxOCArNjEyLDIxIEBAIFdFQktJVF9QT0xJQ1lfRVJST1IKIFdF
QktJVF9ET1dOTE9BRF9FUlJPUgogV0VCS0lUX1BSSU5UX0VSUk9SCiBXRUJLSVRfSkFWQVNDUklQ
VF9FUlJPUgorV0VCS0lUX1NOQVBTSE9UX0VSUk9SCiBXZWJLaXROZXR3b3JrRXJyb3IKIFdlYktp
dFBsdWdpbkVycm9yCiBXZWJLaXRQb2xpY3lFcnJvcgogV2ViS2l0RG93bmxvYWRFcnJvcgogV2Vi
S2l0UHJpbnRFcnJvcgogV2ViS2l0SmF2YXNjcmlwdEVycm9yCitXZWJLaXRTbmFwc2hvdEVycm9y
CiB3ZWJraXRfbmV0d29ya19lcnJvcl9xdWFyawogd2Via2l0X3BsdWdpbl9lcnJvcl9xdWFyawog
d2Via2l0X3BvbGljeV9lcnJvcl9xdWFyawogd2Via2l0X2Rvd25sb2FkX2Vycm9yX3F1YXJrCiB3
ZWJraXRfcHJpbnRfZXJyb3JfcXVhcmsKIHdlYmtpdF9qYXZhc2NyaXB0X2Vycm9yX3F1YXJrCit3
ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNmVkNGEzOGUzMDExNWFiZDEwNmI1YmNlYmRmNTgzYWNh
Mjk0OGJmZC4uNTI0N2UxMGRhNmM3MTIyYjgzNjg4YjZhMDExOWIwZjk3MTBhMTllZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTA4NSw2ICsxMDg1LDEyMyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld01vZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19h
c3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgaW5kZXhIVE1MKTsKIH0KIAorY2xh
c3MgU25hcHNob3RXZWJWaWV3VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAg
ICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFNuYXBzaG90V2ViVmlld1Rlc3QpOworCisgICAgU25h
cHNob3RXZWJWaWV3VGVzdCgpCisgICAgICAgIDogbV9zdXJmYWNlKDApCisgICAgeworICAgIH0K
KworICAgIH5TbmFwc2hvdFdlYlZpZXdUZXN0KCkKKyAgICB7CisgICAgICAgIGNhaXJvX3N1cmZh
Y2VfZGVzdHJveShtX3N1cmZhY2UpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIG9uU25hcHNo
b3RPZlZpc2libGVBcmVhUmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3Vs
dCAqcmVzLCBTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NuYXBzaG90X29mX3Zpc2libGVfYXJlYV9maW5pc2god2ViX3ZpZXcsIHJlcywgJmVy
cm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSB8fCAhZXJy
b3IuZ2V0KCkpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBnX2Fzc2VydF9lcnJv
cihlcnJvci5nZXQoKSwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJS
T1JfRkFJTEVEX1RPX0NSRUFURSk7CisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJf
dmlldywgR0FzeW5jUmVzdWx0ICpyZXMsIFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QpCisgICAg
eworICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIHRlc3QtPm1fc3VyZmFj
ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZl
cnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UgfHwgIWVy
cm9yLmdldCgpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgZ19hc3NlcnRfZXJy
b3IoZXJyb3IuZ2V0KCksIFdFQktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VS
Uk9SX0ZBSUxFRF9UT19DUkVBVEUpOworICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAg
ICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHdhaXRGb3JTbmFwc2hvdE9mVmlzaWJsZUFyZWEo
KQorICAgIHsKKyAgICAgICAgbV9zdXJmYWNlID0gMDsKKyAgICAgICAgd2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdF9vZl92aXNpYmxlX2FyZWEobV93ZWJWaWV3LCBXRUJLSVRfU05BUFNIT1Rf
T1BUSU9OU19OT05FLCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KG9u
U25hcHNob3RPZlZpc2libGVBcmVhUmVhZHkpLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3Bf
cnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5j
ZShtX3N1cmZhY2UpOworICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogd2FpdEZvclNuYXBz
aG90KEdka1JlY3RhbmdsZSogcmVjdCwgV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCisg
ICAgeworICAgICAgICBtX3N1cmZhY2UgPSAwOworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90KG1fd2ViVmlldywgcmVjdCwgb3B0aW9ucywgMCwgcmVpbnRlcnByZXRfY2FzdDxH
QXN5bmNSZWFkeUNhbGxiYWNrPihvblNuYXBzaG90UmVhZHkpLCB0aGlzKTsKKyAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVybiBjYWlyb19zdXJmYWNl
X3JlZmVyZW5jZShtX3N1cmZhY2UpOworICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogbV9z
dXJmYWNlOworfTsKKworc3RhdGljIGdib29sZWFuIGNvbXBhcmVfY2Fpcm9fc3VyZmFjZXMoY2Fp
cm9fc3VyZmFjZV90KiBzMSwgY2Fpcm9fc3VyZmFjZV90KiBzMikKK3sKKyAgICByZXR1cm4gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0KHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9mb3JtYXQoczIpCisgICAgICAgICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHMx
KSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzMikKKyAgICAgICAgJiYgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9o
ZWlnaHQoczIpCisgICAgICAgICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzMSkg
PT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHMyKQorICAgICAgICAmJiAhZ19zdHJj
bXAwKGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoczEpKSksCisgICAgICAgICAgICAgICAgICAgICAgY29u
c3RfY2FzdDxjb25zdCBjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZGF0YShzMikpKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U25h
cHNob3QoU25hcHNob3RXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UxOworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTI7
CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PjxwPldoYXRldmVyPC9wPjwvYm9keT48
L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICAv
LyBXZWJWaWV3IG5vdCB2aXNpYmxlLgorICAgIHN1cmZhY2UxID0gdGVzdC0+d2FpdEZvclNuYXBz
aG90T2ZWaXNpYmxlQXJlYSgpOworICAgIGdfYXNzZXJ0KCFzdXJmYWNlMSk7CisKKyAgICAvLyBT
aG93IHN1cmZhY2UsIHRyeSBhZ2Fpbi4KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50
aWxNYXBwZWQoKTsKKyAgICBzdXJmYWNlMSA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdE9mVmlzaWJs
ZUFyZWEoKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KHN1cmZhY2UxKTsKKworICAgIC8vIFNlbGVjdCBhbGwgdGV4dCBpbiB0aGUgV2ViVmlldyBh
bmQgcmVxdWVzdCBhIDEweDEwIHNuYXBzaG90CisgICAgLy8gaWdub3Jpbmcgc2VsZWN0aW9uLiBN
YWtlIHN1cmUgdGhlIHNpemUgb2YgdGhlIHJlY2VpdmVkIHN1cmZhY2UKKyAgICAvLyBpcyBjb3Jy
ZWN0LgorICAgIEdka1JlY3RhbmdsZSByZWN0ID0geyAxMCwgMTAsIDEwLCAxMCB9OworICAgIHRl
c3QtPlNlbGVjdEFsbCgpOworICAgIHN1cmZhY2UxID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KCZy
ZWN0LCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNl
MSk7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1
cmZhY2UxKSwgPT0sIHJlY3Qud2lkdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTEpLCA9PSwgcmVjdC5oZWlnaHQpOworCisgICAg
Ly8gQ3JlYXRlIGlkZW50aWNhbCBzdXJmYWNlIGluIG9yZGVyIHRvIHRlc3QgY29tcGFyZV9jYWly
b19zdXJmYWNlcygpCisgICAgc3VyZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoJnJlY3Qs
IFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UyKTsK
KyAgICBnX2Fzc2VydChjb21wYXJlX2NhaXJvX3N1cmZhY2VzKHN1cmZhY2UxLCBzdXJmYWNlMikp
OworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMik7CisKKyAgICAvLyBSZXF1ZXN0
IGEgMTB4MTAgc25hcHNob3QsIGluY2x1ZGluZyB0aGUgc2VsZWN0aW9uIHRoaXMKKyAgICAvLyB0
aW1lLiBDaGVjayBpdHMgc2l6ZSBhbmQgdGhhdCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0byB0
aGUKKyAgICAvLyBvbmUgcHJldmlvdXNseSBvYnRhaW5lZC4KKyAgICBzdXJmYWNlMiA9IHRlc3Qt
PndhaXRGb3JTbmFwc2hvdCgmcmVjdCwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVERV9T
RUxFQ1RJT05fSElHSExJR0hUSU5HKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMik7CisgICAgZ19h
c3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UyKSwgPT0s
IHJlY3Qud2lkdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZTIpLCA9PSwgcmVjdC5oZWlnaHQpOworICAgIGdfYXNzZXJ0KCFjb21w
YXJlX2NhaXJvX3N1cmZhY2VzKHN1cmZhY2UxLCBzdXJmYWNlMikpOworICAgIGNhaXJvX3N1cmZh
Y2VfZGVzdHJveShzdXJmYWNlMik7CisKKyAgICAvLyBSZXF1ZXN0IGEgc25hcHNob3Qgb2YgdGhl
IHdob2xlIGRvY3VtZW50IGluIHRoZSBXZWJWaWV3LiBUaGUgcmVzdWx0CisgICAgLy8gc2hvdWxk
IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgb2J0YWluZWQgcHJldmlvdXNseS4KKyAgICBzdXJm
YWNlMiA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdCgwLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19O
T05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMik7CisgICAgZ19hc3NlcnQoIWNvbXBhcmVfY2Fp
cm9fc3VyZmFjZXMoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CisKKyAgICBjYWlyb19zdXJmYWNlX2Rl
c3Ryb3koc3VyZmFjZTIpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0Rl
ZmF1bHRDb250ZXh0KTsKQEAgLTExMDUsNiArMTIyMiw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAg
ICBGb3JtQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVz
dFdlYlZpZXdTdWJtaXRGb3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJzYXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgInZpZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7CisgICAgU25hcHNo
b3RXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90IiwgdGVzdFdlYlZp
ZXdTbmFwc2hvdCk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDdlN2Vi
MDE2NzU4MjFhNWFiMmUzZGE0MmNjMjVlNjBhZTE3MThiOWEuLmMwZWMyM2EzNGQ3NWYyNGZiMTNl
NzRiMzliNzNhOTM2ZjE2MGMzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTE5OCw2ICsxOTgsMTEgQEAg
dm9pZCBXZWJWaWV3VGVzdDo6cmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAg
Z3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQobV93ZWJWaWV3KSwgJmFsbG9jYXRp
b24pOwogfQogCit2b2lkIFdlYlZpZXdUZXN0OjpTZWxlY3RBbGwoKQoreworICAgIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZChtX3dlYlZpZXcsICJTZWxlY3RBbGwiKTsK
K30KKwogc3RhdGljIHZvaWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgc2l6ZV90
IGRhdGFTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvV2ViVmlld1Rlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1dlYlZpZXdUZXN0LmgKaW5kZXggMDZmMzk4Zjk2MjY1MDg2M2NjZjQ2YWFjOTQ4Y2U2MGZk
MmRiYzQ2Yy4uZGI0YWYwMmUyNDczMGJjZWNmNzAzYTAzZGE4YjdhZDQ2NzA1ZmU1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVz
dC5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hh
bmdlZCgpOwogICAgIHZvaWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEd0a1dpbmRv
d1R5cGUgPSBHVEtfV0lORE9XX1BPUFVQKTsKICAgICB2b2lkIHJlc2l6ZVZpZXcoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIFNlbGVjdEFsbCgpOwogICAgIGNvbnN0IGNoYXIqIG1h
aW5SZXNvdXJjZURhdGEoc2l6ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAKICAgICB2b2lk
IG1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQgaW50IG1vdXNlTW9kaWZpZXJzID0g
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZkOTg1
YzE3ZDIzZDljMzYwNTlmNmVjMjE3M2NjYjcwYTNkZjNkYzMuLjMwMTMxODBmZDY4YTZjZDk1YjVl
YzdhN2ExOTk2MDNhMDY0Y2YzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC00MzE4LDQgKzQzMTgsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1h
aW5GcmFtZUluVmlld1NvdXJjZU1vZGUoYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSW5WaWV3U291cmNlTW9k
ZShpblZpZXdTb3VyY2VNb2RlKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFjaywgY29uc3QgSW50
UmVjdCYgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKKyAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIG1faW1hZ2VDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsK
KworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlU25hcHNob3Qo
Y2FsbGJhY2tJRCwgcmVjdCwgb3B0aW9ucyksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMThl
NTE5ZDMyMWQ3NmVhOWNkZTgwYmM1NDRjYThlNjMxMGE0MTBmZC4uZmQ4Y2RmYzM4MGJmM2QxNDk0
N2ZhN2UwZmUzMTAxYTA2Y2NmOTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNzU4LDYgKzc1OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TWFpbkZy
YW1lSW5WaWV3U291cmNlTW9kZShib29sKTsKIAorICAgIHZvaWQgZ2V0U25hcHNob3QoUGFzc1Jl
ZlB0cjxJbWFnZUNhbGxiYWNrPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFNuYXBzaG90T3B0
aW9ucyk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqLCBQYXNzUmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2
MGIxZmI2NjRjODI0MWIwMzI4Y2VlYzdmZWVlOWYyODdlODJhYTc3Li5jYTZkMjIxNjYwNDgwNTUw
ZjYzMGRhZWJhYzYyNTdjMzM3YmY1OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDAzLDcgKzE0MDMsOCBAQCBQYXNzUmVmUHRyPFdl
YkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGRvdQogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEludFNpemUgYml0bWFwU2l6ZSA9IHJlY3Quc2l6ZSgpOworICAgIEludFJlY3Qgc25hcHNob3RS
ZWN0ID0gb3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1Zpc2libGVBcmVhID8gZnJhbWVWaWV3LT52
aXNpYmxlQ29udGVudFJlY3QoZmFsc2UpIDogcmVjdDsKKyAgICBJbnRTaXplIGJpdG1hcFNpemUg
PSBzbmFwc2hvdFJlY3Quc2l6ZSgpOwogICAgIGZsb2F0IGNvbWJpbmVkU2NhbGVGYWN0b3IgPSBz
Y2FsZUZhY3RvciAqIGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0bWFw
U2l6ZS5zY2FsZShjb21iaW5lZFNjYWxlRmFjdG9yKTsKIApAQCAtMTQxMyw3ICsxNDE0LDcgQEAg
UGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhj
b25zdCBJbnRSZWN0JiByZWN0LCBkb3UKIAogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9y
KGNvbWJpbmVkU2NhbGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1y
ZWN0LngoKSwgLXJlY3QueSgpKTsKKyAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25h
cHNob3RSZWN0LngoKSwgLXNuYXBzaG90UmVjdC55KCkpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxl
Y3Rpb25JblNuYXBob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVT
ZWxlY3Rpb247CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0
aW9uSGlnaGxpZ2h0aW5nKQpAQCAtMTQyMyw3ICsxNDI0LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0
LCBkb3UKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVz
KQogICAgICAgICBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OlZpZXdDb29yZGluYXRlczsK
IAotICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4
dC5nZXQoKSwgcmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7Cisg
ICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0Lmdl
dCgpLCBzbmFwc2hvdFJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3BhY2Up
OwogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3Rh
bmdsZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpLT5zZWxlY3Rpb24oKS0+Ym91bmRzKCk7CkBAIC0xNDM0LDYgKzE0MzUs
MjIgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0
aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAgICByZXR1cm4gc25hcHNob3QucmVsZWFz
ZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNyZWF0ZVNuYXBzaG90KHVpbnQ2NF90IGNhbGxiYWNr
SUQsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMp
Cit7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkt
PnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIEludFJl
Y3QgY29udGVudFJlY3QgPSByZWN0LmlzRW1wdHkoKSA/IEludFJlY3QoSW50UG9pbnQoMCwgMCks
IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCkpIDogcmVjdDsKKyAgICBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSB8IHNuYXBzaG90T3B0aW9uczsKKwor
ICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3RJbWFnZSA9IHNjYWxlZFNuYXBzaG90V2l0aE9w
dGlvbnMoY29udGVudFJlY3QsIDEsIG9wdGlvbnMpOworCisgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOworICAgIGlmIChzbmFwc2hvdEltYWdlKQorICAgICAgICBzbmFwc2hvdElt
YWdlLT5iaXRtYXAoKS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpJbWFnZUNhbGxiYWNrKGhhbmRsZSwgY2FsbGJhY2tJRCkpOworfQorCiB2
b2lkIFdlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwoKQogewogICAgIG1fdWlDbGllbnQucGFnZURpZFNj
cm9sbCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDdiNWI5M2YyZjVmMGUxNjdhMTNmMWVlMDk1NjQ3YmEwMmU4MDRkNjguLmUzNTkwYWFm
YjAwY2Q4YmVhM2VlZDA0ODYyNWUzYzM5Zjc2NzFiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzYwLDYgKzM2MCw3IEBAIHB1YmxpYzoKICAg
ICBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKIAogICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGRvdWJsZSBzY2FsZUZhY3RvciwgU25hcHNob3RPcHRp
b25zKTsKKyAgICB2b2lkIGNyZWF0ZVNuYXBzaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMpOwogCiAgICAgc3RhdGljIGNvbnN0
IFdlYkV2ZW50KiBjdXJyZW50RXZlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMzI4OTJjMGU3MGI0
ODI5MzlkNmI0ZDIxYTE5YzZkY2E3ZjY5ZDQxLi5hM2FjYTk3NTQxN2JlYmU0MTUyYjIwNjU3NzM1
YjViYWUyOWYxNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzA5LDQgKzMwOSw2IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgewogI2VuZGlmCiAKICAgICBTZXRNYWluRnJhbWVJblZpZXdTb3VyY2VNb2RlKGJv
b2wgaW5WaWV3U291cmNlTW9kZSkKKworICAgIENyZWF0ZVNuYXBzaG90KHVpbnQ2NF90IGNhbGxi
YWNrSUQsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgdWludDMyX3Qgc25hcHNob3RPcHRpb25zKQog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191951</attachid>
            <date>2013-03-07 01:54:49 -0800</date>
            <delta_ts>2013-03-07 07:35:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130307115052.patch</filename>
            <type>text/plain</type>
            <size>28688</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQ4ZGQ1OGQ5ZGQ1Y2Y0
NmEyMThiZGM4MDQ2ZmEyNmEzOWZmYjk1ZC4uOTA3MGY4ODA1ZTVjOGQxY2JiN2ZkMDFjODMwZGQ5
NjE4NjkwMzlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAzLTA3ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEKKyAgICAgICAgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4gVGhlIEFQSSB1c2VzIHRoZSBpbmplY3RlZCBidW5kbGUKKyAg
ICAgICAgaW50ZXJuYWxseSB0byBnZXQgdGhlIHNuYXBzaG90IGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBTaGFyZWQvSW1hZ2VPcHRpb25zLmg6IEFkZCBTbmFwc2hvdFJlZ2lvbiBl
bnVtLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcDoKKyAgICAg
ICAgKHdlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyayk6IEFkZCBzbmFwc2hvdCBBUEkgcmVsYXRl
ZAorICAgICAgICBlcnJvciBxdWFyay4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFcnJvci5oOiBBZGQgc25hcHNob3QgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoZGlk
UmVjZWl2ZVdlYlZpZXdNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogSGFuZGxlIHRoZQorICAg
ICAgICBuZXcgIkRpZEdldFNuYXBzaG90IiBtZXNzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdQcml2YXRl
KTogQWRkIGEgbWFwIGZvciB0aGUgc25hcHNob3QKKyAgICAgICAgcmVzdWx0cy4KKyAgICAgICAg
KEdldFNuYXBzaG90QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdFdlYlZpZXdEaWRSZWNlaXZl
U25hcHNob3RPZlZpc2libGVBcmVhKToKKyAgICAgICAgKFdlYktpdFNuYXBzaG90UmVnaW9uVG9T
bmFwc2hvdFJlZ2lvbik6IEhlbHBlciBtZXRob2RzIGZvciBjYXN0aW5nCisgICAgICAgIHRoZSBy
ZWdpb24gYW5kIHNuYXBzaG90IG9wdGlvbnMgZW51bXMuCisgICAgICAgIChXZWJLaXRTbmFwc2hv
dE9wdGlvbnNUb1NuYXBzaG90T3B0aW9ucyk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90
X2ZpbmlzaCk6IE5ldyBzbmFwc2hvdHRpbmcKKyAgICAgICAgQVBJLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDogQWRkIHRoZSBwcml2YXRlIG1ldGhvZAor
ICAgICAgICB0byBoYW5kbGUgYSByZWNlaXZlZCBzbmFwc2hvdC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBBZGQgdGhlIG5ldyBBUEkK
KyAgICAgICAgYml0cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgIChjb21wYXJlX2NhaXJvX3N1cmZhY2VzKTogQWRkIGhl
bHBlciB0byBjb21wYXJlIGNhaXJvX3N1cmZhY2UKKyAgICAgICAgc3RydWN0cy4KKyAgICAgICAg
KHRlc3RXZWJWaWV3U25hcHNob3QpOiBOZXcgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IHJ1
IHRoZSBuZXcgdGVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3
VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6U2VsZWN0QWxsKTogQWRkIG1ldGhvZCB0
byBoZWxwIHRlc3Qgc25hcHNob3RzCisgICAgICAgIGluY2x1ZGluZyBzZWxlY3Rpb24uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaDogRGl0dG8KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9u
LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVNZXNzYWdlVG9QYWdl
KTogQWRkIHRoaXMgbWV0aG9kLgorICAgICAgICBJdCBoYW5kbGVzIHRoZSBuZXcgbWVzc2FnZSAi
R2V0U25hcHNob3QiLgorICAgICAgICAoZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOiBEaXR0by4K
KyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6IFJlZ2lzdGVyIG1ldGhvZCBhYm92
ZS4KKwogMjAxMy0wMy0wNiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV0syXVtHVEtdIEZpeCB1bml0IHRlc3QgV2ViS2l0MkFQSVRlc3RzL1dl
YktpdFdlYlZpZXcvbW91c2UtdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSW1hZ2VPcHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmgK
aW5kZXggMzM0M2I0NjVhMTFiODE2OTM0ZjU3NzFiZWQxMzhhYmMxNDVhNzhmYi4uNzIxMzIyMzg4
MDczODM5NDg3NWVkOWFmOWU3ZTU0ODA1NzEyNDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbWFn
ZU9wdGlvbnMuaApAQCAtNDAsNiArNDAsMTEgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50MzJf
dCBTbmFwc2hvdE9wdGlvbnM7CiAKK2VudW0gU25hcHNob3RSZWdpb24geworICAgIFNuYXBzaG90
UmVnaW9uVmlzaWJsZSA9IDAsCisgICAgU25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQKK307CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gSW1hZ2VPcHRpb25zX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcAppbmRleCBk
YzQ4YjFjMDExYWMwN2QzZDkxMjBmYWYyYTZhYjQ5OGMyYThhMGQwLi5jMDZkYzYxYTU4Y2M0YWEw
YTZjMTZkYTY1NDY0MDRhNjBlMDEyNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCkBAIC05MSwzICs5MSw4IEBAIEdRdWFyayB3ZWJr
aXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyaygpCiB7CiAgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9z
dGF0aWNfc3RyaW5nKCJXZWJLaXRKYXZhc2NyaXB0RXJyb3IiKTsKIH0KKworR1F1YXJrIHdlYmtp
dF9zbmFwc2hvdF9lcnJvcl9xdWFyaygpCit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0
aWNfc3RyaW5nKCJXZWJLaXRTbmFwc2hvdEVycm9yIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAppbmRleCBjMjA1ODE2ODNkNDc4OTA4MDQ4
NTNhNDg3MTQ2MDE0MWNhYzRhMGZjLi5lN2RlOTNiYzI1ZTBkZGNkNDQ0M2ViYWM3MjlmZTk1OTgz
YTZiY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVy
cm9yLmgKQEAgLTM1LDYgKzM1LDcgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfRE9X
TkxPQURfRVJST1IgICB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsgKCkKICNkZWZpbmUgV0VC
S0lUX1BSSU5UX0VSUk9SICAgICAgd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrICgpCiAjZGVmaW5l
IFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAoKQorI2Rl
ZmluZSBXRUJLSVRfU05BUFNIT1RfRVJST1IgICB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsg
KCkKIAogLyoqCiAgKiBXZWJLaXROZXR3b3JrRXJyb3I6CkBAIC0xMzAsNiArMTMxLDE2IEBAIHR5
cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCA9
IDY5OQogfSBXZWJLaXRKYXZhc2NyaXB0RXJyb3I7CiAKKy8qKgorICogV2ViS2l0U25hcHNob3RF
cnJvcjoKKyAqIEBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURTogQW4gZXJy
b3Igb2NjdXJyZWQgd2hlbiBjcmVhdGluZyBhIHdlYnBhZ2Ugc25hcHNob3QuCisgKgorICogRW51
bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgZXJyb3JzIGhhcHBlbmRpbmcgd2hlbiBjcmVhdGluZyBz
bmFwc2hvdHMgb2YgI1dlYktpdFdlYlZpZXcKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJL
SVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSA9IDc5OQorfSBXZWJLaXRTbmFwc2hv
dEVycm9yOworCiBXRUJLSVRfQVBJIEdRdWFyawogd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsg
ICAgKHZvaWQpOwogCkBAIC0xNDgsNiArMTU5LDkgQEAgd2Via2l0X3ByaW50X2Vycm9yX3F1YXJr
ICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBHUXVhcmsKIHdlYmtpdF9qYXZhc2NyaXB0X2Vycm9y
X3F1YXJrICh2b2lkKTsKIAorV0VCS0lUX0FQSSBHUXVhcmsKK3dlYmtpdF9zbmFwc2hvdF9lcnJv
cl9xdWFyayAgICh2b2lkKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1
bmRsZUNsaWVudC5jcHAKaW5kZXggNmQ3ODhiYThjM2MxY2JhZjYyNGI0OWRkMmQ3YzFkYThlYTM3
NmUwYS4uNmU5YzViNzFlMjk5ZmQ3MWU5ZGQ0MTZmMmQyOTY0Yzc1ZDdiMzY2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmgiCiAKKyNpbmNsdWRl
ICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29u
dGV4dFByaXZhdGUuaCIKQEAgLTkwLDYgKzkxLDEwIEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVX
ZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
CiAKICAgICAgICAgd2Via2l0V2ViUmVzb3VyY2VGYWlsZWQocmVzb3VyY2UuZ2V0KCksIHJlc291
cmNlRXJyb3IuZ2V0KCkpOwogICAgICAgICB3ZWJraXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJl
c291cmNlKHdlYlZpZXcsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSk7CisgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKKyAgICAg
ICAgV2ViVUludDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2Fn
ZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiQ2FsbGJhY2tJRCIpKSk7CisgICAgICAgIFdlYkltYWdl
KiBpbWFnZSA9IHN0YXRpY19jYXN0PFdlYkltYWdlKj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9t
VVRGOCgiU25hcHNob3QiKSkpOworICAgICAgICBXZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBz
aG90T2ZWaXNpYmxlQXJlYSh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1ZSgpLCBpbWFnZSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyMzIw
ZTFjM2MxZWJiZWYzMzgyMjhkYmJmNDYxOGJkMzM2ZjdmYWYxLi40ODBmNDVmOGMzNzgwMzZkMjI4
NWE3ZDI4MTU4OTdlNGIyZTU4YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAorI2luY2x1ZGUgIkltYWdl
T3B0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVk
ZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgi
CkBAIC0xMzIsNiArMTMzLDcgQEAgZW51bSB7CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8dWludDY0
X3QsIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKK3R5
cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+ID4gU25h
cHNob3RSZXN1bHRzTWFwOwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICB+
X1dlYktpdFdlYlZpZXdQcml2YXRlKCkKQEAgLTE3Nyw2ICsxNzksOCBAQCBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gZmF2aWNvbkNhbmNl
bGxhYmxlOwogICAgIENTdHJpbmcgZmF2aWNvblVSSTsKICAgICB1bnNpZ25lZCBsb25nIGZhdmlj
b25DaGFuZ2VkSGFuZGxlcklEOworCisgICAgU25hcHNob3RSZXN1bHRzTWFwIHNuYXBzaG90UmVz
dWx0c01hcDsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKQEAgLTI5MjIsMyArMjkyNiwxMTEgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF90
bHNfaW5mbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHVGxzQ2VydGlmaWNhdGUqKgogCiAgICAg
cmV0dXJuICEhY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCk7CiB9CisKK3N0cnVjdCBHZXRT
bmFwc2hvdEFzeW5jRGF0YSB7CisgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxl
OworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHNuYXBzaG90OworfTsKK1dFQktJVF9ERUZJ
TkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0U25hcHNob3RBc3luY0RhdGEpCisKK3ZvaWQgV2ViS2l0
V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdE9mVmlzaWJsZUFyZWEoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgdWludDY0X3QgY2FsbGJhY2tJRCwgV2ViS2l0OjpXZWJJbWFnZSogd2ViSW1hZ2UpCit7
CisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IHdlYlZpZXctPnByaXYt
PnNuYXBzaG90UmVzdWx0c01hcC5nZXQoY2FsbGJhY2tJRCk7CisgICAgR2V0U25hcHNob3RBc3lu
Y0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxHZXRTbmFwc2hvdEFzeW5jRGF0YSo+KGdfc2ltcGxl
X2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSkpOworICAgIEdF
cnJvciogZXJyb3IgPSAwOworICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9pZl9jYW5j
ZWxsZWQoZGF0YS0+Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvcikpCisgICAgICAgIGdfc2ltcGxl
X2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIGVsc2Ug
aWYgKHdlYkltYWdlKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlID0g
d2ViSW1hZ2UtPmJpdG1hcCgpOworICAgICAgICBpZiAoaW1hZ2UpCisgICAgICAgICAgICBkYXRh
LT5zbmFwc2hvdCA9IGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKCZlcnJvciwgV0VCS0lUX1NOQVBTSE9UX0VSUk9S
LCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSwgXygiVGhlcmUgd2FzIGFu
IGVycm9yIGNyZWF0aW5nIHRoZSBzbmFwc2hvdCIpKTsKKyAgICAgICAgZ19zaW1wbGVfYXN5bmNf
cmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAgfQorCisgICAgZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7Cit9CisKKworc3RhdGlj
IHVuc2lnbmVkIFdlYktpdFNuYXBzaG90UmVnaW9uVG9TbmFwc2hvdFJlZ2lvbihXZWJLaXRTbmFw
c2hvdFJlZ2lvbiByZWdpb24pCit7CisgICAgc3dpdGNoIChyZWdpb24pIHsKKyAgICBjYXNlIFdF
QktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRToKKyAgICAgICAgcmV0dXJuIFNuYXBzaG90UmVn
aW9uVmlzaWJsZTsKKyAgICBjYXNlIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVO
VDoKKyAgICAgICAgcmV0dXJuIFNuYXBzaG90UmVnaW9uRnVsbERvY3VtZW50OworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHVuc2ln
bmVkIFdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNob3RPcHRpb25zKFdlYktpdFNuYXBzaG90
T3B0aW9ucyBvcHRpb25zKQoreworICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMg
PSAwOworCisgICAgaWYgKCEob3B0aW9ucyAmIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xV
REVfU0VMRUNUSU9OX0hJR0hMSUdIVElORykpCisgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBT
bmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nOworCisgICAgcmV0dXJu
IHNuYXBzaG90T3B0aW9uczsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90OgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAb3B0aW9uczogI1dlYktp
dFNuYXBzaG90T3B0aW9ucyBmb3IgdGhlIHNuYXBzaG90CisgKiBAcmVnaW9uOiB0aGUgI1dlYktp
dFNuYXBzaG90UmVnaW9uIGZvciB0aGlzIHNuYXBzaG90CisgKiBAY2FuY2VsbGFibGU6IChhbGxv
dy1ub25lKTogYSAjR0NhbmNlbGxhYmxlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IGEg
I0dBc3luY1JlYWR5Q2FsbGJhY2sKKyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdXNlciBkYXRh
CisgKgorICogQXN5bmNocm9ub3VzbHkgcmV0cmlldmVzIGEgc25hcHNob3Qgb2YgQHdlYl92aWV3
IGZvciBAcmVnaW9uLgorICogQG9wdGlvbnMgc3BlY2lmaWVzIGhvdyB0aGUgc25hcHNob3Qgc2hv
dWxkIGJlIHJlbmRlcmVkLgorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwg
QGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgbXVzdAorICogY2FsbCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCgpIHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZQorICogb3Bl
cmF0aW9uLgorICoKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTbmFwc2hvdFJlZ2lvbiByZWdpb24sIFdlYktpdFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNS
ZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBHU2ltcGxlQXN5
bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2Vi
VmlldyksIGNhbGxiYWNrLCB1c2VyRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4o
d2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCkpOworICAgIEdldFNuYXBzaG90QXN5bmNEYXRh
KiBkYXRhID0gY3JlYXRlR2V0U25hcHNob3RBc3luY0RhdGEoKTsKKyAgICBkYXRhLT5jYW5jZWxs
YWJsZSA9IGNhbmNlbGxhYmxlOworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVz
X2dwb2ludGVyKHJlc3VsdCwgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4o
ZGVzdHJveUdldFNuYXBzaG90QXN5bmNEYXRhKSk7CisKKyAgICBJbW11dGFibGVEaWN0aW9uYXJ5
OjpNYXBUeXBlIG1lc3NhZ2U7CisgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiU25h
cHNob3RPcHRpb25zIiksIFdlYlVJbnQ2NDo6Y3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihX
ZWJLaXRTbmFwc2hvdE9wdGlvbnNUb1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSkpKTsKKyAgICBt
ZXNzYWdlLnNldChTdHJpbmc6OmZyb21VVEY4KCJTbmFwc2hvdFJlZ2lvbiIpLCBXZWJVSW50NjQ6
OmNyZWF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oV2ViS2l0U25hcHNob3RSZWdpb25Ub1NuYXBz
aG90UmVnaW9uKHJlZ2lvbikpKSk7CisgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgi
Q2FsbGJhY2tJRCIpLCBXZWJVSW50NjQ6OmNyZWF0ZShHUE9JTlRFUl9UT19VSU5UKHJlc3VsdCkp
KTsKKworICAgIHdlYlZpZXctPnByaXYtPnNuYXBzaG90UmVzdWx0c01hcC5zZXQoR1BPSU5URVJf
VE9fVUlOVChyZXN1bHQpLCByZXN1bHQpOworICAgIGdldFBhZ2Uod2ViVmlldyktPnBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZShTdHJpbmc6OmZyb21VVEY4KCJHZXRTbmFwc2hvdCIpLCBJbW11
dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2g6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktp
dFdlYlZpZXcKKyAqIEByZXN1bHQ6IGEgI0dBc3luY1Jlc3VsdAorICogQGVycm9yOiByZXR1cm4g
bG9jYXRpb24gZm9yIGVycm9yIG9yICVOVUxMIHRvIGlnbm9yZQorICoKKyAqIEZpbmlzaGVzIGFu
IGFzeW5jaHJvbm91cyBvcGVyYXRpb24gc3RhcnRlZCB3aXRoIHdlYmtpdF93ZWJfdmlld19nZXRf
c25hcHNob3QoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgI2NhaXJvX3N1
cmZhY2VfdCB3aXRoIHRoZSByZXRyaWV2ZWQgc25hcHNob3QKKyAqKi8KK2NhaXJvX3N1cmZhY2Vf
dCogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2goV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgMCk7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoR19JU19BU1lOQ19SRVNVTFQocmVzdWx0KSwgMCk7CisKKyAgICBH
U2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1bHQp
OworICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX3Rh
ZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QpOworCisgICAgaWYgKGdf
c2ltcGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVfZXJyb3Ioc2ltcGxlLCBlcnJvcikpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN0YXRp
Y19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9v
cF9yZXNfZ3BvaW50ZXIoc2ltcGxlKSktPnNuYXBzaG90LmdldCgpKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBhYWU4NDli
ZjA4OTVmMjZhM2ZhMWYzZmMzNTViZjRhNGUwMzYzOGY3Li41ZDQ2ZmY1Yjk1ZGQzYmY1MjRhMDhm
Y2U5OGFmNzAzNDgxNmUzNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xNTksNiArMTU5LDM0IEBAIHR5cGVkZWYgZW51bSB7
CiAgICAgV0VCS0lUX1ZJRVdfTU9ERV9TT1VSQ0UKIH0gV2ViS2l0Vmlld01vZGU7CiAKKy8qKgor
ICogV2ViS2l0U25hcHNob3RPcHRpb25zOgorICogQFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05P
TkU6IERvIG5vdCBpbmNsdWRlIGFueSBzcGVjaWFsIG9wdGlvbnMuCisgKiBAV0VCS0lUX1NOQVBT
SE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HOiBXaGV0aGVyIHRvIGlu
Y2x1ZGUgaW4gdGhlCisgKiBzbmFwc2hvdCB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBzZWxlY3RlZCBj
b250ZW50LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25zIHdoZW4g
dGFraW5nIGEgc25hcHNob3QKKyAqIGZyb20gYSAjV2ViS2l0V2ViVmlldy4KKyAqLwordHlwZWRl
ZiBlbnVtIHsKKyAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSA9IDAsCisgIFdFQktJVF9T
TkFQU0hPVF9PUFRJT05TX0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORyA9IDEgPDwgMCwK
K30gV2ViS2l0U25hcHNob3RPcHRpb25zOworCisvKioKKyAqIFdlYktpdFNuYXBzaG90UmVnaW9u
OgorICogQFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRTogU3BlY2lmaWVzIGEgc25hcHNo
b3Qgb25seSBmb3IgdGhlIGFyZWEgdGhhdCBpcworICogdmlzaWJsZSBpbiB0aGUgd2Vidmlldwor
ICogQFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVDogQSBzbmFwc2hvdCBvZiB0
aGUgZW50aXJlIGRvY3VtZW50LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSB0
aGUgcmVnaW9uIGZyb20gd2hpY2ggdG8gZ2V0IGEgI1dlYktpdFdlYlZpZXcKKyAqIHNuYXBzaG90
CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSA9
IDAsCisgIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCwKK30gV2ViS2l0U25h
cHNob3RSZWdpb247CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0V2ViVmll
d0Jhc2UgcGFyZW50OwogCkBAIC00MTgsNyArNDQ2LDE4IEBAIFdFQktJVF9BUEkgZ2Jvb2xlYW4K
IHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8gICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Rsc0NlcnRpZmljYXRlICAgICAgICAg
ICoqY2VydGlmaWNhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyAgICAgICplcnJvcnMpOworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBzaG90
UmVnaW9uICAgICAgIHJlZ2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBzaG90T3B0aW9ucyAgICAgIG9wdGlvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2Fu
Y2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAg
ICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKIAorV0VC
S0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9m
aW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAg
ICAgKiplcnJvcik7CiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDZk
MGNkZjI3NGEyZTUyYzA3NDUxODI0NGM3MDI0NjgxODllZTkyMDUuLjA3YzRkYjk3ZjU1ZjEyNjJm
Yjg1ODJiYTA3Y2ZlMmRhODcwYjFjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtMjcsNiArMjcsNyBA
QAogI2lmbmRlZiBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdlYlZpZXdQ
cml2YXRlX2gKIAorI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmll
dy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNTAsNiArNTEsNyBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0
V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRp
ZmllciwgV2ViS2l0VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29z
ZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKIFdl
YktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdlYktp
dFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwordm9pZCBXZWJLaXRXZWJW
aWV3RGlkUmVjZWl2ZVNuYXBzaG90T2ZWaXNpYmxlQXJlYShXZWJLaXRXZWJWaWV3KiwgdWludDY0
X3QgY2FsbGJhY2tJRCwgV2ViS2l0OjpXZWJJbWFnZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVt
b3ZlTG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIpOwogYm9vbCB3ZWJraXRXZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZp
ZXcqKTsKIGJvb2wgd2Via2l0V2ViVmlld0xlYXZlRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBmNmU4YTg0Nzc3YmUyN2I0NWJlZGUzMDM2
NWIyNDQwOWZiMmEyOWNhLi4wNTE5MmUwOWQ3ZjkxNTlmNmI4MjdiYTk5N2M4NWY2NDcxMzMwMjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTc1LDYgKzc1LDggQEAgV2ViS2l0UG9s
aWN5RGVjaXNpb25UeXBlCiBXZWJLaXRTYXZlTW9kZQogV2ViS2l0Vmlld01vZGUKIFdlYktpdElu
c2VjdXJlQ29udGVudEV2ZW50CitXZWJLaXRTbmFwc2hvdE9wdGlvbnMKK1dlYktpdFNuYXBzaG90
UmVnaW9uCiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19D
T01NQU5EX0NVVApAQCAtMTM0LDYgKzEzNiw4IEBAIHdlYmtpdF93ZWJfdmlld19kb3dubG9hZF91
cmkKIHdlYmtpdF93ZWJfdmlld19zZXRfdmlld19tb2RlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Zp
ZXdfbW9kZQogd2Via2l0X3dlYl92aWV3X2dldF90bHNfaW5mbword2Via2l0X3dlYl92aWV3X2dl
dF9zbmFwc2hvdAord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2gKIAogPFNVQlNF
Q1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAg
LTYwNywxOCArNjExLDIxIEBAIFdFQktJVF9QT0xJQ1lfRVJST1IKIFdFQktJVF9ET1dOTE9BRF9F
UlJPUgogV0VCS0lUX1BSSU5UX0VSUk9SCiBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUgorV0VCS0lU
X1NOQVBTSE9UX0VSUk9SCiBXZWJLaXROZXR3b3JrRXJyb3IKIFdlYktpdFBsdWdpbkVycm9yCiBX
ZWJLaXRQb2xpY3lFcnJvcgogV2ViS2l0RG93bmxvYWRFcnJvcgogV2ViS2l0UHJpbnRFcnJvcgog
V2ViS2l0SmF2YXNjcmlwdEVycm9yCitXZWJLaXRTbmFwc2hvdEVycm9yCiB3ZWJraXRfbmV0d29y
a19lcnJvcl9xdWFyawogd2Via2l0X3BsdWdpbl9lcnJvcl9xdWFyawogd2Via2l0X3BvbGljeV9l
cnJvcl9xdWFyawogd2Via2l0X2Rvd25sb2FkX2Vycm9yX3F1YXJrCiB3ZWJraXRfcHJpbnRfZXJy
b3JfcXVhcmsKIHdlYmtpdF9qYXZhc2NyaXB0X2Vycm9yX3F1YXJrCit3ZWJraXRfc25hcHNob3Rf
ZXJyb3JfcXVhcmsKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5j
cHAKaW5kZXggOWNmMWRkY2NmNzk0YTNjMDk1ZjYzMThiNmNjMDkyMzY0ZGJhZjVjMS4uMzc5OWIw
MWNlZTM1OWQ2YzA1Y2NiZWEzMjMzZGM4NDFlMDBmZjc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcApAQCAtMTA4NSw2ICsxMDg1LDExMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vZGUo
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHZh
bHVlU3RyaW5nLmdldCgpLCA9PSwgaW5kZXhIVE1MKTsKIH0KIAorY2xhc3MgU25hcHNob3RXZWJW
aWV3VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVT
VF9GSVhUVVJFKFNuYXBzaG90V2ViVmlld1Rlc3QpOworCisgICAgU25hcHNob3RXZWJWaWV3VGVz
dCgpCisgICAgICAgIDogbV9zdXJmYWNlKDApCisgICAgeworICAgIH0KKworICAgIH5TbmFwc2hv
dFdlYlZpZXdUZXN0KCkKKyAgICB7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShtX3N1
cmZhY2UpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RSZWFkeShXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0ICpyZXMsIFNuYXBzaG90V2ViVmlld1Rlc3Qq
IHRlc3QpCisgICAgeworICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIHRl
c3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92
aWV3LCByZXMsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1
cmZhY2UgfHwgIWVycm9yLmdldCgpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAg
Z19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lU
X1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19DUkVBVEUpOworICAgICAgICB0ZXN0LT5xdWl0TWFp
bkxvb3AoKTsKKyAgICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHdhaXRGb3JTbmFwc2hvdChX
ZWJLaXRTbmFwc2hvdFJlZ2lvbiByZWdpb24sIFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25z
KQorICAgIHsKKyAgICAgICAgbV9zdXJmYWNlID0gMDsKKyAgICAgICAgd2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdChtX3dlYlZpZXcsIHJlZ2lvbiwgb3B0aW9ucywgMCwgcmVpbnRlcnByZXRf
Y2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihvblNuYXBzaG90UmVhZHkpLCB0aGlzKTsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICByZXR1cm4gY2Fpcm9fc3Vy
ZmFjZV9yZWZlcmVuY2UobV9zdXJmYWNlKTsKKyAgICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IG1fc3VyZmFjZTsKK307CisKK3N0YXRpYyBnYm9vbGVhbiBjb21wYXJlX2NhaXJvX3N1cmZhY2Vz
KGNhaXJvX3N1cmZhY2VfdCogczEsIGNhaXJvX3N1cmZhY2VfdCogczIpCit7CisgICAgcmV0dXJu
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZm9ybWF0KHMyKQorICAgICAgICAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoczIpCisgICAgICAgICYmIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfaGVpZ2h0KHMyKQorICAgICAgICAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUo
czEpID09IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzMikKKyAgICAgICAgJiYgIWdf
c3RyY21wMChjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihyZWludGVycHJldF9jYXN0PGNoYXIqPihj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHMxKSkpLAorICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2RhdGEoczIpKSkpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7Cisg
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlMTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UyOworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48cD5XaGF0ZXZlcjwvcD48L2Jv
ZHk+PC9odG1sPiIsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisg
ICAgLy8gV2ViVmlldyBub3QgdmlzaWJsZS4KKyAgICBzdXJmYWNlMSA9IHRlc3QtPndhaXRGb3JT
bmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9P
UFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KCFzdXJmYWNlMSk7CisKKyAgICAvLyBTaG93IHN1
cmZhY2UsIHJlc2l6ZSB0byA1MHg1MCwgdHJ5IGFnYWluLgorICAgIHRlc3QtPnNob3dJbldpbmRv
d0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHRlc3QtPnJlc2l6ZVZpZXcoNTAsIDUwKTsKKyAg
ICBzdXJmYWNlMSA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9O
X1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1
cmZhY2UxKTsKKworICAgIC8vIG9idGFpbmVkIHN1cmZhY2Ugc2hvdWxkIGJlIGF0IHRoZSBtb3N0
IDUweDUwLiBTdG9yZSB0aGUgc2l6ZQorICAgIC8vIGZvciBjb21wYXJpc29uIGxhdGVyLgorICAg
IGdfYXNzZXJ0KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UxKSA8PSA1MCk7
CisgICAgZ19hc3NlcnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKSA8
PSA1MCk7CisgICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3Vy
ZmFjZTEpOworICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZTEpOworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMSk7CisKKyAgICAv
LyBTZWxlY3QgYWxsIHRleHQgaW4gdGhlIFdlYlZpZXcsIHJlcXVlc3QgYSBzbmFwc2hvdCBpZ25v
cmluZyBzZWxlY3Rpb24uCisgICAgdGVzdC0+U2VsZWN0QWxsKCk7CisgICAgc3VyZmFjZTEgPSB0
ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJL
SVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMSk7CisgICAg
Z19hc3NlcnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTEpID09IHdpZHRo
KTsKKyAgICBnX2Fzc2VydChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTEp
ID09IGhlaWdodCk7CisKKyAgICAvLyBDcmVhdGUgaWRlbnRpY2FsIHN1cmZhY2UuCisgICAgc3Vy
ZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJ
QkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNl
Mik7CisKKyAgICAvLyBDb21wYXJlIHRoZXNlIHR3bywgdGhleSBzaG91bGQgYmUgaWRlbnRpY2Fs
LgorICAgIGdfYXNzZXJ0KGNvbXBhcmVfY2Fpcm9fc3VyZmFjZXMoc3VyZmFjZTEsIHN1cmZhY2Uy
KSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UyKTsKKworICAgIC8vIFJlcXVl
c3QgYSBuZXcgc25hcHNob3QsIGluY2x1ZGluZyB0aGUgc2VsZWN0aW9uIHRoaXMgdGltZS4gVGhl
CisgICAgLy8gc2l6ZSBzaG91bGQgYmUgdGhlIHNhbWUgYnV0IHRoZSByZXN1bHQgbXVzdCBiZSBk
aWZmZXJlbnQgdG8gdGhlCisgICAgLy8gb25lIHByZXZpb3VzbHkgb2J0YWluZWQuCisgICAgc3Vy
ZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJ
QkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJ
TkcpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UyKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTIpLCA9PSwgd2lkdGgpOworICAgIGdfYXNz
ZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTIpLCA9PSwg
aGVpZ2h0KTsKKyAgICBnX2Fzc2VydCghY29tcGFyZV9jYWlyb19zdXJmYWNlcyhzdXJmYWNlMSwg
c3VyZmFjZTIpKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIpOworCisgICAg
Ly8gUmVxdWVzdCBhIHNuYXBzaG90IG9mIHRoZSB3aG9sZSBkb2N1bWVudCBpbiB0aGUgV2ViVmll
dy4gVGhlCisgICAgLy8gcmVzdWx0IHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgc2l6ZSBv
YnRhaW5lZCBwcmV2aW91c2x5LgorICAgIHN1cmZhY2UyID0gdGVzdC0+d2FpdEZvclNuYXBzaG90
KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCwgV0VCS0lUX1NOQVBTSE9UX09Q
VElPTlNfTk9ORSk7CisgICAgZ19hc3NlcnQoc3VyZmFjZTIpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMiksICA+LCB3aWR0aCk7Cisg
ICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNl
MiksID4sIGhlaWdodCk7CisgICAgZ19hc3NlcnQoIWNvbXBhcmVfY2Fpcm9fc3VyZmFjZXMoc3Vy
ZmFjZTEsIHN1cmZhY2UyKSk7CisKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIp
OworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KTsK
QEAgLTExMDUsNiArMTIxMSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBGb3JtQ2xpZW50VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRG
b3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzYXZlIiwg
dGVzdFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InZpZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7CisgICAgU25hcHNob3RXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90IiwgdGVzdFdlYlZpZXdTbmFwc2hvdCk7CiB9
CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDdlN2ViMDE2NzU4MjFhNWFiMmUz
ZGE0MmNjMjVlNjBhZTE3MThiOWEuLmMwZWMyM2EzNGQ3NWYyNGZiMTNlNzRiMzliNzNhOTM2ZjE2
MGMzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTE5OCw2ICsxOTgsMTEgQEAgdm9pZCBXZWJWaWV3VGVz
dDo6cmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZ3RrX3dpZGdldF9zaXpl
X2FsbG9jYXRlKEdUS19XSURHRVQobV93ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwogfQogCit2b2lk
IFdlYlZpZXdUZXN0OjpTZWxlY3RBbGwoKQoreworICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZChtX3dlYlZpZXcsICJTZWxlY3RBbGwiKTsKK30KKwogc3RhdGljIHZv
aWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgc2l6ZV90IGRhdGFTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rl
c3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0
LmgKaW5kZXggMDZmMzk4Zjk2MjY1MDg2M2NjZjQ2YWFjOTQ4Y2U2MGZkMmRiYzQ2Yy4uZGI0YWYw
MmUyNDczMGJjZWNmNzAzYTAzZGE4YjdhZDQ2NzA1ZmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOwogICAgIHZv
aWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lO
RE9XX1BPUFVQKTsKICAgICB2b2lkIHJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
KyAgICB2b2lkIFNlbGVjdEFsbCgpOwogICAgIGNvbnN0IGNoYXIqIG1haW5SZXNvdXJjZURhdGEo
c2l6ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAKICAgICB2b2lkIG1vdXNlTW92ZVRvKGlu
dCB4LCBpbnQgeSwgdW5zaWduZWQgaW50IG1vdXNlTW9kaWZpZXJzID0gMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IDZmYTM2MDkxOTY1OGE1ODkx
ZDgwZGU1YTgzNWEwN2MzMzg1ZTY3MzkuLjJhZTdhNzA4ODAwZmY3YTA1OThiZmVlNzY5ZGZlNmRl
MzAwNzVhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3Bw
CkBAIC0yMCwxMiArMjAsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJFeHRlbnNpb24uaCIKIAorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIklt
YWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRl
ICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNsdWRl
ICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJFeHRlbnNpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
QEAgLTg5LDYgKzkzLDQxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2Vp
dmVNZXNzYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBjCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRS
ZWNlaXZlTWVzc2FnZVRvUGFnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViUGFn
ZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgSW1tdXRhYmxlRGljdGlvbmFyeSYg
bWVzc2FnZSkKK3sKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gU3RyaW5nOjpmcm9tVVRGOCgiR2V0
U25hcHNob3QiKSkgeworICAgICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0g
c3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihzdGF0aWNfY2FzdDxXZWJVSW50NjQqPihtZXNz
YWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJTbmFwc2hvdE9wdGlvbnMiKSkpLT52YWx1ZSgpKTsK
KyAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1l
c3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIkNhbGxiYWNrSUQiKSkpLT52YWx1ZSgpOworICAg
ICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNfY2FzdDxTbmFwc2hvdFJlZ2lvbj4o
c3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiU25h
cHNob3RSZWdpb24iKSkpLT52YWx1ZSgpKTsKKworICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IHBhZ2UtPm1haW5GcmFtZVZpZXcoKTsKKyAgICAgICAgUmVmUHRyPFdlYklt
YWdlPiBzbmFwc2hvdEltYWdlOworCisgICAgICAgIGlmIChmcmFtZVZpZXcpIHsKKyAgICAgICAg
ICAgIFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0OworICAgICAgICAgICAgc3dpdGNoIChy
ZWdpb24pIHsKKyAgICAgICAgICAgIGNhc2UgU25hcHNob3RSZWdpb25WaXNpYmxlOgorICAgICAg
ICAgICAgICAgIHNuYXBzaG90UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhOjpFeGNsdWRlU2Nyb2xsYmFycyk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNuYXBzaG90UmVnaW9uRnVsbERvY3VtZW50Ogor
ICAgICAgICAgICAgICAgIHNuYXBzaG90UmVjdCA9IFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6
SW50UG9pbnQoMCwgMCksIGZyYW1lVmlldy0+Y29udGVudHNTaXplKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc25hcHNob3RS
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBzbmFwc2hvdEltYWdlID0gcGFnZS0+c2Nh
bGVkU25hcHNob3RXaXRoT3B0aW9ucyhzbmFwc2hvdFJlY3QsIDEsIHNuYXBzaG90T3B0aW9ucyB8
IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSk7CisgICAgICAgIH0KKworICAgICAgICBJbW11dGFi
bGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2VSZXBseTsKKyAgICAgICAgbWVzc2FnZVJlcGx5
LnNldChTdHJpbmc6OmZyb21VVEY4KCJQYWdlIiksIHBhZ2UpOworICAgICAgICBtZXNzYWdlUmVw
bHkuc2V0KFN0cmluZzo6ZnJvbVVURjgoIkNhbGxiYWNrSUQiKSwgV2ViVUludDY0OjpjcmVhdGUo
Y2FsbGJhY2tJRCkpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KFN0cmluZzo6ZnJvbVVURjgo
IlNuYXBzaG90IiksIHNuYXBzaG90SW1hZ2UpOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KCJXZWJQYWdl
LkRpZEdldFNuYXBzaG90IiksIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1lc3NhZ2VSZXBs
eSkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwogc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIHdlYmtpdFdlYkV4
dGVuc2lvblBhZ2VDcmVhdGVkKFdFQktJVF9XRUJfRVhURU5TSU9OKGNsaWVudEluZm8pLCB0b0lt
cGwocGFnZSkpOwpAQCAtMTA1LDYgKzE0NCwxMiBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG5hbWUsIFdLVHlwZVJlZiBtZQog
ICAgIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVNZXNzYWdlKFdFQktJVF9XRUJfRVhURU5T
SU9OKGNsaWVudEluZm8pLCB0b0ltcGwobmFtZSktPnN0cmluZygpLCAqdG9JbXBsKHN0YXRpY19j
YXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmIG5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09
IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZShXRUJLSVRfV0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBs
KHBhZ2UpLCB0b0ltcGwobmFtZSktPnN0cmluZygpLCAqdG9JbXBsKHN0YXRpY19jYXN0PFdLRGlj
dGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpKSk7Cit9CisKIFdlYktpdFdlYkV4dGVuc2lvbiogd2Vi
a2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOwpAQCAtMTE2LDcgKzE2MSw3
IEBAIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVk
QnVuZGxlKiBidW5kbGUpCiAgICAgICAgIHdpbGxEZXN0cm95UGFnZSwKICAgICAgICAgMCwgLy8g
ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cAogICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSwKLSAgICAg
ICAgMCAvLyBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZQorICAgICAgICBkaWRSZWNlaXZlTWVzc2Fn
ZVRvUGFnZQogICAgIH07CiAgICAgV0tCdW5kbGVTZXRDbGllbnQodG9BUEkoYnVuZGxlKSwgJndr
QnVuZGxlQ2xpZW50KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191994</attachid>
            <date>2013-03-07 07:35:36 -0800</date>
            <delta_ts>2013-03-07 09:24:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130307173139.patch</filename>
            <type>text/plain</type>
            <size>28806</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQ4ZGQ1OGQ5ZGQ1Y2Y0
NmEyMThiZGM4MDQ2ZmEyNmEzOWZmYjk1ZC4uZmExMzNiZDNiYmMwMDNiODYwYWFjNjUzODQ0ZjA2
OTg3ZjAwMzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTA3ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEKKyAgICAgICAgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4gVGhlIEFQSSB1c2VzIHRoZSBpbmplY3RlZCBidW5kbGUKKyAg
ICAgICAgaW50ZXJuYWxseSB0byBnZXQgdGhlIHNuYXBzaG90IGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHA6CisgICAgICAg
ICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmspOiBBZGQgc25hcHNob3QgQVBJIHJlbGF0ZWQg
ZXJyb3IKKyAgICAgICAgcXVhcmsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RXJyb3IuaDogQWRkIHNuYXBzaG90IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFJl
Y2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IEhhbmRsZSB0aGUgbmV3Cisg
ICAgICAgICJEaWRHZXRTbmFwc2hvdCIgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmg6IEFkZCBTbmFwc2hvdFJlZ2lvbiBlbnVtLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdQcml2YXRlKTogQWRkIGEgbWFwIGZvciB0aGUgc25hcHNob3QgcmVzdWx0cy4KKyAgICAg
ICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdFdlYlZpZXdEaWRSZWNl
aXZlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0U25hcHNob3RSZWdpb25Ub1NuYXBzaG90UmVn
aW9uKTogSGVscGVyIG1ldGhvZCBmb3IgY2FzdGluZworICAgICAgICB0aGUgcmVnaW9uIG9wdGlv
biBlbnVtZXJhdGlvbi4KKyAgICAgICAgKGdlbmVyYXRlU25hcHNob3RDYWxsYmFja0lEKTogTWV0
aG9kIHRvIGdlbmVyYXRlIHVuaXF1ZSBjYWxsYmFjaworICAgICAgICBpZHMuCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3RfZmluaXNoKTogTmV3IHNuYXBzaG90dGluZyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBBZGQgdGhlIHByaXZhdGUgbWV0aG9k
CisgICAgICAgIHRvIGhhbmRsZSBhIHJlY2VpdmVkIHNuYXBzaG90LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3IEFQ
SQorICAgICAgICBiaXRzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGNvbXBhcmVfY2Fpcm9fc3VyZmFjZXMpOiBBZGQg
aGVscGVyIHRvIGNvbXBhcmUgY2Fpcm9fc3VyZmFjZQorICAgICAgICBzdHJ1Y3RzLgorICAgICAg
ICAodGVzdFdlYlZpZXdTbmFwc2hvdCk6IE5ldyB0ZXN0LgorICAgICAgICAoYmVmb3JlQWxsKTog
cnUgdGhlIG5ldyB0ZXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZp
ZXdUZXN0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpzZWxlY3RBbGwpOiBBZGQgbWV0aG9k
IHRvIGhlbHAgdGVzdCBzbmFwc2hvdHMKKyAgICAgICAgaW5jbHVkaW5nIHNlbGVjdGlvbi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oOiBEaXR0bworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNp
b24uY3BwOgorICAgICAgICAod2Via2l0V2ViRXh0ZW5zaW9uRGlkUmVjZWl2ZU1lc3NhZ2VUb1Bh
Z2UpOiBBZGQgdGhpcyBtZXRob2QuIEl0CisgICAgICAgIGhhbmRsZXMgdGhlIG5ldyBtZXNzYWdl
ICJHZXRTbmFwc2hvdCIuCisgICAgICAgIChkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6IERpdHRv
LgorICAgICAgICAod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKTogUmVnaXN0ZXIgbWV0aG9kIGFi
b3ZlLgorCiAyMDEzLTAzLTA2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtXSzJdW0dUS10gRml4IHVuaXQgdGVzdCBXZWJLaXQyQVBJVGVzdHMv
V2ViS2l0V2ViVmlldy9tb3VzZS10YXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcAppbmRleCBkYzQ4YjFjMDExYWMwN2QzZDkxMjBmYWYy
YTZhYjQ5OGMyYThhMGQwLi5jMDZkYzYxYTU4Y2M0YWEwYTZjMTZkYTY1NDY0MDRhNjBlMDEyNGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3Iu
Y3BwCkBAIC05MSwzICs5MSw4IEBAIEdRdWFyayB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFy
aygpCiB7CiAgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRKYXZh
c2NyaXB0RXJyb3IiKTsKIH0KKworR1F1YXJrIHdlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyaygp
Cit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRTbmFwc2hv
dEVycm9yIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRFcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RXJyb3IuaAppbmRleCBjMjA1ODE2ODNkNDc4OTA4MDQ4NTNhNDg3MTQ2MDE0MWNhYzRhMGZjLi5l
N2RlOTNiYzI1ZTBkZGNkNDQ0M2ViYWM3MjlmZTk1OTgzYTZiY2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgKQEAgLTM1LDYgKzM1LDcgQEAg
R19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfRE9XTkxPQURfRVJST1IgICB3ZWJraXRfZG93
bmxvYWRfZXJyb3JfcXVhcmsgKCkKICNkZWZpbmUgV0VCS0lUX1BSSU5UX0VSUk9SICAgICAgd2Vi
a2l0X3ByaW50X2Vycm9yX3F1YXJrICgpCiAjZGVmaW5lIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9S
IHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAoKQorI2RlZmluZSBXRUJLSVRfU05BUFNIT1RfRVJS
T1IgICB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsgKCkKIAogLyoqCiAgKiBXZWJLaXROZXR3
b3JrRXJyb3I6CkBAIC0xMzAsNiArMTMxLDE2IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lU
X0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCA9IDY5OQogfSBXZWJLaXRKYXZhc2NyaXB0
RXJyb3I7CiAKKy8qKgorICogV2ViS2l0U25hcHNob3RFcnJvcjoKKyAqIEBXRUJLSVRfU05BUFNI
T1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURTogQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiBjcmVhdGlu
ZyBhIHdlYnBhZ2Ugc25hcHNob3QuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUg
ZXJyb3JzIGhhcHBlbmRpbmcgd2hlbiBjcmVhdGluZyBzbmFwc2hvdHMgb2YgI1dlYktpdFdlYlZp
ZXcKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVE
X1RPX0NSRUFURSA9IDc5OQorfSBXZWJLaXRTbmFwc2hvdEVycm9yOworCiBXRUJLSVRfQVBJIEdR
dWFyawogd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsgICAgKHZvaWQpOwogCkBAIC0xNDgsNiAr
MTU5LDkgQEAgd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrICAgICAgKHZvaWQpOwogV0VCS0lUX0FQ
SSBHUXVhcmsKIHdlYmtpdF9qYXZhc2NyaXB0X2Vycm9yX3F1YXJrICh2b2lkKTsKIAorV0VCS0lU
X0FQSSBHUXVhcmsKK3dlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyayAgICh2b2lkKTsKKwogR19F
TkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggNmQ3
ODhiYThjM2MxY2JhZjYyNGI0OWRkMmQ3YzFkYThlYTM3NmUwYS4uMjE2M2YwNGVlMjYxODNjZDZi
MThmOGFlZTAxNjg0Zjc0MzE0ZTczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApA
QCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdElu
amVjdGVkQnVuZGxlQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUg
IldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKQEAgLTkwLDYg
KzkxLDEwIEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjCiAKICAgICAgICAgd2Via2l0V2ViUmVz
b3VyY2VGYWlsZWQocmVzb3VyY2UuZ2V0KCksIHJlc291cmNlRXJyb3IuZ2V0KCkpOwogICAgICAg
ICB3ZWJraXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291cmNlKHdlYlZpZXcsIHJlc291cmNl
SWRlbnRpZmllci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChtZXNzYWdl
TmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKKyAgICAgICAgV2ViVUludDY0KiBjYWxsYmFja0lE
ID0gc3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgi
Q2FsbGJhY2tJRCIpKSk7CisgICAgICAgIFdlYkltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFdl
YkltYWdlKj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiU25hcHNob3QiKSkpOworICAg
ICAgICBXZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KHdlYlZpZXcsIGNhbGxiYWNrSUQt
PnZhbHVlKCksIGltYWdlKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2
YXRlLmgKaW5kZXggYmUzOWU4MDJjYzNlNzUzOTM3Yzg3ZDZmMzE5ZDkyYjc5ZWJhMjNmYS4uYjVl
MDIxOWZjNjg1NjkzNDI3ZmYzMzdiNjA4YzM2NjVlYjA4MzkwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApAQCAtMTIwLDQgKzEyMCw5
IEBAIEdUeXBlIHR5cGVfbmFtZSMjX2dldF90eXBlKHZvaWQpIFwKIHVuc2lnbmVkIHdrRXZlbnRN
b2RpZmllcnNUb0dka01vZGlmaWVycyhXS0V2ZW50TW9kaWZpZXJzKTsKIHVuc2lnbmVkIHdrRXZl
bnRNb3VzZUJ1dHRvblRvV2ViS2l0TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0dG9uKTsKIAor
ZW51bSBTbmFwc2hvdFJlZ2lvbiB7CisgICAgU25hcHNob3RSZWdpb25WaXNpYmxlID0gMCwKKyAg
ICBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1bWVudAorfTsKKwogI2VuZGlmIC8vIFdlYktpdFByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCAyMzIwZTFjM2MxZWJiZWYzMzgyMjhkYmJmNDYxOGJkMzM2ZjdmYWYxLi5h
NjQ5OWQ4ZDlhNmEwYmJmZDlhZGU4YzRiYjdkYzdmMDE4YTgxZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjEsNiAr
MjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIK
IAorI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVJdGVtLmgiCkBAIC0xMzIsNiArMTMzLDcgQEAgZW51bSB7CiB9OwogCiB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+ID4gTG9hZGlu
Z1Jlc291cmNlc01hcDsKK3R5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHU2ltcGxl
QXN5bmNSZXN1bHQ+ID4gU25hcHNob3RSZXN1bHRzTWFwOwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdQcml2YXRlIHsKICAgICB+X1dlYktpdFdlYlZpZXdQcml2YXRlKCkKQEAgLTE3Nyw2ICsxNzks
OCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPEdDYW5jZWxs
YWJsZT4gZmF2aWNvbkNhbmNlbGxhYmxlOwogICAgIENTdHJpbmcgZmF2aWNvblVSSTsKICAgICB1
bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOworCisgICAgU25hcHNob3RSZXN1
bHRzTWFwIHNuYXBzaG90UmVzdWx0c01hcDsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xB
U1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTI5MjIsMyArMjkyNiwxMDggQEAgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2dldF90bHNfaW5mbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHVGxzQ2Vy
dGlmaWNhdGUqKgogCiAgICAgcmV0dXJuICEhY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCk7
CiB9CisKK3N0cnVjdCBHZXRTbmFwc2hvdEFzeW5jRGF0YSB7CisgICAgR1JlZlB0cjxHQ2FuY2Vs
bGFibGU+IGNhbmNlbGxhYmxlOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHNuYXBzaG90
OworfTsKK1dFQktJVF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0U25hcHNob3RBc3luY0Rh
dGEpCisKK3ZvaWQgV2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCB1aW50NjRfdCBjYWxsYmFja0lELCBXZWJJbWFnZSogd2ViSW1hZ2UpCit7Cisg
ICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IHdlYlZpZXctPnByaXYtPnNu
YXBzaG90UmVzdWx0c01hcC50YWtlKGNhbGxiYWNrSUQpOworICAgIEdldFNuYXBzaG90QXN5bmNE
YXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8R2V0U25hcHNob3RBc3luY0RhdGEqPihnX3NpbXBsZV9h
c3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCkpKTsKKyAgICBHRXJy
b3IqIGVycm9yID0gMDsKKyAgICBpZiAoZ19jYW5jZWxsYWJsZV9zZXRfZXJyb3JfaWZfY2FuY2Vs
bGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQorICAgICAgICBnX3NpbXBsZV9h
c3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKKyAgICBlbHNlIGlm
ICh3ZWJJbWFnZSkgeworICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBpbWFnZSA9IHdl
YkltYWdlLT5iaXRtYXAoKTsKKyAgICAgICAgaWYgKGltYWdlKQorICAgICAgICAgICAgZGF0YS0+
c25hcHNob3QgPSBpbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCgmZXJyb3IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUiwg
V0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19DUkVBVEUsIF8oIlRoZXJlIHdhcyBhbiBl
cnJvciBjcmVhdGluZyB0aGUgc25hcHNob3QiKSk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jl
c3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIH0KKworICAgIGdfc2lt
cGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQuZ2V0KCkpOworfQorCitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgU25hcHNo
b3RSZWdpb25WaXNpYmxlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX1NO
QVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULCBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1bWVudCk7
CisKK3N0YXRpYyB1bnNpZ25lZCBXZWJLaXRTbmFwc2hvdE9wdGlvbnNUb1NuYXBzaG90T3B0aW9u
cyhXZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBTbmFwc2hvdE9wdGlvbnMg
c25hcHNob3RPcHRpb25zID0gMDsKKworICAgIGlmICghKG9wdGlvbnMgJiBXRUJLSVRfU05BUFNI
T1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcpKQorICAgICAgICBzbmFw
c2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGlu
ZzsKKworICAgIHJldHVybiBzbmFwc2hvdE9wdGlvbnM7Cit9CisKK3N0YXRpYyB1aW50NjRfdAor
Z2VuZXJhdGVTbmFwc2hvdENhbGxiYWNrSUQodm9pZCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZUNhbGxiYWNrSUQrKzsKK30K
KworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90OgorICogQHdlYl92aWV3OiBh
ICNXZWJLaXRXZWJWaWV3CisgKiBAb3B0aW9uczogI1dlYktpdFNuYXBzaG90T3B0aW9ucyBmb3Ig
dGhlIHNuYXBzaG90CisgKiBAcmVnaW9uOiB0aGUgI1dlYktpdFNuYXBzaG90UmVnaW9uIGZvciB0
aGlzIHNuYXBzaG90CisgKiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNlbGxh
YmxlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IGEgI0dBc3luY1JlYWR5Q2FsbGJhY2sK
KyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdXNlciBkYXRhCisgKgorICogQXN5bmNocm9ub3Vz
bHkgcmV0cmlldmVzIGEgc25hcHNob3Qgb2YgQHdlYl92aWV3IGZvciBAcmVnaW9uLgorICogQG9w
dGlvbnMgc3BlY2lmaWVzIGhvdyB0aGUgc25hcHNob3Qgc2hvdWxkIGJlIHJlbmRlcmVkLgorICoK
KyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2Fs
bGVkLiBZb3UgbXVzdAorICogY2FsbCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2Zpbmlz
aCgpIHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZQorICogb3BlcmF0aW9uLgorICoqLwordm9pZCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFNuYXBzaG90UmVnaW9uIHJlZ2lvbiwgV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEdD
YW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdw
b2ludGVyIHVzZXJEYXRhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpKTsKKworICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQg
PSBnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFjaywg
dXNlckRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3QpKTsKKyAgICBHZXRTbmFwc2hvdEFzeW5jRGF0YSogZGF0YSA9IGNyZWF0ZUdl
dFNuYXBzaG90QXN5bmNEYXRhKCk7CisgICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJs
ZTsKKyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQu
Z2V0KCksIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lHZXRT
bmFwc2hvdEFzeW5jRGF0YSkpOworCisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBt
ZXNzYWdlOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZVNuYXBzaG90Q2FsbGJh
Y2tJRCgpOworICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIlNuYXBzaG90T3B0aW9u
cyIpLCBXZWJVSW50NjQ6OmNyZWF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oV2ViS2l0U25hcHNo
b3RPcHRpb25zVG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucykpKSk7CisgICAgbWVzc2FnZS5zZXQo
U3RyaW5nOjpmcm9tVVRGOCgiU25hcHNob3RSZWdpb24iKSwgV2ViVUludDY0OjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlZ2lvbikpKTsKKyAgICBtZXNzYWdlLnNldChTdHJpbmc6OmZy
b21VVEY4KCJDYWxsYmFja0lEIiksIFdlYlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKwor
ICAgIHdlYlZpZXctPnByaXYtPnNuYXBzaG90UmVzdWx0c01hcC5zZXQoY2FsbGJhY2tJRCwgcmVz
dWx0LmdldCgpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoU3RyaW5nOjpmcm9tVVRGOCgiR2V0U25hcHNob3QiKSwgSW1tdXRhYmxlRGljdGlvbmFy
eTo6YWRvcHQobWVzc2FnZSkuZ2V0KCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3RfZmluaXNoOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBA
cmVzdWx0OiBhICNHQXN5bmNSZXN1bHQKKyAqIEBlcnJvcjogcmV0dXJuIGxvY2F0aW9uIGZvciBl
cnJvciBvciAlTlVMTCB0byBpZ25vcmUKKyAqCisgKiBGaW5pc2hlcyBhbiBhc3luY2hyb25vdXMg
b3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KCkuCisg
KgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhICNjYWlyb19zdXJmYWNlX3Qgd2l0aCB0
aGUgcmV0cmlldmVkIHNuYXBzaG90CisgKiovCitjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJf
dmlld19nZXRfc25hcHNob3RfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEdfSVNfQVNZTkNfUkVTVUxUKHJlc3VsdCksIDApOworCisgICAgR1NpbXBsZUFzeW5jUmVz
dWx0KiBzaW1wbGUgPSBHX1NJTVBMRV9BU1lOQ19SRVNVTFQocmVzdWx0KTsKKyAgICBnX3dhcm5f
aWZfZmFpbChnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X3NvdXJjZV90YWcoc2ltcGxlKSA9PSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KTsKKworICAgIGlmIChnX3NpbXBsZV9hc3luY19y
ZXN1bHRfcHJvcGFnYXRlX2Vycm9yKHNpbXBsZSwgZXJyb3IpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShzdGF0aWNfY2FzdDxHZXRTbmFw
c2hvdEFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfb3BfcmVzX2dwb2ludGVy
KHNpbXBsZSkpLT5zbmFwc2hvdC5nZXQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYWFlODQ5YmYwODk1ZjI2YTNmYTFm
M2ZjMzU1YmY0YTRlMDM2MzhmNy4uNWQ0NmZmNWI5NWRkM2JmNTI0YTA4ZmNlOThhZjcwMzQ4MTZl
Mzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaApAQCAtMTU5LDYgKzE1OSwzNCBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9W
SUVXX01PREVfU09VUkNFCiB9IFdlYktpdFZpZXdNb2RlOwogCisvKioKKyAqIFdlYktpdFNuYXBz
aG90T3B0aW9uczoKKyAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FOiBEbyBub3QgaW5j
bHVkZSBhbnkgc3BlY2lhbCBvcHRpb25zLgorICogQFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lO
Q0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORzogV2hldGhlciB0byBpbmNsdWRlIGluIHRoZQor
ICogc25hcHNob3QgdGhlIGhpZ2hsaWdodCBvZiB0aGUgc2VsZWN0ZWQgY29udGVudC4KKyAqCisg
KiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9ucyB3aGVuIHRha2luZyBhIHNuYXBz
aG90CisgKiBmcm9tIGEgI1dlYktpdFdlYlZpZXcuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIFdF
QktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUgPSAwLAorICBXRUJLSVRfU05BUFNIT1RfT1BUSU9O
U19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcgPSAxIDw8IDAsCit9IFdlYktpdFNuYXBz
aG90T3B0aW9uczsKKworLyoqCisgKiBXZWJLaXRTbmFwc2hvdFJlZ2lvbjoKKyAqIEBXRUJLSVRf
U05BUFNIT1RfUkVHSU9OX1ZJU0lCTEU6IFNwZWNpZmllcyBhIHNuYXBzaG90IG9ubHkgZm9yIHRo
ZSBhcmVhIHRoYXQgaXMKKyAqIHZpc2libGUgaW4gdGhlIHdlYnZpZXcKKyAqIEBXRUJLSVRfU05B
UFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQ6IEEgc25hcHNob3Qgb2YgdGhlIGVudGlyZSBkb2N1
bWVudC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHJlZ2lvbiBmcm9t
IHdoaWNoIHRvIGdldCBhICNXZWJLaXRXZWJWaWV3CisgKiBzbmFwc2hvdAorICovCit0eXBlZGVm
IGVudW0geworICBXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUgPSAwLAorICBXRUJLSVRf
U05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsCit9IFdlYktpdFNuYXBzaG90UmVnaW9uOwor
CiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsK
IApAQCAtNDE4LDcgKzQ0NiwxOCBAQCBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3Rsc19pbmZvICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZSAgICAgICAgICAqKmNlcnRpZmljYXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1Rsc0NlcnRpZmljYXRlRmxhZ3MgICAgICAqZXJyb3JzKTsKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTbmFwc2hvdFJlZ2lvbiAgICAgICBy
ZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRTbmFwc2hvdE9wdGlvbnMgICAgICBvcHRpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAg
ICAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAgICAgICBjYWxsYmFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw
b2ludGVyICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSk7CiAKK1dFQktJVF9BUEkgY2Fpcm9f
c3VyZmFjZV90ICoKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0
ICAgICAgICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICoqZXJyb3IpOwog
R19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCA2ZDBjZGYyNzRhMmU1MmMw
NzQ1MTgyNDRjNzAyNDY4MTg5ZWU5MjA1Li42MTQ5NzlhNzM1MDk1YzJhZWVjM2I1YjIyZTFiY2Nj
YjA5MzQwNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgV2Vi
S2l0V2ViVmlld1ByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCiAKKyNp
bmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTUwLDYgKzUxLDcgQEAgdm9pZCB3ZWJraXRXZWJW
aWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Kik7CiB2
b2lkIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdlYlZpZXcqLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdlYktpdFVS
SVJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVzdChXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7CiBXZWJLaXRXZWJSZXNvdXJj
ZSogd2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWlu
dDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKK3ZvaWQgV2ViS2l0V2ViVmlld0RpZFJlY2VpdmVT
bmFwc2hvdChXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgY2FsbGJhY2tJRCwgV2ViS2l0OjpXZWJJ
bWFnZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291cmNlKFdlYktp
dFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogYm9vbCB3ZWJraXRXZWJW
aWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKIGJvb2wgd2Via2l0V2ViVmlld0xl
YXZlRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApp
bmRleCBmNmU4YTg0Nzc3YmUyN2I0NWJlZGUzMDM2NWIyNDQwOWZiMmEyOWNhLi4wNTE5MmUwOWQ3
ZjkxNTlmNmI4MjdiYTk5N2M4NWY2NDcxMzMwMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQKQEAgLTc1LDYgKzc1LDggQEAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlCiBXZWJLaXRTYXZl
TW9kZQogV2ViS2l0Vmlld01vZGUKIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CitXZWJLaXRT
bmFwc2hvdE9wdGlvbnMKK1dlYktpdFNuYXBzaG90UmVnaW9uCiAKIDxTVUJTRUNUSU9OIEVkaXRp
bmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMTM0LDYgKzEzNiw4
IEBAIHdlYmtpdF93ZWJfdmlld19kb3dubG9hZF91cmkKIHdlYmtpdF93ZWJfdmlld19zZXRfdmll
d19tb2RlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3ZpZXdfbW9kZQogd2Via2l0X3dlYl92aWV3X2dl
dF90bHNfaW5mbword2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdAord2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdF9maW5pc2gKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTYwNywxOCArNjExLDIxIEBAIFdFQktJVF9Q
T0xJQ1lfRVJST1IKIFdFQktJVF9ET1dOTE9BRF9FUlJPUgogV0VCS0lUX1BSSU5UX0VSUk9SCiBX
RUJLSVRfSkFWQVNDUklQVF9FUlJPUgorV0VCS0lUX1NOQVBTSE9UX0VSUk9SCiBXZWJLaXROZXR3
b3JrRXJyb3IKIFdlYktpdFBsdWdpbkVycm9yCiBXZWJLaXRQb2xpY3lFcnJvcgogV2ViS2l0RG93
bmxvYWRFcnJvcgogV2ViS2l0UHJpbnRFcnJvcgogV2ViS2l0SmF2YXNjcmlwdEVycm9yCitXZWJL
aXRTbmFwc2hvdEVycm9yCiB3ZWJraXRfbmV0d29ya19lcnJvcl9xdWFyawogd2Via2l0X3BsdWdp
bl9lcnJvcl9xdWFyawogd2Via2l0X3BvbGljeV9lcnJvcl9xdWFyawogd2Via2l0X2Rvd25sb2Fk
X2Vycm9yX3F1YXJrCiB3ZWJraXRfcHJpbnRfZXJyb3JfcXVhcmsKIHdlYmtpdF9qYXZhc2NyaXB0
X2Vycm9yX3F1YXJrCit3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsKIDwvU0VDVElPTj4KIAog
PFNFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggOWNmMWRkY2NmNzk0YTNjMDk1
ZjYzMThiNmNjMDkyMzY0ZGJhZjVjMS4uMGQ5ODk0MjkxZTgwYTQzNzI4OTQxOGUwNjk3ZTgzMGNi
NTYyNDg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTA4NSw2ICsxMDg1LDExMiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgaW5kZXhI
VE1MKTsKIH0KIAorY2xhc3MgU25hcHNob3RXZWJWaWV3VGVzdDogcHVibGljIFdlYlZpZXdUZXN0
IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFNuYXBzaG90V2ViVmlld1Rl
c3QpOworCisgICAgU25hcHNob3RXZWJWaWV3VGVzdCgpCisgICAgICAgIDogbV9zdXJmYWNlKDAp
CisgICAgeworICAgIH0KKworICAgIH5TbmFwc2hvdFdlYlZpZXdUZXN0KCkKKyAgICB7CisgICAg
ICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShtX3N1cmZhY2UpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIG9uU25hcHNob3RSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVz
dWx0ICpyZXMsIFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIHRlc3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJvci5vdXRQdHIoKSk7
CisgICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UgfHwgIWVycm9yLmdldCgpKTsKKyAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCks
IFdFQktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19D
UkVBVEUpOworICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICB9CisKKyAgICBjYWly
b19zdXJmYWNlX3QqIHdhaXRGb3JTbmFwc2hvdChXZWJLaXRTbmFwc2hvdFJlZ2lvbiByZWdpb24s
IFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorICAgIHsKKyAgICAgICAgbV9zdXJmYWNl
ID0gMDsKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdChtX3dlYlZpZXcsIHJl
Z2lvbiwgb3B0aW9ucywgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihv
blNuYXBzaG90UmVhZHkpLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxv
b3ApOworICAgICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UobV9zdXJmYWNlKTsK
KyAgICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKK307CisKK3N0YXRpYyBn
Ym9vbGVhbiBjb21wYXJlX2NhaXJvX3N1cmZhY2VzKGNhaXJvX3N1cmZhY2VfdCogczEsIGNhaXJv
X3N1cmZhY2VfdCogczIpCit7CisgICAgcmV0dXJuIChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9m
b3JtYXQoczEpID09IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzMikKKyAgICAgICAg
ICAgICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHMxKSA9PSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF93aWR0aChzMikKKyAgICAgICAgICAgICYmIGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2hlaWdodChzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHMyKQorICAg
ICAgICAgICAgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHMxKSA9PSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoczIpCisgICAgICAgICAgICAmJiAhbWVtY21wKGNvbnN0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoczEpKSksCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2RhdGEoczIpKSksCisgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2hlaWdodChzMSkqY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHMxKSkpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5
PjxwPldoYXRldmVyPC9wPjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+d2FpdFVudGls
TG9hZEZpbmlzaGVkKCk7CisKKyAgICAvLyBXZWJWaWV3IG5vdCB2aXNpYmxlLgorICAgIGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBT
SE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBn
X2Fzc2VydCghc3VyZmFjZTEpOworCisgICAgLy8gU2hvdyBzdXJmYWNlLCByZXNpemUgdG8gNTB4
NTAsIHRyeSBhZ2Fpbi4KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQo
KTsKKyAgICB0ZXN0LT5yZXNpemVWaWV3KDUwLCA1MCk7CisgICAgc3VyZmFjZTEgPSB0ZXN0LT53
YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05B
UFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMSk7CisKKyAgICAvLyBv
YnRhaW5lZCBzdXJmYWNlIHNob3VsZCBiZSBhdCB0aGUgbW9zdCA1MHg1MC4gU3RvcmUgdGhlIHNp
emUKKyAgICAvLyBmb3IgY29tcGFyaXNvbiBsYXRlci4KKyAgICBpbnQgd2lkdGggPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSk7CisgICAgaW50IGhlaWdodCA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMSk7CisgICAgZ19hc3NlcnRfY21waW50
KHdpZHRoLCA8PSwgNTApOworICAgIGdfYXNzZXJ0X2NtcGludChoZWlnaHQsIDw9LCA1MCk7CisK
KyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTEpOworCisgICAgLy8gU2VsZWN0IGFs
bCB0ZXh0IGluIHRoZSBXZWJWaWV3LCByZXF1ZXN0IGEgc25hcHNob3QgaWdub3Jpbmcgc2VsZWN0
aW9uLgorICAgIHRlc3QtPnNlbGVjdEFsbCgpOworICAgIHN1cmZhY2UxID0gdGVzdC0+d2FpdEZv
clNuYXBzaG90KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NOQVBTSE9U
X09QVElPTlNfTk9ORSk7CisgICAgZ19hc3NlcnQoc3VyZmFjZTEpOworICAgIGdfYXNzZXJ0X2Nt
cGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSksID09LCB3aWR0aCk7
CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJm
YWNlMSksID09LCBoZWlnaHQpOworCisgICAgLy8gQ3JlYXRlIGlkZW50aWNhbCBzdXJmYWNlLgor
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VC
S0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05F
KTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMik7CisKKyAgICAvLyBDb21wYXJlIHRoZXNlIHR3bywg
dGhleSBzaG91bGQgYmUgaWRlbnRpY2FsLgorICAgIGdfYXNzZXJ0KGNvbXBhcmVfY2Fpcm9fc3Vy
ZmFjZXMoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1
cmZhY2UyKTsKKworICAgIC8vIFJlcXVlc3QgYSBuZXcgc25hcHNob3QsIGluY2x1ZGluZyB0aGUg
c2VsZWN0aW9uIHRoaXMgdGltZS4gVGhlCisgICAgLy8gc2l6ZSBzaG91bGQgYmUgdGhlIHNhbWUg
YnV0IHRoZSByZXN1bHQgbXVzdCBiZSBkaWZmZXJlbnQgdG8gdGhlCisgICAgLy8gb25lIHByZXZp
b3VzbHkgb2J0YWluZWQuCisgICAgc3VyZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VC
S0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19JTkNM
VURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UyKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTIp
LCA9PSwgd2lkdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZTIpLCA9PSwgaGVpZ2h0KTsKKyAgICBnX2Fzc2VydCghY29tcGFyZV9j
YWlyb19zdXJmYWNlcyhzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rl
c3Ryb3koc3VyZmFjZTIpOworCisgICAgLy8gUmVxdWVzdCBhIHNuYXBzaG90IG9mIHRoZSB3aG9s
ZSBkb2N1bWVudCBpbiB0aGUgV2ViVmlldy4gVGhlCisgICAgLy8gcmVzdWx0IHNob3VsZCBiZSBk
aWZmZXJlbnQgZnJvbSB0aGUgc2l6ZSBvYnRhaW5lZCBwcmV2aW91c2x5LgorICAgIHN1cmZhY2Uy
ID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NV
TUVOVCwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7CisgICAgZ19hc3NlcnQoc3VyZmFj
ZTIpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChz
dXJmYWNlMiksICA+LCB3aWR0aCk7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMiksID4sIGhlaWdodCk7CisgICAgZ19hc3NlcnQoIWNv
bXBhcmVfY2Fpcm9fc3VyZmFjZXMoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CisKKyAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0
V2ViVmlld0RlZmF1bHRDb250ZXh0KTsKQEAgLTExMDUsNiArMTIxMSw3IEBAIHZvaWQgYmVmb3Jl
QWxsKCkKICAgICBGb3JtQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1m
b3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJzYXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInZpZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7Cisg
ICAgU25hcHNob3RXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90Iiwg
dGVzdFdlYlZpZXdTbmFwc2hvdCk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmlu
ZGV4IDdlN2ViMDE2NzU4MjFhNWFiMmUzZGE0MmNjMjVlNjBhZTE3MThiOWEuLjdhZjgxZTUyNjE3
YjdlYmFiMThlNDNjZDllOTc5OGI1YjA3OTlmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTE5OCw2ICsx
OTgsMTEgQEAgdm9pZCBXZWJWaWV3VGVzdDo6cmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWln
aHQpCiAgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQobV93ZWJWaWV3KSwg
JmFsbG9jYXRpb24pOwogfQogCit2b2lkIFdlYlZpZXdUZXN0OjpzZWxlY3RBbGwoKQoreworICAg
IHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZChtX3dlYlZpZXcsICJTZWxl
Y3RBbGwiKTsKK30KKwogc3RhdGljIHZvaWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVj
dCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAg
ICAgc2l6ZV90IGRhdGFTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgKaW5kZXggMDZmMzk4Zjk2MjY1MDg2M2NjZjQ2YWFj
OTQ4Y2U2MGZkMmRiYzQ2Yy4uYWY1NjUxNzU4YTYzNWI1OTVmN2E3MzczMDc0NmM3NWYxYTZmZGI2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2Vi
Vmlld1Rlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9X
ZWJWaWV3VGVzdC5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRVbnRp
bFRpdGxlQ2hhbmdlZCgpOwogICAgIHZvaWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVk
KEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lORE9XX1BPUFVQKTsKICAgICB2b2lkIHJlc2l6ZVZpZXco
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNlbGVjdEFsbCgpOwogICAgIGNvbnN0
IGNoYXIqIG1haW5SZXNvdXJjZURhdGEoc2l6ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAK
ICAgICB2b2lkIG1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQgaW50IG1vdXNlTW9k
aWZpZXJzID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3Bw
CmluZGV4IDZmYTM2MDkxOTY1OGE1ODkxZDgwZGU1YTgzNWEwN2MzMzg1ZTY3MzkuLmM3NzY2ODZl
M2ExM2E2MjA3OWU4ZDQzOWUwY2I1MTU1N2U1MTFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0yMCwxMiArMjAsMTYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb24uaCIKIAorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltbXV0YWJs
ZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJX
S0J1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAgLTg5LDYgKzkzLDQwIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uLCBjCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXZWJLaXRXZWJFeHRl
bnNpb24qIGV4dGVuc2lvbiwgV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFt
ZSwgSW1tdXRhYmxlRGljdGlvbmFyeSYgbWVzc2FnZSkKK3sKKyAgICBpZiAobWVzc2FnZU5hbWUg
PT0gU3RyaW5nOjpmcm9tVVRGOCgiR2V0U25hcHNob3QiKSkgeworICAgICAgICBTbmFwc2hvdE9w
dGlvbnMgc25hcHNob3RPcHRpb25zID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihzdGF0
aWNfY2FzdDxXZWJVSW50NjQqPihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJTbmFwc2hv
dE9wdGlvbnMiKSkpLT52YWx1ZSgpKTsKKyAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0
YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIkNhbGxi
YWNrSUQiKSkpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0
aWNfY2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2FnZS5n
ZXQoU3RyaW5nOjpmcm9tVVRGOCgiU25hcHNob3RSZWdpb24iKSkpLT52YWx1ZSgpKTsKKworICAg
ICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90SW1hZ2U7CisKKyAgICAgICAgaWYgKFdlYkNv
cmU6OkZyYW1lVmlldyogZnJhbWVWaWV3ID0gcGFnZS0+bWFpbkZyYW1lVmlldygpKSB7CisgICAg
ICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdDsKKyAgICAgICAgICAgIHN3aXRj
aCAocmVnaW9uKSB7CisgICAgICAgICAgICBjYXNlIFNuYXBzaG90UmVnaW9uVmlzaWJsZToKKyAg
ICAgICAgICAgICAgICBzbmFwc2hvdFJlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVj
dChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6RXhjbHVkZVNjcm9sbGJhcnMpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1bWVu
dDoKKyAgICAgICAgICAgICAgICBzbmFwc2hvdFJlY3QgPSBXZWJDb3JlOjpJbnRSZWN0KFdlYkNv
cmU6OkludFBvaW50KDAsIDApLCBmcmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXNuYXBz
aG90UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgc25hcHNob3RJbWFnZSA9IHBhZ2Ut
PnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoc25hcHNob3RSZWN0LCAxLCBzbmFwc2hvdE9wdGlv
bnMgfCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUpOworICAgICAgICB9CisKKyAgICAgICAgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtZXNzYWdlUmVwbHk7CisgICAgICAgIG1lc3NhZ2VS
ZXBseS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiUGFnZSIpLCBwYWdlKTsKKyAgICAgICAgbWVzc2Fn
ZVJlcGx5LnNldChTdHJpbmc6OmZyb21VVEY4KCJDYWxsYmFja0lEIiksIFdlYlVJbnQ2NDo6Y3Jl
YXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAgbWVzc2FnZVJlcGx5LnNldChTdHJpbmc6OmZyb21V
VEY4KCJTbmFwc2hvdCIpLCBzbmFwc2hvdEltYWdlKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgiV2Vi
UGFnZS5EaWRHZXRTbmFwc2hvdCIpLCBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtZXNzYWdl
UmVwbHkpLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICB3ZWJraXRX
ZWJFeHRlbnNpb25QYWdlQ3JlYXRlZChXRUJLSVRfV0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwg
dG9JbXBsKHBhZ2UpKTsKQEAgLTEwNSw2ICsxNDMsMTIgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYg
bWUKICAgICB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlTWVzc2FnZShXRUJLSVRfV0VCX0VY
VEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBsKG5hbWUpLT5zdHJpbmcoKSwgKnRvSW1wbChzdGF0
aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KSkpOwogfQogCitzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5
KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisgICAgd2Via2l0V2ViRXh0ZW5zaW9uRGlk
UmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0VCS0lUX1dFQl9FWFRFTlNJT04oY2xpZW50SW5mbyksIHRv
SW1wbChwYWdlKSwgdG9JbXBsKG5hbWUpLT5zdHJpbmcoKSwgKnRvSW1wbChzdGF0aWNfY2FzdDxX
S0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KSkpOworfQorCiBXZWJLaXRXZWJFeHRlbnNpb24q
IHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlKQogewogICAg
IFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04oZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04sIE5VTEwpKTsKQEAgLTExNiw3ICsx
NjAsNyBAQCBXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmpl
Y3RlZEJ1bmRsZSogYnVuZGxlKQogICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCiAgICAgICAgIDAs
IC8vIGRpZEluaXRpYWxpemVQYWdlR3JvdXAKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UsCi0g
ICAgICAgIDAgLy8gZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UKKyAgICAgICAgZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UKICAgICB9OwogICAgIFdLQnVuZGxlU2V0Q2xpZW50KHRvQVBJKGJ1bmRsZSks
ICZ3a0J1bmRsZUNsaWVudCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192018</attachid>
            <date>2013-03-07 09:24:19 -0800</date>
            <delta_ts>2013-03-08 12:27:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130307192022.patch</filename>
            <type>text/plain</type>
            <size>28836</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQ4ZGQ1OGQ5ZGQ1Y2Y0
NmEyMThiZGM4MDQ2ZmEyNmEzOWZmYjk1ZC4uYjlhMmMyMzI2MDI2ZGMyZGE3OWUzOTNmYmZhYjBk
MjNlNDFmZjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTA3ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEKKyAgICAgICAgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4gVGhlIEFQSSB1c2VzIHRoZSBpbmplY3RlZCBidW5kbGUKKyAg
ICAgICAgaW50ZXJuYWxseSB0byBnZXQgdGhlIHNuYXBzaG90IGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHA6CisgICAgICAg
ICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmspOiBBZGQgc25hcHNob3QgQVBJIHJlbGF0ZWQg
ZXJyb3IKKyAgICAgICAgcXVhcmsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RXJyb3IuaDogQWRkIHNuYXBzaG90IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFJl
Y2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IEhhbmRsZSB0aGUgbmV3Cisg
ICAgICAgICJEaWRHZXRTbmFwc2hvdCIgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmg6IEFkZCBTbmFwc2hvdFJlZ2lvbiBlbnVtLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdQcml2YXRlKTogQWRkIGEgbWFwIGZvciB0aGUgc25hcHNob3QgcmVzdWx0cy4KKyAgICAg
ICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdFdlYlZpZXdEaWRSZWNl
aXZlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0U25hcHNob3RSZWdpb25Ub1NuYXBzaG90UmVn
aW9uKTogSGVscGVyIG1ldGhvZCBmb3IgY2FzdGluZworICAgICAgICB0aGUgcmVnaW9uIG9wdGlv
biBlbnVtZXJhdGlvbi4KKyAgICAgICAgKGdlbmVyYXRlU25hcHNob3RDYWxsYmFja0lEKTogTWV0
aG9kIHRvIGdlbmVyYXRlIHVuaXF1ZSBjYWxsYmFjaworICAgICAgICBpZHMuCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3RfZmluaXNoKTogTmV3IHNuYXBzaG90dGluZyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBBZGQgdGhlIHByaXZhdGUgbWV0aG9k
CisgICAgICAgIHRvIGhhbmRsZSBhIHJlY2VpdmVkIHNuYXBzaG90LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3IEFQ
SQorICAgICAgICBiaXRzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGNhaXJvU3VyZmFjZXNFcXVhbCk6IEFkZCBoZWxw
ZXIgdG8gY29tcGFyZSBjYWlyb19zdXJmYWNlX3QKKyAgICAgICAgc3RydWN0cy4KKyAgICAgICAg
KHRlc3RXZWJWaWV3U25hcHNob3QpOiBOZXcgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IHJ1
IHRoZSBuZXcgdGVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3
VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6c2VsZWN0QWxsKTogQWRkIG1ldGhvZCB0
byBoZWxwIHRlc3Qgc25hcHNob3RzCisgICAgICAgIGluY2x1ZGluZyBzZWxlY3Rpb24uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaDogRGl0dG8KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9u
LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVNZXNzYWdlVG9QYWdl
KTogQWRkIHRoaXMgbWV0aG9kLiBJdAorICAgICAgICBoYW5kbGVzIHRoZSBuZXcgbWVzc2FnZSAi
R2V0U25hcHNob3QiLgorICAgICAgICAoZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOiBEaXR0by4K
KyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6IFJlZ2lzdGVyIG1ldGhvZCBhYm92
ZS4KKwogMjAxMy0wMy0wNiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV0syXVtHVEtdIEZpeCB1bml0IHRlc3QgV2ViS2l0MkFQSVRlc3RzL1dl
YktpdFdlYlZpZXcvbW91c2UtdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKaW5kZXggZGM0OGIxYzAxMWFjMDdkM2Q5MTIwZmFmMmE2
YWI0OThjMmE4YTBkMC4uYzA2ZGM2MWE1OGNjNGFhMGE2YzE2ZGE2NTQ2NDA0YTYwZTAxMjRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNw
cApAQCAtOTEsMyArOTEsOCBAQCBHUXVhcmsgd2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVhcmso
KQogewogICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0SmF2YXNj
cmlwdEVycm9yIik7CiB9CisKK0dRdWFyayB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsoKQor
eworICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0U25hcHNob3RF
cnJvciIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVy
cm9yLmgKaW5kZXggYzIwNTgxNjgzZDQ3ODkwODA0ODUzYTQ4NzE0NjAxNDFjYWM0YTBmYy4uZTdk
ZTkzYmMyNWUwZGRjZDQ0NDNlYmFjNzI5ZmU5NTk4M2E2YmNlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oCkBAIC0zNSw2ICszNSw3IEBAIEdf
QkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0RPV05MT0FEX0VSUk9SICAgd2Via2l0X2Rvd25s
b2FkX2Vycm9yX3F1YXJrICgpCiAjZGVmaW5lIFdFQktJVF9QUklOVF9FUlJPUiAgICAgIHdlYmtp
dF9wcmludF9lcnJvcl9xdWFyayAoKQogI2RlZmluZSBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiB3
ZWJraXRfcHJpbnRfZXJyb3JfcXVhcmsgKCkKKyNkZWZpbmUgV0VCS0lUX1NOQVBTSE9UX0VSUk9S
ICAgd2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrICgpCiAKIC8qKgogICogV2ViS2l0TmV0d29y
a0Vycm9yOgpAQCAtMTMwLDYgKzEzMSwxNiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9K
QVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQgPSA2OTkKIH0gV2ViS2l0SmF2YXNjcmlwdEVy
cm9yOwogCisvKioKKyAqIFdlYktpdFNuYXBzaG90RXJyb3I6CisgKiBAV0VCS0lUX1NOQVBTSE9U
X0VSUk9SX0ZBSUxFRF9UT19DUkVBVEU6IEFuIGVycm9yIG9jY3VycmVkIHdoZW4gY3JlYXRpbmcg
YSB3ZWJwYWdlIHNuYXBzaG90LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIGVy
cm9ycyBoYXBwZW5kaW5nIHdoZW4gY3JlYXRpbmcgc25hcHNob3RzIG9mICNXZWJLaXRXZWJWaWV3
CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9U
T19DUkVBVEUgPSA3OTkKK30gV2ViS2l0U25hcHNob3RFcnJvcjsKKwogV0VCS0lUX0FQSSBHUXVh
cmsKIHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrICAgICh2b2lkKTsKIApAQCAtMTQ4LDYgKzE1
OSw5IEBAIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkg
R1F1YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyayAodm9pZCk7CiAKK1dFQktJVF9B
UEkgR1F1YXJrCit3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsgICAodm9pZCk7CisKIEdfRU5E
X0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDZkNzg4
YmE4YzNjMWNiYWY2MjRiNDlkZDJkN2MxZGE4ZWEzNzZlMGEuLjIxNjNmMDRlZTI2MTgzY2Q2YjE4
ZjhhZWUwMTY4NGY3NDMxNGU3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAg
LTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oIgogCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJX
ZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCkBAIC05MCw2ICs5
MSwxMCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViVmlld01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgYwogCiAgICAgICAgIHdlYmtpdFdlYlJlc291
cmNlRmFpbGVkKHJlc291cmNlLmdldCgpLCByZXNvdXJjZUVycm9yLmdldCgpKTsKICAgICAgICAg
d2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlk
ZW50aWZpZXItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwobWVzc2FnZU5h
bWUsICJEaWRHZXRTbmFwc2hvdCIpKSB7CisgICAgICAgIFdlYlVJbnQ2NCogY2FsbGJhY2tJRCA9
IHN0YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIkNh
bGxiYWNrSUQiKSkpOworICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJJ
bWFnZSo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIlNuYXBzaG90IikpKTsKKyAgICAg
ICAgV2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52
YWx1ZSgpLCBpbWFnZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0
ZS5oCmluZGV4IGJlMzllODAyY2MzZTc1MzkzN2M4N2Q2ZjMxOWQ5MmI3OWViYTIzZmEuLmI1ZTAy
MTlmYzY4NTY5MzQyN2ZmMzM3YjYwOGMzNjY1ZWIwODM5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKQEAgLTEyMCw0ICsxMjAsOSBA
QCBHVHlwZSB0eXBlX25hbWUjI19nZXRfdHlwZSh2b2lkKSBcCiB1bnNpZ25lZCB3a0V2ZW50TW9k
aWZpZXJzVG9HZGtNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyk7CiB1bnNpZ25lZCB3a0V2ZW50
TW91c2VCdXR0b25Ub1dlYktpdE1vdXNlQnV0dG9uKFdLRXZlbnRNb3VzZUJ1dHRvbik7CiAKK2Vu
dW0gU25hcHNob3RSZWdpb24geworICAgIFNuYXBzaG90UmVnaW9uVmlzaWJsZSA9IDAsCisgICAg
U25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQKK307CisKICNlbmRpZiAvLyBXZWJLaXRQcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggMjMyMGUxYzNjMWViYmVmMzM4MjI4ZGJiZjQ2MThiZDMzNmY3ZmFmMS4uM2Q1
ODUzNGNmZmQyM2MwMTdhOTRiNzY5NzZkMjg4ZjliMjliOTRiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAK
KyNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRl
SW5mby5oIgogI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51SXRlbS5oIgpAQCAtMTMyLDYgKzEzMyw3IEBAIGVudW0gewogfTsKIAogdHlwZWRl
ZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IExvYWRpbmdS
ZXNvdXJjZXNNYXA7Cit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8R1NpbXBsZUFz
eW5jUmVzdWx0PiA+IFNuYXBzaG90UmVzdWx0c01hcDsKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3
UHJpdmF0ZSB7CiAgICAgfl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCkBAIC0xNzcsNiArMTc5LDgg
QEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFi
bGU+IGZhdmljb25DYW5jZWxsYWJsZTsKICAgICBDU3RyaW5nIGZhdmljb25VUkk7CiAgICAgdW5z
aWduZWQgbG9uZyBmYXZpY29uQ2hhbmdlZEhhbmRsZXJJRDsKKworICAgIFNuYXBzaG90UmVzdWx0
c01hcCBzbmFwc2hvdFJlc3VsdHNNYXA7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNU
X1NJR05BTF0gPSB7IDAsIH07CkBAIC0yOTIyLDMgKzI5MjYsMTA4IEBAIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19nZXRfdGxzX2luZm8oV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1Rsc0NlcnRp
ZmljYXRlKioKIAogICAgIHJldHVybiAhIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpOwog
fQorCitzdHJ1Y3QgR2V0U25hcHNob3RBc3luY0RhdGEgeworICAgIEdSZWZQdHI8R0NhbmNlbGxh
YmxlPiBjYW5jZWxsYWJsZTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzbmFwc2hvdDsK
K307CitXRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RSVUNUKEdldFNuYXBzaG90QXN5bmNEYXRh
KQorCit2b2lkIFdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgdWludDY0X3QgY2FsbGJhY2tJRCwgV2ViSW1hZ2UqIHdlYkltYWdlKQoreworICAg
IEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQgPSB3ZWJWaWV3LT5wcml2LT5zbmFw
c2hvdFJlc3VsdHNNYXAudGFrZShjYWxsYmFja0lEKTsKKyAgICBHZXRTbmFwc2hvdEFzeW5jRGF0
YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5
bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7CisgICAgR0Vycm9y
KiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9yX2lmX2NhbmNlbGxl
ZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKKyAgICAgICAgZ19zaW1wbGVfYXN5
bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAgZWxzZSBpZiAo
d2ViSW1hZ2UpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaW1hZ2UgPSB3ZWJJ
bWFnZS0+Yml0bWFwKCk7CisgICAgICAgIGlmIChpbWFnZSkKKyAgICAgICAgICAgIGRhdGEtPnNu
YXBzaG90ID0gaW1hZ2UtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoJmVycm9yLCBXRUJLSVRfU05BUFNIT1RfRVJST1IsIFdF
QktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRURfVE9fQ1JFQVRFLCBfKCJUaGVyZSB3YXMgYW4gZXJy
b3IgY3JlYXRpbmcgdGhlIHNuYXBzaG90IikpOworICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1
bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsKKyAgICB9CisKKyAgICBnX3NpbXBs
ZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKK30KKworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFNuYXBzaG90
UmVnaW9uVmlzaWJsZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9TTkFQ
U0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCwgU25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQpOwor
CitzdGF0aWMgdW5zaWduZWQgV2ViS2l0U25hcHNob3RPcHRpb25zVG9TbmFwc2hvdE9wdGlvbnMo
V2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgU25hcHNob3RPcHRpb25zIHNu
YXBzaG90T3B0aW9ucyA9IDA7CisKKyAgICBpZiAoIShvcHRpb25zICYgV0VCS0lUX1NOQVBTSE9U
X09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HKSkKKyAgICAgICAgc25hcHNo
b3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmc7
CisKKyAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOworfQorCitzdGF0aWMgdWludDY0X3QKK2dl
bmVyYXRlU25hcHNob3RDYWxsYmFja0lEKHZvaWQpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVu
aXF1ZUNhbGxiYWNrSUQgPSAxOworICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdDoKKyAqIEB3ZWJfdmlldzogYSAj
V2ViS2l0V2ViVmlldworICogQG9wdGlvbnM6ICNXZWJLaXRTbmFwc2hvdE9wdGlvbnMgZm9yIHRo
ZSBzbmFwc2hvdAorICogQHJlZ2lvbjogdGhlICNXZWJLaXRTbmFwc2hvdFJlZ2lvbiBmb3IgdGhp
cyBzbmFwc2hvdAorICogQGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJs
ZQorICogQGNhbGxiYWNrOiAoc2NvcGUgYXN5bmMpOiBhICNHQXN5bmNSZWFkeUNhbGxiYWNrCisg
KiBAdXNlcl9kYXRhOiAoY2xvc3VyZSk6IHVzZXIgZGF0YQorICoKKyAqIEFzeW5jaHJvbm91c2x5
IHJldHJpZXZlcyBhIHNuYXBzaG90IG9mIEB3ZWJfdmlldyBmb3IgQHJlZ2lvbi4KKyAqIEBvcHRp
b25zIHNwZWNpZmllcyBob3cgdGhlIHNuYXBzaG90IHNob3VsZCBiZSByZW5kZXJlZC4KKyAqCisg
KiBXaGVuIHRoZSBvcGVyYXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxl
ZC4gWW91IG11c3QKKyAqIGNhbGwgd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2go
KSB0byBnZXQgdGhlIHJlc3VsdCBvZiB0aGUKKyAqIG9wZXJhdGlvbi4KKyAqKi8KK3ZvaWQgd2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRT
bmFwc2hvdFJlZ2lvbiByZWdpb24sIFdlYktpdFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBHQ2Fu
Y2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9p
bnRlciB1c2VyRGF0YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CisKKyAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0g
YWRvcHRHUmVmKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9uZXcoR19PQkpFQ1Qod2ViVmlldyksIGNh
bGxiYWNrLCB1c2VyRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxn
cG9pbnRlcj4od2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCkpKTsKKyAgICBHZXRTbmFwc2hv
dEFzeW5jRGF0YSogZGF0YSA9IGNyZWF0ZUdldFNuYXBzaG90QXN5bmNEYXRhKCk7CisgICAgZGF0
YS0+Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJsZTsKKyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRf
c2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCksIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lHZXRTbmFwc2hvdEFzeW5jRGF0YSkpOworCisgICAgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtZXNzYWdlOworICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBnZW5lcmF0ZVNuYXBzaG90Q2FsbGJhY2tJRCgpOworICAgIG1lc3NhZ2Uuc2V0KFN0cmlu
Zzo6ZnJvbVVURjgoIlNuYXBzaG90T3B0aW9ucyIpLCBXZWJVSW50NjQ6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oV2ViS2l0U25hcHNob3RPcHRpb25zVG9TbmFwc2hvdE9wdGlvbnMob3B0
aW9ucykpKSk7CisgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiU25hcHNob3RSZWdp
b24iKSwgV2ViVUludDY0OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlZ2lvbikpKTsK
KyAgICBtZXNzYWdlLnNldChTdHJpbmc6OmZyb21VVEY4KCJDYWxsYmFja0lEIiksIFdlYlVJbnQ2
NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKworICAgIHdlYlZpZXctPnByaXYtPnNuYXBzaG90UmVz
dWx0c01hcC5zZXQoY2FsbGJhY2tJRCwgcmVzdWx0LmdldCgpKTsKKyAgICBnZXRQYWdlKHdlYlZp
ZXcpLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoU3RyaW5nOjpmcm9tVVRGOCgiR2V0U25h
cHNob3QiKSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWVzc2FnZSkuZ2V0KCkpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoOgorICogQHdlYl92
aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAcmVzdWx0OiBhICNHQXN5bmNSZXN1bHQKKyAqIEBl
cnJvcjogcmV0dXJuIGxvY2F0aW9uIGZvciBlcnJvciBvciAlTlVMTCB0byBpZ25vcmUKKyAqCisg
KiBGaW5pc2hlcyBhbiBhc3luY2hyb25vdXMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90KCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwp
OiBhICNjYWlyb19zdXJmYWNlX3Qgd2l0aCB0aGUgcmV0cmlldmVkIHNuYXBzaG90IG9yICVOVUxM
IGluIGVycm9yLgorICoqLworY2Fpcm9fc3VyZmFjZV90KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90X2ZpbmlzaChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FT
WU5DX1JFU1VMVChyZXN1bHQpLCAwKTsKKworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogc2ltcGxl
ID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7CisgICAgZ193YXJuX2lmX2ZhaWwoZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZSkgPT0gd2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdCk7CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Byb3Bh
Z2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8R2V0U25hcHNob3RBc3luY0Rh
dGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihzaW1wbGUpKS0+
c25hcHNob3QuZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGFhZTg0OWJmMDg5NWYyNmEzZmExZjNmYzM1NWJmNGE0
ZTAzNjM4ZjcuLjVkNDZmZjViOTVkZDNiZjUyNGEwOGZjZTk4YWY3MDM0ODE2ZTM3OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAg
LTE1OSw2ICsxNTksMzQgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfVklFV19NT0RFX1NP
VVJDRQogfSBXZWJLaXRWaWV3TW9kZTsKIAorLyoqCisgKiBXZWJLaXRTbmFwc2hvdE9wdGlvbnM6
CisgKiBAV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORTogRG8gbm90IGluY2x1ZGUgYW55IHNw
ZWNpYWwgb3B0aW9ucy4KKyAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19JTkNMVURFX1NFTEVD
VElPTl9ISUdITElHSFRJTkc6IFdoZXRoZXIgdG8gaW5jbHVkZSBpbiB0aGUKKyAqIHNuYXBzaG90
IHRoZSBoaWdobGlnaHQgb2YgdGhlIHNlbGVjdGVkIGNvbnRlbnQuCisgKgorICogRW51bSB2YWx1
ZXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbnMgd2hlbiB0YWtpbmcgYSBzbmFwc2hvdAorICogZnJv
bSBhICNXZWJLaXRXZWJWaWV3LgorICovCit0eXBlZGVmIGVudW0geworICBXRUJLSVRfU05BUFNI
T1RfT1BUSU9OU19OT05FID0gMCwKKyAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVERV9T
RUxFQ1RJT05fSElHSExJR0hUSU5HID0gMSA8PCAwLAorfSBXZWJLaXRTbmFwc2hvdE9wdGlvbnM7
CisKKy8qKgorICogV2ViS2l0U25hcHNob3RSZWdpb246CisgKiBAV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9WSVNJQkxFOiBTcGVjaWZpZXMgYSBzbmFwc2hvdCBvbmx5IGZvciB0aGUgYXJlYSB0aGF0
IGlzCisgKiB2aXNpYmxlIGluIHRoZSB3ZWJ2aWV3CisgKiBAV0VCS0lUX1NOQVBTSE9UX1JFR0lP
Tl9GVUxMX0RPQ1VNRU5UOiBBIHNuYXBzaG90IG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQuCisgKgor
ICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IHRoZSByZWdpb24gZnJvbSB3aGljaCB0byBn
ZXQgYSAjV2ViS2l0V2ViVmlldworICogc25hcHNob3QKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAg
V0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFID0gMCwKKyAgV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9GVUxMX0RPQ1VNRU5ULAorfSBXZWJLaXRTbmFwc2hvdFJlZ2lvbjsKKwogc3RydWN0IF9X
ZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTQxOCw3
ICs0NDYsMTggQEAgV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90bHNf
aW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAq
d2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVGxzQ2VydGlmaWNhdGUgICAgICAgICAgKipjZXJ0aWZpY2F0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZp
Y2F0ZUZsYWdzICAgICAgKmVycm9ycyk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3QgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0U25hcHNob3RSZWdpb24gICAgICAgcmVnaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
U25hcHNob3RPcHRpb25zICAgICAgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgKmNh
bmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAg
ICAgICAgICAgICAgICB1c2VyX2RhdGEpOwogCitXRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAq
Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAg
ICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsKIEdfRU5EX0RFQ0xT
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggNmQwY2RmMjc0YTJlNTJjMDc0NTE4MjQ0Yzcw
MjQ2ODE4OWVlOTIwNS4uNjE0OTc5YTczNTA5NWMyYWVlYzNiNWIyMmUxYmNjY2IwOTM0MDY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFdlYktpdFdlYlZpZXdQ
cml2YXRlX2gKICNkZWZpbmUgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAogCisjaW5jbHVkZSAiV2Vi
SW1hZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCkBAIC01MCw2ICs1MSw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1ByaW50RnJh
bWUoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSopOwogdm9pZCB3ZWJraXRX
ZWJWaWV3UmVzb3VyY2VMb2FkU3RhcnRlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXRVUklSZXF1ZXN0Kik7
CiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyos
IFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCopOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdl
YlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllcik7Cit2b2lkIFdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2Vi
S2l0V2ViVmlldyosIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6V2ViSW1hZ2UqKTsKIHZv
aWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3Kiwg
dWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIGJvb2wgd2Via2l0V2ViVmlld0VudGVyRnVs
bFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiBib29sIHdlYmtpdFdlYlZpZXdMZWF2ZUZ1bGxTY3Jl
ZW4oV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4
NDc3N2JlMjdiNDViZWRlMzAzNjViMjQ0MDlmYjJhMjljYS4uMDUxOTJlMDlkN2Y5MTU5ZjZiODI3
YmE5OTdjODVmNjQ3MTMzMDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC03NSw2
ICs3NSw4IEBAIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZQogV2ViS2l0U2F2ZU1vZGUKIFdlYktp
dFZpZXdNb2RlCiBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAorV2ViS2l0U25hcHNob3RPcHRp
b25zCitXZWJLaXRTbmFwc2hvdFJlZ2lvbgogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRz
PgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTEzNCw2ICsxMzYsOCBAQCB3ZWJraXRf
d2ViX3ZpZXdfZG93bmxvYWRfdXJpCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3ZpZXdfbW9kZQogd2Vi
a2l0X3dlYl92aWV3X2dldF92aWV3X21vZGUKIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8K
K3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNo
b3RfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0CkBAIC02MDcsMTggKzYxMSwyMSBAQCBXRUJLSVRfUE9MSUNZX0VSUk9S
CiBXRUJLSVRfRE9XTkxPQURfRVJST1IKIFdFQktJVF9QUklOVF9FUlJPUgogV0VCS0lUX0pBVkFT
Q1JJUFRfRVJST1IKK1dFQktJVF9TTkFQU0hPVF9FUlJPUgogV2ViS2l0TmV0d29ya0Vycm9yCiBX
ZWJLaXRQbHVnaW5FcnJvcgogV2ViS2l0UG9saWN5RXJyb3IKIFdlYktpdERvd25sb2FkRXJyb3IK
IFdlYktpdFByaW50RXJyb3IKIFdlYktpdEphdmFzY3JpcHRFcnJvcgorV2ViS2l0U25hcHNob3RF
cnJvcgogd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsKIHdlYmtpdF9wbHVnaW5fZXJyb3JfcXVh
cmsKIHdlYmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsKIHdlYmtpdF9kb3dubG9hZF9lcnJvcl9xdWFy
awogd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFy
aword2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDljZjFkZGNjZjc5NGEzYzA5NWY2MzE4YjZjYzA5
MjM2NGRiYWY1YzEuLjVmMWQ3Y2RhMGI0Y2MxYmYyNWQ5Njc4YWI3ZmNmMWI5NzZmNjgwYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMTIgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdNb2RlKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sIGluZGV4SFRNTCk7CiB9CiAK
K2NsYXNzIFNuYXBzaG90V2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6
CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShTbmFwc2hvdFdlYlZpZXdUZXN0KTsKKworICAg
IFNuYXBzaG90V2ViVmlld1Rlc3QoKQorICAgICAgICA6IG1fc3VyZmFjZSgwKQorICAgIHsKKyAg
ICB9CisKKyAgICB+U25hcHNob3RXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3kobV9zdXJmYWNlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBvblNu
YXBzaG90UmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCAqcmVzLCBT
bmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgR093blB0cjxHRXJyb3I+
IGVycm9yOworICAgICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBn
X2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlIHx8ICFlcnJvci5nZXQoKSk7CisgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfU05B
UFNIT1RfRVJST1IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRURfVE9fQ1JFQVRFKTsKKyAg
ICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgfQorCisgICAgY2Fpcm9fc3VyZmFjZV90
KiB3YWl0Rm9yU25hcHNob3QoV2ViS2l0U25hcHNob3RSZWdpb24gcmVnaW9uLCBXZWJLaXRTbmFw
c2hvdE9wdGlvbnMgb3B0aW9ucykKKyAgICB7CisgICAgICAgIG1fc3VyZmFjZSA9IDA7CisgICAg
ICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QobV93ZWJWaWV3LCByZWdpb24sIG9wdGlv
bnMsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ob25TbmFwc2hvdFJl
YWR5KSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAg
ICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc3VyZmFjZSk7CisgICAgfQorCisg
ICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7Cit9OworCitzdGF0aWMgZ2Jvb2xlYW4gY2Fp
cm9TdXJmYWNlc0VxdWFsKGNhaXJvX3N1cmZhY2VfdCogczEsIGNhaXJvX3N1cmZhY2VfdCogczIp
Cit7CisgICAgcmV0dXJuIChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoczEpID09IGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzMikKKyAgICAgICAgICAgICYmIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChzMikKKyAgICAgICAgICAgICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzMSkg
PT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHMyKQorICAgICAgICAgICAgJiYgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUoczIpCisgICAgICAgICAgICAmJiAhbWVtY21wKGNvbnN0X2Nhc3Q8Y29uc3Qgdm9p
ZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
czEpKSksCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoczIpKSks
CisgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChz
MSkqY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHMxKSkpOworfQorCitzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCit7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PjxwPldoYXRldmVyPC9w
PjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CisKKyAgICAvLyBXZWJWaWV3IG5vdCB2aXNpYmxlLgorICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJ
QkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydCghc3VyZmFj
ZTEpOworCisgICAgLy8gU2hvdyBzdXJmYWNlLCByZXNpemUgdG8gNTB4NTAsIHRyeSBhZ2Fpbi4K
KyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5y
ZXNpemVWaWV3KDUwLCA1MCk7CisgICAgc3VyZmFjZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3Qo
V0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19O
T05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMSk7CisKKyAgICAvLyBvYnRhaW5lZCBzdXJmYWNl
IHNob3VsZCBiZSBhdCB0aGUgbW9zdCA1MHg1MC4gU3RvcmUgdGhlIHNpemUKKyAgICAvLyBmb3Ig
Y29tcGFyaXNvbiBsYXRlci4KKyAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChzdXJmYWNlMSk7CisgICAgaW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2hlaWdodChzdXJmYWNlMSk7CisgICAgZ19hc3NlcnRfY21waW50KHdpZHRoLCA8PSwgNTAp
OworICAgIGdfYXNzZXJ0X2NtcGludChoZWlnaHQsIDw9LCA1MCk7CisKKyAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3koc3VyZmFjZTEpOworCisgICAgLy8gU2VsZWN0IGFsbCB0ZXh0IGluIHRoZSBX
ZWJWaWV3LCByZXF1ZXN0IGEgc25hcHNob3QgaWdub3Jpbmcgc2VsZWN0aW9uLgorICAgIHRlc3Qt
PnNlbGVjdEFsbCgpOworICAgIHN1cmZhY2UxID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KFdFQktJ
VF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7
CisgICAgZ19hc3NlcnQoc3VyZmFjZTEpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSksID09LCB3aWR0aCk7CisgICAgZ19hc3NlcnRf
Y21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMSksID09LCBoZWln
aHQpOworCisgICAgLy8gQ3JlYXRlIGlkZW50aWNhbCBzdXJmYWNlLgorICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2Vy
dChzdXJmYWNlMik7CisKKyAgICAvLyBDb21wYXJlIHRoZXNlIHR3bywgdGhleSBzaG91bGQgYmUg
aWRlbnRpY2FsLgorICAgIGdfYXNzZXJ0KGNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3Vy
ZmFjZTIpKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIpOworCisgICAgLy8g
UmVxdWVzdCBhIG5ldyBzbmFwc2hvdCwgaW5jbHVkaW5nIHRoZSBzZWxlY3Rpb24gdGhpcyB0aW1l
LiBUaGUKKyAgICAvLyBzaXplIHNob3VsZCBiZSB0aGUgc2FtZSBidXQgdGhlIHJlc3VsdCBtdXN0
IGJlIGRpZmZlcmVudCB0byB0aGUKKyAgICAvLyBvbmUgcHJldmlvdXNseSBvYnRhaW5lZC4KKyAg
ICBzdXJmYWNlMiA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9O
X1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hM
SUdIVElORyk7CisgICAgZ19hc3NlcnQoc3VyZmFjZTIpOworICAgIGdfYXNzZXJ0X2NtcGludChj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMiksID09LCB3aWR0aCk7CisgICAg
Z19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMiks
ID09LCBoZWlnaHQpOworICAgIGdfYXNzZXJ0KCFjYWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFjZTEs
IHN1cmZhY2UyKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UyKTsKKworICAg
IC8vIFJlcXVlc3QgYSBzbmFwc2hvdCBvZiB0aGUgd2hvbGUgZG9jdW1lbnQgaW4gdGhlIFdlYlZp
ZXcuIFRoZQorICAgIC8vIHJlc3VsdCBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIHNpemUg
b2J0YWluZWQgcHJldmlvdXNseS4KKyAgICBzdXJmYWNlMiA9IHRlc3QtPndhaXRGb3JTbmFwc2hv
dChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsIFdFQktJVF9TTkFQU0hPVF9P
UFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UyKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTIpLCAgPiwgd2lkdGgpOwor
ICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFj
ZTIpLCA+LCBoZWlnaHQpOworICAgIGdfYXNzZXJ0KCFjYWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFj
ZTEsIHN1cmZhY2UyKSk7CisKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIpOwor
fQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KTsKQEAg
LTExMDUsNiArMTIxMSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBGb3JtQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRGb3Jt
KTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzYXZlIiwgdGVz
dFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInZp
ZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7CisgICAgU25hcHNob3RXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90IiwgdGVzdFdlYlZpZXdTbmFwc2hvdCk7CiB9CiAK
IHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDdlN2ViMDE2NzU4MjFhNWFiMmUzZGE0
MmNjMjVlNjBhZTE3MThiOWEuLjdhZjgxZTUyNjE3YjdlYmFiMThlNDNjZDllOTc5OGI1YjA3OTlm
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dl
YlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTE5OCw2ICsxOTgsMTEgQEAgdm9pZCBXZWJWaWV3VGVzdDo6
cmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZ3RrX3dpZGdldF9zaXplX2Fs
bG9jYXRlKEdUS19XSURHRVQobV93ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwogfQogCit2b2lkIFdl
YlZpZXdUZXN0OjpzZWxlY3RBbGwoKQoreworICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2Vk
aXRpbmdfY29tbWFuZChtX3dlYlZpZXcsICJTZWxlY3RBbGwiKTsKK30KKwogc3RhdGljIHZvaWQg
cmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgc2l6ZV90IGRhdGFTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgK
aW5kZXggMDZmMzk4Zjk2MjY1MDg2M2NjZjQ2YWFjOTQ4Y2U2MGZkMmRiYzQ2Yy4uYWY1NjUxNzU4
YTYzNWI1OTVmN2E3MzczMDc0NmM3NWYxYTZmZGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCkBAIC00OCw2ICs0OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOwogICAgIHZvaWQg
c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lORE9X
X1BPUFVQKTsKICAgICB2b2lkIHJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAg
ICB2b2lkIHNlbGVjdEFsbCgpOwogICAgIGNvbnN0IGNoYXIqIG1haW5SZXNvdXJjZURhdGEoc2l6
ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAKICAgICB2b2lkIG1vdXNlTW92ZVRvKGludCB4
LCBpbnQgeSwgdW5zaWduZWQgaW50IG1vdXNlTW9kaWZpZXJzID0gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IDZmYTM2MDkxOTY1OGE1ODkxZDgw
ZGU1YTgzNWEwN2MzMzg1ZTY3MzkuLmM3NzY2ODZlM2ExM2E2MjA3OWU4ZDQzOWUwY2I1MTU1N2U1
MTFmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBA
IC0yMCwxMiArMjAsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJFeHRlbnNpb24uaCIKIAorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdl
T3B0aW9ucy5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJX
S0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJX
ZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJFeHRlbnNpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAg
LTg5LDYgKzkzLDQwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVN
ZXNzYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBjCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViUGFnZSog
cGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgSW1tdXRhYmxlRGljdGlvbmFyeSYgbWVz
c2FnZSkKK3sKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gU3RyaW5nOjpmcm9tVVRGOCgiR2V0U25h
cHNob3QiKSkgeworICAgICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc3Rh
dGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihzdGF0aWNfY2FzdDxXZWJVSW50NjQqPihtZXNzYWdl
LmdldChTdHJpbmc6OmZyb21VVEY4KCJTbmFwc2hvdE9wdGlvbnMiKSkpLT52YWx1ZSgpKTsKKyAg
ICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1lc3Nh
Z2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIkNhbGxiYWNrSUQiKSkpLT52YWx1ZSgpOworICAgICAg
ICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNfY2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3Rh
dGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiU25hcHNo
b3RSZWdpb24iKSkpLT52YWx1ZSgpKTsKKworICAgICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBz
aG90SW1hZ2U7CisKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZyYW1lVmlldyogZnJhbWVWaWV3ID0g
cGFnZS0+bWFpbkZyYW1lVmlldygpKSB7CisgICAgICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHNu
YXBzaG90UmVjdDsKKyAgICAgICAgICAgIHN3aXRjaCAocmVnaW9uKSB7CisgICAgICAgICAgICBj
YXNlIFNuYXBzaG90UmVnaW9uVmlzaWJsZToKKyAgICAgICAgICAgICAgICBzbmFwc2hvdFJlY3Qg
PSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
RXhjbHVkZVNjcm9sbGJhcnMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1bWVudDoKKyAgICAgICAgICAgICAgICBzbmFwc2hv
dFJlY3QgPSBXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBmcmFtZVZp
ZXctPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIXNuYXBzaG90UmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgc25hcHNob3RJbWFnZSA9IHBhZ2UtPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMo
c25hcHNob3RSZWN0LCAxLCBzbmFwc2hvdE9wdGlvbnMgfCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFi
bGUpOworICAgICAgICB9CisKKyAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBt
ZXNzYWdlUmVwbHk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgi
UGFnZSIpLCBwYWdlKTsKKyAgICAgICAgbWVzc2FnZVJlcGx5LnNldChTdHJpbmc6OmZyb21VVEY4
KCJDYWxsYmFja0lEIiksIFdlYlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAg
bWVzc2FnZVJlcGx5LnNldChTdHJpbmc6OmZyb21VVEY4KCJTbmFwc2hvdCIpLCBzbmFwc2hvdElt
YWdlKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9z
dE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgiV2ViUGFnZS5EaWRHZXRTbmFwc2hvdCIpLCBJbW11
dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtZXNzYWdlUmVwbHkpLmdldCgpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHN0YXRpYyB2b2lkIGRpZENyZWF0
ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKIHsKICAgICB3ZWJraXRXZWJFeHRlbnNpb25QYWdlQ3JlYXRlZChXRUJL
SVRfV0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBsKHBhZ2UpKTsKQEAgLTEwNSw2ICsx
NDMsMTIgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYgbWUKICAgICB3ZWJraXRXZWJFeHRlbnNpb25E
aWRSZWNlaXZlTWVzc2FnZShXRUJLSVRfV0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBs
KG5hbWUpLT5zdHJpbmcoKSwgKnRvSW1wbChzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1l
c3NhZ2VCb2R5KSkpOwogfQogCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShX
S0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBuYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
QVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQo
KSk7CisgICAgd2Via2l0V2ViRXh0ZW5zaW9uRGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0VCS0lU
X1dFQl9FWFRFTlNJT04oY2xpZW50SW5mbyksIHRvSW1wbChwYWdlKSwgdG9JbXBsKG5hbWUpLT5z
dHJpbmcoKSwgKnRvSW1wbChzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5
KSkpOworfQorCiBXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJ
bmplY3RlZEJ1bmRsZSogYnVuZGxlKQogewogICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9F
WFRFTlNJT04sIE5VTEwpKTsKQEAgLTExNiw3ICsxNjAsNyBAQCBXZWJLaXRXZWJFeHRlbnNpb24q
IHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlKQogICAgICAg
ICB3aWxsRGVzdHJveVBhZ2UsCiAgICAgICAgIDAsIC8vIGRpZEluaXRpYWxpemVQYWdlR3JvdXAK
ICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UsCi0gICAgICAgIDAgLy8gZGlkUmVjZWl2ZU1lc3Nh
Z2VUb1BhZ2UKKyAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UKICAgICB9OwogICAgIFdL
QnVuZGxlU2V0Q2xpZW50KHRvQVBJKGJ1bmRsZSksICZ3a0J1bmRsZUNsaWVudCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192271</attachid>
            <date>2013-03-08 12:28:02 -0800</date>
            <delta_ts>2013-03-12 07:54:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130308222403.patch</filename>
            <type>text/plain</type>
            <size>29511</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzdkNzJkZmI2MzEzNjM3
ZDRkZTBjMDgxOGY4MjhkMTE2YzBjZGY5NS4uZWRmYmMwZWJiNjA5NzYzY2Y2OTNhZDk1MGYxNzEw
ZGQ1ZjY4NGM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTA4ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEKKyAgICAgICAgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4gVGhlIEFQSSB1c2VzIHRoZSBpbmplY3RlZCBidW5kbGUKKyAg
ICAgICAgaW50ZXJuYWxseSB0byBnZXQgdGhlIHNuYXBzaG90IGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHA6CisgICAgICAg
ICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmspOiBBZGQgc25hcHNob3QgQVBJIHJlbGF0ZWQg
ZXJyb3IKKyAgICAgICAgcXVhcmsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RXJyb3IuaDogQWRkIHNuYXBzaG90IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFJl
Y2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IEhhbmRsZSB0aGUgbmV3Cisg
ICAgICAgICJEaWRHZXRTbmFwc2hvdCIgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmg6IEFkZCBTbmFwc2hvdFJlZ2lvbiBlbnVtLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdQcml2YXRlKTogQWRkIGEgbWFwIGZvciB0aGUgc25hcHNob3QgcmVzdWx0cy4KKyAgICAg
ICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKKyAgICAgICAgKHdlYktpdFdlYlZpZXdEaWRSZWNl
aXZlU25hcHNob3QpOgorICAgICAgICAod2ViS2l0U25hcHNob3RSZWdpb25Ub1NuYXBzaG90UmVn
aW9uKTogSGVscGVyIG1ldGhvZCBmb3IgY2FzdGluZworICAgICAgICB0aGUgcmVnaW9uIG9wdGlv
biBlbnVtZXJhdGlvbi4KKyAgICAgICAgKGdlbmVyYXRlU25hcHNob3RDYWxsYmFja0lEKTogTWV0
aG9kIHRvIGdlbmVyYXRlIHVuaXF1ZSBjYWxsYmFjaworICAgICAgICBpZHMuCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3RfZmluaXNoKTogTmV3IHNuYXBzaG90dGluZyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBBZGQgdGhlIHByaXZhdGUgbWV0aG9k
CisgICAgICAgIHRvIGhhbmRsZSBhIHJlY2VpdmVkIHNuYXBzaG90LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3IEFQ
SQorICAgICAgICBiaXRzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGNhaXJvU3VyZmFjZXNFcXVhbCk6IEFkZCBoZWxw
ZXIgdG8gY29tcGFyZSBjYWlyb19zdXJmYWNlX3QKKyAgICAgICAgc3RydWN0cy4KKyAgICAgICAg
KHRlc3RXZWJWaWV3U25hcHNob3QpOiBOZXcgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IEFk
ZCB0aGUgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmll
d1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnNlbGVjdEFsbCk6IEFkZCBtZXRob2Qg
dG8gaGVscCB0ZXN0IHNuYXBzaG90cworICAgICAgICBpbmNsdWRpbmcgc2VsZWN0aW9uLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0Lmg6IERpdHRvCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZSk6IEFkZCB0aGlzIG1ldGhvZC4gSXQKKyAgICAgICAgaGFuZGxlcyB0aGUgbmV3IG1lc3NhZ2Ug
IkdldFNuYXBzaG90Ii4KKyAgICAgICAgKGRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUpOiBSZWdpc3RlciBtZXRob2QgYWJv
dmUuCisKIDIwMTMtMDMtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYSBkaWRGb2N1c1RleHRGaWVsZCBjYWxsYmFjayB0byB0aGUgaW5qZWN0
ZWQgYnVuZGxlIGZvcm0gY2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRFcnJvci5jcHAKaW5kZXggZGM0OGIxYzAxMWFjMDdkM2Q5MTIwZmFmMmE2YWI0
OThjMmE4YTBkMC4uYzA2ZGM2MWE1OGNjNGFhMGE2YzE2ZGE2NTQ2NDA0YTYwZTAxMjRmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcApA
QCAtOTEsMyArOTEsOCBAQCBHUXVhcmsgd2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVhcmsoKQog
ewogICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0SmF2YXNjcmlw
dEVycm9yIik7CiB9CisKK0dRdWFyayB3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsoKQorewor
ICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiV2ViS2l0U25hcHNob3RFcnJv
ciIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9y
LmgKaW5kZXggYzIwNTgxNjgzZDQ3ODkwODA0ODUzYTQ4NzE0NjAxNDFjYWM0YTBmYy4uZTdkZTkz
YmMyNWUwZGRjZDQ0NDNlYmFjNzI5ZmU5NTk4M2E2YmNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oCkBAIC0zNSw2ICszNSw3IEBAIEdfQkVH
SU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0RPV05MT0FEX0VSUk9SICAgd2Via2l0X2Rvd25sb2Fk
X2Vycm9yX3F1YXJrICgpCiAjZGVmaW5lIFdFQktJVF9QUklOVF9FUlJPUiAgICAgIHdlYmtpdF9w
cmludF9lcnJvcl9xdWFyayAoKQogI2RlZmluZSBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiB3ZWJr
aXRfcHJpbnRfZXJyb3JfcXVhcmsgKCkKKyNkZWZpbmUgV0VCS0lUX1NOQVBTSE9UX0VSUk9SICAg
d2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrICgpCiAKIC8qKgogICogV2ViS2l0TmV0d29ya0Vy
cm9yOgpAQCAtMTMwLDYgKzEzMSwxNiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9KQVZB
U0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQgPSA2OTkKIH0gV2ViS2l0SmF2YXNjcmlwdEVycm9y
OwogCisvKioKKyAqIFdlYktpdFNuYXBzaG90RXJyb3I6CisgKiBAV0VCS0lUX1NOQVBTSE9UX0VS
Uk9SX0ZBSUxFRF9UT19DUkVBVEU6IEFuIGVycm9yIG9jY3VycmVkIHdoZW4gY3JlYXRpbmcgYSB3
ZWJwYWdlIHNuYXBzaG90LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIGVycm9y
cyBoYXBwZW5kaW5nIHdoZW4gY3JlYXRpbmcgc25hcHNob3RzIG9mICNXZWJLaXRXZWJWaWV3Cisg
Ki8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19D
UkVBVEUgPSA3OTkKK30gV2ViS2l0U25hcHNob3RFcnJvcjsKKwogV0VCS0lUX0FQSSBHUXVhcmsK
IHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrICAgICh2b2lkKTsKIApAQCAtMTQ4LDYgKzE1OSw5
IEBAIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAgICAgICh2b2lkKTsKIFdFQktJVF9BUEkgR1F1
YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyayAodm9pZCk7CiAKK1dFQktJVF9BUEkg
R1F1YXJrCit3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmsgICAodm9pZCk7CisKIEdfRU5EX0RF
Q0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDZkNzg4YmE4
YzNjMWNiYWY2MjRiNDlkZDJkN2MxZGE4ZWEzNzZlMGEuLjI2YTZmOGYxMGY2M2NhYjQ3MmRkY2I2
Y2VjZTQxZjVmMGQwODQ5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTIw
LDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oIgogCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJL
aXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCkBAIC05MCw2ICs5MSwx
MCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViVmlld01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgYwogCiAgICAgICAgIHdlYmtpdFdlYlJlc291cmNl
RmFpbGVkKHJlc291cmNlLmdldCgpLCByZXNvdXJjZUVycm9yLmdldCgpKTsKICAgICAgICAgd2Vi
a2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50
aWZpZXItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwobWVzc2FnZU5hbWUs
ICJEaWRHZXRTbmFwc2hvdCIpKSB7CisgICAgICAgIFdlYlVJbnQ2NCogY2FsbGJhY2tJRCA9IHN0
YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIikpOworICAgICAg
ICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJT
bmFwc2hvdCIpKTsKKyAgICAgICAgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJW
aWV3LCBjYWxsYmFja0lELT52YWx1ZSgpLCBpbWFnZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IGJlMzllODAyY2MzZTc1MzkzN2M4N2Q2ZjMxOWQ5
MmI3OWViYTIzZmEuLjgzOTA0YWQ5YWQzYTYxZDdiY2MxMTViYWRmYjM4NDk4ZTVhZmNmNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgK
QEAgLTEyMCw0ICsxMjAsOSBAQCBHVHlwZSB0eXBlX25hbWUjI19nZXRfdHlwZSh2b2lkKSBcCiB1
bnNpZ25lZCB3a0V2ZW50TW9kaWZpZXJzVG9HZGtNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyk7
CiB1bnNpZ25lZCB3a0V2ZW50TW91c2VCdXR0b25Ub1dlYktpdE1vdXNlQnV0dG9uKFdLRXZlbnRN
b3VzZUJ1dHRvbik7CiAKK2VudW0gU25hcHNob3RSZWdpb24geworICAgIFNuYXBzaG90UmVnaW9u
VmlzaWJsZSwKKyAgICBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1bWVudAorfTsKKwogI2VuZGlmIC8v
IFdlYktpdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyMzIwZTFjM2MxZWJiZWYzMzgyMjhkYmJmNDYxOGJk
MzM2ZjdmYWYxLi5hNTg0MzdlYmM1ZDdhODY3ZTc3ZmUwNWE2ODEyNTYzNTZiOGJkOGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlZpZXcuaCIKIAorI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCkBAIC0xMzIsNiArMTMzLDcgQEAgZW51bSB7
CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3Vy
Y2U+ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKK3R5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgR1Jl
ZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+ID4gU25hcHNob3RSZXN1bHRzTWFwOwogCiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICB+X1dlYktpdFdlYlZpZXdQcml2YXRlKCkKQEAg
LTE3Nyw2ICsxNzksOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVm
UHRyPEdDYW5jZWxsYWJsZT4gZmF2aWNvbkNhbmNlbGxhYmxlOwogICAgIENTdHJpbmcgZmF2aWNv
blVSSTsKICAgICB1bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOworCisgICAg
U25hcHNob3RSZXN1bHRzTWFwIHNuYXBzaG90UmVzdWx0c01hcDsKIH07CiAKIHN0YXRpYyBndWlu
dCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTI5MjIsMyArMjkyNiwxMDYgQEAg
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF90bHNfaW5mbyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBHVGxzQ2VydGlmaWNhdGUqKgogCiAgICAgcmV0dXJuICEhY2VydGlmaWNhdGVJbmZvLmNl
cnRpZmljYXRlKCk7CiB9CisKK3N0cnVjdCBHZXRTbmFwc2hvdEFzeW5jRGF0YSB7CisgICAgR1Jl
ZlB0cjxHQ2FuY2VsbGFibGU+IGNhbmNlbGxhYmxlOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IHNuYXBzaG90OworfTsKK1dFQktJVF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0U25h
cHNob3RBc3luY0RhdGEpCisKK3ZvaWQgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCB1aW50NjRfdCBjYWxsYmFja0lELCBXZWJJbWFnZSogd2Vi
SW1hZ2UpCit7CisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IHdlYlZp
ZXctPnByaXYtPnNuYXBzaG90UmVzdWx0c01hcC50YWtlKGNhbGxiYWNrSUQpOworICAgIEdldFNu
YXBzaG90QXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8R2V0U25hcHNob3RBc3luY0RhdGEq
PihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQuZ2V0KCkp
KTsKKyAgICBHRXJyb3IqIGVycm9yID0gMDsKKyAgICBpZiAoZ19jYW5jZWxsYWJsZV9zZXRfZXJy
b3JfaWZfY2FuY2VsbGVkKGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3IpKQorICAgICAg
ICBnX3NpbXBsZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0KCksIGVycm9yKTsK
KyAgICBlbHNlIGlmICh3ZWJJbWFnZSkgeworICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gaW1hZ2UgPSB3ZWJJbWFnZS0+Yml0bWFwKCkpCisgICAgICAgICAgICBkYXRhLT5zbmFw
c2hvdCA9IGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBnX3NldF9lcnJvcl9saXRlcmFsKCZlcnJvciwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SLCBXRUJL
SVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSwgXygiVGhlcmUgd2FzIGFuIGVycm9y
IGNyZWF0aW5nIHRoZSBzbmFwc2hvdCIpKTsKKyAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0
X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAgfQorCisgICAgZ19zaW1wbGVf
YXN5bmNfcmVzdWx0X2NvbXBsZXRlKHJlc3VsdC5nZXQoKSk7Cit9CisKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBTbmFwc2hvdFJl
Z2lvblZpc2libGUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfU05BUFNI
T1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsIFNuYXBzaG90UmVnaW9uRnVsbERvY3VtZW50KTsKKwor
c3RhdGljIGlubGluZSB1bnNpZ25lZCB3ZWJLaXRTbmFwc2hvdE9wdGlvbnNUb1NuYXBzaG90T3B0
aW9ucyhXZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBTbmFwc2hvdE9wdGlv
bnMgc25hcHNob3RPcHRpb25zID0gMDsKKworICAgIGlmICghKG9wdGlvbnMgJiBXRUJLSVRfU05B
UFNIT1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkcpKQorICAgICAgICBz
bmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdo
dGluZzsKKworICAgIHJldHVybiBzbmFwc2hvdE9wdGlvbnM7Cit9CisKK3N0YXRpYyBpbmxpbmUg
dWludDY0X3QgZ2VuZXJhdGVTbmFwc2hvdENhbGxiYWNrSUQoKQoreworICAgIHN0YXRpYyB1aW50
NjRfdCB1bmlxdWVDYWxsYmFja0lEID0gMTsKKyAgICByZXR1cm4gdW5pcXVlQ2FsbGJhY2tJRCsr
OworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Q6CisgKiBAd2ViX3Zp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBvcHRpb25zOiAjV2ViS2l0U25hcHNob3RPcHRpb25z
IGZvciB0aGUgc25hcHNob3QKKyAqIEByZWdpb246IHRoZSAjV2ViS2l0U25hcHNob3RSZWdpb24g
Zm9yIHRoaXMgc25hcHNob3QKKyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBhICNHQ2Fu
Y2VsbGFibGUKKyAqIEBjYWxsYmFjazogKHNjb3BlIGFzeW5jKTogYSAjR0FzeW5jUmVhZHlDYWxs
YmFjaworICogQHVzZXJfZGF0YTogKGNsb3N1cmUpOiB1c2VyIGRhdGEKKyAqCisgKiBBc3luY2hy
b25vdXNseSByZXRyaWV2ZXMgYSBzbmFwc2hvdCBvZiBAd2ViX3ZpZXcgZm9yIEByZWdpb24uCisg
KiBAb3B0aW9ucyBzcGVjaWZpZXMgaG93IHRoZSBzbmFwc2hvdCBzaG91bGQgYmUgcmVuZGVyZWQu
CisgKgorICogV2hlbiB0aGUgb3BlcmF0aW9uIGlzIGZpbmlzaGVkLCBAY2FsbGJhY2sgd2lsbCBi
ZSBjYWxsZWQuIFlvdSBtdXN0CisgKiBjYWxsIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3Rf
ZmluaXNoKCkgdG8gZ2V0IHRoZSByZXN1bHQgb2YgdGhlCisgKiBvcGVyYXRpb24uCisgKiovCit2
b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0U25hcHNob3RSZWdpb24gcmVnaW9uLCBXZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9u
cywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFj
aywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOworCisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJl
c3VsdCA9IGFkb3B0R1JlZihnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZp
ZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50
ZXI+KHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QpKSk7CisgICAgR2V0U25hcHNob3RBc3lu
Y0RhdGEqIGRhdGEgPSBjcmVhdGVHZXRTbmFwc2hvdEFzeW5jRGF0YSgpOworICAgIGRhdGEtPmNh
bmNlbGxhYmxlID0gY2FuY2VsbGFibGU7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9v
cF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpLCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0
cm95Tm90aWZ5PihkZXN0cm95R2V0U25hcHNob3RBc3luY0RhdGEpKTsKKworICAgIEltbXV0YWJs
ZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2FnZTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Z2VuZXJhdGVTbmFwc2hvdENhbGxiYWNrSUQoKTsKKyAgICBtZXNzYWdlLnNldChTdHJpbmc6OmZy
b21VVEY4KCJTbmFwc2hvdE9wdGlvbnMiKSwgV2ViVUludDY0OjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNob3RPcHRpb25zKG9wdGlvbnMp
KSkpOworICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIlNuYXBzaG90UmVnaW9uIiks
IFdlYlVJbnQ2NDo6Y3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWdpb24pKSk7CisgICAg
bWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiQ2FsbGJhY2tJRCIpLCBXZWJVSW50NjQ6OmNy
ZWF0ZShjYWxsYmFja0lEKSk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5zbmFwc2hvdFJlc3VsdHNN
YXAuc2V0KGNhbGxiYWNrSUQsIHJlc3VsdC5nZXQoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+
cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFN0cmluZzo6ZnJvbVVURjgoIkdldFNuYXBzaG90
IiksIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1lc3NhZ2UpLmdldCgpKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzog
YSAjV2ViS2l0V2ViVmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6
IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmlu
aXNoZXMgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdCgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSAj
Y2Fpcm9fc3VyZmFjZV90IHdpdGggdGhlIHJldHJpZXZlZCBzbmFwc2hvdCBvciAlTlVMTCBpbiBl
cnJvci4KKyAqKi8KK2NhaXJvX3N1cmZhY2VfdCogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dF9maW5pc2goV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdF
cnJvcioqIGVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoR19JU19BU1lOQ19S
RVNVTFQocmVzdWx0KSwgMCk7CisKKyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdf
U0lNUExFX0FTWU5DX1JFU1VMVChyZXN1bHQpOworICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxl
X2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3QpOworCisgICAgaWYgKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVf
ZXJyb3Ioc2ltcGxlLCBlcnJvcikpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNh
aXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4o
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlKSktPnNuYXBz
aG90LmdldCgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaAppbmRleCBhYWU4NDliZjA4OTVmMjZhM2ZhMWYzZmMzNTViZjRhNGUwMzYz
OGY3Li41ZDQ2ZmY1Yjk1ZGQzYmY1MjRhMDhmY2U5OGFmNzAzNDgxNmUzNzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xNTks
NiArMTU5LDM0IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1ZJRVdfTU9ERV9TT1VSQ0UK
IH0gV2ViS2l0Vmlld01vZGU7CiAKKy8qKgorICogV2ViS2l0U25hcHNob3RPcHRpb25zOgorICog
QFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkU6IERvIG5vdCBpbmNsdWRlIGFueSBzcGVjaWFs
IG9wdGlvbnMuCisgKiBAV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05f
SElHSExJR0hUSU5HOiBXaGV0aGVyIHRvIGluY2x1ZGUgaW4gdGhlCisgKiBzbmFwc2hvdCB0aGUg
aGlnaGxpZ2h0IG9mIHRoZSBzZWxlY3RlZCBjb250ZW50LgorICoKKyAqIEVudW0gdmFsdWVzIHVz
ZWQgdG8gc3BlY2lmeSBvcHRpb25zIHdoZW4gdGFraW5nIGEgc25hcHNob3QKKyAqIGZyb20gYSAj
V2ViS2l0V2ViVmlldy4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgV0VCS0lUX1NOQVBTSE9UX09Q
VElPTlNfTk9ORSA9IDAsCisgIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xVREVfU0VMRUNU
SU9OX0hJR0hMSUdIVElORyA9IDEgPDwgMCwKK30gV2ViS2l0U25hcHNob3RPcHRpb25zOworCisv
KioKKyAqIFdlYktpdFNuYXBzaG90UmVnaW9uOgorICogQFdFQktJVF9TTkFQU0hPVF9SRUdJT05f
VklTSUJMRTogU3BlY2lmaWVzIGEgc25hcHNob3Qgb25seSBmb3IgdGhlIGFyZWEgdGhhdCBpcwor
ICogdmlzaWJsZSBpbiB0aGUgd2VidmlldworICogQFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVM
TF9ET0NVTUVOVDogQSBzbmFwc2hvdCBvZiB0aGUgZW50aXJlIGRvY3VtZW50LgorICoKKyAqIEVu
dW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSB0aGUgcmVnaW9uIGZyb20gd2hpY2ggdG8gZ2V0IGEg
I1dlYktpdFdlYlZpZXcKKyAqIHNuYXBzaG90CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIFdFQktJ
VF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSA9IDAsCisgIFdFQktJVF9TTkFQU0hPVF9SRUdJT05f
RlVMTF9ET0NVTUVOVCwKK30gV2ViS2l0U25hcHNob3RSZWdpb247CisKIHN0cnVjdCBfV2ViS2l0
V2ViVmlldyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50OwogCkBAIC00MTgsNyArNDQ2
LDE4IEBAIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8g
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92
aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1Rsc0NlcnRpZmljYXRlICAgICAgICAgICoqY2VydGlmaWNhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVG
bGFncyAgICAgICplcnJvcnMpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFNuYXBzaG90UmVnaW9uICAgICAgIHJlZ2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBz
aG90T3B0aW9ucyAgICAgIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxs
YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAg
ICAgICAgICAgdXNlcl9kYXRhKTsKIAorV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgord2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpy
ZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CiBHX0VORF9ERUNMUwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDZkMGNkZjI3NGEyZTUyYzA3NDUxODI0NGM3MDI0Njgx
ODllZTkyMDUuLmM0MTg1YmI5ZWM1MzA1MmYzOTkxZDRlZDY0MTU1YjAwZDcwMzU0NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBXZWJLaXRXZWJWaWV3UHJpdmF0
ZV9oCiAjZGVmaW5lIFdlYktpdFdlYlZpZXdQcml2YXRlX2gKIAorI2luY2x1ZGUgIldlYkltYWdl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtNTAsNiArNTEsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmll
d1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94
eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCopOwogdm9p
ZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3
R2V0TG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIpOwordm9pZCB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KFdlYktpdFdl
YlZpZXcqLCB1aW50NjRfdCBjYWxsYmFja0lELCBXZWJLaXQ6OldlYkltYWdlKik7CiB2b2lkIHdl
YmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllcik7CiBib29sIHdlYmtpdFdlYlZpZXdFbnRlckZ1bGxTY3Jl
ZW4oV2ViS2l0V2ViVmlldyopOwogYm9vbCB3ZWJraXRXZWJWaWV3TGVhdmVGdWxsU2NyZWVuKFdl
YktpdFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGY2ZThhODQ3Nzdi
ZTI3YjQ1YmVkZTMwMzY1YjI0NDA5ZmIyYTI5Y2EuLjA1MTkyZTA5ZDdmOTE1OWY2YjgyN2JhOTk3
Yzg1ZjY0NzEzMzAyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNzUsNiArNzUs
OCBAQCBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUKIFdlYktpdFNhdmVNb2RlCiBXZWJLaXRWaWV3
TW9kZQogV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKK1dlYktpdFNuYXBzaG90T3B0aW9ucwor
V2ViS2l0U25hcHNob3RSZWdpb24KIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0xMzQsNiArMTM2LDggQEAgd2Via2l0X3dlYl92
aWV3X2Rvd25sb2FkX3VyaQogd2Via2l0X3dlYl92aWV3X3NldF92aWV3X21vZGUKIHdlYmtpdF93
ZWJfdmlld19nZXRfdmlld19tb2RlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Rsc19pbmZvCit3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2Zp
bmlzaAogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdApAQCAtNjA3LDE4ICs2MTEsMjEgQEAgV0VCS0lUX1BPTElDWV9FUlJPUgogV0VC
S0lUX0RPV05MT0FEX0VSUk9SCiBXRUJLSVRfUFJJTlRfRVJST1IKIFdFQktJVF9KQVZBU0NSSVBU
X0VSUk9SCitXRUJLSVRfU05BUFNIT1RfRVJST1IKIFdlYktpdE5ldHdvcmtFcnJvcgogV2ViS2l0
UGx1Z2luRXJyb3IKIFdlYktpdFBvbGljeUVycm9yCiBXZWJLaXREb3dubG9hZEVycm9yCiBXZWJL
aXRQcmludEVycm9yCiBXZWJLaXRKYXZhc2NyaXB0RXJyb3IKK1dlYktpdFNuYXBzaG90RXJyb3IK
IHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1YXJrCiB3ZWJraXRfcGx1Z2luX2Vycm9yX3F1YXJrCiB3
ZWJraXRfcG9saWN5X2Vycm9yX3F1YXJrCiB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsKIHdl
YmtpdF9wcmludF9lcnJvcl9xdWFyawogd2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVhcmsKK3dl
YmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyawogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCA5Y2YxZGRjY2Y3OTRhM2MwOTVmNjMxOGI2Y2MwOTIzNjRk
YmFmNWMxLi45YjRmMTE0MGRjZTM5Zjc3MDkyOGM1YTRiYmQ2Y2Y2NWI4MjNmMmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMDg1LDYgKzEwODUsMTM1IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3TW9kZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fz
c2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCBpbmRleEhUTUwpOwogfQogCitjbGFz
cyBTbmFwc2hvdFdlYlZpZXdUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorICAg
IE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoU25hcHNob3RXZWJWaWV3VGVzdCk7CisKKyAgICBTbmFw
c2hvdFdlYlZpZXdUZXN0KCkKKyAgICAgICAgOiBtX3N1cmZhY2UoMCkKKyAgICB7CisgICAgfQor
CisgICAgflNuYXBzaG90V2ViVmlld1Rlc3QoKQorICAgIHsKKyAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9kZXN0cm95KG1fc3VyZmFjZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgb25TbmFwc2hv
dFJlYWR5KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgU25hcHNo
b3RXZWJWaWV3VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICAgICAgdGVzdC0+bV9zdXJmYWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dF9maW5pc2god2ViX3ZpZXcsIHJlcywgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3Nl
cnQoIXRlc3QtPm1fc3VyZmFjZSB8fCAhZXJyb3IuZ2V0KCkpOworICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1NOQVBTSE9U
X0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSk7CisgICAgICAg
IHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogd2Fp
dEZvclNuYXBzaG90KFdlYktpdFNuYXBzaG90UmVnaW9uIHJlZ2lvbiwgV2ViS2l0U25hcHNob3RP
cHRpb25zIG9wdGlvbnMpCisgICAgeworICAgICAgICBtX3N1cmZhY2UgPSAwOworICAgICAgICB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KG1fd2ViVmlldywgcmVnaW9uLCBvcHRpb25zLCAw
LCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KG9uU25hcHNob3RSZWFkeSks
IHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIHJl
dHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3N1cmZhY2UpOworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIG9uU25hcHNob3RDYW5jZWxsZWRSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dywgR0FzeW5jUmVzdWx0KiByZXMsIFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QpCisgICAgewor
ICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIHRlc3QtPm1fc3VyZmFjZSA9
IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJv
ci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UpOworICAgICAg
ICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5D
RUxMRUQpOworICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICB9CisKKyAgICBnYm9v
bGVhbiBnZXRTbmFwc2hvdEFuZENhbmNlbCgpCisgICAgeworICAgICAgICBtX3N1cmZhY2UgPSAw
OworICAgICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYo
Z19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNo
b3QobV93ZWJWaWV3LCBXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQ
U0hPVF9PUFRJT05TX05PTkUsIGNhbmNlbGxhYmxlLmdldCgpLCByZWludGVycHJldF9jYXN0PEdB
c3luY1JlYWR5Q2FsbGJhY2s+KG9uU25hcHNob3RDYW5jZWxsZWRSZWFkeSksIHRoaXMpOworICAg
ICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChjYW5jZWxsYWJsZS5nZXQoKSk7CisgICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKK307CisKK3N0YXRpYyBnYm9vbGVh
biBjYWlyb1N1cmZhY2VzRXF1YWwoY2Fpcm9fc3VyZmFjZV90KiBzMSwgY2Fpcm9fc3VyZmFjZV90
KiBzMikKK3sKKyAgICByZXR1cm4gKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzMSkg
PT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0KHMyKQorICAgICAgICAmJiBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF93aWR0aChzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoczIpCisgICAgICAgICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzMSkgPT0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHMyKQorICAgICAgICAmJiBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9zdHJpZGUoczEpID09IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlk
ZShzMikKKyAgICAgICAgJiYgIW1lbWNtcChjb25zdF9jYXN0PGNvbnN0IHZvaWQqPihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHMxKSkpLAorICAg
ICAgICAgICAgY29uc3RfY2FzdDxjb25zdCB2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzMikpKSwKKyAgICAgICAgICAgIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzMSkqY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KHMxKSkpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxo
dG1sPjxib2R5PjxwPldoYXRldmVyPC9wPjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICAvLyBXZWJWaWV3IG5vdCB2aXNpYmxlLgor
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VC
S0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05F
KTsKKyAgICBnX2Fzc2VydCghc3VyZmFjZTEpOworCisgICAgLy8gU2hvdyBzdXJmYWNlLCByZXNp
emUgdG8gNTB4NTAsIHRyeSBhZ2Fpbi4KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50
aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5yZXNpemVWaWV3KDUwLCA1MCk7CisgICAgc3VyZmFjZTEg
PSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBX
RUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMSk7CisK
KyAgICAvLyBvYnRhaW5lZCBzdXJmYWNlIHNob3VsZCBiZSBhdCB0aGUgbW9zdCA1MHg1MC4gU3Rv
cmUgdGhlIHNpemUKKyAgICAvLyBmb3IgY29tcGFyaXNvbiBsYXRlci4KKyAgICBpbnQgd2lkdGgg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSk7CisgICAgaW50IGhlaWdo
dCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMSk7CisgICAgZ19hc3Nl
cnRfY21waW50KHdpZHRoLCA8PSwgNTApOworICAgIGdfYXNzZXJ0X2NtcGludChoZWlnaHQsIDw9
LCA1MCk7CisKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTEpOworCisgICAgLy8g
U2VsZWN0IGFsbCB0ZXh0IGluIHRoZSBXZWJWaWV3LCByZXF1ZXN0IGEgc25hcHNob3QgaWdub3Jp
bmcgc2VsZWN0aW9uLgorICAgIHRlc3QtPnNlbGVjdEFsbCgpOworICAgIHN1cmZhY2UxID0gdGVz
dC0+d2FpdEZvclNuYXBzaG90KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lU
X1NOQVBTSE9UX09QVElPTlNfTk9ORSk7CisgICAgZ19hc3NlcnQoc3VyZmFjZTEpOworICAgIGdf
YXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSksID09
LCB3aWR0aCk7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChzdXJmYWNlMSksID09LCBoZWlnaHQpOworCisgICAgLy8gQ3JlYXRlIGlkZW50aWNhbCBz
dXJmYWNlLgorICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25h
cHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BU
SU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMik7CisKKyAgICAvLyBDb21wYXJlIHRo
ZXNlIHR3bywgdGhleSBzaG91bGQgYmUgaWRlbnRpY2FsLgorICAgIGdfYXNzZXJ0KGNhaXJvU3Vy
ZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ry
b3koc3VyZmFjZTIpOworCisgICAgLy8gUmVxdWVzdCBhIG5ldyBzbmFwc2hvdCwgaW5jbHVkaW5n
IHRoZSBzZWxlY3Rpb24gdGhpcyB0aW1lLiBUaGUKKyAgICAvLyBzaXplIHNob3VsZCBiZSB0aGUg
c2FtZSBidXQgdGhlIHJlc3VsdCBtdXN0IGJlIGRpZmZlcmVudCB0byB0aGUKKyAgICAvLyBvbmUg
cHJldmlvdXNseSBvYnRhaW5lZC4KKyAgICBzdXJmYWNlMiA9IHRlc3QtPndhaXRGb3JTbmFwc2hv
dChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05T
X0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORyk7CisgICAgZ19hc3NlcnQoc3VyZmFjZTIp
OworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJm
YWNlMiksID09LCB3aWR0aCk7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2hlaWdodChzdXJmYWNlMiksID09LCBoZWlnaHQpOworICAgIGdfYXNzZXJ0KCFjYWly
b1N1cmZhY2VzRXF1YWwoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KHN1cmZhY2UyKTsKKworICAgIC8vIFJlcXVlc3QgYSBzbmFwc2hvdCBvZiB0aGUgd2hv
bGUgZG9jdW1lbnQgaW4gdGhlIFdlYlZpZXcuIFRoZQorICAgIC8vIHJlc3VsdCBzaG91bGQgYmUg
ZGlmZmVyZW50IGZyb20gdGhlIHNpemUgb2J0YWluZWQgcHJldmlvdXNseS4KKyAgICBzdXJmYWNl
MiA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9D
VU1FTlQsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1cmZh
Y2UyKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgo
c3VyZmFjZTIpLCAgPiwgd2lkdGgpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTIpLCA+LCBoZWlnaHQpOworICAgIGdfYXNzZXJ0KCFj
YWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CisKKyAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3koc3VyZmFjZTEpOworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNl
Mik7CisKKyAgICBnX2Fzc2VydCh0ZXN0LT5nZXRTbmFwc2hvdEFuZENhbmNlbCgpKTsKK30KKwog
dm9pZCBiZWZvcmVBbGwoKQogewogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiZGVmYXVsdC1jb250ZXh0IiwgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dCk7CkBAIC0xMTA1
LDYgKzEyMzQsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgRm9ybUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJzdWJtaXQtZm9ybSIsIHRlc3RXZWJWaWV3U3VibWl0Rm9ybSk7CiAg
ICAgU2F2ZVdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2F2ZSIsIHRlc3RXZWJW
aWV3U2F2ZSk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ2aWV3LW1v
ZGUiLCB0ZXN0V2ViVmlld01vZGUpOworICAgIFNuYXBzaG90V2ViVmlld1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJzbmFwc2hvdCIsIHRlc3RXZWJWaWV3U25hcHNob3QpOwogfQogCiB2b2lk
IGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRleCA3ZTdlYjAxNjc1ODIxYTVhYjJlM2RhNDJjYzI1
ZTYwYWUxNzE4YjlhLi43YWY4MWU1MjYxN2I3ZWJhYjE4ZTQzY2Q5ZTk3OThiNWIwNzk5ZjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2Vi
Vmlld1Rlc3QuY3BwCkBAIC0xOTgsNiArMTk4LDExIEBAIHZvaWQgV2ViVmlld1Rlc3Q6OnJlc2l6
ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0
ZShHVEtfV0lER0VUKG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsKIH0KIAordm9pZCBXZWJWaWV3
VGVzdDo6c2VsZWN0QWxsKCkKK3sKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5n
X2NvbW1hbmQobV93ZWJWaWV3LCAiU2VsZWN0QWxsIik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc291
cmNlR2V0RGF0YUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIHNpemVfdCBkYXRhU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCmluZGV4
IDA2ZjM5OGY5NjI2NTA4NjNjY2Y0NmFhYzk0OGNlNjBmZDJkYmM0NmMuLmFmNTY1MTc1OGE2MzVi
NTk1ZjdhNzM3MzA3NDZjNzVmMWE2ZmRiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaApAQCAtNDgsNiArNDgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3YWl0VW50aWxUaXRsZUNoYW5nZWQoKTsKICAgICB2b2lkIHNob3dJ
bldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHdGtXaW5kb3dUeXBlID0gR1RLX1dJTkRPV19QT1BV
UCk7CiAgICAgdm9pZCByZXNpemVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9p
ZCBzZWxlY3RBbGwoKTsKICAgICBjb25zdCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhKHNpemVfdCYg
bWFpblJlc291cmNlRGF0YVNpemUpOwogCiAgICAgdm9pZCBtb3VzZU1vdmVUbyhpbnQgeCwgaW50
IHksIHVuc2lnbmVkIGludCBtb3VzZU1vZGlmaWVycyA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAppbmRleCA2ZmEzNjA5MTk2NThhNTg5MWQ4MGRlNWE4
MzVhMDdjMzM4NWU2NzM5Li4yZjRkMDhhM2RjMTE2ZDFhZmYyOWJkNmZhMzU1MGE4OWU1OWQ4YjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMjAs
MTIgKzIwLDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0
ZW5zaW9uLmgiCiAKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbWFnZU9wdGlv
bnMuaCIKICNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tCdW5k
bGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSAiV2ViSW1h
Z2UuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0
ZW5zaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC04OSw2
ICs5Myw0MCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlTWVzc2Fn
ZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgYwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0V2ViRXh0ZW5zaW9uRGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYlBhZ2UqIHBhZ2Us
IGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEltbXV0YWJsZURpY3Rpb25hcnkmIG1lc3NhZ2Up
Cit7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IFN0cmluZygiR2V0U25hcHNob3QiKSkgeworICAg
ICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc3RhdGljX2Nhc3Q8U25hcHNo
b3RPcHRpb25zPihzdGF0aWNfY2FzdDxXZWJVSW50NjQqPihtZXNzYWdlLmdldChTdHJpbmc6OmZy
b21VVEY4KCJTbmFwc2hvdE9wdGlvbnMiKSkpLT52YWx1ZSgpKTsKKyAgICAgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFj
a0lEIikpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNf
Y2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2FnZS5nZXQo
IlNuYXBzaG90UmVnaW9uIikpLT52YWx1ZSgpKTsKKworICAgICAgICBSZWZQdHI8V2ViSW1hZ2U+
IHNuYXBzaG90SW1hZ2U7CisKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZyYW1lVmlldyogZnJhbWVW
aWV3ID0gcGFnZS0+bWFpbkZyYW1lVmlldygpKSB7CisgICAgICAgICAgICBXZWJDb3JlOjpJbnRS
ZWN0IHNuYXBzaG90UmVjdDsKKyAgICAgICAgICAgIHN3aXRjaCAocmVnaW9uKSB7CisgICAgICAg
ICAgICBjYXNlIFNuYXBzaG90UmVnaW9uVmlzaWJsZToKKyAgICAgICAgICAgICAgICBzbmFwc2hv
dFJlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6RXhjbHVkZVNjcm9sbGJhcnMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1bWVudDoKKyAgICAgICAgICAgICAgICBz
bmFwc2hvdFJlY3QgPSBXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KDAsIDApLCBm
cmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXNuYXBzaG90UmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgc25hcHNob3RJbWFnZSA9IHBhZ2UtPnNjYWxlZFNuYXBzaG90V2l0aE9w
dGlvbnMoc25hcHNob3RSZWN0LCAxLCBzbmFwc2hvdE9wdGlvbnMgfCBTbmFwc2hvdE9wdGlvbnNT
aGFyZWFibGUpOworICAgICAgICB9CisKKyAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFw
VHlwZSBtZXNzYWdlUmVwbHk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlBhZ2UiLCBwYWdl
KTsKKyAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiQ2FsbGJhY2tJRCIsIFdlYlVJbnQ2NDo6Y3Jl
YXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiU25hcHNob3QiLCBz
bmFwc2hvdEltYWdlKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5k
bGUoKS0+cG9zdE1lc3NhZ2UoIldlYlBhZ2UuRGlkR2V0U25hcHNob3QiLCBJbW11dGFibGVEaWN0
aW9uYXJ5OjphZG9wdChtZXNzYWdlUmVwbHkpLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKICAgICB3ZWJraXRXZWJFeHRlbnNpb25QYWdlQ3JlYXRlZChXRUJLSVRfV0VCX0VY
VEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBsKHBhZ2UpKTsKQEAgLTEwNSw2ICsxNDMsMTIgQEAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmlu
Z1JlZiBuYW1lLCBXS1R5cGVSZWYgbWUKICAgICB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZl
TWVzc2FnZShXRUJLSVRfV0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBsKG5hbWUpLT5z
dHJpbmcoKSwgKnRvSW1wbChzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5
KSkpOwogfQogCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVJl
ZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgQVNTRVJUKFdL
R2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisgICAg
d2Via2l0V2ViRXh0ZW5zaW9uRGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0VCS0lUX1dFQl9FWFRF
TlNJT04oY2xpZW50SW5mbyksIHRvSW1wbChwYWdlKSwgdG9JbXBsKG5hbWUpLT5zdHJpbmcoKSwg
KnRvSW1wbChzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KSkpOworfQor
CiBXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1
bmRsZSogYnVuZGxlKQogewogICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uID0gV0VC
S0lUX1dFQl9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04s
IE5VTEwpKTsKQEAgLTExNiw3ICsxNjAsNyBAQCBXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdl
YkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlKQogICAgICAgICB3aWxsRGVz
dHJveVBhZ2UsCiAgICAgICAgIDAsIC8vIGRpZEluaXRpYWxpemVQYWdlR3JvdXAKICAgICAgICAg
ZGlkUmVjZWl2ZU1lc3NhZ2UsCi0gICAgICAgIDAgLy8gZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UK
KyAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UKICAgICB9OwogICAgIFdLQnVuZGxlU2V0
Q2xpZW50KHRvQVBJKGJ1bmRsZSksICZ3a0J1bmRsZUNsaWVudCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192682</attachid>
            <date>2013-03-12 02:42:00 -0700</date>
            <delta_ts>2013-03-12 03:45:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130312113757.patch</filename>
            <type>text/plain</type>
            <size>30609</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzdkNzJkZmI2MzEzNjM3
ZDRkZTBjMDgxOGY4MjhkMTE2YzBjZGY5NS4uNDE0NzI3MDA0YzE2MmEyYzFkOTFmZDc0MjRlOTU0
ZThhMmM1ODg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAzLTEyICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEKKyAgICAgICAgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4gVGhlIEFQSSB1c2VzIHRoZSBpbmplY3RlZCBidW5kbGUKKyAg
ICAgICAgaW50ZXJuYWxseSB0byBnZXQgdGhlIHNuYXBzaG90IGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHA6CisgICAgICAg
ICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmspOiBBZGQgc25hcHNob3QgQVBJIHJlbGF0ZWQg
ZXJyb3IKKyAgICAgICAgcXVhcmsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RXJyb3IuaDogQWRkIHNuYXBzaG90IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFJl
Y2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IEhhbmRsZSB0aGUgbmV3Cisg
ICAgICAgICJEaWRHZXRTbmFwc2hvdCIgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmg6IEFkZCBTbmFwc2hvdFJlZ2lvbiBlbnVtLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdQcml2YXRlKTogQWRkIGEgbWFwIGZvciB0aGUgc25hcHNob3QgcmVzdWx0cy4KKyAgICAg
ICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKKyAgICAgICAgKHdlYktpdFdlYlZpZXdEaWRSZWNl
aXZlU25hcHNob3QpOgorICAgICAgICAod2ViS2l0U25hcHNob3RSZWdpb25Ub1NuYXBzaG90UmVn
aW9uKTogSGVscGVyIG1ldGhvZCBmb3IgY2FzdGluZworICAgICAgICB0aGUgcmVnaW9uIG9wdGlv
biBlbnVtZXJhdGlvbi4KKyAgICAgICAgKGdlbmVyYXRlU25hcHNob3RDYWxsYmFja0lEKTogTWV0
aG9kIHRvIGdlbmVyYXRlIHVuaXF1ZSBjYWxsYmFjaworICAgICAgICBpZHMuCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3RfZmluaXNoKTogTmV3IHNuYXBzaG90dGluZyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBBZGQgdGhlIHByaXZhdGUgbWV0aG9k
CisgICAgICAgIHRvIGhhbmRsZSBhIHJlY2VpdmVkIHNuYXBzaG90LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3IEFQ
SQorICAgICAgICBiaXRzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGNhaXJvU3VyZmFjZXNFcXVhbCk6IEFkZCBoZWxw
ZXIgdG8gY29tcGFyZSBjYWlyb19zdXJmYWNlX3QKKyAgICAgICAgc3RydWN0cy4KKyAgICAgICAg
KHRlc3RXZWJWaWV3U25hcHNob3QpOiBOZXcgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IEFk
ZCB0aGUgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmll
d1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnNlbGVjdEFsbCk6IEFkZCBtZXRob2Qg
dG8gaGVscCB0ZXN0IHNuYXBzaG90cworICAgICAgICBpbmNsdWRpbmcgc2VsZWN0aW9uLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0Lmg6IERpdHRvCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHA6CisgICAgICAgIChkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6IERpdHRvLgorICAgICAg
ICAod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKTogUmVnaXN0ZXIgbWV0aG9kIGFib3ZlLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNw
cDoKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2FnZSk6IEFkZCB0aGlzIG1l
dGhvZC4gSXQKKyAgICAgICAgaGFuZGxlcyB0aGUgbmV3IG1lc3NhZ2UgIkdldFNuYXBzaG90Ii4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFn
ZVByaXZhdGUuaDoKKyAgICAgICAgQWRkIG1ldGhvZCBhYm92ZS4KKwogMjAxMy0wMy0wNyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGRpZEZv
Y3VzVGV4dEZpZWxkIGNhbGxiYWNrIHRvIHRoZSBpbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcApp
bmRleCBkYzQ4YjFjMDExYWMwN2QzZDkxMjBmYWYyYTZhYjQ5OGMyYThhMGQwLi5jMDZkYzYxYTU4
Y2M0YWEwYTZjMTZkYTY1NDY0MDRhNjBlMDEyNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCkBAIC05MSwzICs5MSw4IEBAIEdRdWFy
ayB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyaygpCiB7CiAgICAgcmV0dXJuIGdfcXVhcmtf
ZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRKYXZhc2NyaXB0RXJyb3IiKTsKIH0KKworR1F1YXJr
IHdlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyaygpCit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJv
bV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRTbmFwc2hvdEVycm9yIik7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaAppbmRleCBjMjA1ODE2ODNkNDc4
OTA4MDQ4NTNhNDg3MTQ2MDE0MWNhYzRhMGZjLi5lN2RlOTNiYzI1ZTBkZGNkNDQ0M2ViYWM3Mjlm
ZTk1OTgzYTZiY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEVycm9yLmgKQEAgLTM1LDYgKzM1LDcgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJL
SVRfRE9XTkxPQURfRVJST1IgICB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsgKCkKICNkZWZp
bmUgV0VCS0lUX1BSSU5UX0VSUk9SICAgICAgd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrICgpCiAj
ZGVmaW5lIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAo
KQorI2RlZmluZSBXRUJLSVRfU05BUFNIT1RfRVJST1IgICB3ZWJraXRfc25hcHNob3RfZXJyb3Jf
cXVhcmsgKCkKIAogLyoqCiAgKiBXZWJLaXROZXR3b3JrRXJyb3I6CkBAIC0xMzAsNiArMTMxLDE2
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZB
SUxFRCA9IDY5OQogfSBXZWJLaXRKYXZhc2NyaXB0RXJyb3I7CiAKKy8qKgorICogV2ViS2l0U25h
cHNob3RFcnJvcjoKKyAqIEBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURTog
QW4gZXJyb3Igb2NjdXJyZWQgd2hlbiBjcmVhdGluZyBhIHdlYnBhZ2Ugc25hcHNob3QuCisgKgor
ICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgZXJyb3JzIGhhcHBlbmRpbmcgd2hlbiBjcmVh
dGluZyBzbmFwc2hvdHMgb2YgI1dlYktpdFdlYlZpZXcKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAg
ICBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSA9IDc5OQorfSBXZWJLaXRT
bmFwc2hvdEVycm9yOworCiBXRUJLSVRfQVBJIEdRdWFyawogd2Via2l0X25ldHdvcmtfZXJyb3Jf
cXVhcmsgICAgKHZvaWQpOwogCkBAIC0xNDgsNiArMTU5LDkgQEAgd2Via2l0X3ByaW50X2Vycm9y
X3F1YXJrICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBHUXVhcmsKIHdlYmtpdF9qYXZhc2NyaXB0
X2Vycm9yX3F1YXJrICh2b2lkKTsKIAorV0VCS0lUX0FQSSBHUXVhcmsKK3dlYmtpdF9zbmFwc2hv
dF9lcnJvcl9xdWFyayAgICh2b2lkKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggNmQ3ODhiYThjM2MxY2JhZjYyNGI0OWRkMmQ3YzFk
YThlYTM3NmUwYS4uMjZhNmY4ZjEwZjYzY2FiNDcyZGRjYjZjZWNlNDFmNWYwZDA4NDkxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmgiCiAKKyNp
bmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViQ29udGV4dFByaXZhdGUuaCIKQEAgLTkwLDYgKzkxLDEwIEBAIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjCiAKICAgICAgICAgd2Via2l0V2ViUmVzb3VyY2VGYWlsZWQocmVzb3VyY2UuZ2V0KCks
IHJlc291cmNlRXJyb3IuZ2V0KCkpOwogICAgICAgICB3ZWJraXRXZWJWaWV3UmVtb3ZlTG9hZGlu
Z1dlYlJlc291cmNlKHdlYlZpZXcsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSk7CisgICAg
fSBlbHNlIGlmIChnX3N0cl9lcXVhbChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsK
KyAgICAgICAgV2ViVUludDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4o
bWVzc2FnZS5nZXQoIkNhbGxiYWNrSUQiKSk7CisgICAgICAgIFdlYkltYWdlKiBpbWFnZSA9IHN0
YXRpY19jYXN0PFdlYkltYWdlKj4obWVzc2FnZS5nZXQoIlNuYXBzaG90IikpOworICAgICAgICB3
ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KHdlYlZpZXcsIGNhbGxiYWNrSUQtPnZhbHVl
KCksIGltYWdlKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgK
aW5kZXggYmUzOWU4MDJjYzNlNzUzOTM3Yzg3ZDZmMzE5ZDkyYjc5ZWJhMjNmYS4uODM5MDRhZDlh
ZDNhNjFkN2JjYzExNWJhZGZiMzg0OThlNWFmY2Y1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApAQCAtMTIwLDQgKzEyMCw5IEBAIEdU
eXBlIHR5cGVfbmFtZSMjX2dldF90eXBlKHZvaWQpIFwKIHVuc2lnbmVkIHdrRXZlbnRNb2RpZmll
cnNUb0dka01vZGlmaWVycyhXS0V2ZW50TW9kaWZpZXJzKTsKIHVuc2lnbmVkIHdrRXZlbnRNb3Vz
ZUJ1dHRvblRvV2ViS2l0TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0dG9uKTsKIAorZW51bSBT
bmFwc2hvdFJlZ2lvbiB7CisgICAgU25hcHNob3RSZWdpb25WaXNpYmxlLAorICAgIFNuYXBzaG90
UmVnaW9uRnVsbERvY3VtZW50Cit9OworCiAjZW5kaWYgLy8gV2ViS2l0UHJpdmF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmlu
ZGV4IDIzMjBlMWMzYzFlYmJlZjMzODIyOGRiYmY0NjE4YmQzMzZmN2ZhZjEuLmVlNGJjOWE3YTM3
ZjA4MmFlNGRjNjdiNTk0ZGQyNTljODMzZmUxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCisjaW5jbHVk
ZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIK
ICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dUl0ZW0uaCIKQEAgLTEzMiw2ICsxMzMsNyBAQCBlbnVtIHsKIH07CiAKIHR5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5nUmVzb3VyY2Vz
TWFwOwordHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3Vs
dD4gPiBTbmFwc2hvdFJlc3VsdHNNYXA7CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUg
ewogICAgIH5fV2ViS2l0V2ViVmlld1ByaXZhdGUoKQpAQCAtMTc3LDYgKzE3OSw4IEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBmYXZp
Y29uQ2FuY2VsbGFibGU7CiAgICAgQ1N0cmluZyBmYXZpY29uVVJJOwogICAgIHVuc2lnbmVkIGxv
bmcgZmF2aWNvbkNoYW5nZWRIYW5kbGVySUQ7CisKKyAgICBTbmFwc2hvdFJlc3VsdHNNYXAgc25h
cHNob3RSZXN1bHRzTWFwOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OwpAQCAtMjkyMiwzICsyOTI2LDEwNiBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3Rsc19pbmZvKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdUbHNDZXJ0aWZpY2F0ZSoq
CiAKICAgICByZXR1cm4gISFjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKTsKIH0KKworc3Ry
dWN0IEdldFNuYXBzaG90QXN5bmNEYXRhIHsKKyAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2Fu
Y2VsbGFibGU7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc25hcHNob3Q7Cit9OworV0VC
S0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVDVChHZXRTbmFwc2hvdEFzeW5jRGF0YSkKKwordm9p
ZCB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkltYWdlKiB3ZWJJbWFnZSkKK3sKKyAgICBHUmVmUHRy
PEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gd2ViVmlldy0+cHJpdi0+c25hcHNob3RSZXN1
bHRzTWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEg
PSBzdGF0aWNfY2FzdDxHZXRTbmFwc2hvdEFzeW5jRGF0YSo+KGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9nZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSkpOworICAgIEdFcnJvciogZXJyb3Ig
PSAwOworICAgIGlmIChnX2NhbmNlbGxhYmxlX3NldF9lcnJvcl9pZl9jYW5jZWxsZWQoZGF0YS0+
Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvcikpCisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIGVsc2UgaWYgKHdlYkltYWdl
KSB7CisgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBpbWFnZSA9IHdlYkltYWdl
LT5iaXRtYXAoKSkKKyAgICAgICAgICAgIGRhdGEtPnNuYXBzaG90ID0gaW1hZ2UtPmNyZWF0ZUNh
aXJvU3VyZmFjZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwo
JmVycm9yLCBXRUJLSVRfU05BUFNIT1RfRVJST1IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlM
RURfVE9fQ1JFQVRFLCBfKCJUaGVyZSB3YXMgYW4gZXJyb3IgY3JlYXRpbmcgdGhlIHNuYXBzaG90
IikpOworICAgICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfdGFrZV9lcnJvcihyZXN1bHQuZ2V0
KCksIGVycm9yKTsKKyAgICB9CisKKyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUo
cmVzdWx0LmdldCgpKTsKK30KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRf
U05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFNuYXBzaG90UmVnaW9uVmlzaWJsZSk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVO
VCwgU25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQpOworCitzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IHdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNob3RPcHRpb25zKFdlYktpdFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zKQoreworICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSAw
OworCisgICAgaWYgKCEob3B0aW9ucyAmIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xVREVf
U0VMRUNUSU9OX0hJR0hMSUdIVElORykpCisgICAgICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFw
c2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nOworCisgICAgcmV0dXJuIHNu
YXBzaG90T3B0aW9uczsKK30KKworc3RhdGljIGlubGluZSB1aW50NjRfdCBnZW5lcmF0ZVNuYXBz
aG90Q2FsbGJhY2tJRCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUNhbGxiYWNrSUQg
PSAxOworICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl92aWV3X2dldF9zbmFwc2hvdDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwor
ICogQG9wdGlvbnM6ICNXZWJLaXRTbmFwc2hvdE9wdGlvbnMgZm9yIHRoZSBzbmFwc2hvdAorICog
QHJlZ2lvbjogdGhlICNXZWJLaXRTbmFwc2hvdFJlZ2lvbiBmb3IgdGhpcyBzbmFwc2hvdAorICog
QGNhbmNlbGxhYmxlOiAoYWxsb3ctbm9uZSk6IGEgI0dDYW5jZWxsYWJsZQorICogQGNhbGxiYWNr
OiAoc2NvcGUgYXN5bmMpOiBhICNHQXN5bmNSZWFkeUNhbGxiYWNrCisgKiBAdXNlcl9kYXRhOiAo
Y2xvc3VyZSk6IHVzZXIgZGF0YQorICoKKyAqIEFzeW5jaHJvbm91c2x5IHJldHJpZXZlcyBhIHNu
YXBzaG90IG9mIEB3ZWJfdmlldyBmb3IgQHJlZ2lvbi4KKyAqIEBvcHRpb25zIHNwZWNpZmllcyBo
b3cgdGhlIHNuYXBzaG90IHNob3VsZCBiZSByZW5kZXJlZC4KKyAqCisgKiBXaGVuIHRoZSBvcGVy
YXRpb24gaXMgZmluaXNoZWQsIEBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4gWW91IG11c3QKKyAq
IGNhbGwgd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2goKSB0byBnZXQgdGhlIHJl
c3VsdCBvZiB0aGUKKyAqIG9wZXJhdGlvbi4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNuYXBzaG90UmVnaW9uIHJl
Z2lvbiwgV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEdDYW5jZWxsYWJsZSogY2FuY2Vs
bGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKwor
ICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19zaW1w
bGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVCh3ZWJWaWV3KSwgY2FsbGJhY2ssIHVzZXJEYXRh
LAorICAgICAgICByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90KSkpOworICAgIEdldFNuYXBzaG90QXN5bmNEYXRhKiBkYXRhID0gY3JlYXRlR2V0
U25hcHNob3RBc3luY0RhdGEoKTsKKyAgICBkYXRhLT5jYW5jZWxsYWJsZSA9IGNhbmNlbGxhYmxl
OworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5n
ZXQoKSwgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVzdHJveUdldFNu
YXBzaG90QXN5bmNEYXRhKSk7CisKKyAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1l
c3NhZ2U7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGdlbmVyYXRlU25hcHNob3RDYWxsYmFj
a0lEKCk7CisgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiU25hcHNob3RPcHRpb25z
IiksIFdlYlVJbnQ2NDo6Y3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3ZWJLaXRTbmFwc2hv
dE9wdGlvbnNUb1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSkpKTsKKyAgICBtZXNzYWdlLnNldChT
dHJpbmc6OmZyb21VVEY4KCJTbmFwc2hvdFJlZ2lvbiIpLCBXZWJVSW50NjQ6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1aW50NjRfdD4ocmVnaW9uKSkpOworICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJv
bVVURjgoIkNhbGxiYWNrSUQiKSwgV2ViVUludDY0OjpjcmVhdGUoY2FsbGJhY2tJRCkpOworCisg
ICAgd2ViVmlldy0+cHJpdi0+c25hcHNob3RSZXN1bHRzTWFwLnNldChjYWxsYmFja0lELCByZXN1
bHQuZ2V0KCkpOworICAgIGdldFBhZ2Uod2ViVmlldyktPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShTdHJpbmc6OmZyb21VVEY4KCJHZXRTbmFwc2hvdCIpLCBJbW11dGFibGVEaWN0aW9uYXJ5
OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dl
dF9zbmFwc2hvdF9maW5pc2g6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBy
ZXN1bHQ6IGEgI0dBc3luY1Jlc3VsdAorICogQGVycm9yOiByZXR1cm4gbG9jYXRpb24gZm9yIGVy
cm9yIG9yICVOVUxMIHRvIGlnbm9yZQorICoKKyAqIEZpbmlzaGVzIGFuIGFzeW5jaHJvbm91cyBv
cGVyYXRpb24gc3RhcnRlZCB3aXRoIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoKS4KKyAq
CisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgI2NhaXJvX3N1cmZhY2VfdCB3aXRoIHRo
ZSByZXRyaWV2ZWQgc25hcHNob3Qgb3IgJU5VTEwgaW4gZXJyb3IuCisgKi8KK2NhaXJvX3N1cmZh
Y2VfdCogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2goV2ViS2l0V2ViVmlldyog
d2ViVmlldywgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgMCk7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoR19JU19BU1lOQ19SRVNVTFQocmVzdWx0KSwgMCk7CisKKyAg
ICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZSA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1
bHQpOworICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNl
X3RhZyhzaW1wbGUpID09IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QpOworCisgICAgaWYg
KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVfZXJyb3Ioc2ltcGxlLCBlcnJvcikpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN0
YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dl
dF9vcF9yZXNfZ3BvaW50ZXIoc2ltcGxlKSktPnNuYXBzaG90LmdldCgpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBhYWU4
NDliZjA4OTVmMjZhM2ZhMWYzZmMzNTViZjRhNGUwMzYzOGY3Li41ZDQ2ZmY1Yjk1ZGQzYmY1MjRh
MDhmY2U5OGFmNzAzNDgxNmUzNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xNTksNiArMTU5LDM0IEBAIHR5cGVkZWYgZW51
bSB7CiAgICAgV0VCS0lUX1ZJRVdfTU9ERV9TT1VSQ0UKIH0gV2ViS2l0Vmlld01vZGU7CiAKKy8q
KgorICogV2ViS2l0U25hcHNob3RPcHRpb25zOgorICogQFdFQktJVF9TTkFQU0hPVF9PUFRJT05T
X05PTkU6IERvIG5vdCBpbmNsdWRlIGFueSBzcGVjaWFsIG9wdGlvbnMuCisgKiBAV0VCS0lUX1NO
QVBTSE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HOiBXaGV0aGVyIHRv
IGluY2x1ZGUgaW4gdGhlCisgKiBzbmFwc2hvdCB0aGUgaGlnaGxpZ2h0IG9mIHRoZSBzZWxlY3Rl
ZCBjb250ZW50LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25zIHdo
ZW4gdGFraW5nIGEgc25hcHNob3QKKyAqIGZyb20gYSAjV2ViS2l0V2ViVmlldy4KKyAqLwordHlw
ZWRlZiBlbnVtIHsKKyAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSA9IDAsCisgIFdFQktJ
VF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORyA9IDEgPDwg
MCwKK30gV2ViS2l0U25hcHNob3RPcHRpb25zOworCisvKioKKyAqIFdlYktpdFNuYXBzaG90UmVn
aW9uOgorICogQFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRTogU3BlY2lmaWVzIGEgc25h
cHNob3Qgb25seSBmb3IgdGhlIGFyZWEgdGhhdCBpcworICogdmlzaWJsZSBpbiB0aGUgd2Vidmll
dworICogQFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVDogQSBzbmFwc2hvdCBv
ZiB0aGUgZW50aXJlIGRvY3VtZW50LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lm
eSB0aGUgcmVnaW9uIGZyb20gd2hpY2ggdG8gZ2V0IGEgI1dlYktpdFdlYlZpZXcKKyAqIHNuYXBz
aG90CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJM
RSA9IDAsCisgIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCwKK30gV2ViS2l0
U25hcHNob3RSZWdpb247CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0V2Vi
Vmlld0Jhc2UgcGFyZW50OwogCkBAIC00MTgsNyArNDQ2LDE4IEBAIFdFQktJVF9BUEkgZ2Jvb2xl
YW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8gICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Rsc0NlcnRpZmljYXRlICAgICAg
ICAgICoqY2VydGlmaWNhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyAgICAgICplcnJvcnMpOworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBz
aG90UmVnaW9uICAgICAgIHJlZ2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBzaG90T3B0aW9ucyAgICAgIG9wdGlvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
Q2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sg
ICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKIAor
V0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgord2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAg
ICAgICAgKiplcnJvcik7CiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IDZkMGNkZjI3NGEyZTUyYzA3NDUxODI0NGM3MDI0NjgxODllZTkyMDUuLmM0MTg1YmI5ZWM1MzA1
MmYzOTkxZDRlZDY0MTU1YjAwZDcwMzU0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtMjcsNiArMjcs
NyBAQAogI2lmbmRlZiBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdlYlZp
ZXdQcml2YXRlX2gKIAorI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlldy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNTAsNiArNTEsNyBA
QCB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2Vi
S2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNo
b29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsK
IFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdl
YktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwordm9pZCB3ZWJLaXRX
ZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCBjYWxsYmFj
a0lELCBXZWJLaXQ6OldlYkltYWdlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5n
V2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7
CiBib29sIHdlYmtpdFdlYlZpZXdFbnRlckZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyopOwogYm9v
bCB3ZWJraXRXZWJWaWV3TGVhdmVGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CmluZGV4IGY2ZThhODQ3NzdiZTI3YjQ1YmVkZTMwMzY1YjI0NDA5ZmIy
YTI5Y2EuLjA1MTkyZTA5ZDdmOTE1OWY2YjgyN2JhOTk3Yzg1ZjY0NzEzMzAyOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0
aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNzUsNiArNzUsOCBAQCBXZWJLaXRQb2xpY3lEZWNpc2lv
blR5cGUKIFdlYktpdFNhdmVNb2RlCiBXZWJLaXRWaWV3TW9kZQogV2ViS2l0SW5zZWN1cmVDb250
ZW50RXZlbnQKK1dlYktpdFNuYXBzaG90T3B0aW9ucworV2ViS2l0U25hcHNob3RSZWdpb24KIAog
PFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VU
CkBAIC0xMzQsNiArMTM2LDggQEAgd2Via2l0X3dlYl92aWV3X2Rvd25sb2FkX3VyaQogd2Via2l0
X3dlYl92aWV3X3NldF92aWV3X21vZGUKIHdlYmtpdF93ZWJfdmlld19nZXRfdmlld19tb2RlCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3Rsc19pbmZvCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90
Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaAogCiA8U1VCU0VDVElPTiBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtNjA3LDE4ICs2
MTEsMjEgQEAgV0VCS0lUX1BPTElDWV9FUlJPUgogV0VCS0lUX0RPV05MT0FEX0VSUk9SCiBXRUJL
SVRfUFJJTlRfRVJST1IKIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SCitXRUJLSVRfU05BUFNIT1Rf
RVJST1IKIFdlYktpdE5ldHdvcmtFcnJvcgogV2ViS2l0UGx1Z2luRXJyb3IKIFdlYktpdFBvbGlj
eUVycm9yCiBXZWJLaXREb3dubG9hZEVycm9yCiBXZWJLaXRQcmludEVycm9yCiBXZWJLaXRKYXZh
c2NyaXB0RXJyb3IKK1dlYktpdFNuYXBzaG90RXJyb3IKIHdlYmtpdF9uZXR3b3JrX2Vycm9yX3F1
YXJrCiB3ZWJraXRfcGx1Z2luX2Vycm9yX3F1YXJrCiB3ZWJraXRfcG9saWN5X2Vycm9yX3F1YXJr
CiB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsKIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyawog
d2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVhcmsKK3dlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFy
awogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA5
Y2YxZGRjY2Y3OTRhM2MwOTVmNjMxOGI2Y2MwOTIzNjRkYmFmNWMxLi45YjRmMTE0MGRjZTM5Zjc3
MDkyOGM1YTRiYmQ2Y2Y2NWI4MjNmMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0x
MDg1LDYgKzEwODUsMTM1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW9kZShXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcu
Z2V0KCksID09LCBpbmRleEhUTUwpOwogfQogCitjbGFzcyBTbmFwc2hvdFdlYlZpZXdUZXN0OiBw
dWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
U25hcHNob3RXZWJWaWV3VGVzdCk7CisKKyAgICBTbmFwc2hvdFdlYlZpZXdUZXN0KCkKKyAgICAg
ICAgOiBtX3N1cmZhY2UoMCkKKyAgICB7CisgICAgfQorCisgICAgflNuYXBzaG90V2ViVmlld1Rl
c3QoKQorICAgIHsKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc3VyZmFjZSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHZvaWQgb25TbmFwc2hvdFJlYWR5KFdlYktpdFdlYlZpZXcqIHdl
Yl92aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgU25hcHNob3RXZWJWaWV3VGVzdCogdGVzdCkKKyAg
ICB7CisgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgdGVzdC0+bV9zdXJm
YWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3ZpZXcsIHJlcywg
JmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSB8fCAh
ZXJyb3IuZ2V0KCkpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBnX2Fzc2VydF9l
cnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SLCBXRUJLSVRfU05BUFNIT1Rf
RVJST1JfRkFJTEVEX1RPX0NSRUFURSk7CisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwor
ICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogd2FpdEZvclNuYXBzaG90KFdlYktpdFNuYXBz
aG90UmVnaW9uIHJlZ2lvbiwgV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCisgICAgewor
ICAgICAgICBtX3N1cmZhY2UgPSAwOworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90KG1fd2ViVmlldywgcmVnaW9uLCBvcHRpb25zLCAwLCByZWludGVycHJldF9jYXN0PEdBc3lu
Y1JlYWR5Q2FsbGJhY2s+KG9uU25hcHNob3RSZWFkeSksIHRoaXMpOworICAgICAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVy
ZW5jZShtX3N1cmZhY2UpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RDYW5j
ZWxsZWRSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0KiByZXMsIFNu
YXBzaG90V2ViVmlld1Rlc3QqIHRlc3QpCisgICAgeworICAgICAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgICAgIHRlc3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdf
YXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UpOworICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5n
ZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpOworICAgICAgICB0ZXN0LT5x
dWl0TWFpbkxvb3AoKTsKKyAgICB9CisKKyAgICBnYm9vbGVhbiBnZXRTbmFwc2hvdEFuZENhbmNl
bCgpCisgICAgeworICAgICAgICBtX3N1cmZhY2UgPSAwOworICAgICAgICBHUmVmUHRyPEdDYW5j
ZWxsYWJsZT4gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7Cisg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QobV93ZWJWaWV3LCBXRUJLSVRfU05B
UFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUsIGNhbmNl
bGxhYmxlLmdldCgpLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KG9uU25h
cHNob3RDYW5jZWxsZWRSZWFkeSksIHRoaXMpOworICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNl
bChjYW5jZWxsYWJsZS5nZXQoKSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29w
KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IG1fc3VyZmFjZTsKK307CisKK3N0YXRpYyBnYm9vbGVhbiBjYWlyb1N1cmZhY2VzRXF1YWwoY2Fp
cm9fc3VyZmFjZV90KiBzMSwgY2Fpcm9fc3VyZmFjZV90KiBzMikKK3sKKyAgICByZXR1cm4gKGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZm9ybWF0KHMyKQorICAgICAgICAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChz
MSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoczIpCisgICAgICAgICYmIGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
aGVpZ2h0KHMyKQorICAgICAgICAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoczEp
ID09IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzMikKKyAgICAgICAgJiYgIW1lbWNt
cChjb25zdF9jYXN0PGNvbnN0IHZvaWQqPihyZWludGVycHJldF9jYXN0PHZvaWQqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKHMxKSkpLAorICAgICAgICAgICAgY29uc3RfY2FzdDxjb25z
dCB2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShzMikpKSwKKyAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChz
MSkqY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHMxKSkpOworfQorCitzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCit7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PjxwPldoYXRldmVyPC9w
PjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CisKKyAgICAvLyBXZWJWaWV3IG5vdCB2aXNpYmxlLgorICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJ
QkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydCghc3VyZmFj
ZTEpOworCisgICAgLy8gU2hvdyBzdXJmYWNlLCByZXNpemUgdG8gNTB4NTAsIHRyeSBhZ2Fpbi4K
KyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICB0ZXN0LT5y
ZXNpemVWaWV3KDUwLCA1MCk7CisgICAgc3VyZmFjZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3Qo
V0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19O
T05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMSk7CisKKyAgICAvLyBvYnRhaW5lZCBzdXJmYWNl
IHNob3VsZCBiZSBhdCB0aGUgbW9zdCA1MHg1MC4gU3RvcmUgdGhlIHNpemUKKyAgICAvLyBmb3Ig
Y29tcGFyaXNvbiBsYXRlci4KKyAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChzdXJmYWNlMSk7CisgICAgaW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2hlaWdodChzdXJmYWNlMSk7CisgICAgZ19hc3NlcnRfY21waW50KHdpZHRoLCA8PSwgNTAp
OworICAgIGdfYXNzZXJ0X2NtcGludChoZWlnaHQsIDw9LCA1MCk7CisKKyAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3koc3VyZmFjZTEpOworCisgICAgLy8gU2VsZWN0IGFsbCB0ZXh0IGluIHRoZSBX
ZWJWaWV3LCByZXF1ZXN0IGEgc25hcHNob3QgaWdub3Jpbmcgc2VsZWN0aW9uLgorICAgIHRlc3Qt
PnNlbGVjdEFsbCgpOworICAgIHN1cmZhY2UxID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KFdFQktJ
VF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7
CisgICAgZ19hc3NlcnQoc3VyZmFjZTEpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSksID09LCB3aWR0aCk7CisgICAgZ19hc3NlcnRf
Y21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMSksID09LCBoZWln
aHQpOworCisgICAgLy8gQ3JlYXRlIGlkZW50aWNhbCBzdXJmYWNlLgorICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZTIgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2Vy
dChzdXJmYWNlMik7CisKKyAgICAvLyBDb21wYXJlIHRoZXNlIHR3bywgdGhleSBzaG91bGQgYmUg
aWRlbnRpY2FsLgorICAgIGdfYXNzZXJ0KGNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3Vy
ZmFjZTIpKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIpOworCisgICAgLy8g
UmVxdWVzdCBhIG5ldyBzbmFwc2hvdCwgaW5jbHVkaW5nIHRoZSBzZWxlY3Rpb24gdGhpcyB0aW1l
LiBUaGUKKyAgICAvLyBzaXplIHNob3VsZCBiZSB0aGUgc2FtZSBidXQgdGhlIHJlc3VsdCBtdXN0
IGJlIGRpZmZlcmVudCB0byB0aGUKKyAgICAvLyBvbmUgcHJldmlvdXNseSBvYnRhaW5lZC4KKyAg
ICBzdXJmYWNlMiA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9O
X1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hM
SUdIVElORyk7CisgICAgZ19hc3NlcnQoc3VyZmFjZTIpOworICAgIGdfYXNzZXJ0X2NtcGludChj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMiksID09LCB3aWR0aCk7CisgICAg
Z19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMiks
ID09LCBoZWlnaHQpOworICAgIGdfYXNzZXJ0KCFjYWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFjZTEs
IHN1cmZhY2UyKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UyKTsKKworICAg
IC8vIFJlcXVlc3QgYSBzbmFwc2hvdCBvZiB0aGUgd2hvbGUgZG9jdW1lbnQgaW4gdGhlIFdlYlZp
ZXcuIFRoZQorICAgIC8vIHJlc3VsdCBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIHNpemUg
b2J0YWluZWQgcHJldmlvdXNseS4KKyAgICBzdXJmYWNlMiA9IHRlc3QtPndhaXRGb3JTbmFwc2hv
dChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsIFdFQktJVF9TTkFQU0hPVF9P
UFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UyKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTIpLCAgPiwgd2lkdGgpOwor
ICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFj
ZTIpLCA+LCBoZWlnaHQpOworICAgIGdfYXNzZXJ0KCFjYWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFj
ZTEsIHN1cmZhY2UyKSk7CisKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTEpOwor
ICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMik7CisKKyAgICBnX2Fzc2VydCh0ZXN0
LT5nZXRTbmFwc2hvdEFuZENhbmNlbCgpKTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAg
IFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZGVmYXVsdC1jb250ZXh0IiwgdGVz
dFdlYlZpZXdEZWZhdWx0Q29udGV4dCk7CkBAIC0xMTA1LDYgKzEyMzQsNyBAQCB2b2lkIGJlZm9y
ZUFsbCgpCiAgICAgRm9ybUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzdWJtaXQt
Zm9ybSIsIHRlc3RXZWJWaWV3U3VibWl0Rm9ybSk7CiAgICAgU2F2ZVdlYlZpZXdUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAic2F2ZSIsIHRlc3RXZWJWaWV3U2F2ZSk7CiAgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ2aWV3LW1vZGUiLCB0ZXN0V2ViVmlld01vZGUpOwor
ICAgIFNuYXBzaG90V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzbmFwc2hvdCIs
IHRlc3RXZWJWaWV3U25hcHNob3QpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcApp
bmRleCA3ZTdlYjAxNjc1ODIxYTVhYjJlM2RhNDJjYzI1ZTYwYWUxNzE4YjlhLi43YWY4MWU1MjYx
N2I3ZWJhYjE4ZTQzY2Q5ZTk3OThiNWIwNzk5ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCkBAIC0xOTgsNiAr
MTk4LDExIEBAIHZvaWQgV2ViVmlld1Rlc3Q6OnJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKG1fd2ViVmlldyks
ICZhbGxvY2F0aW9uKTsKIH0KIAordm9pZCBXZWJWaWV3VGVzdDo6c2VsZWN0QWxsKCkKK3sKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQobV93ZWJWaWV3LCAiU2Vs
ZWN0QWxsIik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0YUNhbGxiYWNrKEdPYmpl
Y3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewog
ICAgIHNpemVfdCBkYXRhU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCmluZGV4IDA2ZjM5OGY5NjI2NTA4NjNjY2Y0NmFh
Yzk0OGNlNjBmZDJkYmM0NmMuLmFmNTY1MTc1OGE2MzViNTk1ZjdhNzM3MzA3NDZjNzVmMWE2ZmRi
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dl
YlZpZXdUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
V2ViVmlld1Rlc3QuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0VW50
aWxUaXRsZUNoYW5nZWQoKTsKICAgICB2b2lkIHNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBl
ZChHdGtXaW5kb3dUeXBlID0gR1RLX1dJTkRPV19QT1BVUCk7CiAgICAgdm9pZCByZXNpemVWaWV3
KGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBzZWxlY3RBbGwoKTsKICAgICBjb25z
dCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhKHNpemVfdCYgbWFpblJlc291cmNlRGF0YVNpemUpOwog
CiAgICAgdm9pZCBtb3VzZU1vdmVUbyhpbnQgeCwgaW50IHksIHVuc2lnbmVkIGludCBtb3VzZU1v
ZGlmaWVycyA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNw
cAppbmRleCA2ZmEzNjA5MTk2NThhNTg5MWQ4MGRlNWE4MzVhMDdjMzM4NWU2NzM5Li43M2RjYzdj
MjUyMDQyOWYyNmY1N2E3YWZmZmJlMTg5N2I4NTc4ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMTA1LDYgKzEwNSwxMiBAQCBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG5hbWUs
IFdLVHlwZVJlZiBtZQogICAgIHdlYmtpdFdlYkV4dGVuc2lvbkRpZFJlY2VpdmVNZXNzYWdlKFdF
QktJVF9XRUJfRVhURU5TSU9OKGNsaWVudEluZm8pLCB0b0ltcGwobmFtZSktPnN0cmluZygpLCAq
dG9JbXBsKHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQo
bWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICB3ZWJraXRXZWJQ
YWdlRGlkUmVjZWl2ZU1lc3NhZ2UodG9JbXBsKHBhZ2UpLCB0b0ltcGwobmFtZSktPnN0cmluZygp
LCAqdG9JbXBsKHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpKSk7Cit9
CisKIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVk
QnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBX
RUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lP
TiwgTlVMTCkpOwpAQCAtMTE2LDcgKzEyMiw3IEBAIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0
V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiAgICAgICAgIHdpbGxE
ZXN0cm95UGFnZSwKICAgICAgICAgMCwgLy8gZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cAogICAgICAg
ICBkaWRSZWNlaXZlTWVzc2FnZSwKLSAgICAgICAgMCAvLyBkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZQorICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZQogICAgIH07CiAgICAgV0tCdW5kbGVT
ZXRDbGllbnQodG9BUEkoYnVuZGxlKSwgJndrQnVuZGxlQ2xpZW50KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDFhY2ExN2RlZjQ3YmQ5ZWNiMmE1MDU5YjZiZGMw
ZDA5MGVlZjQxYzcuLmVkZWFmNGYwMTUxNmMyNmM4MTNiYzA5NjZlMjUzNmMzMmFlODViNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTIwLDE1ICsyMCwxOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2UuaCIKIAorI2luY2x1
ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJX
ZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTEyNCw2ICsxMjcsNDAgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShX
ZWJQYWdlKiB3ZWJQYWdlKQogICAgIHJldHVybiBwYWdlOwogfQogCit2b2lkIHdlYmtpdFdlYlBh
Z2VEaWRSZWNlaXZlTWVzc2FnZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBJbW11dGFibGVEaWN0aW9uYXJ5JiBtZXNzYWdlKQoreworICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBTdHJpbmcoIkdldFNuYXBzaG90IikpIHsKKyAgICAgICAgU25hcHNob3RPcHRpb25zIHNu
YXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nhc3Q8
V2ViVUludDY0Kj4obWVzc2FnZS5nZXQoIlNuYXBzaG90T3B0aW9ucyIpKS0+dmFsdWUoKSk7Cisg
ICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdGF0aWNfY2FzdDxXZWJVSW50NjQqPihtZXNz
YWdlLmdldCgiQ2FsbGJhY2tJRCIpKS0+dmFsdWUoKTsKKyAgICAgICAgU25hcHNob3RSZWdpb24g
cmVnaW9uID0gc3RhdGljX2Nhc3Q8U25hcHNob3RSZWdpb24+KHN0YXRpY19jYXN0PFdlYlVJbnQ2
NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiIpKS0+dmFsdWUoKSk7CisKKyAgICAgICAg
UmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdEltYWdlOworCisgICAgICAgIGlmIChXZWJDb3JlOjpG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IHBhZ2UtPm1haW5GcmFtZVZpZXcoKSkgeworICAgICAgICAg
ICAgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3Q7CisgICAgICAgICAgICBzd2l0Y2ggKHJl
Z2lvbikgeworICAgICAgICAgICAgY2FzZSBTbmFwc2hvdFJlZ2lvblZpc2libGU6CisgICAgICAg
ICAgICAgICAgc25hcHNob3RSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoV2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWE6OkV4Y2x1ZGVTY3JvbGxiYXJzKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQ6Cisg
ICAgICAgICAgICAgICAgc25hcHNob3RSZWN0ID0gV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJ
bnRQb2ludCgwLCAwKSwgZnJhbWVWaWV3LT5jb250ZW50c1NpemUoKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzbmFwc2hvdFJl
Y3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHNuYXBzaG90SW1hZ2UgPSBwYWdlLT5zY2Fs
ZWRTbmFwc2hvdFdpdGhPcHRpb25zKHNuYXBzaG90UmVjdCwgMSwgc25hcHNob3RPcHRpb25zIHwg
U25hcHNob3RPcHRpb25zU2hhcmVhYmxlKTsKKyAgICAgICAgfQorCisgICAgICAgIEltbXV0YWJs
ZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2FnZVJlcGx5OworICAgICAgICBtZXNzYWdlUmVwbHku
c2V0KCJQYWdlIiwgcGFnZSk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIkNhbGxiYWNrSUQi
LCBXZWJVSW50NjQ6OmNyZWF0ZShjYWxsYmFja0lEKSk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5z
ZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJbWFnZSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90
IiwgSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWVzc2FnZVJlcGx5KS5nZXQoKSk7CisgICAg
fSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiAvKioKICAqIHdlYmtp
dF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50OgogICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQ
YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCmluZGV4IDBk
M2RhMzA4ZTk1YTI2NTFiNGU1YzRjZmNjZDgzY2ViOWQ2MTEyNzUuLjQ1ZTdmYmRjNGQ5OThiYWQz
OGE3NDY1NzJiNWM0YWE3ODI1YWM4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRX
ZWJQYWdlUHJpdmF0ZS5oCkBAIC0yMCw5ICsyMCwxMSBAQAogI2lmbmRlZiBXZWJLaXRXZWJQYWdl
UHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdlYlBhZ2VQcml2YXRlX2gKIAorI2luY2x1ZGUgIklt
bXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogCiBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYktp
dDo6V2ViUGFnZSopOwordm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0
OjpXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgV2ViS2l0OjpJbW11dGFibGVE
aWN0aW9uYXJ5JiBtZXNzYWdlKTsKIAogI2VuZGlmIC8vIFdlYktpdFdlYlBhZ2VQcml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192698</attachid>
            <date>2013-03-12 03:45:38 -0700</date>
            <delta_ts>2013-04-16 10:42:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98270-20130312124136.patch</filename>
            <type>text/plain</type>
            <size>30748</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDRkZWIxYmVlZjRiNmI0
OGViMzBlY2NhNTM3N2I4YTRjMjFiZTJhYy4uYWIwYTUzODU4MDU5ZjY2OTg2YzdiZjE3MzRiNmJk
YTg2ZDdhOTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAzLTEyICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRoZSBHVEsr
IEFQSSBuZWNlc3NhcnkgdG8gcmV0cmlldmUgYSBzbmFwc2hvdCBmcm9tIGEKKyAgICAgICAgd2Vi
dmlldyBhc3luY2hyb25vdXNseS4gVGhlIEFQSSB1c2VzIHRoZSBpbmplY3RlZCBidW5kbGUKKyAg
ICAgICAgaW50ZXJuYWxseSB0byBnZXQgdGhlIHNuYXBzaG90IGZyb20gdGhlIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHA6CisgICAgICAg
ICh3ZWJraXRfc25hcHNob3RfZXJyb3JfcXVhcmspOiBBZGQgc25hcHNob3QgQVBJIHJlbGF0ZWQg
ZXJyb3IKKyAgICAgICAgcXVhcmsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RXJyb3IuaDogQWRkIHNuYXBzaG90IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFJl
Y2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6IEhhbmRsZSB0aGUgbmV3Cisg
ICAgICAgICJEaWRHZXRTbmFwc2hvdCIgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmg6IEFkZCBTbmFwc2hvdFJlZ2lvbiBlbnVtLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdQcml2YXRlKTogQWRkIGEgbWFwIGZvciB0aGUgc25hcHNob3QgcmVzdWx0cy4KKyAgICAg
ICAgKEdldFNuYXBzaG90QXN5bmNEYXRhKToKKyAgICAgICAgKHdlYktpdFdlYlZpZXdEaWRSZWNl
aXZlU25hcHNob3QpOgorICAgICAgICAod2ViS2l0U25hcHNob3RSZWdpb25Ub1NuYXBzaG90UmVn
aW9uKTogSGVscGVyIG1ldGhvZCBmb3IgY2FzdGluZworICAgICAgICB0aGUgcmVnaW9uIG9wdGlv
biBlbnVtZXJhdGlvbi4KKyAgICAgICAgKGdlbmVyYXRlU25hcHNob3RDYWxsYmFja0lEKTogTWV0
aG9kIHRvIGdlbmVyYXRlIHVuaXF1ZSBjYWxsYmFjaworICAgICAgICBpZHMuCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3RfZmluaXNoKTogTmV3IHNuYXBzaG90dGluZyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBBZGQgdGhlIHByaXZhdGUgbWV0aG9k
CisgICAgICAgIHRvIGhhbmRsZSBhIHJlY2VpdmVkIHNuYXBzaG90LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCB0aGUgbmV3IEFQ
SQorICAgICAgICBiaXRzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGNhaXJvU3VyZmFjZXNFcXVhbCk6IEFkZCBoZWxw
ZXIgdG8gY29tcGFyZSBjYWlyb19zdXJmYWNlX3QKKyAgICAgICAgc3RydWN0cy4KKyAgICAgICAg
KHRlc3RXZWJWaWV3U25hcHNob3QpOiBOZXcgdGVzdC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IEFk
ZCB0aGUgbmV3IHRlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmll
d1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnNlbGVjdEFsbCk6IEFkZCBtZXRob2Qg
dG8gaGVscCB0ZXN0IHNuYXBzaG90cworICAgICAgICBpbmNsdWRpbmcgc2VsZWN0aW9uLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0Lmg6IERpdHRvCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHA6CisgICAgICAgIChkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6IERpdHRvLgorICAgICAg
ICAod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKTogUmVnaXN0ZXIgbWV0aG9kIGFib3ZlLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNw
cDoKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2FnZSk6IEFkZCB0aGlzIG1l
dGhvZC4gSXQKKyAgICAgICAgaGFuZGxlcyB0aGUgbmV3IG1lc3NhZ2UgIkdldFNuYXBzaG90Ii4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFn
ZVByaXZhdGUuaDoKKyAgICAgICAgQWRkIG1ldGhvZCBhYm92ZS4KKwogMjAxMy0wMy0xMSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTG9hZHMgYXJlIG5ldmVy
IGNhbmNlbGVkIGluIHRoZSBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCmluZGV4IGRjNDhiMWMwMTFhYzA3ZDNkOTEy
MGZhZjJhNmFiNDk4YzJhOGEwZDAuLmMwNmRjNjFhNThjYzRhYTBhNmMxNmRhNjU0NjQwNGE2MGUw
MTI0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRF
cnJvci5jcHAKQEAgLTkxLDMgKzkxLDggQEAgR1F1YXJrIHdlYmtpdF9qYXZhc2NyaXB0X2Vycm9y
X3F1YXJrKCkKIHsKICAgICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoIldlYktp
dEphdmFzY3JpcHRFcnJvciIpOwogfQorCitHUXVhcmsgd2Via2l0X3NuYXBzaG90X2Vycm9yX3F1
YXJrKCkKK3sKKyAgICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoIldlYktpdFNu
YXBzaG90RXJyb3IiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEVycm9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRFcnJvci5oCmluZGV4IGMyMDU4MTY4M2Q0Nzg5MDgwNDg1M2E0ODcxNDYwMTQxY2FjNGEw
ZmMuLmU3ZGU5M2JjMjVlMGRkY2Q0NDQzZWJhYzcyOWZlOTU5ODNhNmJjZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaApAQCAtMzUsNiArMzUs
NyBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9ET1dOTE9BRF9FUlJPUiAgIHdlYmtp
dF9kb3dubG9hZF9lcnJvcl9xdWFyayAoKQogI2RlZmluZSBXRUJLSVRfUFJJTlRfRVJST1IgICAg
ICB3ZWJraXRfcHJpbnRfZXJyb3JfcXVhcmsgKCkKICNkZWZpbmUgV0VCS0lUX0pBVkFTQ1JJUFRf
RVJST1Igd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrICgpCisjZGVmaW5lIFdFQktJVF9TTkFQU0hP
VF9FUlJPUiAgIHdlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyayAoKQogCiAvKioKICAqIFdlYktp
dE5ldHdvcmtFcnJvcjoKQEAgLTEzMCw2ICsxMzEsMTYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBX
RUJLSVRfSkFWQVNDUklQVF9FUlJPUl9TQ1JJUFRfRkFJTEVEID0gNjk5CiB9IFdlYktpdEphdmFz
Y3JpcHRFcnJvcjsKIAorLyoqCisgKiBXZWJLaXRTbmFwc2hvdEVycm9yOgorICogQFdFQktJVF9T
TkFQU0hPVF9FUlJPUl9GQUlMRURfVE9fQ1JFQVRFOiBBbiBlcnJvciBvY2N1cnJlZCB3aGVuIGNy
ZWF0aW5nIGEgd2VicGFnZSBzbmFwc2hvdC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRl
bm90ZSBlcnJvcnMgaGFwcGVuZGluZyB3aGVuIGNyZWF0aW5nIHNuYXBzaG90cyBvZiAjV2ViS2l0
V2ViVmlldworICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9G
QUlMRURfVE9fQ1JFQVRFID0gNzk5Cit9IFdlYktpdFNuYXBzaG90RXJyb3I7CisKIFdFQktJVF9B
UEkgR1F1YXJrCiB3ZWJraXRfbmV0d29ya19lcnJvcl9xdWFyayAgICAodm9pZCk7CiAKQEAgLTE0
OCw2ICsxNTksOSBAQCB3ZWJraXRfcHJpbnRfZXJyb3JfcXVhcmsgICAgICAodm9pZCk7CiBXRUJL
SVRfQVBJIEdRdWFyawogd2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVhcmsgKHZvaWQpOwogCitX
RUJLSVRfQVBJIEdRdWFyaword2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrICAgKHZvaWQpOwor
CiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRl
eCA2ZDc4OGJhOGMzYzFjYmFmNjI0YjQ5ZGQyZDdjMWRhOGVhMzc2ZTBhLi4yNmE2ZjhmMTBmNjNj
YWI0NzJkZGNiNmNlY2U0MWY1ZjBkMDg0OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKIAorI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNw
b25zZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgpAQCAt
OTAsNiArOTEsMTAgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGMKIAogICAgICAgICB3ZWJraXRX
ZWJSZXNvdXJjZUZhaWxlZChyZXNvdXJjZS5nZXQoKSwgcmVzb3VyY2VFcnJvci5nZXQoKSk7CiAg
ICAgICAgIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVzb3VyY2Uod2ViVmlldywgcmVz
b3VyY2VJZGVudGlmaWVyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKG1l
c3NhZ2VOYW1lLCAiRGlkR2V0U25hcHNob3QiKSkgeworICAgICAgICBXZWJVSW50NjQqIGNhbGxi
YWNrSUQgPSBzdGF0aWNfY2FzdDxXZWJVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCIp
KTsKKyAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNz
YWdlLmdldCgiU25hcHNob3QiKSk7CisgICAgICAgIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25h
cHNob3Qod2ViVmlldywgY2FsbGJhY2tJRC0+dmFsdWUoKSwgaW1hZ2UpOwogICAgIH0gZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRleCBiZTM5ZTgwMmNjM2U3NTM5Mzdj
ODdkNmYzMTlkOTJiNzllYmEyM2ZhLi44MzkwNGFkOWFkM2E2MWQ3YmNjMTE1YmFkZmIzODQ5OGU1
YWZjZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UHJpdmF0ZS5oCkBAIC0xMjAsNCArMTIwLDkgQEAgR1R5cGUgdHlwZV9uYW1lIyNfZ2V0X3R5cGUo
dm9pZCkgXAogdW5zaWduZWQgd2tFdmVudE1vZGlmaWVyc1RvR2RrTW9kaWZpZXJzKFdLRXZlbnRN
b2RpZmllcnMpOwogdW5zaWduZWQgd2tFdmVudE1vdXNlQnV0dG9uVG9XZWJLaXRNb3VzZUJ1dHRv
bihXS0V2ZW50TW91c2VCdXR0b24pOwogCitlbnVtIFNuYXBzaG90UmVnaW9uIHsKKyAgICBTbmFw
c2hvdFJlZ2lvblZpc2libGUsCisgICAgU25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQKK307CisK
ICNlbmRpZiAvLyBXZWJLaXRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggOGQ1NGI1ZmMzNWM3YzE1ZWVkNGRm
OWIzZjYwMmViMzIzMmMyM2NkZS4uOGE0M2UwZDNkZTJjOTEwYmNhYWU0Njk2ZGRmMWUyMjdmNjRl
NzA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNlcnRpZmljYXRl
SW5mby5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIgpAQCAtMTMyLDYgKzEzMyw3
IEBAIGVudW0gewogfTsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktp
dFdlYlJlc291cmNlPiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7Cit0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiA+IFNuYXBzaG90UmVzdWx0c01hcDsK
IAogc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgfl9XZWJLaXRXZWJWaWV3UHJp
dmF0ZSgpCkBAIC0xNzcsNiArMTc5LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7
CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGZhdmljb25DYW5jZWxsYWJsZTsKICAgICBDU3Ry
aW5nIGZhdmljb25VUkk7CiAgICAgdW5zaWduZWQgbG9uZyBmYXZpY29uQ2hhbmdlZEhhbmRsZXJJ
RDsKKworICAgIFNuYXBzaG90UmVzdWx0c01hcCBzbmFwc2hvdFJlc3VsdHNNYXA7CiB9OwogCiBz
dGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC0yOTIzLDMgKzI5
MjcsMTA2IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8oV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgR1Rsc0NlcnRpZmljYXRlKioKIAogICAgIHJldHVybiAhIWNlcnRpZmlj
YXRlSW5mby5jZXJ0aWZpY2F0ZSgpOwogfQorCitzdHJ1Y3QgR2V0U25hcHNob3RBc3luY0RhdGEg
eworICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZTsKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzbmFwc2hvdDsKK307CitXRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RS
VUNUKEdldFNuYXBzaG90QXN5bmNEYXRhKQorCit2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZl
U25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgdWludDY0X3QgY2FsbGJhY2tJRCwgV2Vi
SW1hZ2UqIHdlYkltYWdlKQoreworICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1
bHQgPSB3ZWJWaWV3LT5wcml2LT5zbmFwc2hvdFJlc3VsdHNNYXAudGFrZShjYWxsYmFja0lEKTsK
KyAgICBHZXRTbmFwc2hvdEFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldFNuYXBzaG90
QXN5bmNEYXRhKj4oZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVz
dWx0LmdldCgpKSk7CisgICAgR0Vycm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFi
bGVfc2V0X2Vycm9yX2lmX2NhbmNlbGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9y
KSkKKyAgICAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgp
LCBlcnJvcik7CisgICAgZWxzZSBpZiAod2ViSW1hZ2UpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGltYWdlID0gd2ViSW1hZ2UtPmJpdG1hcCgpKQorICAgICAgICAgICAg
ZGF0YS0+c25hcHNob3QgPSBpbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCgmZXJyb3IsIFdFQktJVF9TTkFQU0hPVF9F
UlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19DUkVBVEUsIF8oIlRoZXJlIHdh
cyBhbiBlcnJvciBjcmVhdGluZyB0aGUgc25hcHNob3QiKSk7CisgICAgICAgIGdfc2ltcGxlX2Fz
eW5jX3Jlc3VsdF90YWtlX2Vycm9yKHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIH0KKworICAg
IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9jb21wbGV0ZShyZXN1bHQuZ2V0KCkpOworfQorCitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwg
U25hcHNob3RSZWdpb25WaXNpYmxlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VC
S0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULCBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1
bWVudCk7CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgd2ViS2l0U25hcHNob3RPcHRpb25zVG9T
bmFwc2hvdE9wdGlvbnMoV2ViS2l0U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgU25h
cHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IDA7CisKKyAgICBpZiAoIShvcHRpb25zICYg
V0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HKSkK
KyAgICAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rp
b25IaWdobGlnaHRpbmc7CisKKyAgICByZXR1cm4gc25hcHNob3RPcHRpb25zOworfQorCitzdGF0
aWMgaW5saW5lIHVpbnQ2NF90IGdlbmVyYXRlU25hcHNob3RDYWxsYmFja0lEKCkKK3sKKyAgICBz
dGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZUNh
bGxiYWNrSUQrKzsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90Ogor
ICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAb3B0aW9uczogI1dlYktpdFNuYXBz
aG90T3B0aW9ucyBmb3IgdGhlIHNuYXBzaG90CisgKiBAcmVnaW9uOiB0aGUgI1dlYktpdFNuYXBz
aG90UmVnaW9uIGZvciB0aGlzIHNuYXBzaG90CisgKiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25l
KTogYSAjR0NhbmNlbGxhYmxlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IGEgI0dBc3lu
Y1JlYWR5Q2FsbGJhY2sKKyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdXNlciBkYXRhCisgKgor
ICogQXN5bmNocm9ub3VzbHkgcmV0cmlldmVzIGEgc25hcHNob3Qgb2YgQHdlYl92aWV3IGZvciBA
cmVnaW9uLgorICogQG9wdGlvbnMgc3BlY2lmaWVzIGhvdyB0aGUgc25hcHNob3Qgc2hvdWxkIGJl
IHJlbmRlcmVkLgorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxi
YWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgbXVzdAorICogY2FsbCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90X2ZpbmlzaCgpIHRvIGdldCB0aGUgcmVzdWx0IG9mIHRoZQorICogb3BlcmF0aW9u
LgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0U25hcHNob3RSZWdpb24gcmVnaW9uLCBXZWJLaXRTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFj
ayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworCisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNS
ZXN1bHQ+IHJlc3VsdCA9IGFkb3B0R1JlZihnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JK
RUNUKHdlYlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QpKSk7CisgICAgR2V0U25h
cHNob3RBc3luY0RhdGEqIGRhdGEgPSBjcmVhdGVHZXRTbmFwc2hvdEFzeW5jRGF0YSgpOworICAg
IGRhdGEtPmNhbmNlbGxhYmxlID0gY2FuY2VsbGFibGU7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVz
dWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpLCBkYXRhLCByZWludGVycHJldF9j
YXN0PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95R2V0U25hcHNob3RBc3luY0RhdGEpKTsKKworICAg
IEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2FnZTsKKyAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gZ2VuZXJhdGVTbmFwc2hvdENhbGxiYWNrSUQoKTsKKyAgICBtZXNzYWdlLnNldChT
dHJpbmc6OmZyb21VVEY4KCJTbmFwc2hvdE9wdGlvbnMiKSwgV2ViVUludDY0OjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHdlYktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNob3RPcHRpb25z
KG9wdGlvbnMpKSkpOworICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIlNuYXBzaG90
UmVnaW9uIiksIFdlYlVJbnQ2NDo6Y3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWdpb24p
KSk7CisgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiQ2FsbGJhY2tJRCIpLCBXZWJV
SW50NjQ6OmNyZWF0ZShjYWxsYmFja0lEKSk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5zbmFwc2hv
dFJlc3VsdHNNYXAuc2V0KGNhbGxiYWNrSUQsIHJlc3VsdC5nZXQoKSk7CisgICAgZ2V0UGFnZSh3
ZWJWaWV3KS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFN0cmluZzo6ZnJvbVVURjgoIkdl
dFNuYXBzaG90IiksIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1lc3NhZ2UpLmdldCgpKTsK
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaDoKKyAqIEB3
ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0Cisg
KiBAZXJyb3I6IHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisg
KgorICogRmluaXNoZXMgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBm
dWxsKTogYSAjY2Fpcm9fc3VyZmFjZV90IHdpdGggdGhlIHJldHJpZXZlZCBzbmFwc2hvdCBvciAl
TlVMTCBpbiBlcnJvci4KKyAqLworY2Fpcm9fc3VyZmFjZV90KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90X2ZpbmlzaChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lT
X0FTWU5DX1JFU1VMVChyZXN1bHQpLCAwKTsKKworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogc2lt
cGxlID0gR19TSU1QTEVfQVNZTkNfUkVTVUxUKHJlc3VsdCk7CisgICAgZ193YXJuX2lmX2ZhaWwo
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2VfdGFnKHNpbXBsZSkgPT0gd2Via2l0X3dl
Yl92aWV3X2dldF9zbmFwc2hvdCk7CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3By
b3BhZ2F0ZV9lcnJvcihzaW1wbGUsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8R2V0U25hcHNob3RBc3lu
Y0RhdGEqPihnX3NpbXBsZV9hc3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihzaW1wbGUp
KS0+c25hcHNob3QuZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGFhZTg0OWJmMDg5NWYyNmEzZmExZjNmYzM1NWJm
NGE0ZTAzNjM4ZjcuLjVkNDZmZjViOTVkZDNiZjUyNGEwOGZjZTk4YWY3MDM0ODE2ZTM3OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgK
QEAgLTE1OSw2ICsxNTksMzQgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfVklFV19NT0RF
X1NPVVJDRQogfSBXZWJLaXRWaWV3TW9kZTsKIAorLyoqCisgKiBXZWJLaXRTbmFwc2hvdE9wdGlv
bnM6CisgKiBAV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORTogRG8gbm90IGluY2x1ZGUgYW55
IHNwZWNpYWwgb3B0aW9ucy4KKyAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19JTkNMVURFX1NF
TEVDVElPTl9ISUdITElHSFRJTkc6IFdoZXRoZXIgdG8gaW5jbHVkZSBpbiB0aGUKKyAqIHNuYXBz
aG90IHRoZSBoaWdobGlnaHQgb2YgdGhlIHNlbGVjdGVkIGNvbnRlbnQuCisgKgorICogRW51bSB2
YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbnMgd2hlbiB0YWtpbmcgYSBzbmFwc2hvdAorICog
ZnJvbSBhICNXZWJLaXRXZWJWaWV3LgorICovCit0eXBlZGVmIGVudW0geworICBXRUJLSVRfU05B
UFNIT1RfT1BUSU9OU19OT05FID0gMCwKKyAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVE
RV9TRUxFQ1RJT05fSElHSExJR0hUSU5HID0gMSA8PCAwLAorfSBXZWJLaXRTbmFwc2hvdE9wdGlv
bnM7CisKKy8qKgorICogV2ViS2l0U25hcHNob3RSZWdpb246CisgKiBAV0VCS0lUX1NOQVBTSE9U
X1JFR0lPTl9WSVNJQkxFOiBTcGVjaWZpZXMgYSBzbmFwc2hvdCBvbmx5IGZvciB0aGUgYXJlYSB0
aGF0IGlzCisgKiB2aXNpYmxlIGluIHRoZSB3ZWJ2aWV3CisgKiBAV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9GVUxMX0RPQ1VNRU5UOiBBIHNuYXBzaG90IG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQuCisg
KgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IHRoZSByZWdpb24gZnJvbSB3aGljaCB0
byBnZXQgYSAjV2ViS2l0V2ViVmlldworICogc25hcHNob3QKKyAqLwordHlwZWRlZiBlbnVtIHsK
KyAgV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFID0gMCwKKyAgV0VCS0lUX1NOQVBTSE9U
X1JFR0lPTl9GVUxMX0RPQ1VNRU5ULAorfSBXZWJLaXRTbmFwc2hvdFJlZ2lvbjsKKwogc3RydWN0
IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTQx
OCw3ICs0NDYsMTggQEAgV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90
bHNfaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGUgICAgICAgICAgKipjZXJ0aWZpY2F0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzICAgICAgKmVycm9ycyk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
dmlld19nZXRfc25hcHNob3QgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U25hcHNob3RSZWdpb24gICAgICAgcmVnaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0U25hcHNob3RPcHRpb25zICAgICAgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAg
KmNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAg
ICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOwogCitXRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2Vf
dCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAg
ICAgICAgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsKIEdfRU5EX0RF
Q0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggNmQwY2RmMjc0YTJlNTJjMDc0NTE4MjQ0
YzcwMjQ2ODE4OWVlOTIwNS4uYzQxODViYjllYzUzMDUyZjM5OTFkNGVkNjQxNTViMDBkNzAzNTQ0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFdlYktpdFdlYlZp
ZXdQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAogCisjaW5jbHVkZSAi
V2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCkBAIC01MCw2ICs1MSw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1ByaW50
RnJhbWUoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSopOwogdm9pZCB3ZWJr
aXRXZWJWaWV3UmVzb3VyY2VMb2FkU3RhcnRlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXRVUklSZXF1ZXN0
Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmll
dyosIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCopOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtp
dFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJl
c291cmNlSWRlbnRpZmllcik7Cit2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3Qo
V2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6V2ViSW1hZ2UqKTsK
IHZvaWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3
KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIGJvb2wgd2Via2l0V2ViVmlld0VudGVy
RnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiBib29sIHdlYmtpdFdlYlZpZXdMZWF2ZUZ1bGxT
Y3JlZW4oV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZl
OGE4NDc3N2JlMjdiNDViZWRlMzAzNjViMjQ0MDlmYjJhMjljYS4uMDUxOTJlMDlkN2Y5MTU5ZjZi
ODI3YmE5OTdjODVmNjQ3MTMzMDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC03
NSw2ICs3NSw4IEBAIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZQogV2ViS2l0U2F2ZU1vZGUKIFdl
YktpdFZpZXdNb2RlCiBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAorV2ViS2l0U25hcHNob3RP
cHRpb25zCitXZWJLaXRTbmFwc2hvdFJlZ2lvbgogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1h
bmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTEzNCw2ICsxMzYsOCBAQCB3ZWJr
aXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3ZpZXdfbW9kZQog
d2Via2l0X3dlYl92aWV3X2dldF92aWV3X21vZGUKIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2lu
Zm8KK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QKK3dlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3RfZmluaXNoCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0CkBAIC02MDcsMTggKzYxMSwyMSBAQCBXRUJLSVRfUE9MSUNZX0VS
Uk9SCiBXRUJLSVRfRE9XTkxPQURfRVJST1IKIFdFQktJVF9QUklOVF9FUlJPUgogV0VCS0lUX0pB
VkFTQ1JJUFRfRVJST1IKK1dFQktJVF9TTkFQU0hPVF9FUlJPUgogV2ViS2l0TmV0d29ya0Vycm9y
CiBXZWJLaXRQbHVnaW5FcnJvcgogV2ViS2l0UG9saWN5RXJyb3IKIFdlYktpdERvd25sb2FkRXJy
b3IKIFdlYktpdFByaW50RXJyb3IKIFdlYktpdEphdmFzY3JpcHRFcnJvcgorV2ViS2l0U25hcHNo
b3RFcnJvcgogd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsKIHdlYmtpdF9wbHVnaW5fZXJyb3Jf
cXVhcmsKIHdlYmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsKIHdlYmtpdF9kb3dubG9hZF9lcnJvcl9x
dWFyawogd2Via2l0X3ByaW50X2Vycm9yX3F1YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9x
dWFyaword2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9O
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDljZjFkZGNjZjc5NGEzYzA5NWY2MzE4YjZj
YzA5MjM2NGRiYWY1YzEuLjliNGYxMTQwZGNlMzlmNzcwOTI4YzVhNGJiZDZjZjY1YjgyM2YyYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMzUgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdNb2RlKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sIGluZGV4SFRNTCk7CiB9
CiAKK2NsYXNzIFNuYXBzaG90V2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJs
aWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShTbmFwc2hvdFdlYlZpZXdUZXN0KTsKKwor
ICAgIFNuYXBzaG90V2ViVmlld1Rlc3QoKQorICAgICAgICA6IG1fc3VyZmFjZSgwKQorICAgIHsK
KyAgICB9CisKKyAgICB+U25hcHNob3RXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAgICBjYWly
b19zdXJmYWNlX2Rlc3Ryb3kobV9zdXJmYWNlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBv
blNuYXBzaG90UmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCogcmVz
LCBTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgR093blB0cjxHRXJy
b3I+IGVycm9yOworICAgICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAg
ICBnX2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlIHx8ICFlcnJvci5nZXQoKSk7CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRf
U05BUFNIT1RfRVJST1IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRURfVE9fQ1JFQVRFKTsK
KyAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgfQorCisgICAgY2Fpcm9fc3VyZmFj
ZV90KiB3YWl0Rm9yU25hcHNob3QoV2ViS2l0U25hcHNob3RSZWdpb24gcmVnaW9uLCBXZWJLaXRT
bmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKKyAgICB7CisgICAgICAgIG1fc3VyZmFjZSA9IDA7Cisg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QobV93ZWJWaWV3LCByZWdpb24sIG9w
dGlvbnMsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ob25TbmFwc2hv
dFJlYWR5KSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAg
ICAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc3VyZmFjZSk7CisgICAgfQor
CisgICAgc3RhdGljIHZvaWQgb25TbmFwc2hvdENhbmNlbGxlZFJlYWR5KFdlYktpdFdlYlZpZXcq
IHdlYl92aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgU25hcHNob3RXZWJWaWV3VGVzdCogdGVzdCkK
KyAgICB7CisgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgdGVzdC0+bV9z
dXJmYWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3ZpZXcsIHJl
cywgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSk7
CisgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VS
Uk9SX0NBTkNFTExFRCk7CisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgIH0KKwor
ICAgIGdib29sZWFuIGdldFNuYXBzaG90QW5kQ2FuY2VsKCkKKyAgICB7CisgICAgICAgIG1fc3Vy
ZmFjZSA9IDA7CisgICAgICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJsZSA9IGFk
b3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dl
dF9zbmFwc2hvdChtX3dlYlZpZXcsIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VC
S0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ob25TbmFwc2hvdENhbmNlbGxlZFJlYWR5KSwgdGhp
cyk7CisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsKKyAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlOworfTsKKworc3RhdGlj
IGdib29sZWFuIGNhaXJvU3VyZmFjZXNFcXVhbChjYWlyb19zdXJmYWNlX3QqIHMxLCBjYWlyb19z
dXJmYWNlX3QqIHMyKQoreworICAgIHJldHVybiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9y
bWF0KHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoczIpCisgICAgICAgICYm
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF93aWR0aChzMikKKyAgICAgICAgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0
KHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoczIpCisgICAgICAgICYmIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzMSkgPT0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfc3RyaWRlKHMyKQorICAgICAgICAmJiAhbWVtY21wKGNvbnN0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoczEp
KSksCisgICAgICAgICAgICBjb25zdF9jYXN0PGNvbnN0IHZvaWQqPihyZWludGVycHJldF9jYXN0
PHZvaWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHMyKSkpLAorICAgICAgICAgICAg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHMxKSpjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUoczEpKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U25hcHNob3QoU25h
cHNob3RXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2Fk
SHRtbCgiPGh0bWw+PGJvZHk+PHA+V2hhdGV2ZXI8L3A+PC9ib2R5PjwvaHRtbD4iLCAwKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIC8vIFdlYlZpZXcgbm90IHZp
c2libGUuCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlMSA9IHRlc3QtPndhaXRGb3JTbmFw
c2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJ
T05TX05PTkUpOworICAgIGdfYXNzZXJ0KCFzdXJmYWNlMSk7CisKKyAgICAvLyBTaG93IHN1cmZh
Y2UsIHJlc2l6ZSB0byA1MHg1MCwgdHJ5IGFnYWluLgorICAgIHRlc3QtPnNob3dJbldpbmRvd0Fu
ZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHRlc3QtPnJlc2l6ZVZpZXcoNTAsIDUwKTsKKyAgICBz
dXJmYWNlMSA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJ
U0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1cmZh
Y2UxKTsKKworICAgIC8vIG9idGFpbmVkIHN1cmZhY2Ugc2hvdWxkIGJlIGF0IHRoZSBtb3N0IDUw
eDUwLiBTdG9yZSB0aGUgc2l6ZQorICAgIC8vIGZvciBjb21wYXJpc29uIGxhdGVyLgorICAgIGlu
dCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UxKTsKKyAgICBp
bnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQod2lkdGgsIDw9LCA1MCk7CisgICAgZ19hc3NlcnRfY21waW50KGhl
aWdodCwgPD0sIDUwKTsKKworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMSk7CisK
KyAgICAvLyBTZWxlY3QgYWxsIHRleHQgaW4gdGhlIFdlYlZpZXcsIHJlcXVlc3QgYSBzbmFwc2hv
dCBpZ25vcmluZyBzZWxlY3Rpb24uCisgICAgdGVzdC0+c2VsZWN0QWxsKCk7CisgICAgc3VyZmFj
ZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxF
LCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJmYWNlMSk7
CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZh
Y2UxKSwgPT0sIHdpZHRoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKSwgPT0sIGhlaWdodCk7CisKKyAgICAvLyBDcmVhdGUgaWRl
bnRpY2FsIHN1cmZhY2UuCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlMiA9IHRlc3QtPndh
aXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQ
U0hPVF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UyKTsKKworICAgIC8vIENv
bXBhcmUgdGhlc2UgdHdvLCB0aGV5IHNob3VsZCBiZSBpZGVudGljYWwuCisgICAgZ19hc3NlcnQo
Y2Fpcm9TdXJmYWNlc0VxdWFsKHN1cmZhY2UxLCBzdXJmYWNlMikpOworICAgIGNhaXJvX3N1cmZh
Y2VfZGVzdHJveShzdXJmYWNlMik7CisKKyAgICAvLyBSZXF1ZXN0IGEgbmV3IHNuYXBzaG90LCBp
bmNsdWRpbmcgdGhlIHNlbGVjdGlvbiB0aGlzIHRpbWUuIFRoZQorICAgIC8vIHNpemUgc2hvdWxk
IGJlIHRoZSBzYW1lIGJ1dCB0aGUgcmVzdWx0IG11c3QgYmUgZGlmZmVyZW50IHRvIHRoZQorICAg
IC8vIG9uZSBwcmV2aW91c2x5IG9idGFpbmVkLgorICAgIHN1cmZhY2UyID0gdGVzdC0+d2FpdEZv
clNuYXBzaG90KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NOQVBTSE9U
X09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HKTsKKyAgICBnX2Fzc2VydChz
dXJmYWNlMik7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dp
ZHRoKHN1cmZhY2UyKSwgPT0sIHdpZHRoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UyKSwgPT0sIGhlaWdodCk7CisgICAgZ19hc3Nl
cnQoIWNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKyAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIpOworCisgICAgLy8gUmVxdWVzdCBhIHNuYXBzaG90IG9m
IHRoZSB3aG9sZSBkb2N1bWVudCBpbiB0aGUgV2ViVmlldy4gVGhlCisgICAgLy8gcmVzdWx0IHNo
b3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgc2l6ZSBvYnRhaW5lZCBwcmV2aW91c2x5LgorICAg
IHN1cmZhY2UyID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KFdFQktJVF9TTkFQU0hPVF9SRUdJT05f
RlVMTF9ET0NVTUVOVCwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7CisgICAgZ19hc3Nl
cnQoc3VyZmFjZTIpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChzdXJmYWNlMiksICA+LCB3aWR0aCk7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMiksID4sIGhlaWdodCk7CisgICAgZ19h
c3NlcnQoIWNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKworICAgIGNh
aXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMSk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95
KHN1cmZhY2UyKTsKKworICAgIGdfYXNzZXJ0KHRlc3QtPmdldFNuYXBzaG90QW5kQ2FuY2VsKCkp
OworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KTsK
QEAgLTExMDUsNiArMTIzNCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBGb3JtQ2xpZW50VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRG
b3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzYXZlIiwg
dGVzdFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InZpZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7CisgICAgU25hcHNob3RXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90IiwgdGVzdFdlYlZpZXdTbmFwc2hvdCk7CiB9
CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDdlN2ViMDE2NzU4MjFhNWFiMmUz
ZGE0MmNjMjVlNjBhZTE3MThiOWEuLjdhZjgxZTUyNjE3YjdlYmFiMThlNDNjZDllOTc5OGI1YjA3
OTlmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTE5OCw2ICsxOTgsMTEgQEAgdm9pZCBXZWJWaWV3VGVz
dDo6cmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZ3RrX3dpZGdldF9zaXpl
X2FsbG9jYXRlKEdUS19XSURHRVQobV93ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwogfQogCit2b2lk
IFdlYlZpZXdUZXN0OjpzZWxlY3RBbGwoKQoreworICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZChtX3dlYlZpZXcsICJTZWxlY3RBbGwiKTsKK30KKwogc3RhdGljIHZv
aWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgc2l6ZV90IGRhdGFTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rl
c3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0
LmgKaW5kZXggMDZmMzk4Zjk2MjY1MDg2M2NjZjQ2YWFjOTQ4Y2U2MGZkMmRiYzQ2Yy4uYWY1NjUx
NzU4YTYzNWI1OTVmN2E3MzczMDc0NmM3NWYxYTZmZGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCkBAIC00OCw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOwogICAgIHZv
aWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lO
RE9XX1BPUFVQKTsKICAgICB2b2lkIHJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
KyAgICB2b2lkIHNlbGVjdEFsbCgpOwogICAgIGNvbnN0IGNoYXIqIG1haW5SZXNvdXJjZURhdGEo
c2l6ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAKICAgICB2b2lkIG1vdXNlTW92ZVRvKGlu
dCB4LCBpbnQgeSwgdW5zaWduZWQgaW50IG1vdXNlTW9kaWZpZXJzID0gMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IDZmYTM2MDkxOTY1OGE1ODkx
ZDgwZGU1YTgzNWEwN2MzMzg1ZTY3MzkuLjQwNzRlNTk0N2U2ZTA5NmIxYjBjZWQ4OWMxMDVhOTQ5
MzZlYmU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3Bw
CkBAIC0xMDUsNiArMTA1LDEzIEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbmFtZSwgV0tUeXBlUmVmIG1lCiAgICAgd2Via2l0
V2ViRXh0ZW5zaW9uRGlkUmVjZWl2ZU1lc3NhZ2UoV0VCS0lUX1dFQl9FWFRFTlNJT04oY2xpZW50
SW5mbyksIHRvSW1wbChuYW1lKS0+c3RyaW5nKCksICp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tEaWN0
aW9uYXJ5UmVmPihtZXNzYWdlQm9keSkpKTsKIH0KIAorc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgbmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpOworICAgIGlmIChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlID0gV0VCS0lU
X1dFQl9FWFRFTlNJT04oY2xpZW50SW5mbyktPnByaXYtPnBhZ2VzLmdldCh0b0ltcGwocGFnZSkp
LmdldCgpKQorICAgICAgICB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2Uod2ViUGFnZSwg
dG9JbXBsKG5hbWUpLT5zdHJpbmcoKSwgKnRvSW1wbChzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlS
ZWY+KG1lc3NhZ2VCb2R5KSkpOworfQorCiBXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4
dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlKQogewogICAgIFdlYktpdFdlYkV4
dGVuc2lvbiogZXh0ZW5zaW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9FWFRFTlNJT04sIE5VTEwpKTsKQEAgLTExNiw3ICsxMjMsNyBAQCBXZWJL
aXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1bmRsZSog
YnVuZGxlKQogICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCiAgICAgICAgIDAsIC8vIGRpZEluaXRp
YWxpemVQYWdlR3JvdXAKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UsCi0gICAgICAgIDAgLy8g
ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UKKyAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UK
ICAgICB9OwogICAgIFdLQnVuZGxlU2V0Q2xpZW50KHRvQVBJKGJ1bmRsZSksICZ3a0J1bmRsZUNs
aWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCAxYWNhMTdk
ZWY0N2JkOWVjYjJhNTA1OWI2YmRjMGQwOTBlZWY0MWM3Li4wYWNjYzJkZjc5ZTQwYTI5N2I5ZTUy
MWVjNTQ0YmYzMDQ5Y2U5MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3Bw
CkBAIC0yMCwxNSArMjAsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJQYWdlLmgiCiAKKyNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJJbW11
dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRl
ICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldl
YkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjQsNiArMTI3LDQwIEBAIFdlYktpdFdlYlBhZ2Uq
IHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICByZXR1cm4gcGFnZTsK
IH0KIAordm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSog
cGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgSW1tdXRhYmxlRGljdGlvbmFyeSYgbWVz
c2FnZSkKK3sKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gU3RyaW5nKCJHZXRTbmFwc2hvdCIpKSB7
CisgICAgICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBzdGF0aWNfY2FzdDxT
bmFwc2hvdE9wdGlvbnM+KHN0YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFw
c2hvdE9wdGlvbnMiKSktPnZhbHVlKCkpOworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
c3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxiYWNrSUQiKSktPnZhbHVl
KCk7CisgICAgICAgIFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90
UmVnaW9uPihzdGF0aWNfY2FzdDxXZWJVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RSZWdp
b24iKSktPnZhbHVlKCkpOworCisgICAgICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3RJbWFn
ZTsKKyAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHBhZ2UtPnByaXYtPndlYlBhZ2U7CisgICAg
ICAgIGlmIChXZWJDb3JlOjpGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYlBhZ2UtPm1haW5GcmFt
ZVZpZXcoKSkgeworICAgICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3Q7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHJlZ2lvbikgeworICAgICAgICAgICAgY2FzZSBTbmFwc2hvdFJl
Z2lvblZpc2libGU6CisgICAgICAgICAgICAgICAgc25hcHNob3RSZWN0ID0gZnJhbWVWaWV3LT52
aXNpYmxlQ29udGVudFJlY3QoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OkV4Y2x1ZGVTY3JvbGxi
YXJzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU25hcHNob3RS
ZWdpb25GdWxsRG9jdW1lbnQ6CisgICAgICAgICAgICAgICAgc25hcHNob3RSZWN0ID0gV2ViQ29y
ZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgZnJhbWVWaWV3LT5jb250ZW50c1Np
emUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCFzbmFwc2hvdFJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHNuYXBz
aG90SW1hZ2UgPSB3ZWJQYWdlLT5zY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHNuYXBzaG90UmVj
dCwgMSwgc25hcHNob3RPcHRpb25zIHwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2FnZVJlcGx5
OworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJQYWdlIiwgd2ViUGFnZSk7CisgICAgICAgIG1l
c3NhZ2VSZXBseS5zZXQoIkNhbGxiYWNrSUQiLCBXZWJVSW50NjQ6OmNyZWF0ZShjYWxsYmFja0lE
KSk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJbWFnZSk7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNz
YWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQo
bWVzc2FnZVJlcGx5KS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50Ogog
ICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlUHJpdmF0ZS5oCmluZGV4IDBkM2RhMzA4ZTk1YTI2NTFiNGU1YzRjZmNjZDgzY2Vi
OWQ2MTEyNzUuLjNmZWM1NmU3MzQ2MmVhMjMwOWJmNjdkYjNhMWMyMDczNTFlOWVhM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCkBAIC0yMCw5ICsyMCwx
MSBAQAogI2lmbmRlZiBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdlYlBh
Z2VQcml2YXRlX2gKIAorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogCiBXZWJLaXRXZWJQYWdl
KiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYktpdDo6V2ViUGFnZSopOwordm9pZCB3ZWJraXRXZWJQ
YWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSosIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIFdlYktpdDo6SW1tdXRhYmxlRGljdGlvbmFyeSYgbWVzc2FnZSk7CiAKICNlbmRpZiAv
LyBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198345</attachid>
            <date>2013-04-16 10:43:01 -0700</date>
            <delta_ts>2013-04-16 11:28:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-98270-20130416204259.patch</filename>
            <type>text/plain</type>
            <size>30931</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzI1NDEwNDQ3MDQzZDYz
MWE0MGY4YjIxZmZjZmE2OTIwYWQ5ODIzZi4uZDM1NmI4NTg1ZTRjNWQ1OGYwNGIwMGRhZGNlOWY2
YTliNWNiYjZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTA0LTE2ICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV0sy
XSBBZGQgQVBJIHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhIHdlYnZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgR1RL
KyBBUEkgbmVjZXNzYXJ5IHRvIHJldHJpZXZlIGEgc25hcHNob3QgZnJvbSBhCisgICAgICAgIHdl
YnZpZXcgYXN5bmNocm9ub3VzbHkuIFRoZSBBUEkgdXNlcyB0aGUgaW5qZWN0ZWQgYnVuZGxlCisg
ICAgICAgIGludGVybmFsbHkgdG8gZ2V0IHRoZSBzbmFwc2hvdCBmcm9tIHRoZSBXZWJQcm9jZXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwOgorICAgICAg
ICAod2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrKTogQWRkIHNuYXBzaG90IEFQSSByZWxhdGVk
IGVycm9yCisgICAgICAgIHF1YXJrLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVycm9yLmg6IEFkZCBzbmFwc2hvdCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAgIChkaWRS
ZWNlaXZlV2ViVmlld01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOiBIYW5kbGUgdGhlIG5ldwor
ICAgICAgICAiRGlkR2V0U25hcHNob3QiIG1lc3NhZ2UuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oOiBBZGQgU25hcHNob3RSZWdpb24gZW51bS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKF9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZSk6IEFkZCBhIG1hcCBmb3IgdGhlIHNuYXBzaG90IHJlc3VsdHMuCisgICAg
ICAgIChHZXRTbmFwc2hvdEFzeW5jRGF0YSk6CisgICAgICAgICh3ZWJLaXRXZWJWaWV3RGlkUmVj
ZWl2ZVNuYXBzaG90KToKKyAgICAgICAgKHdlYktpdFNuYXBzaG90UmVnaW9uVG9TbmFwc2hvdFJl
Z2lvbik6IEhlbHBlciBtZXRob2QgZm9yIGNhc3RpbmcKKyAgICAgICAgdGhlIHJlZ2lvbiBvcHRp
b24gZW51bWVyYXRpb24uCisgICAgICAgIChnZW5lcmF0ZVNuYXBzaG90Q2FsbGJhY2tJRCk6IE1l
dGhvZCB0byBnZW5lcmF0ZSB1bmlxdWUgY2FsbGJhY2sKKyAgICAgICAgaWRzLgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NuYXBzaG90X2ZpbmlzaCk6IE5ldyBzbmFwc2hvdHRpbmcgQVBJLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDogQWRkIHRoZSBwcml2YXRlIG1ldGhv
ZAorICAgICAgICB0byBoYW5kbGUgYSByZWNlaXZlZCBzbmFwc2hvdC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBBZGQgdGhlIG5ldyBB
UEkKKyAgICAgICAgYml0cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChjYWlyb1N1cmZhY2VzRXF1YWwpOiBBZGQgaGVs
cGVyIHRvIGNvbXBhcmUgY2Fpcm9fc3VyZmFjZV90CisgICAgICAgIHN0cnVjdHMuCisgICAgICAg
ICh0ZXN0V2ViVmlld1NuYXBzaG90KTogTmV3IHRlc3QuCisgICAgICAgIChiZWZvcmVBbGwpOiBB
ZGQgdGhlIG5ldyB0ZXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZp
ZXdUZXN0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpzZWxlY3RBbGwpOiBBZGQgbWV0aG9k
IHRvIGhlbHAgdGVzdCBzbmFwc2hvdHMKKyAgICAgICAgaW5jbHVkaW5nIHNlbGVjdGlvbi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oOiBEaXR0bworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNp
b24uY3BwOgorICAgICAgICAoZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOiBEaXR0by4KKyAgICAg
ICAgKHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6IFJlZ2lzdGVyIG1ldGhvZCBhYm92ZS4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5j
cHA6CisgICAgICAgICh3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UpOiBBZGQgdGhpcyBt
ZXRob2QuIEl0CisgICAgICAgIGhhbmRsZXMgdGhlIG5ldyBtZXNzYWdlICJHZXRTbmFwc2hvdCIu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2VQcml2YXRlLmg6CisgICAgICAgIEFkZCBtZXRob2QgYWJvdmUuCisKIDIwMTMtMDQtMTYgIE1p
Y2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBbRUZMXVtXSzJdIEFkZCBhbiBBUEkgZm9yIGdldHRpbmcgY29udGV4dCBtZW51IGl0ZW0ncyBw
YXJlbnQgbWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RXJyb3IuY3BwCmluZGV4IGRjNDhiMWMwMTFhYzA3ZDNkOTEyMGZhZjJhNmFiNDk4YzJhOGEwZDAu
LmMwNmRjNjFhNThjYzRhYTBhNmMxNmRhNjU0NjQwNGE2MGUwMTI0ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5jcHAKQEAgLTkxLDMgKzkx
LDggQEAgR1F1YXJrIHdlYmtpdF9qYXZhc2NyaXB0X2Vycm9yX3F1YXJrKCkKIHsKICAgICByZXR1
cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoIldlYktpdEphdmFzY3JpcHRFcnJvciIpOwog
fQorCitHUXVhcmsgd2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrKCkKK3sKKyAgICByZXR1cm4g
Z19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoIldlYktpdFNuYXBzaG90RXJyb3IiKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oCmluZGV4IGMy
MDU4MTY4M2Q0Nzg5MDgwNDg1M2E0ODcxNDYwMTQxY2FjNGEwZmMuLmU3ZGU5M2JjMjVlMGRkY2Q0
NDQzZWJhYzcyOWZlOTU5ODNhNmJjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RXJyb3IuaApAQCAtMzUsNiArMzUsNyBAQCBHX0JFR0lOX0RFQ0xTCiAj
ZGVmaW5lIFdFQktJVF9ET1dOTE9BRF9FUlJPUiAgIHdlYmtpdF9kb3dubG9hZF9lcnJvcl9xdWFy
ayAoKQogI2RlZmluZSBXRUJLSVRfUFJJTlRfRVJST1IgICAgICB3ZWJraXRfcHJpbnRfZXJyb3Jf
cXVhcmsgKCkKICNkZWZpbmUgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1Igd2Via2l0X3ByaW50X2Vy
cm9yX3F1YXJrICgpCisjZGVmaW5lIFdFQktJVF9TTkFQU0hPVF9FUlJPUiAgIHdlYmtpdF9zbmFw
c2hvdF9lcnJvcl9xdWFyayAoKQogCiAvKioKICAqIFdlYktpdE5ldHdvcmtFcnJvcjoKQEAgLTEz
MCw2ICsxMzEsMTYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfSkFWQVNDUklQVF9FUlJP
Ul9TQ1JJUFRfRkFJTEVEID0gNjk5CiB9IFdlYktpdEphdmFzY3JpcHRFcnJvcjsKIAorLyoqCisg
KiBXZWJLaXRTbmFwc2hvdEVycm9yOgorICogQFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRURf
VE9fQ1JFQVRFOiBBbiBlcnJvciBvY2N1cnJlZCB3aGVuIGNyZWF0aW5nIGEgd2VicGFnZSBzbmFw
c2hvdC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlbm90ZSBlcnJvcnMgaGFwcGVuZGlu
ZyB3aGVuIGNyZWF0aW5nIHNuYXBzaG90cyBvZiAjV2ViS2l0V2ViVmlldworICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRURfVE9fQ1JFQVRFID0gNzk5
Cit9IFdlYktpdFNuYXBzaG90RXJyb3I7CisKIFdFQktJVF9BUEkgR1F1YXJrCiB3ZWJraXRfbmV0
d29ya19lcnJvcl9xdWFyayAgICAodm9pZCk7CiAKQEAgLTE0OCw2ICsxNTksOSBAQCB3ZWJraXRf
cHJpbnRfZXJyb3JfcXVhcmsgICAgICAodm9pZCk7CiBXRUJLSVRfQVBJIEdRdWFyawogd2Via2l0
X2phdmFzY3JpcHRfZXJyb3JfcXVhcmsgKHZvaWQpOwogCitXRUJLSVRfQVBJIEdRdWFyaword2Vi
a2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrICAgKHZvaWQpOworCiBHX0VORF9ERUNMUwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRleCA2ZDc4OGJhOGMzYzFjYmFmNjI0
YjQ5ZGQyZDdjMWRhOGVhMzc2ZTBhLi4yNmE2ZjhmMTBmNjNjYWI0NzJkZGNiNmNlY2U0MWY1ZjBk
MDg0OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0yMCw2ICsyMCw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuaCIKIAorI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVz
dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgpAQCAtOTAsNiArOTEsMTAgQEAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGMKIAogICAgICAgICB3ZWJraXRXZWJSZXNvdXJjZUZhaWxlZChyZXNv
dXJjZS5nZXQoKSwgcmVzb3VyY2VFcnJvci5nZXQoKSk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdS
ZW1vdmVMb2FkaW5nV2ViUmVzb3VyY2Uod2ViVmlldywgcmVzb3VyY2VJZGVudGlmaWVyLT52YWx1
ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKG1lc3NhZ2VOYW1lLCAiRGlkR2V0U25h
cHNob3QiKSkgeworICAgICAgICBXZWJVSW50NjQqIGNhbGxiYWNrSUQgPSBzdGF0aWNfY2FzdDxX
ZWJVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCIpKTsKKyAgICAgICAgV2ViSW1hZ2Uq
IGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdlLmdldCgiU25hcHNob3QiKSk7
CisgICAgICAgIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3Qod2ViVmlldywgY2FsbGJh
Y2tJRC0+dmFsdWUoKSwgaW1hZ2UpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFByaXZhdGUuaAppbmRleCBiZTM5ZTgwMmNjM2U3NTM5MzdjODdkNmYzMTlkOTJiNzllYmEyM2Zh
Li44MzkwNGFkOWFkM2E2MWQ3YmNjMTE1YmFkZmIzODQ5OGU1YWZjZjUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0xMjAsNCAr
MTIwLDkgQEAgR1R5cGUgdHlwZV9uYW1lIyNfZ2V0X3R5cGUodm9pZCkgXAogdW5zaWduZWQgd2tF
dmVudE1vZGlmaWVyc1RvR2RrTW9kaWZpZXJzKFdLRXZlbnRNb2RpZmllcnMpOwogdW5zaWduZWQg
d2tFdmVudE1vdXNlQnV0dG9uVG9XZWJLaXRNb3VzZUJ1dHRvbihXS0V2ZW50TW91c2VCdXR0b24p
OwogCitlbnVtIFNuYXBzaG90UmVnaW9uIHsKKyAgICBTbmFwc2hvdFJlZ2lvblZpc2libGUsCisg
ICAgU25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQKK307CisKICNlbmRpZiAvLyBXZWJLaXRQcml2
YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggOWRmODY3NjQ2ZWEzNjA4ZTgyMWZiZDdjNWViOGY4YjQ4ZGI3YjkzZS4u
M2IxNzQ5MzgwZjk1YzU5YmIzMWNhYWQzYzViNmUwZDFlNzg3ODVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIxLDYg
KzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3Lmgi
CiAKKyNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHRNZW51SXRlbS5oIgpAQCAtMTMzLDYgKzEzNCw3IEBAIGVudW0gewogfTsKIAogdHlw
ZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiA+IExvYWRp
bmdSZXNvdXJjZXNNYXA7Cit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8R1NpbXBs
ZUFzeW5jUmVzdWx0PiA+IFNuYXBzaG90UmVzdWx0c01hcDsKIAogc3RydWN0IF9XZWJLaXRXZWJW
aWV3UHJpdmF0ZSB7CiAgICAgfl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCkBAIC0xNzgsNiArMTgw
LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxHQ2FuY2Vs
bGFibGU+IGZhdmljb25DYW5jZWxsYWJsZTsKICAgICBDU3RyaW5nIGZhdmljb25VUkk7CiAgICAg
dW5zaWduZWQgbG9uZyBmYXZpY29uQ2hhbmdlZEhhbmRsZXJJRDsKKworICAgIFNuYXBzaG90UmVz
dWx0c01hcCBzbmFwc2hvdFJlc3VsdHNNYXA7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tM
QVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC0yOTIwLDMgKzI5MjQsMTA2IEBAIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8oV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1Rsc0Nl
cnRpZmljYXRlKioKIAogICAgIHJldHVybiAhIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgp
OwogfQorCitzdHJ1Y3QgR2V0U25hcHNob3RBc3luY0RhdGEgeworICAgIEdSZWZQdHI8R0NhbmNl
bGxhYmxlPiBjYW5jZWxsYWJsZTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzbmFwc2hv
dDsKK307CitXRUJLSVRfREVGSU5FX0FTWU5DX0RBVEFfU1RSVUNUKEdldFNuYXBzaG90QXN5bmNE
YXRhKQorCit2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgdWludDY0X3QgY2FsbGJhY2tJRCwgV2ViSW1hZ2UqIHdlYkltYWdlKQorewor
ICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiByZXN1bHQgPSB3ZWJWaWV3LT5wcml2LT5z
bmFwc2hvdFJlc3VsdHNNYXAudGFrZShjYWxsYmFja0lEKTsKKyAgICBHZXRTbmFwc2hvdEFzeW5j
RGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldFNuYXBzaG90QXN5bmNEYXRhKj4oZ19zaW1wbGVf
YXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LmdldCgpKSk7CisgICAgR0Vy
cm9yKiBlcnJvciA9IDA7CisgICAgaWYgKGdfY2FuY2VsbGFibGVfc2V0X2Vycm9yX2lmX2NhbmNl
bGxlZChkYXRhLT5jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yKSkKKyAgICAgICAgZ19zaW1wbGVf
YXN5bmNfcmVzdWx0X3Rha2VfZXJyb3IocmVzdWx0LmdldCgpLCBlcnJvcik7CisgICAgZWxzZSBp
ZiAod2ViSW1hZ2UpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdl
ID0gd2ViSW1hZ2UtPmJpdG1hcCgpKQorICAgICAgICAgICAgZGF0YS0+c25hcHNob3QgPSBpbWFn
ZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ19zZXRfZXJy
b3JfbGl0ZXJhbCgmZXJyb3IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUiwgV0VCS0lUX1NOQVBTSE9U
X0VSUk9SX0ZBSUxFRF9UT19DUkVBVEUsIF8oIlRoZXJlIHdhcyBhbiBlcnJvciBjcmVhdGluZyB0
aGUgc25hcHNob3QiKSk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF90YWtlX2Vycm9y
KHJlc3VsdC5nZXQoKSwgZXJyb3IpOworICAgIH0KKworICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9jb21wbGV0ZShyZXN1bHQuZ2V0KCkpOworfQorCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgU25hcHNob3RSZWdpb25WaXNpYmxl
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9G
VUxMX0RPQ1VNRU5ULCBTbmFwc2hvdFJlZ2lvbkZ1bGxEb2N1bWVudCk7CisKK3N0YXRpYyBpbmxp
bmUgdW5zaWduZWQgd2ViS2l0U25hcHNob3RPcHRpb25zVG9TbmFwc2hvdE9wdGlvbnMoV2ViS2l0
U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90
T3B0aW9ucyA9IDA7CisKKyAgICBpZiAoIShvcHRpb25zICYgV0VCS0lUX1NOQVBTSE9UX09QVElP
TlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HKSkKKyAgICAgICAgc25hcHNob3RPcHRp
b25zIHw9IFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmc7CisKKyAg
ICByZXR1cm4gc25hcHNob3RPcHRpb25zOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGdl
bmVyYXRlU25hcHNob3RDYWxsYmFja0lEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVl
Q2FsbGJhY2tJRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZUNhbGxiYWNrSUQrKzsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90OgorICogQHdlYl92aWV3OiBhICNXZWJL
aXRXZWJWaWV3CisgKiBAb3B0aW9uczogI1dlYktpdFNuYXBzaG90T3B0aW9ucyBmb3IgdGhlIHNu
YXBzaG90CisgKiBAcmVnaW9uOiB0aGUgI1dlYktpdFNuYXBzaG90UmVnaW9uIGZvciB0aGlzIHNu
YXBzaG90CisgKiBAY2FuY2VsbGFibGU6IChhbGxvdy1ub25lKTogYSAjR0NhbmNlbGxhYmxlCisg
KiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6IGEgI0dBc3luY1JlYWR5Q2FsbGJhY2sKKyAqIEB1
c2VyX2RhdGE6IChjbG9zdXJlKTogdXNlciBkYXRhCisgKgorICogQXN5bmNocm9ub3VzbHkgcmV0
cmlldmVzIGEgc25hcHNob3Qgb2YgQHdlYl92aWV3IGZvciBAcmVnaW9uLgorICogQG9wdGlvbnMg
c3BlY2lmaWVzIGhvdyB0aGUgc25hcHNob3Qgc2hvdWxkIGJlIHJlbmRlcmVkLgorICoKKyAqIFdo
ZW4gdGhlIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZ
b3UgbXVzdAorICogY2FsbCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCgpIHRv
IGdldCB0aGUgcmVzdWx0IG9mIHRoZQorICogb3BlcmF0aW9uLgorICovCit2b2lkIHdlYmtpdF93
ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U25hcHNo
b3RSZWdpb24gcmVnaW9uLCBXZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgR0NhbmNlbGxh
YmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIg
dXNlckRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2Vi
VmlldykpOworCisgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0
R1JlZihnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdfT0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFj
aywgdXNlckRhdGEsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdlYmtpdF93
ZWJfdmlld19nZXRfc25hcHNob3QpKSk7CisgICAgR2V0U25hcHNob3RBc3luY0RhdGEqIGRhdGEg
PSBjcmVhdGVHZXRTbmFwc2hvdEFzeW5jRGF0YSgpOworICAgIGRhdGEtPmNhbmNlbGxhYmxlID0g
Y2FuY2VsbGFibGU7CisgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50
ZXIocmVzdWx0LmdldCgpLCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihk
ZXN0cm95R2V0U25hcHNob3RBc3luY0RhdGEpKTsKKworICAgIEltbXV0YWJsZURpY3Rpb25hcnk6
Ok1hcFR5cGUgbWVzc2FnZTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVTbmFw
c2hvdENhbGxiYWNrSUQoKTsKKyAgICBtZXNzYWdlLnNldChTdHJpbmc6OmZyb21VVEY4KCJTbmFw
c2hvdE9wdGlvbnMiKSwgV2ViVUludDY0OjpjcmVhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdl
YktpdFNuYXBzaG90T3B0aW9uc1RvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKSkpOworICAgIG1l
c3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIlNuYXBzaG90UmVnaW9uIiksIFdlYlVJbnQ2NDo6
Y3JlYXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWdpb24pKSk7CisgICAgbWVzc2FnZS5zZXQo
U3RyaW5nOjpmcm9tVVRGOCgiQ2FsbGJhY2tJRCIpLCBXZWJVSW50NjQ6OmNyZWF0ZShjYWxsYmFj
a0lEKSk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5zbmFwc2hvdFJlc3VsdHNNYXAuc2V0KGNhbGxi
YWNrSUQsIHJlc3VsdC5nZXQoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+cG9zdE1lc3NhZ2VU
b0luamVjdGVkQnVuZGxlKFN0cmluZzo6ZnJvbVVURjgoIkdldFNuYXBzaG90IiksIEltbXV0YWJs
ZURpY3Rpb25hcnk6OmFkb3B0KG1lc3NhZ2UpLmdldCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2Vi
VmlldworICogQHJlc3VsdDogYSAjR0FzeW5jUmVzdWx0CisgKiBAZXJyb3I6IHJldHVybiBsb2Nh
dGlvbiBmb3IgZXJyb3Igb3IgJU5VTEwgdG8gaWdub3JlCisgKgorICogRmluaXNoZXMgYW4gYXN5
bmNocm9ub3VzIG9wZXJhdGlvbiBzdGFydGVkIHdpdGggd2Via2l0X3dlYl92aWV3X2dldF9zbmFw
c2hvdCgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSAjY2Fpcm9fc3VyZmFj
ZV90IHdpdGggdGhlIHJldHJpZXZlZCBzbmFwc2hvdCBvciAlTlVMTCBpbiBlcnJvci4KKyAqLwor
Y2Fpcm9fc3VyZmFjZV90KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3Ip
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
LCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FTWU5DX1JFU1VMVChyZXN1bHQp
LCAwKTsKKworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogc2ltcGxlID0gR19TSU1QTEVfQVNZTkNf
UkVTVUxUKHJlc3VsdCk7CisgICAgZ193YXJuX2lmX2ZhaWwoZ19zaW1wbGVfYXN5bmNfcmVzdWx0
X2dldF9zb3VyY2VfdGFnKHNpbXBsZSkgPT0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCk7
CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGUs
IGVycm9yKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9y
ZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8R2V0U25hcHNob3RBc3luY0RhdGEqPihnX3NpbXBsZV9hc3lu
Y19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihzaW1wbGUpKS0+c25hcHNob3QuZ2V0KCkpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
CmluZGV4IGFhZTg0OWJmMDg5NWYyNmEzZmExZjNmYzM1NWJmNGE0ZTAzNjM4ZjcuLjVkNDZmZjVi
OTVkZDNiZjUyNGEwOGZjZTk4YWY3MDM0ODE2ZTM3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTE1OSw2ICsxNTksMzQgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfVklFV19NT0RFX1NPVVJDRQogfSBXZWJLaXRWaWV3
TW9kZTsKIAorLyoqCisgKiBXZWJLaXRTbmFwc2hvdE9wdGlvbnM6CisgKiBAV0VCS0lUX1NOQVBT
SE9UX09QVElPTlNfTk9ORTogRG8gbm90IGluY2x1ZGUgYW55IHNwZWNpYWwgb3B0aW9ucy4KKyAq
IEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19JTkNMVURFX1NFTEVDVElPTl9ISUdITElHSFRJTkc6
IFdoZXRoZXIgdG8gaW5jbHVkZSBpbiB0aGUKKyAqIHNuYXBzaG90IHRoZSBoaWdobGlnaHQgb2Yg
dGhlIHNlbGVjdGVkIGNvbnRlbnQuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5
IG9wdGlvbnMgd2hlbiB0YWtpbmcgYSBzbmFwc2hvdAorICogZnJvbSBhICNXZWJLaXRXZWJWaWV3
LgorICovCit0eXBlZGVmIGVudW0geworICBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FID0g
MCwKKyAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hU
SU5HID0gMSA8PCAwLAorfSBXZWJLaXRTbmFwc2hvdE9wdGlvbnM7CisKKy8qKgorICogV2ViS2l0
U25hcHNob3RSZWdpb246CisgKiBAV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFOiBTcGVj
aWZpZXMgYSBzbmFwc2hvdCBvbmx5IGZvciB0aGUgYXJlYSB0aGF0IGlzCisgKiB2aXNpYmxlIGlu
IHRoZSB3ZWJ2aWV3CisgKiBAV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5UOiBB
IHNuYXBzaG90IG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQuCisgKgorICogRW51bSB2YWx1ZXMgdXNl
ZCB0byBzcGVjaWZ5IHRoZSByZWdpb24gZnJvbSB3aGljaCB0byBnZXQgYSAjV2ViS2l0V2ViVmll
dworICogc25hcHNob3QKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9WSVNJQkxFID0gMCwKKyAgV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5U
LAorfSBXZWJLaXRTbmFwc2hvdFJlZ2lvbjsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAg
ICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTQxOCw3ICs0NDYsMTggQEAgV0VCS0lU
X0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90bHNfaW5mbyAgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlm
aWNhdGUgICAgICAgICAgKipjZXJ0aWZpY2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzICAgICAgKmVy
cm9ycyk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QgICAg
ICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0U25hcHNob3RSZWdpb24gICAgICAgcmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U25hcHNob3RPcHRpb25zICAg
ICAgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVh
ZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICB1c2Vy
X2RhdGEpOwogCitXRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCit3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3NuYXBzaG90X2ZpbmlzaCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICAgKnJlc3VsdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAg
ICAgICAgICAgICAgICAgICAqKmVycm9yKTsKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKaW5kZXggNmQwY2RmMjc0YTJlNTJjMDc0NTE4MjQ0YzcwMjQ2ODE4OWVlOTIwNS4uYzQx
ODViYjllYzUzMDUyZjM5OTFkNGVkNjQxNTViMDBkNzAzNTQ0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFdlYktpdFdlYlZpZXdQcml2YXRlX2gKICNkZWZpbmUg
V2ViS2l0V2ViVmlld1ByaXZhdGVfaAogCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC01
MCw2ICs1MSw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0V2ViVmlldyos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSopOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVzb3VyY2VMb2Fk
U3RhcnRlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXRVUklSZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdCopOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2Vi
UmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7Cit2
b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyosIHVpbnQ2
NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6V2ViSW1hZ2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jl
bW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIGJvb2wgd2Via2l0V2ViVmlld0VudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3Kik7CiBib29sIHdlYmtpdFdlYlZpZXdMZWF2ZUZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjZlOGE4NDc3N2JlMjdiNDViZWRlMzAz
NjViMjQ0MDlmYjJhMjljYS4uMDUxOTJlMDlkN2Y5MTU5ZjZiODI3YmE5OTdjODVmNjQ3MTMzMDI5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC03NSw2ICs3NSw4IEBAIFdlYktpdFBv
bGljeURlY2lzaW9uVHlwZQogV2ViS2l0U2F2ZU1vZGUKIFdlYktpdFZpZXdNb2RlCiBXZWJLaXRJ
bnNlY3VyZUNvbnRlbnRFdmVudAorV2ViS2l0U25hcHNob3RPcHRpb25zCitXZWJLaXRTbmFwc2hv
dFJlZ2lvbgogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdf
Q09NTUFORF9DVVQKQEAgLTEzNCw2ICsxMzYsOCBAQCB3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRf
dXJpCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3ZpZXdfbW9kZQogd2Via2l0X3dlYl92aWV3X2dldF92
aWV3X21vZGUKIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8KK3dlYmtpdF93ZWJfdmlld19n
ZXRfc25hcHNob3QKK3dlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoCiAKIDxTVUJT
RUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBA
IC02MDcsMTggKzYxMSwyMSBAQCBXRUJLSVRfUE9MSUNZX0VSUk9SCiBXRUJLSVRfRE9XTkxPQURf
RVJST1IKIFdFQktJVF9QUklOVF9FUlJPUgogV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IKK1dFQktJ
VF9TTkFQU0hPVF9FUlJPUgogV2ViS2l0TmV0d29ya0Vycm9yCiBXZWJLaXRQbHVnaW5FcnJvcgog
V2ViS2l0UG9saWN5RXJyb3IKIFdlYktpdERvd25sb2FkRXJyb3IKIFdlYktpdFByaW50RXJyb3IK
IFdlYktpdEphdmFzY3JpcHRFcnJvcgorV2ViS2l0U25hcHNob3RFcnJvcgogd2Via2l0X25ldHdv
cmtfZXJyb3JfcXVhcmsKIHdlYmtpdF9wbHVnaW5fZXJyb3JfcXVhcmsKIHdlYmtpdF9wb2xpY3lf
ZXJyb3JfcXVhcmsKIHdlYmtpdF9kb3dubG9hZF9lcnJvcl9xdWFyawogd2Via2l0X3ByaW50X2Vy
cm9yX3F1YXJrCiB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyaword2Via2l0X3NuYXBzaG90
X2Vycm9yX3F1YXJrCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwCmluZGV4IDI1ODk0OWUwY2EwY2M1ZmE3MzExNzhkMWQ4OTI2YWMwNGJmZjNjYWUuLjk1MTAz
ZGE1NWNmNDY2ZThjMDJiNWM2ODliODhkMGZiZDQ4ZjBhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKQEAgLTExNDYsNiArMTE0NiwxMzUgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQYWdl
VmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2Vy
dChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0
KSk7CiB9CiAKK2NsYXNzIFNuYXBzaG90V2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7
CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShTbmFwc2hvdFdlYlZpZXdUZXN0
KTsKKworICAgIFNuYXBzaG90V2ViVmlld1Rlc3QoKQorICAgICAgICA6IG1fc3VyZmFjZSgwKQor
ICAgIHsKKyAgICB9CisKKyAgICB+U25hcHNob3RXZWJWaWV3VGVzdCgpCisgICAgeworICAgICAg
ICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9zdXJmYWNlKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCBvblNuYXBzaG90UmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3Vs
dCogcmVzLCBTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOworICAgICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOwor
ICAgICAgICBnX2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlIHx8ICFlcnJvci5nZXQoKSk7CisgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBX
RUJLSVRfU05BUFNIT1RfRVJST1IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRURfVE9fQ1JF
QVRFKTsKKyAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgfQorCisgICAgY2Fpcm9f
c3VyZmFjZV90KiB3YWl0Rm9yU25hcHNob3QoV2ViS2l0U25hcHNob3RSZWdpb24gcmVnaW9uLCBX
ZWJLaXRTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKKyAgICB7CisgICAgICAgIG1fc3VyZmFjZSA9
IDA7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QobV93ZWJWaWV3LCByZWdp
b24sIG9wdGlvbnMsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ob25T
bmFwc2hvdFJlYWR5KSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29w
KTsKKyAgICAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc3VyZmFjZSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHZvaWQgb25TbmFwc2hvdENhbmNlbGxlZFJlYWR5KFdlYktpdFdl
YlZpZXcqIHdlYl92aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgU25hcHNob3RXZWJWaWV3VGVzdCog
dGVzdCkKKyAgICB7CisgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgdGVz
dC0+bV9zdXJmYWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3Zp
ZXcsIHJlcywgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3Vy
ZmFjZSk7CisgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBH
X0lPX0VSUk9SX0NBTkNFTExFRCk7CisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAg
IH0KKworICAgIGdib29sZWFuIGdldFNuYXBzaG90QW5kQ2FuY2VsKCkKKyAgICB7CisgICAgICAg
IG1fc3VyZmFjZSA9IDA7CisgICAgICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBjYW5jZWxsYWJs
ZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICAgICAgd2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdChtX3dlYlZpZXcsIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJM
RSwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlaW50
ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ob25TbmFwc2hvdENhbmNlbGxlZFJlYWR5
KSwgdGhpcyk7CisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgp
KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlOworfTsKKwor
c3RhdGljIGdib29sZWFuIGNhaXJvU3VyZmFjZXNFcXVhbChjYWlyb19zdXJmYWNlX3QqIHMxLCBj
YWlyb19zdXJmYWNlX3QqIHMyKQoreworICAgIHJldHVybiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZm9ybWF0KHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoczIpCisgICAg
ICAgICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHMxKSA9PSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF93aWR0aChzMikKKyAgICAgICAgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
aGVpZ2h0KHMxKSA9PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoczIpCisgICAgICAg
ICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzMSkgPT0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfc3RyaWRlKHMyKQorICAgICAgICAmJiAhbWVtY21wKGNvbnN0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Rh
dGEoczEpKSksCisgICAgICAgICAgICBjb25zdF9jYXN0PGNvbnN0IHZvaWQqPihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHMyKSkpLAorICAgICAg
ICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHMxKSpjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoczEpKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U25hcHNo
b3QoU25hcHNob3RXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0
LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+PHA+V2hhdGV2ZXI8L3A+PC9ib2R5PjwvaHRtbD4iLCAw
KTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIC8vIFdlYlZpZXcg
bm90IHZpc2libGUuCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlMSA9IHRlc3QtPndhaXRG
b3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hP
VF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KCFzdXJmYWNlMSk7CisKKyAgICAvLyBTaG93
IHN1cmZhY2UsIHJlc2l6ZSB0byA1MHg1MCwgdHJ5IGFnYWluLgorICAgIHRlc3QtPnNob3dJbldp
bmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHRlc3QtPnJlc2l6ZVZpZXcoNTAsIDUwKTsK
KyAgICBzdXJmYWNlMSA9IHRlc3QtPndhaXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVH
SU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0
KHN1cmZhY2UxKTsKKworICAgIC8vIG9idGFpbmVkIHN1cmZhY2Ugc2hvdWxkIGJlIGF0IHRoZSBt
b3N0IDUweDUwLiBTdG9yZSB0aGUgc2l6ZQorICAgIC8vIGZvciBjb21wYXJpc29uIGxhdGVyLgor
ICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UxKTsK
KyAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2Ux
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2lkdGgsIDw9LCA1MCk7CisgICAgZ19hc3NlcnRfY21w
aW50KGhlaWdodCwgPD0sIDUwKTsKKworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNl
MSk7CisKKyAgICAvLyBTZWxlY3QgYWxsIHRleHQgaW4gdGhlIFdlYlZpZXcsIHJlcXVlc3QgYSBz
bmFwc2hvdCBpZ25vcmluZyBzZWxlY3Rpb24uCisgICAgdGVzdC0+c2VsZWN0QWxsKCk7CisgICAg
c3VyZmFjZTEgPSB0ZXN0LT53YWl0Rm9yU25hcHNob3QoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9W
SVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKKyAgICBnX2Fzc2VydChzdXJm
YWNlMSk7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRo
KHN1cmZhY2UxKSwgPT0sIHdpZHRoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKSwgPT0sIGhlaWdodCk7CisKKyAgICAvLyBDcmVh
dGUgaWRlbnRpY2FsIHN1cmZhY2UuCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlMiA9IHRl
c3QtPndhaXRGb3JTbmFwc2hvdChXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJ
VF9TTkFQU0hPVF9PUFRJT05TX05PTkUpOworICAgIGdfYXNzZXJ0KHN1cmZhY2UyKTsKKworICAg
IC8vIENvbXBhcmUgdGhlc2UgdHdvLCB0aGV5IHNob3VsZCBiZSBpZGVudGljYWwuCisgICAgZ19h
c3NlcnQoY2Fpcm9TdXJmYWNlc0VxdWFsKHN1cmZhY2UxLCBzdXJmYWNlMikpOworICAgIGNhaXJv
X3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMik7CisKKyAgICAvLyBSZXF1ZXN0IGEgbmV3IHNuYXBz
aG90LCBpbmNsdWRpbmcgdGhlIHNlbGVjdGlvbiB0aGlzIHRpbWUuIFRoZQorICAgIC8vIHNpemUg
c2hvdWxkIGJlIHRoZSBzYW1lIGJ1dCB0aGUgcmVzdWx0IG11c3QgYmUgZGlmZmVyZW50IHRvIHRo
ZQorICAgIC8vIG9uZSBwcmV2aW91c2x5IG9idGFpbmVkLgorICAgIHN1cmZhY2UyID0gdGVzdC0+
d2FpdEZvclNuYXBzaG90KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NO
QVBTSE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5HKTsKKyAgICBnX2Fz
c2VydChzdXJmYWNlMik7CisgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3dpZHRoKHN1cmZhY2UyKSwgPT0sIHdpZHRoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UyKSwgPT0sIGhlaWdodCk7CisgICAg
Z19hc3NlcnQoIWNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKyAgICBj
YWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZTIpOworCisgICAgLy8gUmVxdWVzdCBhIHNuYXBz
aG90IG9mIHRoZSB3aG9sZSBkb2N1bWVudCBpbiB0aGUgV2ViVmlldy4gVGhlCisgICAgLy8gcmVz
dWx0IHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgc2l6ZSBvYnRhaW5lZCBwcmV2aW91c2x5
LgorICAgIHN1cmZhY2UyID0gdGVzdC0+d2FpdEZvclNuYXBzaG90KFdFQktJVF9TTkFQU0hPVF9S
RUdJT05fRlVMTF9ET0NVTUVOVCwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7CisgICAg
Z19hc3NlcnQoc3VyZmFjZTIpOworICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlMiksICA+LCB3aWR0aCk7CisgICAgZ19hc3NlcnRfY21waW50
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMiksID4sIGhlaWdodCk7Cisg
ICAgZ19hc3NlcnQoIWNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKwor
ICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMSk7CisgICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KHN1cmZhY2UyKTsKKworICAgIGdfYXNzZXJ0KHRlc3QtPmdldFNuYXBzaG90QW5kQ2Fu
Y2VsKCkpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250
ZXh0KTsKQEAgLTExNjYsNiArMTI5NSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBGb3JtQ2xp
ZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdT
dWJtaXRGb3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJz
YXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgInZpZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7CisgICAgU25hcHNob3RXZWJWaWV3
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90IiwgdGVzdFdlYlZpZXdTbmFwc2hv
dCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwYWdlLXZpc2liaWxp
dHkiLCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IGVj
MjM5Mzk5NjFiM2M3Y2M1MWU4NjBhZGVlNzA0ZDFiNzJiYjYyNzUuLjA2MjE5OGE5ZTNhMDU3NTU0
MWNmMWVmYTZjZTFkODE0ZmE5YTE0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTIwNyw2ICsyMDcsMTEg
QEAgdm9pZCBXZWJWaWV3VGVzdDo6cmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAg
ICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQobV93ZWJWaWV3KSwgJmFsbG9j
YXRpb24pOwogfQogCit2b2lkIFdlYlZpZXdUZXN0OjpzZWxlY3RBbGwoKQoreworICAgIHdlYmtp
dF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZChtX3dlYlZpZXcsICJTZWxlY3RBbGwi
KTsKK30KKwogc3RhdGljIHZvaWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2Jq
ZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CiAgICAgc2l6
ZV90IGRhdGFTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViVmlld1Rlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYlZpZXdUZXN0LmgKaW5kZXggY2JjYzEyNjhjYTAyY2JiZDU4NTMyYjcxN2VhMWVj
MWE4YmJkNzA1OS4uYjEzMjAzZTBhYjRlYzg1YjFiMmFjZDY0ZTM5YTU0YjYyODkxZmRmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3
VGVzdC5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dJbldpbmRvdyhH
dGtXaW5kb3dUeXBlID0gR1RLX1dJTkRPV19QT1BVUCk7CiAgICAgdm9pZCBzaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSA9IEdUS19XSU5ET1dfUE9QVVApOwogICAg
IHZvaWQgcmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgc2VsZWN0
QWxsKCk7CiAgICAgY29uc3QgY2hhciogbWFpblJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNv
dXJjZURhdGFTaXplKTsKIAogICAgIHZvaWQgbW91c2VNb3ZlVG8oaW50IHgsIGludCB5LCB1bnNp
Z25lZCBpbnQgbW91c2VNb2RpZmllcnMgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggNmZhMzYwOTE5NjU4YTU4OTFkODBkZTVhODM1YTA3YzMz
ODVlNjczOS4uNDA3NGU1OTQ3ZTZlMDk2YjFiMGNlZDg5YzEwNWE5NDkzNmViZTVkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTEwNSw2ICsxMDUs
MTMgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBX
S1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYgbWUKICAgICB3ZWJraXRXZWJFeHRlbnNpb25EaWRS
ZWNlaXZlTWVzc2FnZShXRUJLSVRfV0VCX0VYVEVOU0lPTihjbGllbnRJbmZvKSwgdG9JbXBsKG5h
bWUpLT5zdHJpbmcoKSwgKnRvSW1wbChzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3Nh
Z2VCb2R5KSkpOwogfQogCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1
bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBuYW1lLCBX
S1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgQVNT
RVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7
CisgICAgaWYgKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UgPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihj
bGllbnRJbmZvKS0+cHJpdi0+cGFnZXMuZ2V0KHRvSW1wbChwYWdlKSkuZ2V0KCkpCisgICAgICAg
IHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2FnZSh3ZWJQYWdlLCB0b0ltcGwobmFtZSktPnN0
cmluZygpLCAqdG9JbXBsKHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkp
KSk7Cit9CisKIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKElu
amVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNp
b24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VY
VEVOU0lPTiwgTlVMTCkpOwpAQCAtMTE2LDcgKzEyMyw3IEBAIFdlYktpdFdlYkV4dGVuc2lvbiog
d2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiAgICAgICAg
IHdpbGxEZXN0cm95UGFnZSwKICAgICAgICAgMCwgLy8gZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cAog
ICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSwKLSAgICAgICAgMCAvLyBkaWRSZWNlaXZlTWVzc2Fn
ZVRvUGFnZQorICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZQogICAgIH07CiAgICAgV0tC
dW5kbGVTZXRDbGllbnQodG9BUEkoYnVuZGxlKSwgJndrQnVuZGxlQ2xpZW50KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGY1ZDZiYTUyODE2NTA4MGQ2ODExOGVj
MDZmODM4M2JiYTg2Mjk2ZjkuLmRjN2JhZTU4Y2RlOWRjZjliZjgxZGIxZGI4MjM0ZDZjY2UyMDAy
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTIwLDE2ICsyMCwx
OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2UuaCIKIAor
I2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnku
aCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldLQnVuZGxlRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgor
I2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xOTYsNiArMTk5LDQwIEBAIFdl
YktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICBy
ZXR1cm4gcGFnZTsKIH0KIAordm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2Vi
S2l0V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgSW1tdXRhYmxlRGlj
dGlvbmFyeSYgbWVzc2FnZSkKK3sKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gU3RyaW5nKCJHZXRT
bmFwc2hvdCIpKSB7CisgICAgICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBz
dGF0aWNfY2FzdDxTbmFwc2hvdE9wdGlvbnM+KHN0YXRpY19jYXN0PFdlYlVJbnQ2NCo+KG1lc3Nh
Z2UuZ2V0KCJTbmFwc2hvdE9wdGlvbnMiKSktPnZhbHVlKCkpOworICAgICAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8V2ViVUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxiYWNr
SUQiKSktPnZhbHVlKCk7CisgICAgICAgIFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19j
YXN0PFNuYXBzaG90UmVnaW9uPihzdGF0aWNfY2FzdDxXZWJVSW50NjQqPihtZXNzYWdlLmdldCgi
U25hcHNob3RSZWdpb24iKSktPnZhbHVlKCkpOworCisgICAgICAgIFJlZlB0cjxXZWJJbWFnZT4g
c25hcHNob3RJbWFnZTsKKyAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHBhZ2UtPnByaXYtPndl
YlBhZ2U7CisgICAgICAgIGlmIChXZWJDb3JlOjpGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYlBh
Z2UtPm1haW5GcmFtZVZpZXcoKSkgeworICAgICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzbmFw
c2hvdFJlY3Q7CisgICAgICAgICAgICBzd2l0Y2ggKHJlZ2lvbikgeworICAgICAgICAgICAgY2Fz
ZSBTbmFwc2hvdFJlZ2lvblZpc2libGU6CisgICAgICAgICAgICAgICAgc25hcHNob3RSZWN0ID0g
ZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OkV4
Y2x1ZGVTY3JvbGxiYXJzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgU25hcHNob3RSZWdpb25GdWxsRG9jdW1lbnQ6CisgICAgICAgICAgICAgICAgc25hcHNob3RS
ZWN0ID0gV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgZnJhbWVWaWV3
LT5jb250ZW50c1NpemUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCFzbmFwc2hvdFJlY3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHNuYXBzaG90SW1hZ2UgPSB3ZWJQYWdlLT5zY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25z
KHNuYXBzaG90UmVjdCwgMSwgc25hcHNob3RPcHRpb25zIHwgU25hcHNob3RPcHRpb25zU2hhcmVh
YmxlKTsKKyAgICAgICAgfQorCisgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUg
bWVzc2FnZVJlcGx5OworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJQYWdlIiwgd2ViUGFnZSk7
CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIkNhbGxiYWNrSUQiLCBXZWJVSW50NjQ6OmNyZWF0
ZShjYWxsYmFja0lEKSk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25h
cHNob3RJbWFnZSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxl
KCktPnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgSW1tdXRhYmxlRGljdGlv
bmFyeTo6YWRvcHQobWVzc2FnZVJlcGx5KS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50OgogICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCmluZGV4IDBkM2RhMzA4ZTk1YTI2NTFiNGU1
YzRjZmNjZDgzY2ViOWQ2MTEyNzUuLjNmZWM1NmU3MzQ2MmVhMjMwOWJmNjdkYjNhMWMyMDczNTFl
OWVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCkBA
IC0yMCw5ICsyMCwxMSBAQAogI2lmbmRlZiBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCiAjZGVmaW5l
IFdlYktpdFdlYlBhZ2VQcml2YXRlX2gKIAorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnku
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogCiBX
ZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYktpdDo6V2ViUGFnZSopOwordm9p
ZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSosIGNvbnN0IFN0
cmluZyYgbWVzc2FnZU5hbWUsIFdlYktpdDo6SW1tdXRhYmxlRGljdGlvbmFyeSYgbWVzc2FnZSk7
CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>