<?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>19130</bug_id>
          
          <creation_ts>2008-05-19 18:12:42 -0700</creation_ts>
          <short_desc>[GTK] ChromeClient::createWindow and friends need to be implemented</short_desc>
          <delta_ts>2008-11-28 17:30:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>20854</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gustavo Noronha (kov)">gustavo</reporter>
          <assigned_to name="Gustavo Noronha (kov)">gustavo</assigned_to>
          <cc>alp</cc>
    
    <cc>a.renevier</cc>
    
    <cc>chris</cc>
    
    <cc>christian</cc>
    
    <cc>cosimoc</cc>
    
    <cc>hortont424</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>marco.barisione</cc>
    
    <cc>sandshrew</cc>
    
    <cc>uws+webkit</cc>
    
    <cc>withsmilo</cc>
    
    <cc>zuh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>80935</commentid>
    <comment_count>0</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-19 18:12:42 -0700</bug_when>
    <thetext>To allow for javascript, for instance, creating new windows, we need some ChromeClientGtk methods implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80938</commentid>
    <comment_count>1</comment_count>
      <attachid>21244</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-19 18:31:03 -0700</bug_when>
    <thetext>Created attachment 21244
my proposed solution

some stuff I wondered about: should create_web_view or the signal that is emited be passed a WebKitNetworkRequest for them to make a policy decision, and let one of those call the actual webkit_web_view_open()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81283</commentid>
    <comment_count>2</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-23 03:17:24 -0700</bug_when>
    <thetext>We worked the same patch in the same days :(

Your patch seems better but it&apos;s missing a couple of things and there are other things I would like to change.
Can you ping me on IRC so we can discuss this? My nick is barisione.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81285</commentid>
    <comment_count>3</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-23 03:17:50 -0700</bug_when>
    <thetext>*** Bug 19143 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81302</commentid>
    <comment_count>4</comment_count>
      <attachid>21244</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-23 07:24:34 -0700</bug_when>
    <thetext>Comment on attachment 21244
my proposed solution

removing the review flag, since I&apos;ll be working with barisione on merging our patches (see #19143)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81491</commentid>
    <comment_count>5</comment_count>
      <attachid>21341</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-25 16:06:47 -0700</bug_when>
    <thetext>Created attachment 21341
patch merged with work by me and barisione

I&apos;m adding the patch with no review flag set, for now, so that Marco Barisione is able to review it first, since it is a merge of both my work and his.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81528</commentid>
    <comment_count>6</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-26 09:06:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=21341) [edit]
&gt; patch merged with work by me and barisione

Some comments on the patch:

- In webkit_web_view_real_create_web_view() and webkit_web_view_real_show_web_view() you can omit param names as they are not used.

- It&apos;s not clear from the documentation who is the owner of the object returned by &quot;create-web-view&quot;. IMHO we are doing the right thing without calling g_object_ref in the callback as the reference will be owned by the window, but then we have to document this and to get the reference count right (i.e. use g_value_take object in the accumulator/unref the value returned by the emission of the signal).

- Use the exact type when registering new signals, not just G_TYPE_OBJECT.

- How about replacing locationbar with uribar? We use uri in every other place, but I don&apos;t know what I prefer. In both cases I would prefer to separate bar from the previous word but then it wouldn&apos;t be consistent with the other names.

- The default value for resizable should be TRUE.

- The default value for fullscreen should be FALSE.

- The default value for dialog should be FALSE.

- WebKitWebFeatures doesn&apos;t have functions to access directly properties but probably it&apos;s better this way than adding a lot of getters/setters.

- g_object_notify() is needed only in functions setting values not in the implementation of set_property as g_object_set_property already emits it.

- Change the _set_window_features() function to set it only if it&apos;s different from the previous one and to use g_object_notify() after setting it. I know that other properties are not doing it but there is a bug open about this (see bug #18405).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81529</commentid>
    <comment_count>7</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-26 09:15:06 -0700</bug_when>
    <thetext>I forgot a couple of things:

- You don&apos;t need to use webkit_web_view_open() in the callback, WebCore will do it for you.

- When your patch is ready for review remove the code from main.c, maybe it could go in a different patch used for testing and without the review flag set.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81559</commentid>
    <comment_count>8</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-26 17:57:47 -0700</bug_when>
    <thetext>&gt; - It&apos;s not clear from the documentation who is the owner of the object returned
&gt; by &quot;create-web-view&quot;. IMHO we are doing the right thing without calling
&gt; g_object_ref in the callback as the reference will be owned by the window, but
&gt; then we have to document this and to get the reference count right (i.e. use
&gt; g_value_take object in the accumulator/unref the value returned by the emission
&gt; of the signal).

with regards to the ref count, I made some testing and it seems to me like it is correct the way it is now; GSignal is probably doing some unref magic along the way, because the ref count gets to the signal emiter as 1, even though it is at 2 after g_value_set_object; and if I replace g_value_set_object with g_value_take_object in the accumulator I end up having all kinds of g_critical messages, even without doing a g_object_unref:

(lt-GtkLauncher:11414): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer

(lt-GtkLauncher:11414): GLib-GObject-CRITICAL **: g_signal_emit_valist: assertion `G_TYPE_CHECK_INSTANCE (instance)&apos; failed

(lt-GtkLauncher:11414): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer

(lt-GtkLauncher:11414): GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)&apos; failed

(lt-GtkLauncher:11414): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer

(lt-GtkLauncher:11414): GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)&apos; failed

(lt-GtkLauncher:11414): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)&apos; failed

(lt-GtkLauncher:11414): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)&apos; failed

So I think perhaps we don&apos;t need handling different than what we have now?

&gt; - Use the exact type when registering new signals, not just G_TYPE_OBJECT.

done
 
&gt; - How about replacing locationbar with uribar? We use uri in every other place,
&gt; but I don&apos;t know what I prefer. In both cases I would prefer to separate bar
&gt; from the previous word but then it wouldn&apos;t be consistent with the other names.

Not a lot of precedence set for this one. Perhaps uri_entry, since it is not really a &apos;bar&apos; like the others? I&apos;m not changing this one for now so we can discuss and reach some consensus.

&gt; - The default value for resizable should be TRUE.

Gah. Bad copy/paste =)

&gt; - WebKitWebFeatures doesn&apos;t have functions to access directly properties but
&gt; probably it&apos;s better this way than adding a lot of getters/setters.

I would rather keep it that way. g_object_{set,get} are convenient enough, and we&apos;re not deviating from stuff such as WebKitWebSettings, which has properties only accessible through the GObject generic accessors.
 
&gt; - g_object_notify() is needed only in functions setting values not in the
&gt; implementation of set_property as g_object_set_property already emits it.
&gt; 
&gt; - Change the _set_window_features() function to set it only if it&apos;s different
&gt; from the previous one and to use g_object_notify() after setting it. I know
&gt; that other properties are not doing it but there is a bug open about this (see
&gt; bug #18405).

ACK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81561</commentid>
    <comment_count>9</comment_count>
      <attachid>21357</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-26 18:05:25 -0700</bug_when>
    <thetext>Created attachment 21357
merged patch reworked after comments

Patch incorporating the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81631</commentid>
    <comment_count>10</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-27 12:16:38 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=21357) [edit]
&gt; merged patch reworked after comments
&gt; 
&gt; Patch incorporating the comments.

The documentation for webkit_web_view_set_window_features() is not very clear. Excluding this the patch seems ok to me, now you should mark it for review so a real reviewer can review it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81664</commentid>
    <comment_count>11</comment_count>
      <attachid>21374</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-27 16:08:53 -0700</bug_when>
    <thetext>Created attachment 21374
proposed patch

Whoever reviews this patch please consider the suggestion made by Marco Barisione about renaming locationbar to uribar, or uri_bar, and my own of renaming it to something such as uri_entry where relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81665</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-05-27 16:09:59 -0700</bug_when>
    <thetext>&gt; The documentation for webkit_web_view_set_window_features() is not very clear.
&gt; Excluding this the patch seems ok to me, now you should mark it for review so a
&gt; real reviewer can review it :)

I tried making it a bit better =). Thanks a lot for working with me on this, I really appreciate it!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82139</commentid>
    <comment_count>13</comment_count>
      <attachid>21464</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-06-02 11:46:24 -0700</bug_when>
    <thetext>Created attachment 21464
Correct proposed patch

It looks like I fscked up the last patch upload; this is a fixed one. My comments above about uri_entry remain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82214</commentid>
    <comment_count>14</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-06-03 10:03:05 -0700</bug_when>
    <thetext>The return type of create-web-view and show-web-view are wrong, they should be WEBKIT_TYPE_WEB_VIEW and G_TYPE_BOOLEAN instead of G_TYPE_OBJECT and WEBKIT_TYPE_WEB_VIEW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83989</commentid>
    <comment_count>15</comment_count>
      <attachid>21464</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-06-20 12:34:39 -0700</bug_when>
    <thetext>Comment on attachment 21464
Correct proposed patch

&gt;+    GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
&gt;+    if (window) {
&gt;+        IntRect intrect = IntRect(rect);
&gt;+        WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
&gt;+
&gt;+        g_object_set(G_OBJECT(webWindowFeatures),
&gt;+                     &quot;x&quot;, intrect.x(),
&gt;+                     NULL);
&gt;+
&gt;+        g_object_set(G_OBJECT(webWindowFeatures),
&gt;+                     &quot;y&quot;, intrect.y(),
&gt;+                     NULL);
&gt;+
&gt;+        g_object_set(G_OBJECT(webWindowFeatures),
&gt;+                     &quot;width&quot;, intrect.width(),
&gt;+                     NULL);
&gt;+
&gt;+        g_object_set(G_OBJECT(webWindowFeatures),
&gt;+                     &quot;height&quot;, intrect.height(),
&gt;+                     NULL);
&gt;+    }

That should be one g_object_set instead of four.

&gt;+void webkit_web_view_show(WebKitWebView* webView)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
&gt;+
&gt;+    gboolean isHandled = FALSE;
&gt;+    g_signal_emit(webView, webkit_web_view_signals[SHOW_WEB_VIEW], 0, &amp;isHandled);
&gt;+    if (isHandled)
&gt;+        return;
&gt;+
&gt;+    GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(webView));
&gt;+    gtk_widget_show_all(toplevel);
&gt;+}

You should never gtk_widget_show_all on code you did not write. Plus you cannot know if there is a toplevel, so you need to check that first. A gtk_widget_show might be okay.

&gt;+static void webkit_web_view_request_init(WebKitWebViewRequest* request)
&gt;+{
&gt;+    request-&gt;priv = WEBKIT_WEB_VIEW_REQUEST_GET_PRIVATE(request);
&gt;+
&gt;+    WebKitWebViewRequestPrivate* priv = request-&gt;priv;
&gt;+    priv-&gt;name = g_strdup(&quot;&quot;);
&gt;+    priv-&gt;webWindowFeatures = webkit_web_window_features_new();
&gt;+}

Why is name initially &quot;&quot; as opposed to NULL?

&gt;+    g_object_class_install_property(objectClass, PROP_NAME,
&gt;+                                    g_param_spec_string(&quot;name&quot;,
&gt;+                                                        &quot;New window name&quot;,
&gt;+                                                        &quot;The name of the new window&quot;,
&gt;+                                                        &quot;&quot;,
&gt;+                                                        WEBKIT_PARAM_READWRITE));

I&apos;m not sure about name. It&apos;s the name of a &quot;frame&quot; or &quot;window&quot; in HTML terms, so it might be better to name it accordingly.

&gt;+WEBKIT_API GType
&gt;+webkit_web_view_request_get_type(void);
&gt;+
&gt;+WEBKIT_API WebKitNetworkRequest*
&gt;+webkit_web_view_request_get_network_request(WebKitWebViewRequest* request);
&gt;+
&gt;+WEBKIT_API const gchar*
&gt;+webkit_web_view_request_get_name(WebKitWebViewRequest* request);
&gt;+
&gt;+WEBKIT_API void
&gt;+webkit_web_view_request_set_name(WebKitWebViewRequest* request, const gchar* name);
&gt;+
&gt;+WEBKIT_API WebKitWebWindowFeatures*
&gt;+webkit_web_view_request_get_window_features(WebKitWebViewRequest* request);
&gt;+
&gt;+WEBKIT_API void
&gt;+webkit_web_view_request_set_window_features(WebKitWebViewRequest* request, WebKitWebWindowFeatures* windowFeatures);

WebViewRequest might be confusing, looking at NetworkRequest. However I&apos;m not quite clear yet as for how this class fits in the interface. It might be less confusing in a general context.

&gt;+enum {
&gt;+    PROP_0,
&gt;+
&gt;+    PROP_X,
&gt;+    PROP_Y,
&gt;+    PROP_WIDTH,
&gt;+    PROP_HEIGHT,
&gt;+    PROP_TOOLBAR_VISIBLE,
&gt;+    PROP_STATUSBAR_VISIBLE,
&gt;+    PROP_SCROLLBAR_VISIBLE,
&gt;+    PROP_MENUBAR_VISIBLE,
&gt;+    PROP_LOCATIONBAR_VISIBLE,
&gt;+    PROP_RESIZABLE,
&gt;+    PROP_FULLSCREEN,
&gt;+    PROP_DIALOG

If I remember correctly one of these became meaningless at some point, in the sense that it causes no error in javascript but is never honored. I think it probably was &quot;resizable&quot; but I cannot find the bug number right now.

&gt;+    g_object_class_install_property(gobject_class,
&gt;+                                    PROP_X,
&gt;+                                    g_param_spec_int(
&gt;+                                    &quot;x&quot;,
&gt;+                                    &quot;x&quot;,
&gt;+                                    &quot;The starting x position of the window on the screen.&quot;,
&gt;+                                    -1,
&gt;+                                    G_MAXINT,
&gt;+                                    -1,
&gt;+                                    flags));

Why is the lower limit -1? I don&apos;t think this is in the ECMA spec.

&gt;+    g_object_class_install_property(gobject_class,
&gt;+                                    PROP_FULLSCREEN,
&gt;+                                    g_param_spec_boolean(
&gt;+                                    &quot;fullscreen&quot;,
&gt;+                                    &quot;Full-screen&quot;,
&gt;+                                    &quot;Controls whether window will be displayed fullscreen.&quot;,
&gt;+                                    FALSE,
&gt;+                                    flags));

All the properties have non-matching name and nick. The spelling must be the same, merely the case is different, for example &quot;fullscreen&quot; and &quot;Fullscreen&quot; in this case.

&gt;+    g_object_class_install_property(gobject_class,
&gt;+                                    PROP_DIALOG,
&gt;+                                    g_param_spec_boolean(
&gt;+                                    &quot;dialog&quot;,
&gt;+                                    &quot;Dialog&quot;,
&gt;+                                    &quot;Controls whether window should be a dialog, or a top level window.&quot;,
&gt;+                                    FALSE,
&gt;+                                    flags));

What is the exact use case of this? Is this actually something that websites make use of/ is in a spec/ has any other relevance?

&gt;+    g_object_set(G_OBJECT(webWindowFeatures),
&gt;+                 &quot;toolbar_visible&quot;, features.toolBarVisible,
&gt;+                 &quot;statusbar_visible&quot;, features.statusBarVisible,
&gt;+                 &quot;scrollbar_visible&quot;, features.scrollbarsVisible,
&gt;+                 &quot;menubar_visible&quot;, features.menuBarVisible,
&gt;+                 &quot;locationbar_visible&quot;, features.locationBarVisible,
&gt;+                 &quot;resizable&quot;, features.resizable,
&gt;+                 &quot;fullscreen&quot;, features.fullscreen,
&gt;+                 &quot;dialog&quot;, features.dialog,
&gt;+                 NULL);

Please use hyphens for property and signal names, like &quot;toolbar-visible&quot; instead of &quot;toolbar_visible&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84067</commentid>
    <comment_count>16</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-06-22 09:29:36 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 21464 [edit])
&gt; You should never gtk_widget_show_all on code you did not write. Plus you cannot
&gt; know if there is a toplevel, so you need to check that first. A gtk_widget_show
&gt; might be okay.

Ok for gtk_widget_show() but in this case it should also be called on the webview too. _get_toplevel() returns the widget itself if there is not toplevel.

&gt; &gt;+static void webkit_web_view_request_init(WebKitWebViewRequest* request)
&gt; &gt;+{
&gt; &gt;+    request-&gt;priv = WEBKIT_WEB_VIEW_REQUEST_GET_PRIVATE(request);
&gt; &gt;+
&gt; &gt;+    WebKitWebViewRequestPrivate* priv = request-&gt;priv;
&gt; &gt;+    priv-&gt;name = g_strdup(&quot;&quot;);
&gt; &gt;+    priv-&gt;webWindowFeatures = webkit_web_window_features_new();
&gt; &gt;+}
&gt; 
&gt; Why is name initially &quot;&quot; as opposed to NULL?

Don&apos;t remember if there was a reason for that, probably NULL is the right thing.
 
&gt; &gt;+    g_object_class_install_property(objectClass, PROP_NAME,
&gt; &gt;+                                    g_param_spec_string(&quot;name&quot;,
&gt; &gt;+                                                        &quot;New window name&quot;,
&gt; &gt;+                                                        &quot;The name of the new window&quot;,
&gt; &gt;+                                                        &quot;&quot;,
&gt; &gt;+                                                        WEBKIT_PARAM_READWRITE));
&gt; 
&gt; I&apos;m not sure about name. It&apos;s the name of a &quot;frame&quot; or &quot;window&quot; in HTML terms,
&gt; so it might be better to name it accordingly.

I would say frame-name.
 
&gt; WebViewRequest might be confusing, looking at NetworkRequest. However I&apos;m not
&gt; quite clear yet as for how this class fits in the interface. It might be less
&gt; confusing in a general context.

I&apos;m not so sure anymore that we need it as both the win and mac port pass to the delegate just the URI and the window features.

&gt; &gt;+enum {
&gt; &gt;+    PROP_0,
&gt; &gt;+
&gt; &gt;+    PROP_X,
&gt; &gt;+    PROP_Y,
&gt; &gt;+    PROP_WIDTH,
&gt; &gt;+    PROP_HEIGHT,
&gt; &gt;+    PROP_TOOLBAR_VISIBLE,
&gt; &gt;+    PROP_STATUSBAR_VISIBLE,
&gt; &gt;+    PROP_SCROLLBAR_VISIBLE,
&gt; &gt;+    PROP_MENUBAR_VISIBLE,
&gt; &gt;+    PROP_LOCATIONBAR_VISIBLE,
&gt; &gt;+    PROP_RESIZABLE,
&gt; &gt;+    PROP_FULLSCREEN,
&gt; &gt;+    PROP_DIALOG
&gt; 
&gt; If I remember correctly one of these became meaningless at some point, in the
&gt; sense that it causes no error in javascript but is never honored. I think it
&gt; probably was &quot;resizable&quot; but I cannot find the bug number right now.

We will check/ask on #webkit.

&gt; &gt;+    g_object_class_install_property(gobject_class,
&gt; &gt;+                                    PROP_DIALOG,
&gt; &gt;+                                    g_param_spec_boolean(
&gt; &gt;+                                    &quot;dialog&quot;,
&gt; &gt;+                                    &quot;Dialog&quot;,
&gt; &gt;+                                    &quot;Controls whether window should be a dialog, or a top level window.&quot;,
&gt; &gt;+                                    FALSE,
&gt; &gt;+                                    flags));
&gt; 
&gt; What is the exact use case of this? Is this actually something that websites
&gt; make use of/ is in a spec/ has any other relevance?

I think it&apos;s a IE extension also supported in WebKit. After the merge of squirrel fish WebKit doesn&apos;t support anymore showModalDialog(), I asked on #webkit if this is a regression but I got no answer. I will try again and submit a bug report.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84247</commentid>
    <comment_count>17</comment_count>
      <attachid>21902</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-06-24 06:20:15 -0700</bug_when>
    <thetext>Created attachment 21902
proposed patch

I applied most of the suggestions made by Christian, following also the comments made by Marco Barisione. This patch has an alternative approach to passing information to the create-web-view signal: instead of a new class holding the information I just pass the WebWindowFeatures and the NetworkRequest objects.

I tried to address the problem with property names. I left some issues unmodified while me and Barisione work on finding the correct answers, such as the dialog property of WebWindowFeatures, and the limits for width/height.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84276</commentid>
    <comment_count>18</comment_count>
      <attachid>21902</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-06-24 09:42:53 -0700</bug_when>
    <thetext>Comment on attachment 21902
proposed patch

&gt;-void ChromeClient::setWindowRect(const FloatRect&amp; r)
&gt;+void ChromeClient::setWindowRect(const FloatRect&amp; rect)
&gt; {
&gt;-    notImplemented();
&gt;+    if (!m_webView)
&gt;+        return;
&gt;+
&gt;+    GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
&gt;+    if (window) {
&gt;+        IntRect intrect = IntRect(rect);
&gt;+        WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
&gt;+
&gt;+        g_object_set(G_OBJECT(webWindowFeatures),
&gt;+                     &quot;x&quot;, intrect.x(),
&gt;+                     &quot;y&quot;, intrect.y(),
&gt;+                     &quot;width&quot;, intrect.width(),
&gt;+                     &quot;height&quot;, intrect.height(),
&gt;+                     NULL);
&gt;+    }

What is the purpose of that &quot;if (window) {&quot; check? I have actually missed that in the last patch. It doesn&apos;t have any effect, from what I can see.

&gt;+    if (!webView)
&gt;         return 0;
&gt;-    } else {
&gt;-        /* TODO: FrameLoadRequest is not used */
&gt;-        WebKitWebView* webView = WEBKIT_WEB_VIEW_GET_CLASS(m_webView)-&gt;create_web_view(m_webView);
&gt;-        if (!webView)
&gt;-            return 0;
&gt;-
&gt;-        WebKitWebViewPrivate* privateData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
&gt;-        return privateData-&gt;corePage;
&gt;-    }
&gt;+
&gt;+    WebKitWebViewPrivate* privateData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
&gt;+    return privateData-&gt;corePage;

Make that &quot;return core(webView);&quot; please.

&gt;@@ -67,6 +69,7 @@ extern &quot;C&quot; {
&gt;     struct _WebKitWebViewPrivate {
&gt;         WebCore::Page* corePage;
&gt;         WebKitWebSettings* webSettings;
&gt;+        WebKitWebWindowFeatures* webWindowFeatures;
&gt; 
&gt;         WebKitWebFrame* mainFrame;
&gt;         WebCore::String applicationNameForUserAgent;
&gt;@@ -110,6 +113,9 @@ extern &quot;C&quot; {
&gt;     WebKitWebHistoryItem*
&gt;     webkit_web_history_item_new_with_core_item(WebCore::HistoryItem*);
&gt; 
&gt;+    void
&gt;+    webkit_web_view_show (WebKitWebView* webView);
&gt;+
&gt;     // FIXME: Move these to webkitwebframe.h once their API has been discussed.
&gt; 
&gt;     WEBKIT_API GSList*

What is the idea here? Please decide if you want to keep this private for now, by moving it below the FIXME comment, or move it to webkitwebview.h. :)

&gt;@@ -123,6 +129,12 @@ extern &quot;C&quot; {
&gt; 
&gt;     WEBKIT_API gchar*
&gt;     webkit_web_view_get_selected_text (WebKitWebView* web_view);
&gt;+
&gt;+    WEBKIT_API WebKitWebWindowFeatures*
&gt;+    webkit_web_window_features_new_from_core_features (const WebCore::WindowFeatures&amp; features);

This is also misplaced. We will *never* expose WebCore interfaces. So please move this above the comment and remove the WEBKIT_API macro.

&gt;+     * WebKitWebView::create-web-view:
&gt;+     * @web_view: the object on which the signal is emitted
&gt;+     * @frame: the #WebKitWebFrame
&gt;+     * @window_features: a #WebKitWebWindowFeaturest
&gt;+     * @network_request: a #WebKitNetworkRequest
&gt;+     * @return: a newly allocated #WebKitWebView or %NULL
&gt;+     *
&gt;+     * Emitted when the creation of a new window is requested.
&gt;+     * If this signal is handled the signal handler should return the
&gt;+     * newly created #WebKitWebView. The new #WebKitWebView should not be
&gt;+     * displayed to the user until the &quot;show-web-view&quot; signal is emitted.
&gt;+     *
&gt;+     * The signal handlers should not try to deal with the reference
&gt;+     * count for the new #WebKitWebView. The widget to which the
&gt;+     * widget is added will handle that.
&gt;+     *
&gt;+     * @web_view_request contains information about the new #WebKitWebView,
&gt;+     * but note that you can freely ignore any particular request like the
&gt;+     * size of the new window or what bars should be displayed in the new
&gt;+     * window.
&gt;+     */
&gt;+    webkit_web_view_signals[CREATE_WEB_VIEW] = g_signal_new(&quot;create-web-view&quot;,
&gt;+            G_TYPE_FROM_CLASS(webViewClass),
&gt;+            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt;+            G_STRUCT_OFFSET (WebKitWebViewClass, create_web_view),
&gt;+            webkit_create_web_view_request_handled,
&gt;+            NULL,
&gt;+            webkit_marshal_OBJECT__OBJECT_OBJECT_OBJECT,
&gt;+            G_TYPE_OBJECT, 3,
&gt;+            WEBKIT_TYPE_WEB_FRAME,
&gt;+            WEBKIT_TYPE_WEB_WINDOW_FEATURES,
&gt;+            WEBKIT_TYPE_NETWORK_REQUEST);

According to the documentation the return type needs to be a WEBKIT_TYPE_WEB_VIEW (or a subclass). So that type should also be specified in code.

&gt;+     * WebKitWebView::show-web-view:
&gt;+     * @web_view: the object on which the signal is emitted
&gt;+     * @return: %TRUE to stop other handlers from being invoked for the event, %FALSE to propagate the event further
&gt;+     *
&gt;+     * Emitted after &quot;create-web-view&quot; when the new #WebKitWebView should
&gt;+     * be displayed to the user.
&gt;+     *
&gt;+     * If there isn&apos;t any handler for this signal or if they return %FALSE,
&gt;+     * then the default action is to call gtk_widget_show_all() on the
&gt;+     * toplevel window containing @web_view.

The documentation needs to follow the implementation. ;)

&gt;+void webkit_web_view_show(WebKitWebView* webView)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
&gt;+
&gt;+    gboolean isHandled = FALSE;
&gt;+    g_signal_emit(webView, webkit_web_view_signals[SHOW_WEB_VIEW], 0, &amp;isHandled);
&gt;+    if (isHandled)
&gt;+        return;
&gt;+
&gt;+    GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(webView));
&gt;+    if (toplevel)
&gt;+        gtk_widget_show(toplevel);
&gt;+    gtk_widget_show(GTK_WIDGET(webView));

I&apos;m not sure how useful that behaviour is but I could go with it if someone likes it.

Note that &quot;if (toplevel)&quot; is wrong and must be &quot;GTK_WIDGET_TOPLEVEL(toplevel)&quot; (see the documentation of gtk_widget_get_toplevel in the Gtk+ API reference)

&gt;+    g_object_class_install_property(gobject_class,
&gt;+                                    PROP_TOOLBAR_VISIBLE,
&gt;+                                    g_param_spec_boolean(
&gt;+                                    &quot;toolbar-visible&quot;,
&gt;+                                    &quot;Toolbar Visible&quot;,
&gt;+                                    &quot;Controls whether the tool bar should be visible for the window.&quot;,
&gt;+                                    TRUE,
&gt;+                                    flags));
&gt;+ [snip]

Thanks for fixing the property names. Now this is might be nit picking but I would really like to see the one word style in blurbs, too, for the sake of consistency and avoiding confusion about API.

I like this version much better than the previous one. I will try to find some time to try this out in midori.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84318</commentid>
    <comment_count>19</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-06-24 15:47:34 -0700</bug_when>
    <thetext>&gt; I like this version much better than the previous one. I will try to find some
&gt; time to try this out in midori.

So I found time and also two issues:

&gt; WebKitWebView  * (* create_web_view) (WebKitWebView* web_view,
&gt;            WebKitWebWindowFeatures* window_features,
&gt;            WebKitNetworkRequest* request);
The signature is wrong, the first argument after the web view is a web frame.

Also after implementing create-web-view, new windows did start to show up as tabs in midori. However the following critical warning was printed:

GLib-GObject-CRITICAL **: g_value_set_boolean: assertion `G_VALUE_HOLDS_BOOLEAN (value)&apos; failed

I&apos;m not sure where this is coming from, I can&apos;t see the problem in the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84378</commentid>
    <comment_count>20</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-06-25 03:33:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=21902) [edit]
&gt; proposed patch

The return value of show-web-view should be a boolean but when creating the new signal WEBKIT_TYPE_WEB_VIEW is used. This also explain Christian&apos;s problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84393</commentid>
    <comment_count>21</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-06-25 05:40:20 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #17)
&gt; &gt; Created an attachment (id=21902) [edit]
&gt; &gt; proposed patch
&gt; 
&gt; The return value of show-web-view should be a boolean but when creating the new
&gt; signal WEBKIT_TYPE_WEB_VIEW is used. This also explain Christian&apos;s problem.

Good catch. You mentioned return types earlier but I didn&apos;t double check that on the last version of the patch.

Another question came to my mind: when testing create-web-view I did not use show-web-view as suggested by the documentation. For instance to add a tab to a GtkNotebook the widget needs to be visible due to a quirk in the implementation. So the widget is visible immediately. This is probably different if the new web view is contained in a newly created window. Further more, there is no indication of the expected time frame between creating and showing the new web view - I can&apos;t leave the new widget invisible for a possibly long time, otherwise the application looks broken. This needs to be clearly documented, otherwise it might better to discard that second step altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84437</commentid>
    <comment_count>22</comment_count>
      <attachid>21935</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-06-25 14:35:46 -0700</bug_when>
    <thetext>Created attachment 21935
new proposed patch

I haven&apos;t removed/changed show-web-view yet, though it looks like we might:

&lt;kov&gt;
 shiira implements the webViewShow delegate and does this:
     document = [[NSDocumentController sharedDocumentController] 
             documentForWindow:[webView window]];
     [document showWindows];
 kalikiana: aha: http://developer.apple.com/documentation/Cocoa/Conceptual/DisplayWebContent/Tasks/MultipleWindows.html#//apple_ref/doc/uid/20002026-117573
 kalikiana: that may answer our doubt about the delay; according to that doc, show-web-view would be invoked directly after create-web-view
 what I find weird about the way this is documented is that their createWebViewWithRequest needs to ask the frame to load the request, while, as barisione showed me, webcore already loads the request on the newly created webview

&lt;kalikiana&gt;
kov: Hm.... makes me wonder how useful that signal is. I mean, if web-view-show is emitted immediately afterwards anyway, why bother to use that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84894</commentid>
    <comment_count>23</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-07-01 11:17:27 -0700</bug_when>
    <thetext>At this point maybe it&apos;s better to just remove the show-web-view signal.

I tested the patch a bit more, I found that clicking on open in new window in the context menu opens a new windows but doesn&apos;t navigate there. I didn&apos;t investigate the reason yet, I wonder if this goes through yet another code path.

Note that we are passing a network request to new-web-view but other ports just pass the URL.

Any suggestion on the locationbar/uribar/uri_entry naming?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84906</commentid>
    <comment_count>24</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-07-01 14:03:25 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; At this point maybe it&apos;s better to just remove the show-web-view signal.

I think I agree here. Right now the use case is rather unclear. Unless... see above:

&gt; I tested the patch a bit more, I found that clicking on open in new window in
&gt; the context menu opens a new windows but doesn&apos;t navigate there. I didn&apos;t
&gt; investigate the reason yet, I wonder if this goes through yet another code
&gt; path.

This might be the only reason why show-web-view exists, if in this case it was meant to activate the new window/ tab? Or it might as well be nonsense, I did not investigate that idea yet. Marco, did you by chance try to hook show-web-view up to see if it makes a difference?

&gt; Note that we are passing a network request to new-web-view but other
&gt; ports just pass the URL.

I wonder if there was a reason besides simplicity of api. Imho it&apos;s quite a lot more flexible with a network request, including possible future enhancements.

&gt; Any suggestion on the locationbar/uribar/uri_entry naming?

Traditionally locationbar was actually a separate toolbar, unlike today where most navigators include a location entry in the main toolbar. So I think we should keep that name.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85291</commentid>
    <comment_count>25</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-06 16:26:26 -0700</bug_when>
    <thetext>(In reply to comment #23) 
&gt; I tested the patch a bit more, I found that clicking on open in new window in
&gt; the context menu opens a new windows but doesn&apos;t navigate there. I didn&apos;t
&gt; investigate the reason yet, I wonder if this goes through yet another code
&gt; path.

It did work on my test with midori. Also, I put some printf&apos;s in WebCore&apos;s code and found that open in new window goes this way:

WebCore/page/ContextMenuController.cpp:openNewWindow

which calls

WebCore/page/Chrome.cpp:Chrome::createWindow

which then calls

WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:ChromeClient::createWindow

javascript&apos;s window.open calls ChromeClient&apos;s createWindow through another code path, and target=&quot;_blank&quot; links opens new windows in Midori with Christian&apos;s patch, but does not go through that code path at all; I&apos;ll try to find what path it takes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87427</commentid>
    <comment_count>26</comment_count>
      <attachid>22564</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-30 14:17:15 -0700</bug_when>
    <thetext>Created attachment 22564
improved proposed patch

I did some enhancement in this patch, adding documentation that was missing, improving some of the already existing documentation (mainly adding Since tags).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87540</commentid>
    <comment_count>27</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-07-31 18:05:44 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Created an attachment (id=22564) [edit]
&gt; improved proposed patch
&gt; 
&gt; I did some enhancement in this patch, adding documentation that was missing,
&gt; improving some of the already existing documentation (mainly adding Since
&gt; tags).

The patch still includes the &quot;resizable&quot; and &quot;dialog&quot; window features properties, which I am not sure we want to have here.

For one, resizable isn&apos;t useful anymore, is it? For instance, Gecko ignores it these days as far as I know. I propose that we leave it unless someone comes up with a good reason to have it.

The &quot;dialog&quot; feature doesn&apos;t seem to have a use case. I&apos;m having a hard time trying to find a person or website that actually makes use of this. So again, let&apos;s omit that now. If somebody wants it, we can always add it in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87591</commentid>
    <comment_count>28</comment_count>
      <attachid>22605</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-08-01 12:12:33 -0700</bug_when>
    <thetext>Created attachment 22605
proposed patch

okidoki! patch with those properties removed =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87970</commentid>
    <comment_count>29</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-08-06 10:01:45 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Created an attachment (id=22605) [edit]
&gt; proposed patch

Oepning a new window from the context menu doesn&apos;t work here: the new page/tab is opened but the navigation doesn&apos;t occur. How did you test it? Are you manually navigating to the web page manually from the create-web-view handler?


This is the behaviour in the three different cases we can have:

target=_&quot;blank&quot;:
- FrameLoaderClient::dispatchCreatePage()
- We emit create-web-view:
  - ResourceRequest not available -&gt; WebKitNetworkRequest with a NULL uri
  - WindowFeatures not available -&gt; WebKitWebWindowFeatures with default settings
- FrameLoaderClient::dispatchShow()
- The URL is loaded

Contextual menu:
- ChromeClient::createWindow()
- We emit create-web-view:
  - ResourceRequest available
  - WindowFeatures available
- ChromeClient::setFoo()
- ChromeClient::show()
- We emit show-web-view
- The URL is loaded

window.open() via Javascript:
- ChromeClient::createWindow()
- We emit create-web-view:
  - ResourceRequest not available -&gt; NULL WebKitNetworkRequest
  - WindowFeatures available
- ChromeClient::setFoo()
- ChromeClient::show()
- We emit show-web-view
- The URL is loaded

Unfortunately the ResourceRequest is available only when the link is opened from the contextual menu, so that parameter seems quite useless atm.
In the case of target=&quot;_blank&quot; we have the URL in WebCore so we could just modify it to pass the URL to FrameLoaderClient::dispatchCreatePage().
In the case of window.open() the URL is not available and the reason is explained in JSDOMWindowBase.cpp:

// FIXME: It&apos;s much better for client API if a new window starts with a URL, here where we
// know what URL we are going to open. Unfortunately, this code passes the empty string
// for the URL, but there&apos;s a reason for that. Before loading we have to set up the opener,
// openedByDOM, and dialogArguments values. Also, to decide whether to use the URL we currently
// do an allowsAccessFrom call using the window we create, which can&apos;t be done before creating it.
// We&apos;d have to resolve all those issues to pass the URL instead of &quot;&quot;.

Another problem is the ChromeClient::setFoo() is called for every window feature, it seems that you are not supposed to set the features from the window features but when the ChromeClient::setFoo() method is called. This is why there is a separate ChromeClient::show() method, so you can avoid flickering.

A possible solution is to make the WindowFeatures object just a struct with public fields and have an empty implementation of the various methods to set window features in the ChromeClient. In this case we are not losing anything as those methods are called only before showing the window and are not accessible in other ways, like js. If we do this we can also kill the show-web-view signal.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89548</commentid>
    <comment_count>30</comment_count>
      <attachid>22605</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 16:08:12 -0700</bug_when>
    <thetext>Comment on attachment 22605
proposed patch

Once again, assigning to Alp for review or assignment to some other Gtk reviewer.  The rest of us don&apos;t know anything about gtk :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90096</commentid>
    <comment_count>31</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-03 18:43:02 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; Created an attachment (id=22605) [edit]
&gt; &gt; proposed patch
&gt; 
&gt; Oepning a new window from the context menu doesn&apos;t work here: the new page/tab
&gt; is opened but the navigation doesn&apos;t occur. How did you test it? Are you
&gt; manually navigating to the web page manually from the create-web-view handler?

You&apos;re right! I tried it in midori and it worked; I&apos;m pretty sure midori is probably doing the open itself, as it did not work with the simple implementation I wrote for GtkLauncher.

&gt; Unfortunately the ResourceRequest is available only when the link is opened
&gt; from the contextual menu, so that parameter seems quite useless atm.

OK, let&apos;s think from a use-case point of view here... that parameter would be useful for the client application to choose whether the new window should be created by examining the request that would be loaded, and returning the new instance or NULL as a means of having the decision implemented. The client application should have other ways of handling this use-case by monitoring the signals for WebKitWebView/WebKitWebFrame, right?

I&apos;m almost convinced that we should not even be passing the URI if we maintain the create-web-view signal.

&gt; Another problem is the ChromeClient::setFoo() is called for every window
&gt; feature, it seems that you are not supposed to set the features from the window
&gt; features but when the ChromeClient::setFoo() method is called. This is why
&gt; there is a separate ChromeClient::show() method, so you can avoid flickering.
&gt; 
&gt; A possible solution is to make the WindowFeatures object just a struct with
&gt; public fields and have an empty implementation of the various methods to set
&gt; window features in the ChromeClient. In this case we are not losing anything as
&gt; those methods are called only before showing the window and are not accessible
&gt; in other ways, like js. If we do this we can also kill the show-web-view
&gt; signal.

I think javascript can request changing the size/position of windows after the page has been loaded, so perhaps we should keep WindowFeatures as a GObject to with properties which an interested application can monitor.

How about we try to handle everything in ChromeClient? We create the new WebView ourselves, without depending on the application to do it, we capture all the changes done by setFoo methods into the webview&apos;s internal WindowFeatures object, then when show-web-view is being emitted today we emit a &apos;new-web-view&apos; signal passing the already composed WebView, and expect the user to add it to a window. We can simply destroy it, in case the signal is not handled (no handlers or all of them returning FALSE).

This may cause some unneeded memory/cpu usage, but makes things very simple. We can even try to handle loading the URL ourselves if we are able to detect the case in which it won&apos;t be loaded. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90140</commentid>
    <comment_count>32</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-04 02:48:39 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; OK, let&apos;s think from a use-case point of view here... that parameter would be
&gt; useful for the client application to choose whether the new window should be
&gt; created by examining the request that would be loaded, and returning the new
&gt; instance or NULL as a means of having the decision implemented. The client
&gt; application should have other ways of handling this use-case by monitoring the
&gt; signals for WebKitWebView/WebKitWebFrame, right?

It should but this mean that you should keep the window hidden until you now the destination of the navigation.

&gt; I&apos;m almost convinced that we should not even be passing the URI if we maintain
&gt; the create-web-view signal.

Probably as it&apos;s useless.
 
&gt; I think javascript can request changing the size/position of windows after the
&gt; page has been loaded, so perhaps we should keep WindowFeatures as a GObject to
&gt; with properties which an interested application can monitor.

Does JS can do that? I didn&apos;t find code for that in WebCore and I&apos;m not a JS expert.

&gt; How about we try to handle everything in ChromeClient? We create the new
&gt; WebView ourselves, without depending on the application to do it, we capture
&gt; all the changes done by setFoo methods into the webview&apos;s internal
&gt; WindowFeatures object, then when show-web-view is being emitted today we emit a
&gt; &apos;new-web-view&apos; signal passing the already composed WebView, and expect the user
&gt; to add it to a window. We can simply destroy it, in case the signal is not
&gt; handled (no handlers or all of them returning FALSE).

No, because most non-trivial apps will want to create an instance of a class derived from a WebView.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90157</commentid>
    <comment_count>33</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-04 07:02:55 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; I think javascript can request changing the size/position of windows after the
&gt; &gt; page has been loaded, so perhaps we should keep WindowFeatures as a GObject to
&gt; &gt; with properties which an interested application can monitor.
&gt; 
&gt; Does JS can do that? I didn&apos;t find code for that in WebCore and I&apos;m not a JS
&gt; expert.

I know it is able to; I checked and it seems to not be part of the W3C DOM specification (yet?), although it recognizes that some implementations do have ways of changing size/position. The window object for gecko, for instance, has the resizeTo method.

&gt; No, because most non-trivial apps will want to create an instance of a class
&gt; derived from a WebView.

Right.... 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90200</commentid>
    <comment_count>34</comment_count>
      <attachid>23180</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-04 14:55:09 -0700</bug_when>
    <thetext>Created attachment 23180
proposed patch

this patch opens the URL in all cases listed by barisione, and documents the create-web-view/show-web-view stuff better; it also handles the window features in a more clean way; should be good to land now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90202</commentid>
    <comment_count>35</comment_count>
      <attachid>23181</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-04 15:02:16 -0700</bug_when>
    <thetext>Created attachment 23181
a test page

a test page I&apos;ve been using to test the patch on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90203</commentid>
    <comment_count>36</comment_count>
      <attachid>23182</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-04 15:02:43 -0700</bug_when>
    <thetext>Created attachment 23182
the second test page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90204</commentid>
    <comment_count>37</comment_count>
      <attachid>23183</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-04 15:03:37 -0700</bug_when>
    <thetext>Created attachment 23183
GtkLauncher test patch

code to test the patch with the GtkLauncher</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90206</commentid>
    <comment_count>38</comment_count>
      <attachid>23184</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-04 15:09:19 -0700</bug_when>
    <thetext>Created attachment 23184
proposed patch

[copying from the bad patch entry]
this patch opens the URL in all cases listed by barisione, and documents the
create-web-view/show-web-view stuff better; it also handles the window features
in a more clean way; should be good to land now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90710</commentid>
    <comment_count>39</comment_count>
      <attachid>23184</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-09-09 18:05:00 -0700</bug_when>
    <thetext>Comment on attachment 23184
proposed patch

I&apos;m not sure about webkit_web_view_show()

I missed the discussion about the importance of show() and what it actually does in other bug reports.

Since it&apos;ll conflict with gtk_widget_show() in many language bindings we probably want to call it something like webkit_web_view_present() instead.

Could you describe what this function is here for and what it does so we can figure out what to do with it?

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90754</commentid>
    <comment_count>40</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-10 04:49:59 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 23184 [edit])
&gt; I&apos;m not sure about webkit_web_view_show()
[...]
&gt; Could you describe what this function is here for and what it does so we can
&gt; figure out what to do with it?

I&apos;m pretty sure this came from barisione&apos;s patch, and I never got around to changing it. Looking at it now I believe I should probably make it private, as the only good it does is it helps both ChromeClient and FrameLoaderClient, does that seem OK to you?

As for the other show, the signal, The webkit &quot;workflow&quot; we have to work with is create-web-view is emitted, then some other delegates are called that set window features, and then show is emitted. This is so that the application can hand whatever WebView subclass they have, and still only show the window/webview after all the window features are known, to avoid flickering and other unwanted effects related to size/position. Of course it only matters if you are not going to ignore the window features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90776</commentid>
    <comment_count>41</comment_count>
      <attachid>23324</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-10 11:43:29 -0700</bug_when>
    <thetext>Created attachment 23324
proposed patch

reworked the patch to make webkit_web_view_show private</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91197</commentid>
    <comment_count>42</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-15 04:21:03 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; I&apos;m pretty sure this came from barisione&apos;s patch, and I never got around to
&gt; changing it. Looking at it now I believe I should probably make it private, as
&gt; the only good it does is it helps both ChromeClient and FrameLoaderClient, does
&gt; that seem OK to you?

In the first version of the patch it was private, I don&apos;t know when it was made public but probably it  was just a mistake by me or Gustavo.


In some cases it could be useful to keep the popup hidden, so we should fix the ScrollView::update problem. For instance I implemented a popup blocker, and the window must be kept hidden until we receive navigation-requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91492</commentid>
    <comment_count>43</comment_count>
      <attachid>23501</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-09-17 10:22:24 -0700</bug_when>
    <thetext>Created attachment 23501
update proposed patch

I updated the patch so that it takes advantage of the bug fix done by barisione on the scroll update problem, thus removing the need for the work-around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96367</commentid>
    <comment_count>44</comment_count>
      <attachid>24607</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-10-23 12:03:09 -0700</bug_when>
    <thetext>Created attachment 24607
patch applying cleanly as of now

I am updating the patch so that it applies cleanly as of current TOT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96425</commentid>
    <comment_count>45</comment_count>
      <attachid>24620</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-10-23 15:04:36 -0700</bug_when>
    <thetext>Created attachment 24620
patch after tonight&apos;s review session

I&apos;m attaching a new patch with fixes for problems found and consensus we reached in the #webkit-gtk review session tonight. Had input from barisione, kalikiana, xan, pierlux (to a lesser extent, since he had to go to his class), janm, and jonner. I am asking the people who are OK with the patch landing to pop in and add a comment here to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96433</commentid>
    <comment_count>46</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-10-23 15:31:18 -0700</bug_when>
    <thetext>+     * If there isn&apos;t any handler for this signal or if they return                                                                                                                                                
+     * %FALSE, then the default action is to call gtk_widget_show() on                                                                                                                                             
+     * the toplevel window containing @web_view, and on @web_view.   

^^ Is that still true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96453</commentid>
    <comment_count>47</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-10-23 17:09:50 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; +     * If there isn&apos;t any handler for this signal or if they return            
&gt; +     * %FALSE, then the default action is to call gtk_widget_show() on         
&gt; +     * the toplevel window containing @web_view, and on @web_view.   
&gt; 
&gt; ^^ Is that still true?
&gt; 

No, removed from the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96455</commentid>
    <comment_count>48</comment_count>
      <attachid>24626</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-10-23 17:14:13 -0700</bug_when>
    <thetext>Created attachment 24626
proposed patch with comments from tonight&apos;s review session

remove bad paragraph from comment/documentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96467</commentid>
    <comment_count>49</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-10-23 18:19:18 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; Created an attachment (id=24626) [edit]
&gt; proposed patch with comments from tonight&apos;s review session
&gt; 
&gt; remove bad paragraph from comment/documentation
&gt; 

The API&apos;s been discussed and agreed upon by the attendees during today&apos;s meeting (minutes at http://live.gnome.org/Epiphany/Meetings/20081023).

Gtk reviewers: Is there anything more that needs to be done for this patch to be r+&apos;d and landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96531</commentid>
    <comment_count>50</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-10-24 11:30:29 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; Created an attachment (id=24626) [edit]
&gt; proposed patch with comments from tonight&apos;s review session
&gt; 
&gt; remove bad paragraph from comment/documentation

Hmpf, it seems something ate my comment on the way before it reached bugzilla. Anyhow.

I went over the patch yet another time and actually have a tiny nitpick: a the bottom there is a &quot;GNU Library General License&quot; header. That one is called &quot;GNU Lesser Genereal License&quot; these days ;)

Incidentally I wonder when we are bumping the version, so that code can actually use the new functionality without build system work arounds.

For what I want, that patch should be ready, as was agreed on by the already mentioned attendées.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96601</commentid>
    <comment_count>51</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-10-24 15:06:34 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; I went over the patch yet another time and actually have a tiny nitpick: a the
&gt; bottom there is a &quot;GNU Library General License&quot; header. That one is called &quot;GNU
&gt; Lesser Genereal License&quot; these days ;)

Bad copy/paste. I agree with the change; I won&apos;t upload a new patch because this is easily sed&apos;able in the patch, and I don&apos;t want to clutter the bug report even more, but if whoever will commit it prefers I can do it.

Thanks, kalikiana!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96855</commentid>
    <comment_count>52</comment_count>
    <who name="Kalle Vahlman">zuh</who>
    <bug_when>2008-10-28 07:24:39 -0700</bug_when>
    <thetext>I was testing this and had a situation where I didn&apos;t handle the web-view-ready signal. The result was a crash in PlatformScreenGtk since the view wasn&apos;t realized and PlatformScreenGtk assumed it is. While PlatformScreenGtk obviously needs fixing (alp is on it), what would probably make sense also is to call gtk_widget_realize() from the default handler to ensure correct values are gained for the PlatformScreenGtk methods and to prevent crashing.

I&apos;m not sure if the crash is due to the page loading even though the view isn&apos;t visible, but if this is the case it might actually make more sense to cancel the load from the default handler (if possible).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100555</commentid>
    <comment_count>53</comment_count>
      <attachid>24626</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-27 14:15:18 -0800</bug_when>
    <thetext>Comment on attachment 24626
proposed patch with comments from tonight&apos;s review session


&gt; +        Added the new WebKitGtk files to be built:
&gt; +        WebKit/gtk/webkit/webkitwebwindowfeatures.{cpp,h}
&gt; +

Did you use ./WebKitTools/Scripts/prepare-ChangeLog to generate this? It does not look it. In the future please use this script.



&gt;          Build fix for older GTK+ versions where GTK_TYPE_TARGET_LIST isn&apos;t
&gt; diff --git a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
&gt; index 256a3a3..c0ace16 100644
&gt; --- a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
&gt; +++ b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
&gt; @@ -2,6 +2,7 @@
&gt;   * Copyright (C) 2007 Holger Hans Peter Freyther
&gt;   * Copyright (C) 2007, 2008 Christian Dywan &lt;christian@imendio.com&gt;
&gt;   * Copyright (C) 2008 Nuanti Ltd.
&gt; + * Copyright (C) 2008 Gustavo Noronha Silva &lt;gns@gnome.org&gt;
&gt;   *
&gt;   *  This library is free software; you can redistribute it and/or
&gt;   *  modify it under the terms of the GNU Lesser General Public
&gt; @@ -21,6 +22,7 @@
&gt;  #include &quot;config.h&quot;
&gt;  #include &quot;ChromeClientGtk.h&quot;
&gt;  
&gt; +#include &quot;FrameLoadRequest.h&quot;
&gt;  #include &quot;FloatRect.h&quot;
&gt;  #include &quot;IntRect.h&quot;
&gt;  #include &quot;PlatformString.h&quot;
&gt; @@ -28,6 +30,7 @@
&gt;  #include &quot;HitTestResult.h&quot;
&gt;  #include &quot;KURL.h&quot;
&gt;  #include &quot;webkitwebview.h&quot;
&gt; +#include &quot;webkitnetworkrequest.h&quot;
&gt;  #include &quot;webkitprivate.h&quot;
&gt;  #include &quot;NotImplemented.h&quot;
&gt;  #include &quot;WindowFeatures.h&quot;
&gt; @@ -53,7 +56,7 @@ FloatRect ChromeClient::windowRect()
&gt;      if (!m_webView)
&gt;          return FloatRect();
&gt;      GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
&gt; -    if (window) {
&gt; +    if (GTK_WIDGET_TOPLEVEL(window)) {
&gt;          gint left, top, width, height;
&gt;          gtk_window_get_position(GTK_WINDOW(window), &amp;left, &amp;top);
&gt;          gtk_window_get_size(GTK_WINDOW(window), &amp;width, &amp;height);
&gt; @@ -62,9 +65,20 @@ FloatRect ChromeClient::windowRect()
&gt;      return FloatRect();
&gt;  }
&gt;  
&gt; -void ChromeClient::setWindowRect(const FloatRect&amp; r)
&gt; +void ChromeClient::setWindowRect(const FloatRect&amp; rect)
&gt;  {
&gt; -    notImplemented();
&gt; +    if (!m_webView)
&gt; +        return;

okay. This is not needed. but other code is doing it as well... a WebKitWebView has a WebCore::Page and a WebCore::Page has a WebCore::ChromeClient associated... During destructing of a WebKitWebView no JS or such should run... I will clean this afterwards.



&gt; +    g_object_set(G_OBJECT(webWindowFeatures),
&gt; +                 &quot;x&quot;, intrect.x(),
&gt; +                 &quot;y&quot;, intrect.y(),
&gt; +                 &quot;width&quot;, intrect.width(),
&gt; +                 &quot;height&quot;, intrect.height(),
&gt; +                 NULL

no NULL in C++ code please, use 0, which gets turned into a null pointer...


&gt;      GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
&gt; -    if (window)
&gt; +    if (GTK_WIDGET_TOPLEVEL(window))
&gt;          gtk_window_set_focus(GTK_WINDOW(window), NULL);

so GTK_WIDGET_TOPLEVEL(0) will function correctly?



&gt; +    WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
&gt; +
&gt; +    g_object_set(G_OBJECT(webWindowFeatures), &quot;toolbar-visible&quot;, visible, NULL);

NULL again


&gt; +    WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
&gt; +    gboolean visible;

initialize it? or is there alaways a toolbar-visible property defined?



&gt; +static gboolean webkit_create_web_view_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy)
&gt; +{
&gt; +  gboolean continueEmission = TRUE;
&gt; +  gpointer newWebView = g_value_get_object(handlerReturn);
&gt; +  g_value_set_object(returnAccu, newWebView);
&gt; +
&gt; +  if (newWebView)
&gt; +      continueEmission = FALSE;
&gt; +
&gt; +  return continueEmission;
&gt; +}

return !newWebView is doing the same job


&gt; +
&gt;  static gboolean webkit_navigation_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy)
&gt;  {
&gt;    gboolean continueEmission = TRUE;
&gt; @@ -814,6 +841,63 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
&gt;       * Signals
&gt;       */

&gt; +     * The new #WebKitWebView should not be displayed to the user
&gt; +     * until the ::web-view-ready signal is emitted.

wrong gtk-doc sequence.. you need to fully qualify the name.

&gt; +     * The signal handlers should not try to deal with the reference
&gt; +     * count for the new #WebKitWebView. The widget to which the
&gt; +     * widget is added will handle that.
&gt; +     *
&gt; +     * Since 1.0.2

Needs bumping to 1.0.3



&gt; +     * Emitted after ::create-web-view when the new #WebKitWebView

gtk-doc...





&gt; +
&gt; +/**
&gt; + * webkit_web_view_get_window_features
&gt; + * @webView: a #WebKitWebView

likely to be web_view in the header file.


&gt; +/**
&gt;   * webkit_web_view_set_maintains_back_forward_list:
&gt;   * @webView: a #WebKitWebView

again...







&gt; +static void webkit_web_window_features_finalize(GObject* object)
&gt; +{
&gt; +    G_OBJECT_CLASS(webkit_web_window_features_parent_class)-&gt;finalize(object);

test if a finalize is set? or may we assume that for GObject?



&gt; +    if(features.heightSet)
&gt; +        g_object_set(G_OBJECT(webWindowFeatures), &quot;height&quot;, static_cast&lt;int&gt;(features.height), NULL);

default x,y,width,height is 0 then? How does this mix with the properties allowing -1 as well?


&gt; +gboolean webkit_web_window_features_equal(WebKitWebWindowFeatures* features1, WebKitWebWindowFeatures* features2)
&gt; +{
&gt; +    WebKitWebWindowFeaturesPrivate* priv1 = features1-&gt;priv;
&gt; +    WebKitWebWindowFeaturesPrivate* priv2 = features2-&gt;priv;
&gt; +    
&gt; +    if((priv1-&gt;x == priv2-&gt;x) &amp;&amp;
&gt; +       (priv1-&gt;y == priv2-&gt;y) &amp;&amp;
&gt; +       (priv1-&gt;width == priv2-&gt;width) &amp;&amp;
&gt; +       (priv1-&gt;height == priv2-&gt;height) &amp;&amp;

how to differentiate x,y,width,height set or not set?



&gt; +
&gt; +#ifndef __WEBKIT_WEB_WINDOW_FEATURES_H__
&gt; +#define __WEBKIT_WEB_WINDOW_FEATURES_H__

__ is reserved to the system (AFAIK).


       /*&lt; private *&gt;/
&gt; +    WebKitWebWindowFeaturesPrivate* priv;
&gt; +};
&gt; +
&gt; +struct _WebKitWebWindowFeaturesClass {
&gt; +    GObjectClass parent_class;
&gt; +

       /*&lt; private &gt;*/
&gt; +    /* Padding for future expansion */
&gt; +    void (*_webkit_reserved1) (void);
&gt; +    void (*_webkit_reserved2) (void);
&gt; +    void (*_webkit_reserved3) (void);
&gt; +    void (*_webkit_reserved4) (void);
&gt; +};



&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100562</commentid>
    <comment_count>54</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-27 15:35:38 -0800</bug_when>
    <thetext>I can fix:
  - The documentation, the NULLs, style... when landing

Before saying yes:
  - I want to know if -1 should be used for not set x,y,width, height or if we do not intend to be able to differentiate.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100610</commentid>
    <comment_count>55</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-28 09:29:54 -0800</bug_when>
    <thetext>(In reply to comment #54)

&gt; Before saying yes:
&gt;   - I want to know if -1 should be used for not set x,y,width, height or if we
&gt; do not intend to be able to differentiate.

From IRC: G_PARAM_CONSTRUCT is set on the flags which means the default value should be set object initialization.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100648</commentid>
    <comment_count>56</comment_count>
      <attachid>25577</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-28 15:52:49 -0800</bug_when>
    <thetext>Created attachment 25577
Changes on top of the patch done before landing

For reference my diff against the version of the patch (1.0.2 got renamed to 1.0.3 earlier).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100649</commentid>
    <comment_count>57</comment_count>
      <attachid>24626</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-28 16:18:55 -0800</bug_when>
    <thetext>Comment on attachment 24626
proposed patch with comments from tonight&apos;s review session

Okay, with comments. They will be fixed after landing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100650</commentid>
    <comment_count>58</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-11-28 17:30:23 -0800</bug_when>
    <thetext>Landed in r38834.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21244</attachid>
            <date>2008-05-19 18:31:03 -0700</date>
            <delta_ts>2008-05-25 16:06:47 -0700</delta_ts>
            <desc>my proposed solution</desc>
            <filename>new-window-stuff.diff</filename>
            <type>text/plain</type>
            <size>46875</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMzNTky
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDUt
MTkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlBZGRlZCB0aGUgbmV3IFdlYktpdEd0ayBmaWxl
cyB0byBiZSBidWlsdDoKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJl
cy57Y3BwLGh9CisJCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDUtMTkgIEFs
cCBUb2tlciAgPGFscEBudWFudGkuY29tPgogCiAgICAgICAgIEdUSysgYnVpbGQgZml4IGZvciBN
YWMvV2luLiBEb24ndCBjaGVjayBmb3IgRnJlZVR5cGUvRm9udENvbmZpZyB3aGVuCkluZGV4OiBH
TlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzM1
NTIpCisrKyBHTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSw3IEBA
IHdlYmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
aCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oCiAKIHdlYmtpdGd0a19idWlsdF9zb3VyY2VzICs9IFwKQEAgLTMxOCw2ICszMTksNyBAQCB3
ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAgXAogCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcCBcCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMzM1OTIpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTA1LTE5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEg
IDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisJVGhpcyBjaGFuZ2UgaXMgaGVyZSBvbmx5IHRvIG1ha2UgdGhlIHNpemVzIHJlY2VpdmVkIGJ5
IHRoZQorCUNocm9tZUNsaWVudEd0ayBmdW5jdGlvbnMgbWFrZSBzZW5zZS4gRm9yIGEgcmVhbCBp
bXBsZW1lbnRhdGlvbiBvZgorCVdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3Qgc2VlCisJaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODgxLgorCQorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5BdmFpbGFibGVSZWN0KToKKwogMjAwOC0wNS0xOSAgQWxwIFRva2VyICA8YWxwQG51YW50
aS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIGFuZCBCZXRoLgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAkocmV2aXNpb24gMzM1NTIp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDEwICs2OCwxNSBAQCBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdp
ZGdldCkKICAgICByZXR1cm4gRmxvYXRSZWN0KGdlb21ldHJ5LngsIGdlb21ldHJ5LnksIGdlb21l
dHJ5LndpZHRoLCBnZW9tZXRyeS5oZWlnaHQpOwogfQogCi1GbG9hdFJlY3Qgc2NyZWVuQXZhaWxh
YmxlUmVjdChXaWRnZXQqKQorRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3
aWRnZXQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7
CisgICAgLyogaWYgdGhpcyByZXR1cm5zIGFuIGVtcHR5IEZsb2F0UmVjIGFsbCBmdW5jdGlvbnMg
d2hpY2ggZGVhbCB3aXRoCisgICAgICogd2luZG93IHNpemUgYW5kIHBvc2l0aW9uIGluIENocm9t
ZUNsaWVudEd0ayBlbmQgdXAgd29ya2luZyB3aXRoCisgICAgICogd2VpcmQgdmFsdWVzLCBiZWNh
dXNlIHNvbWUga2luZCBvZiBzY2FsaW5nIGlzIGRvbmUKKyAgICAgKgorICAgICAqIEZvciBQbGF0
Zm9ybVNjcmVlR3RrIGRpc2N1c3Npb25zIHNlZSBidWcgMTY4ODEuCisgICAgICovCisgICAgcmV0
dXJuIHNjcmVlblJlY3Qod2lkZ2V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VM
b2cJKHJldmlzaW9uIDMzNTkyKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1MSBAQAorMjAwOC0wNS0xOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z25zQGdub21lLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
CWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorCUNocm9tZUNs
aWVudDo6Y3JlYXRlV2luZG93IGFuZCBmcmllbmRzIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQKKwkK
KwlJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRlcmZhY2VzIG5lZWRlZCB0byBo
YXZlCisJamF2YXNjcmlwdCdzIHdpbmRvdy5vcGVuIGZ1bmN0aW9uIGNyZWF0ZSBhIG5ldyB3aW5k
b3cuIEkgaGFkIHRvCisJaW1wbGVtZW50IGEgbWlycm9yIEdPYmplY3QgdG8gdGhlIFdpbmRvd0Zl
YXR1cmVzIG9iamVjdCBwcm92aWRlZAorCWJ5IFdlYktpdC4gSSBkZWNpZGVkIHRoaXMgd2FzIHRo
ZSB3YXkgdG8gZ28gYnkgbG9va2luZyBhdCB0aGUKKwlPYmplY3RpdmVDIEFQSSwgd2hpY2ggZXhw
b3NlcyBhbGwgdGhlIGRhdGEgZnJvbSBXaW5kb3dGZWF0dXJlcyBhcworCWEgImRpY3Rpb25hcnki
IHRvIHRoZWlyIGRlbGVnYXRlcy4KKworCUV2ZXJ5IFVJIGNoYW5nZSByZXF1ZXN0IGdvdCB0dXJu
ZWQgaW50byBhIHNpZ25hbCwgd2l0aCBvdmVycmlkYWJsZQorCWRlZmF1bHQgaGFuZGxlcnMgd2hl
cmUgZmVhc2libGUuCisJCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzaG93KToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRUb29sYmFyc1Zpc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNo
cm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudDo6c3RhdHVzYmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
OnNjcm9sbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRN
ZW51YmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6bWVudWJhclZp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFJlc2l6YWJsZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CisgICAgICAgICogd2Via2l0L3dlYmtpdC5oOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHBy
aXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICog
d2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1By
aXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2NsYXNzX2luaXQpOgorICAgICAgICAo
X1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVy
ZXNfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZSk6CisgICAgICAgIChfV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVy
dHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dl
Yl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyk6CisgICAg
ICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19uZXdfZnJvbV93aW5kb3dfZmVhdHVyZXMpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4KKwogMjAwOC0wNS0xOSAgQWxwIFRva2VyICA8
YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIGFuZCBCZXRoLgpJ
bmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAko
cmV2aXNpb24gMzM1NTIpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudEd0ay5oIgogCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMjcsNiArMjksNyBAQAogI2luY2x1ZGUgIkhpdFRl
c3RSZXN1bHQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAid2Via2l0
cHJpdmF0ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2luZG93
RmVhdHVyZXMuaCIKQEAgLTU5LDkgKzYyLDI3IEBAIEZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6Ondp
bmRvd1JlY3QoKQogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGll
bnQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByKQordm9pZCBDaHJvbWVDbGllbnQ6
OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIEd0a1dp
ZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZp
ZXcpKTsKKyAgICBpZiAod2luZG93KSB7CisgICAgICAgIEludFJlY3QgaW50cmVjdCA9IEludFJl
Y3QocmVjdCk7CisKKyAgICAgICAgR2RrUmVjdGFuZ2xlICpnZGtyZWN0ID0gZ19uZXcoR2RrUmVj
dGFuZ2xlLCAxKTsKKyAgICAgICAgZ2Jvb2xlYW4gcmV0dmFsOworCisgICAgICAgIGdka3JlY3Qt
PnggPSBpbnRyZWN0LngoKTsKKyAgICAgICAgZ2RrcmVjdC0+eSA9IGludHJlY3QueSgpOworICAg
ICAgICBnZGtyZWN0LT53aWR0aCA9IGludHJlY3Qud2lkdGgoKTsKKyAgICAgICAgZ2RrcmVjdC0+
aGVpZ2h0ID0gaW50cmVjdC5oZWlnaHQoKTsKKworICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUobV93ZWJWaWV3LCAid2luZG93LWdlb21ldHJ5LWNoYW5nZS1yZXF1ZXN0ZWQiLCBnZGtyZWN0
LCAmcmV0dmFsKTsKKworICAgICAgICBnX2ZyZWUoZ2RrcmVjdCk7CisgICAgfQogfQogCiBGbG9h
dFJlY3QgQ2hyb21lQ2xpZW50OjpwYWdlUmVjdCgpCkBAIC05NCwyNSArMTE1LDQzIEBAIHZvaWQg
Q2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RL
X1dJTkRPVyh3aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVX
aW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVy
ZXMmIGZlYXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVh
dHVyZXMpCiB7Ci0gICAgaWYgKGZlYXR1cmVzLmRpYWxvZykgewotICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfR0VU
X0NMQVNTKG1fd2ViVmlldyktPmNyZWF0ZV93ZWJfdmlldyhtX3dlYlZpZXcpOworICAgIGdib29s
ZWFuIHNpZ25hbF9oYW5kbGVkOworCisgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4g
MDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBUT0RPOiBGcmFtZUxvYWRSZXF1ZXN0IGlzIG5v
dCB1c2VkICovCi0gICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJ
RVdfR0VUX0NMQVNTKG1fd2ViVmlldyktPmNyZWF0ZV93ZWJfdmlldyhtX3dlYlZpZXcpOwotICAg
ICAgICBpZiAoIXdlYlZpZXcpCisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJWaWV3LCBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKKworICAgIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19uZXdfZnJvbV93aW5kb3dfZmVhdHVyZXMoZmVhdHVyZXMpOworICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShtX3dlYlZpZXcsICJuZXctd2luZG93LXJlcXVlc3RlZCIsIHdlYlZpZXcsIHdp
bmRvd19mZWF0dXJlcywgJnNpZ25hbF9oYW5kbGVkKTsKKyAgICBnX29iamVjdF91bnJlZih3aW5k
b3dfZmVhdHVyZXMpOworCisgICAgLyogaWYgdGhlIHNpZ25hbCBoYXMgbm90IGJlZW4gaGFuZGxl
ZCwgbm8gb25lIGlzIGhhbmRsaW5nIHRoaXMKKyAgICAgKiB3ZWJ2aWV3LCBzbyB3ZSdsbCBmcmVl
IGl0IHVwCisgICAgICovCisgICAgaWYoIXNpZ25hbF9oYW5kbGVkKQorICAgICAgICB7CisgICAg
ICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVCh3ZWJWaWV3KSk7CiAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogCi0gICAgICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAg
ICAgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKLSAgICB9CisgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXZhdGVEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdl
YlZpZXcpOworICAgIHJldHVybiBwcml2YXRlRGF0YS0+Y29yZVBhZ2U7CiB9CiAKIHZvaWQgQ2hy
b21lQ2xpZW50OjpzaG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93
ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgaWYgKHdpbmRv
dykgeworICAgICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7CisgICAgfQogfQogCiBi
b29sIENocm9tZUNsaWVudDo6Y2FuUnVuTW9kYWwoKQpAQCAtMTI2LDUyICsxNjUsNzggQEAgdm9p
ZCBDaHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNs
aWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICB0b29s
QmFyVmlzaWJsZSA9IHZpc2libGU7CisKKyAgICBnYm9vbGVhbiByZXR2YWw7CisgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgInRvb2xiYXItdmlzaWJpbGl0eS1jaGFuZ2UtcmVx
dWVzdGVkIiwgdmlzaWJsZSwgJnJldHZhbCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50Ojp0b29s
YmFyc1Zpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0b29sQmFyVmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNl
dFN0YXR1c2JhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJW
aXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICgh
bV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0dXNCYXJWaXNpYmxlID0gdmlz
aWJsZTsKKworICAgIGdib29sZWFuIHJldHZhbDsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
bV93ZWJWaWV3LCAic3RhdHVzYmFyLXZpc2liaWxpdHktY2hhbmdlLXJlcXVlc3RlZCIsIHZpc2li
bGUsICZyZXR2YWwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6c3RhdHVzYmFyVmlzaWJsZSgp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHN0YXR1c0JhclZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJz
VmlzaWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxCYXJWaXNpYmxlID0gdmlzaWJsZTsKKwor
ICAgIGdib29sZWFuIHJldHZhbDsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJWaWV3
LCAic2Nyb2xsYmFyLXZpc2liaWxpdHktY2hhbmdlLXJlcXVlc3RlZCIsIHZpc2libGUsICZyZXR2
YWwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUoKSB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHNjcm9sbEJh
clZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlzaWJsZShib29s
KQordm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1
cm47CisKKyAgICBtZW51QmFyVmlzaWJsZSA9IHZpc2libGU7CisKKyAgICBnYm9vbGVhbiByZXR2
YWw7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgIm1lbnViYXItdmlzaWJp
bGl0eS1jaGFuZ2UtcmVxdWVzdGVkIiwgdmlzaWJsZSwgJnJldHZhbCk7CiB9CiAKIGJvb2wgQ2hy
b21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1lbnVCYXJWaXNpYmxlOwogfQogCi12b2lkIENo
cm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0UmVz
aXphYmxlKGJvb2wgcmVzaXphYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYg
KCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIHdpbmRvd1Jlc2l6YWJsZSA9IHJl
c2l6YWJsZTsKKworICAgIGdib29sZWFuIHJldHZhbDsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUobV93ZWJWaWV3LCAid2luZG93LXJlc2l6YWJpbGl0eS1jaGFuZ2UtcmVxdWVzdGVkIiwgcmVz
aXphYmxlID8gVFJVRSA6IEZBTFNFLCAmcmV0dmFsKTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6
OmNsb3NlV2luZG93U29vbigpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsMTIgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyog
bV93ZWJWaWV3OwogICAgICAgICBXZWJDb3JlOjpLVVJMIG1faG92ZXJlZExpbmtVUkw7CisKKyAg
ICAgICAgYm9vbCB3aW5kb3dSZXNpemFibGU7CisgICAgICAgIGJvb2wgdG9vbEJhclZpc2libGU7
CisgICAgICAgIGJvb2wgc3RhdHVzQmFyVmlzaWJsZTsKKyAgICAgICAgYm9vbCBzY3JvbGxCYXJW
aXNpYmxlOworICAgICAgICBib29sIG1lbnVCYXJWaXNpYmxlOwogICAgIH07CiB9CiAKSW5kZXg6
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdAkocmV2aXNpb24gMzM1NTIpCisrKyBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CSh3b3JraW5nIGNvcHkpCkBAIC01
LDYgKzUsOSBAQCBWT0lEOk9CSkVDVCxCT09MRUFOCiBWT0lEOk9CSkVDVCxTVFJJTkcKIFZPSUQ6
T0JKRUNULE9CSkVDVAogVk9JRDpPQkpFQ1QsUE9JTlRFUixQT0lOVEVSCitCT09MRUFOOkJPWEVE
CitCT09MRUFOOkJPT0xFQU4KK0JPT0xFQU46T0JKRUNULE9CSkVDVAogQk9PTEVBTjpTVFJJTkcs
SU5ULFNUUklORwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcs
Qk9PTEVBTgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2Fy
ZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KSW5kZXg6
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBA
IHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZUNsYXNzIFdlYksKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CiAKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzQ2xhc3M7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktp
dFdlYlZpZXc7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdlYlZp
ZXdDbGFzczsKIApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNpb24gMzM1
NTIpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KIAogI2luY2x1
ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAogI2luY2x1ZGUgPGdsaWIuaD4KIApAQCAtMTIx
LDYgKzEyMyw5IEBAIGV4dGVybiAiQyIgewogCiAgICAgV0VCS0lUX0FQSSBnY2hhcioKICAgICB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NlbGVjdGVkX3RleHQgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3
KTsKKworICAgIFdFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqCisgICAgd2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fd2luZG93X2ZlYXR1cmVzIChjb25zdCBXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpOwogfQogCiAjZW5kaWYKSW5kZXg6IFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAzMzU1MikKKysrIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAog
ICogIENvcHlyaWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA4IEphbiBBbG9uem8gPGptYWxvbnpvQHVucGx1Z2dhYmxlLmNvbT4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtNjYsNiArNjcsMTMgQEAgZXh0ZXJuICJDIiB7CiBlbnVtIHsK
ICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5BVklHQVRJT05fUkVRVUVTVEVELAorICAg
IE5FV19XSU5ET1dfUkVRVUVTVEVELAorICAgIFdJTkRPV19HRU9NRVRSWV9DSEFOR0VfUkVRVUVT
VEVELAorICAgIFdJTkRPV19SRVNJWkFCSUxJVFlfQ0hBTkdFX1JFUVVFU1RFRCwKKyAgICBUT09M
QkFSX1ZJU0lCSUxJVFlfQ0hBTkdFX1JFUVVFU1RFRCwKKyAgICBTVEFUVVNCQVJfVklTSUJJTElU
WV9DSEFOR0VfUkVRVUVTVEVELAorICAgIFNDUk9MTEJBUl9WSVNJQklMSVRZX0NIQU5HRV9SRVFV
RVNURUQsCisgICAgTUVOVUJBUl9WSVNJQklMSVRZX0NIQU5HRV9SRVFVRVNURUQsCiAgICAgV0lO
RE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURfU1RBUlRFRCwKICAgICBMT0FEX0NPTU1JVFRF
RCwKQEAgLTUzMiw4ICs1NDAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFp
bmVyX2ZvCiAKIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVh
dGVfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSk7CiB9CiAKIHN0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Via2l0X3dlYl92
aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZy
YW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQpAQCAtNTQyLDYgKzU0OSwzNCBAQCBz
dGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93CiAgICAgcmV0dXJuIFdFQktJ
VF9OQVZJR0FUSU9OX1JFU1BPTlNFX0FDQ0VQVDsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19yZWFsX25ld193aW5kb3dfcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdFdlYlZpZXcqIG5ld1dlYlZpZXcsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBm
ZWF0dXJlcykKK3sKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfZ2VvbWV0cnlfY2hhbmdlX3JlcXVlc3RlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSZWN0YW5nbGUqIHJlY3QpCit7CisgICAgR3RrV2lk
Z2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcp
KTsKKworICAgIGlmICh3aW5kb3cpIHsKKyAgICAgICAgZ3RrX3dpbmRvd19tb3ZlKEdUS19XSU5E
T1cod2luZG93KSwgcmVjdC0+eCwgcmVjdC0+eSk7CisgICAgICAgIGd0a193aW5kb3dfcmVzaXpl
KEdUS19XSU5ET1cod2luZG93KSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7CisgICAgICAg
IHJldHVybiBUUlVFOworICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfcmVzaXphYmlsaXR5X2NoYW5nZV9yZXF1
ZXN0ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2Jvb2xlYW4gcmVzaXphYmxlKQor
eworICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJ
REdFVCh3ZWJWaWV3KSk7CisKKyAgICBpZiAod2luZG93KSB7CisgICAgICAgIGd0a193aW5kb3df
c2V0X3Jlc2l6YWJsZShHVEtfV0lORE9XKHdpbmRvdyksIHJlc2l6YWJsZSk7CisgICAgICAgIHJl
dHVybiBUUlVFOworICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19yZWFsX3dpbmRvd19vYmplY3RfY2xlYXJlZChXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0V2ViRnJhbWUqLCBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
d2luZG93X29iamVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNzE0LDYgKzc0OSwx
OCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X25hdmlnYXRpb25fcmVxdWVzCiAgIHJldHVybiBj
b250aW51ZUVtaXNzaW9uOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3JlcXVlc3RfaGFu
ZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNv
bnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVtbXkpCit7CisgIGdib29sZWFu
IGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICBnYm9vbGVhbiBzaWduYWxIYW5kbGVkID0gZ192
YWx1ZV9nZXRfYm9vbGVhbihoYW5kbGVyUmV0dXJuKTsKKyAgZ192YWx1ZV9zZXRfYm9vbGVhbihy
ZXR1cm5BY2N1LCBzaWduYWxIYW5kbGVkKTsKKworICBpZiAoc2lnbmFsSGFuZGxlZCkKKyAgICAg
IGNvbnRpbnVlRW1pc3Npb24gPSBGQUxTRTsKKworICByZXR1cm4gY29udGludWVFbWlzc2lvbjsK
K30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmll
d0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiB7CiAgICAgR3RrQmluZGluZ1NldCogYmluZGluZ19zZXQ7
CkBAIC03MzYsNiArNzgzLDE1OCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXCiAgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKIAogICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6Om5ldy13aW5kb3ctcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhl
IG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAbmV3X3dlYl92
aWV3OiB0aGUgbmV3ICNXZWJLaXRXZWJWaWV3IG9iamVjdCB3aGljaCBzaG91bGQgYmUKKyAgICAg
KiBob3N0ZWQgYnkgdGhlIG5ldyB3aW5kb3cKKyAgICAgKiBAZmVhdHVyZXM6IGEgI1dlYktpdFdl
YldpbmRvd0ZlYXR1cmVzIG9iamVjdCBjYXJyeWluZyB0aGUKKyAgICAgKiBwcm9wZXJ0aWVzIHRo
ZSB3aW5kb3cgc2hvdWxkIGhhdmUKKyAgICAgKiBAcmV0dXJuOiBUUlVFIHRvIHN0b3Agb3RoZXIg
aGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUKKyAgICAgKiBldmVudC4gRkFMU0Ug
dG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAqCisgICAgICogVGhpcyBzaWdu
YWwgaXMgZW1pdGVkIHdoZW4gYSBuZXcgd2luZG93IGlzIHJlcXVlc3RlZCwgZm9yCisgICAgICog
ZXhhbXBsZSwgYnkgYSB3aW5kb3cub3BlbiBqYXZhc2NyaXB0IGNhbGwuIEF0IGxlYXN0IG9uZSBo
YW5kbGVyCisgICAgICogbXVzdCByZXR1cm4gVFJVRSBpZiB0aGUgd2luZG93IGhhcyBiZWVuIGNy
ZWF0ZWQsIG90aGVyd2lzZSB0aGUKKyAgICAgKiBuZXcgI1dlYktpdFdlYlZpZXcgaXMgZGVzdHJv
eWVkLiBOb3RpY2UgdGhhdCB5b3Ugc2hvdWxkIG5vdAorICAgICAqIGNhbGwgZ3RrX3dpZGdldF9z
aG93IG9uIHRoZSB3aW5kb3c7IHRoYXQgd2lsbCBiZSB0cmlnZ2VyZWQgYnkKKyAgICAgKiB3ZWJr
aXQgYXMgc29vbiBhcyB0aGUgcmVzdCBvZiB0aGUgcHJlcGFyYXRpb24gc2lnbmFscyBhcmUKKyAg
ICAgKiBkaXNwYXRjaGVkLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW05F
V19XSU5ET1dfUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmV3LXdpbmRvdy1yZXF1ZXN0ZWQi
LAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAg
ICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwK
KyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBuZXdfd2lu
ZG93X3JlcXVlc3RlZCksCisgICAgICAgICAgICB3ZWJraXRfcmVxdWVzdF9oYW5kbGVkLAorICAg
ICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVD
VF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwKKyAgICAgICAgICAgIEdf
VFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6OndpbmRvdy1nZW9tZXRyeS1jaGFuZ2UtcmVxdWVzdGVkOgorICAg
ICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQK
KyAgICAgKiBAcmVjdDogYSAjR2RrUmVjdGFuZ2xlIHdpdGggdGhlIHJlcXVlc3RlZCBkaW1lbnNp
b25zIGFuZCBwb3NpdGlvbgorICAgICAqIEByZXR1cm46IFRSVUUgdG8gc3RvcCBvdGhlciBoYW5k
bGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZQorICAgICAqIGV2ZW50LiBGQUxTRSB0byBw
cm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBp
cyBlbWl0ZWQgd2hlbiB0aGUgbmVlZCB0byByZXNpemUgdGhlIHdpbmRvdworICAgICAqIGFyaXNl
cywgZm9yIGV4YW1wbGUsIHdoZW4gamF2YXNjcmlwdCBjb2RlIGFza3MgZm9yIHRoZSB3aW5kb3cK
KyAgICAgKiB0byBiZSByZXNpemVkLCBvciBpZiBhIHNpemUgb3IgcG9zaXRpb24gaXMgc3BlY2lm
aWVkIG9uIGEKKyAgICAgKiB3aW5kb3cub3BlbiBqYXZhc2NyaXB0IGNhbGwuIElmIG5vIGhhbmRs
ZXIgcmV0dXJucyBUUlVFLCB0aGUKKyAgICAgKiBkZWZhdWx0IGhhbmRsZXIgd2lsbCByZXNpemUg
YW5kIHJlcG9zaXRpb24gdGhlIHdpbmRvdyB0byB0aGUKKyAgICAgKiBnaXZlbiBzaXplcyBhbmQg
Y29vcmRpbmF0ZXMuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbV0lORE9X
X0dFT01FVFJZX0NIQU5HRV9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJ3aW5kb3ctZ2VvbWV0
cnktY2hhbmdlLXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJW
aWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1Qg
fCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRX
ZWJWaWV3Q2xhc3MsIHdpbmRvd19nZW9tZXRyeV9jaGFuZ2VfcmVxdWVzdGVkKSwKKyAgICAgICAg
ICAgIHdlYmtpdF9yZXF1ZXN0X2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fQk9YRUQsCisgICAgICAgICAgICBHX1RZUEVfQk9P
TEVBTiwgMSwKKyAgICAgICAgICAgIEdES19UWVBFX1JFQ1RBTkdMRSk7CisKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRXZWJWaWV3Ojp3aW5kb3ctcmVzaXphYmlsaXR5LWNoYW5nZS1yZXF1ZXN0ZWQ6
CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1p
dHRlZAorICAgICAqIEByZXNpemFibGU6IHdoZXRoZXIgdGhlIHdpbmRvdyBzaG91bGQgYmUgbWFk
ZSByZXNpemFibGUKKyAgICAgKiBAcmV0dXJuOiBUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMg
ZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUKKyAgICAgKiBldmVudC4gRkFMU0UgdG8gcHJvcGFn
YXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1p
dGVkIHdoZW4gc29tZXRoaW5nIChzdWNoIGFzIGphdmFzY3JpcHQgY29kZSkKKyAgICAgKiBkZWZp
bmVzIHRoYXQgdGhlIHdpbmRvdyBob2xkaW5nIHRoZSAjV2ViS2l0V2ViVmlldyBtdXN0IG9yIG11
c3QKKyAgICAgKiBub3QgYmUgcmVzaXphYmxlLiBJZiBubyBoYW5kbGVyIHJldHVybnMgVFJVRSwg
dGhlIGRlZmF1bHQKKyAgICAgKiBoYW5kbGVyIHdpbGwgc2V0IHRoZSByZXNpemFibGUgcHJvcGVy
dHkgb2YgdGhlIHRvcCBsZXZlIHdpbmRvdworICAgICAqIGhvbGRpbmcgdGhlICNXZWJLaXRXZWJW
aWV3LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1dJTkRPV19SRVNJWkFC
SUxJVFlfQ0hBTkdFX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIndpbmRvdy1yZXNpemFiaWxp
dHktY2hhbmdlLXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJW
aWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1Qg
fCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRX
ZWJWaWV3Q2xhc3MsIHdpbmRvd19yZXNpemFiaWxpdHlfY2hhbmdlX3JlcXVlc3RlZCksCisgICAg
ICAgICAgICB3ZWJraXRfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAg
ICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX0JPT0xFQU4sCisgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMSwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOKTsKKworICAgIC8qKgor
ICAgICAqIFdlYktpdFdlYlZpZXc6OnRvb2xiYXItdmlzaWJpbGl0eS1jaGFuZ2UtcmVxdWVzdGVk
OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQKKyAgICAgKiBAdmlzaWJsZTogd2hldGhlciB0aGUgdG9vbGJhciBzaG91bGQgYmUgdmlz
aWJsZSBvbiB0aGUgd2luZG93CisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0ZWQg
d2hlbiBzb21ldGhpbmcgKHN1Y2ggYXMgamF2YXNjcmlwdCBjb2RlKQorICAgICAqIGRlZmluZXMg
dGhhdCB0aGUgd2luZG93IGhvbGRpbmcgdGhlICNXZWJLaXRXZWJWaWV3IG11c3Qgb3IgbXVzdAor
ICAgICAqIGNvbnRhaW4gdG9vbCBiYXJzLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19z
aWduYWxzW1RPT0xCQVJfVklTSUJJTElUWV9DSEFOR0VfUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25l
dygidG9vbGJhci12aXNpYmlsaXR5LWNoYW5nZS1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19U
WVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3Mp
KEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9WT0lEX19CT09MRUFOLAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisg
ICAgICAgICAgICBHX1RZUEVfQk9PTEVBTik7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJW
aWV3OjpzdGF0dXNiYXItdmlzaWJpbGl0eS1jaGFuZ2UtcmVxdWVzdGVkOgorICAgICAqIEB3ZWJf
dmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBA
dmlzaWJsZTogd2hldGhlciB0aGUgc3RhdHVzYmFyIHNob3VsZCBiZSB2aXNpYmxlIG9uIHRoZSB3
aW5kb3cKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXRlZCB3aGVuIHNvbWV0aGlu
ZyAoc3VjaCBhcyBqYXZhc2NyaXB0IGNvZGUpCisgICAgICogZGVmaW5lcyB0aGF0IHRoZSB3aW5k
b3cgaG9sZGluZyB0aGUgI1dlYktpdFdlYlZpZXcgbXVzdCBvciBtdXN0CisgICAgICogY29udGFp
biBzdGF0dXMgYmFycy4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tTVEFU
VVNCQVJfVklTSUJJTElUWV9DSEFOR0VfUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygic3RhdHVz
YmFyLXZpc2liaWxpdHktY2hhbmdlLXJlcXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdO
QUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAg
ICAgIE5VTEwsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJz
aGFsX1ZPSURfX0JPT0xFQU4sCisgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAg
ICAgIEdfVFlQRV9CT09MRUFOKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNj
cm9sbGJhci12aXNpYmlsaXR5LWNoYW5nZS1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0
aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB2aXNpYmxl
OiB3aGV0aGVyIHRoZSBzY3JvbGxiYXIgc2hvdWxkIGJlIHZpc2libGUgb24gdGhlIHdpbmRvdwor
ICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdGVkIHdoZW4gc29tZXRoaW5nIChzdWNo
IGFzIGphdmFzY3JpcHQgY29kZSkKKyAgICAgKiBkZWZpbmVzIHRoYXQgdGhlIHdpbmRvdyBob2xk
aW5nIHRoZSAjV2ViS2l0V2ViVmlldyBtdXN0IG9yIG11c3QKKyAgICAgKiBjb250YWluIHNjcm9s
bCBiYXJzLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1NDUk9MTEJBUl9W
SVNJQklMSVRZX0NIQU5HRV9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJzY3JvbGxiYXItdmlz
aWJpbGl0eS1jaGFuZ2UtcmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5f
TEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgTlVM
TCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9J
RF9fQk9PTEVBTiwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAorICAgICAgICAgICAgR19U
WVBFX0JPT0xFQU4pOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bWVudWJhci12
aXNpYmlsaXR5LWNoYW5nZS1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB2aXNpYmxlOiB3aGV0aGVy
IHRoZSBtZW51YmFyIHNob3VsZCBiZSB2aXNpYmxlIG9uIHRoZSB3aW5kb3cKKyAgICAgKgorICAg
ICAqIFRoaXMgc2lnbmFsIGlzIGVtaXRlZCB3aGVuIHNvbWV0aGluZyAoc3VjaCBhcyBqYXZhc2Ny
aXB0IGNvZGUpCisgICAgICogZGVmaW5lcyB0aGF0IHRoZSB3aW5kb3cgaG9sZGluZyB0aGUgI1dl
YktpdFdlYlZpZXcgbXVzdCBvciBtdXN0CisgICAgICogY29udGFpbiBtZW51IGJhcnMuCisgICAg
ICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTUVOVUJBUl9WSVNJQklMSVRZX0NIQU5H
RV9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJtZW51YmFyLXZpc2liaWxpdHktY2hhbmdlLXJl
cXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAor
ICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9B
Q1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICBO
VUxMLAorICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX0JPT0xFQU4sCisgICAg
ICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOKTsKKwor
ICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OndpbmRvdy1vYmplY3QtY2xlYXJlZDoKICAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CiAgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lIHRvIHdoaWNoIEB3aW5kb3dfb2Jq
ZWN0IGJlbG9uZ3MKQEAgLTEwNTIsNiArMTI1MSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFcKICAgICAgKi8KICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93ZWJf
dmlldyA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldzsKICAgICB3ZWJWaWV3
Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdh
dGlvbl9yZXF1ZXN0ZWQ7CisgICAgd2ViVmlld0NsYXNzLT5uZXdfd2luZG93X3JlcXVlc3RlZCA9
IHdlYmtpdF93ZWJfdmlld19yZWFsX25ld193aW5kb3dfcmVxdWVzdGVkOworICAgIHdlYlZpZXdD
bGFzcy0+d2luZG93X2dlb21ldHJ5X2NoYW5nZV9yZXF1ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF93aW5kb3dfZ2VvbWV0cnlfY2hhbmdlX3JlcXVlc3RlZDsKKyAgICB3ZWJWaWV3Q2xhc3Mt
PndpbmRvd19yZXNpemFiaWxpdHlfY2hhbmdlX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX3dpbmRvd19yZXNpemFiaWxpdHlfY2hhbmdlX3JlcXVlc3RlZDsKICAgICB3ZWJWaWV3Q2xh
c3MtPndpbmRvd19vYmplY3RfY2xlYXJlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3dpbmRvd19v
YmplY3RfY2xlYXJlZDsKICAgICB3ZWJWaWV3Q2xhc3MtPmNob29zZV9maWxlID0gd2Via2l0X3dl
Yl92aWV3X3JlYWxfY2hvb3NlX2ZpbGU7CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfYWxlcnQg
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfYWxlcnQ7CkluZGV4OiBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oCShyZXZpc2lvbiAzMzU1MikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTMgQEAgc3RydWN0IF9XZWJL
aXRXZWJWaWV3Q2xhc3MgewogICAgICAqLwogICAgIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSAo
Km5hdmlnYXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdl
YkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOwogCisgICAgZ2Jv
b2xlYW4gKCpuZXdfd2luZG93X3JlcXVlc3RlZCkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBX
ZWJLaXRXZWJWaWV3KiBuZXdfd2ViX3ZpZXcsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0
dXJlcyk7CisgICAgZ2Jvb2xlYW4gKCp3aW5kb3dfZ2VvbWV0cnlfY2hhbmdlX3JlcXVlc3RlZCkg
KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBjb25zdCBHZGtSZWN0YW5nbGUqIHJlY3QpOworICAg
IGdib29sZWFuICgqd2luZG93X3Jlc2l6YWJpbGl0eV9jaGFuZ2VfcmVxdWVzdGVkKSAoV2ViS2l0
V2ViVmlldyogd2ViX3ZpZXcsIGNvbnN0IGdib29sZWFuIHJlc2l6YWJsZSk7CisgICAgZ2Jvb2xl
YW4gKCp0b29sYmFyX3Zpc2liaWxpdHlfY2hhbmdlX3JlcXVlc3RlZCkgKFdlYktpdFdlYlZpZXcq
IHdlYl92aWV3LCBjb25zdCBnYm9vbGVhbiB2aXNpYmxlKTsKKyAgICBnYm9vbGVhbiAoKnN0YXR1
c2Jhcl92aXNpYmlsaXR5X2NoYW5nZV9yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dywgY29uc3QgZ2Jvb2xlYW4gdmlzaWJsZSk7CisgICAgZ2Jvb2xlYW4gKCpzY3JvbGxiYXJfdmlz
aWJpbGl0eV9jaGFuZ2VfcmVxdWVzdGVkKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIGNvbnN0
IGdib29sZWFuIHZpc2libGUpOworICAgIGdib29sZWFuICgqbWVudWJhcl92aXNpYmlsaXR5X2No
YW5nZV9yZXF1ZXN0ZWQpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgY29uc3QgZ2Jvb2xlYW4g
dmlzaWJsZSk7CiAgICAgdm9pZCAoKndpbmRvd19vYmplY3RfY2xlYXJlZCkgKFdlYktpdFdlYlZp
ZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dfb2JqZWN0KTsKICAgICBnY2hhciogICAoKmNob29z
ZV9maWxlKSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgZ2NoYXIqIG9sZF9maWxlKTsKICAgICBnYm9vbGVhbiAoKnNjcmlwdF9hbGVydCkgKFdl
YktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFy
KiBhbGVydF9tZXNzYWdlKTsKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRv
d2ZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3
aW5kb3dmZWF0dXJlcy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWxhIDxnbnNAZ25vbWUu
b3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgor
I2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0cHJp
dmF0ZS5oIgorCitleHRlcm4gIkMiIHsKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJP
UF9YLAorICAgIFBST1BfWSwKKyAgICBQUk9QX1dJRFRILAorICAgIFBST1BfSEVJR0hULAorICAg
IFBST1BfVE9PTEJBUl9WSVNJQkxFLAorICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCisgICAg
UFJPUF9TQ1JPTExCQVJfVklTSUJMRSwKKyAgICBQUk9QX01FTlVCQVJfVklTSUJMRSwKKyAgICBQ
Uk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9SRVNJWkFCTEUsCisgICAgUFJPUF9G
VUxMU0NSRUVOLAorICAgIFBST1BfRElBTE9HCit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzLCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlcywgR19UWVBFX09CSkVD
VCkKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUgeworICAgIGdkb3Vi
bGUgeDsKKyAgICBnZG91YmxlIHk7CisgICAgZ2RvdWJsZSB3aWR0aDsKKyAgICBnZG91YmxlIGhl
aWdodDsKKworICAgIGdib29sZWFuIHRvb2xiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzdGF0
dXNiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzY3JvbGxiYXJfdmlzaWJsZTsKKyAgICBnYm9v
bGVhbiBtZW51YmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gbG9jYXRpb25iYXJfdmlzaWJsZTsK
KyAgICBnYm9vbGVhbiByZXNpemFibGU7CisKKyAgICBnYm9vbGVhbiBmdWxsc2NyZWVuOworICAg
IGdib29sZWFuIGRpYWxvZzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVS
RVNfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1By
aXZhdGUpKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRf
cHJvcGVydHkgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHk7CisgICAg
Z29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
Z2V0X3Byb3BlcnR5OworCisgICAgR1BhcmFtRmxhZ3MgZmxhZ3MgPSAoR1BhcmFtRmxhZ3MpKFdF
QktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX1gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIngiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInggcG9z
aXRpb24gb24gc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJU
aGUgc3RhcnRpbmcgeCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLjAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHX01BWERPVUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC0xLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2Ns
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ5IHBvc2l0aW9uIG9uIHNjcmVlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0aW5nIHkgcG9zaXRpb24gb2YgdGhlIHdpbmRv
dyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
MS4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhET1VCTEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS4wLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfV0lEVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfZG91YmxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IndpZHRoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCBvZiB0
aGUgd2luZG93IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd2lk
dGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtMS4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R19NQVhET1VCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS4wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfSEVJR0hULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoZWlnaHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImhlaWdodCBvZiB0aGUgd2luZG93IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEuMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfTUFYRE9VQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLTEuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1RPT0xCQVJfVklT
SUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xiYXItdmlz
aWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2hldGhlciB0aGUg
dG9vbGJhciBzaG91bGQgYmUgdmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgdG9vbCBiYXIgc2hvdWxkIGJlIHZpc2libGUg
Zm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TVEFUVVNCQVJfVklTSUJMRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1c2Jhci12aXNpYmxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGV0aGVyIHRoZSBzdGF0dXNiYXIg
c2hvdWxkIGJlIHZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkNvbnRyb2xzIHdoZXRoZXIgdGhlIHN0YXR1cyBiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRo
ZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9TQ1JPTExCQVJfVklTSUJMRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcm9sbGJhci12aXNpYmxlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGV0aGVyIHRoZSBzY3JvbGxiYXIgc2hvdWxk
IGJlIHZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRy
b2xzIHdoZXRoZXIgdGhlIHNjcm9sbCBiYXJzIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2lu
ZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfTUVOVUJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAibWVudWJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ3aGV0aGVyIHRoZSBtZW51YmFyIHNob3VsZCBiZSB2aXNpYmxl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVy
IHRoZSBtZW51IGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3aGV0aGVyIHRoZSBsb2NhdGlvbmJhciBzaG91bGQgYmUgdmlzaWJsZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0
aGUgbG9jYXRpb24gYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfUkVTSVpBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicmVzaXphYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGV0
aGVyIHdpbmRvdyBzaG91bGQgYmUgcmVzaXphYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIHJlc2l6YWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0ZVTExTQ1JFRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3aGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIGZ1bGxzY3JlZW4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUg
ZGlzcGxheWVkIGZ1bGxzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ESUFMT0csCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWFsb2ciLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIndoZXRoZXIgdGhlIHdpbmRvdyBzaG91bGQgYmUgYSBkaWFsb2ci
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIg
d2luZG93IHNob3VsZCBiZSBhIGRpYWxvZywgb3IgYSB0b3AgbGV2ZWwgd2luZG93LiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0
ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSkpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0KFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzKQoreworICAgIHdlYl93aW5kb3dfZmVhdHVy
ZXMtPnByaXYgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19HRVRfUFJJVkFURSh3ZWJfd2lu
ZG93X2ZlYXR1cmVzKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVy
ZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMob2Jq
ZWN0KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYgPSB3ZWJfd2lu
ZG93X2ZlYXR1cmVzLT5wcml2OworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNw
ZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVyZXMg
PSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAgIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXY7CisKKyAg
ICBzd2l0Y2gocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9YOgorICAgICAgICBwcml2LT54ID0g
Z192YWx1ZV9nZXRfZG91YmxlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1k6CisgICAgICAgIHByaXYtPnkgPSBnX3ZhbHVlX2dldF9kb3VibGUodmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lEVEg6CisgICAgICAgIHByaXYtPndpZHRoID0gZ192
YWx1ZV9nZXRfZG91YmxlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hF
SUdIVDoKKyAgICAgICAgcHJpdi0+aGVpZ2h0ID0gZ192YWx1ZV9nZXRfZG91YmxlKHZhbHVlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAgICAg
cHJpdi0+dG9vbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TVEFUVVNCQVJfVklTSUJMRToKKyAgICAgICAgcHJp
di0+c3RhdHVzYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAgICBwcml2
LT5zY3JvbGxiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVOVUJBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT5t
ZW51YmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPmxv
Y2F0aW9uYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX1JFU0laQUJMRToKKyAgICAgICAgcHJpdi0+cmVzaXphYmxl
ID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9GVUxMU0NSRUVOOgorICAgICAgICBwcml2LT5mdWxsc2NyZWVuID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ESUFMT0c6Cisg
ICAgICAgIHByaXYtPmRpYWxvZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3Bl
YyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVh
dHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAgIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXY7
CisKKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAgZ192
YWx1ZV9zZXRfZG91YmxlKHZhbHVlLCBwcml2LT54KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgcHJpdi0+eSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAgICAgICAgZ192YWx1ZV9zZXRf
ZG91YmxlKHZhbHVlLCBwcml2LT53aWR0aCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9IRUlHSFQ6CisgICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwgcHJpdi0+aGVpZ2h0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+dG9vbGJhcl92aXNpYmxlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQ1JPTExCQVJfVklTSUJMRToKKyAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+c2Nyb2xsYmFyX3Zpc2libGUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVOVUJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVl
X3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5tZW51YmFyX3Zpc2libGUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9SRVNJWkFCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHByaXYtPnJlc2l6YWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9GVUxMU0NSRUVOOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5m
dWxsc2NyZWVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RJQUxPRzoKKyAgICAg
ICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZGlhbG9nKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3OgorICoKKyAqIENyZWF0ZXMg
YSBuZXcgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1
ZXMuIEl0IG11c3QKKyAqIGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisg
KiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqKi8K
K1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXco
KQoreworICAgIHJldHVybiBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgTlVMTCkpOworfQorCisvLyBmb3IgaW50
ZXJuYWwgdXNlIG9ubHkKK1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19uZXdfZnJvbV93aW5kb3dfZmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6V2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3aW5k
b3dfZmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKTsKKworICAgIGlm
KGZlYXR1cmVzLnhTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldCh3aW5kb3dfZmVhdHVyZXMsICJ4
IiwgZmVhdHVyZXMueCwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy55U2V0KQorICAgICAgICBn
X29iamVjdF9zZXQod2luZG93X2ZlYXR1cmVzLCAieSIsIGZlYXR1cmVzLnksIE5VTEwpOworCisg
ICAgaWYoZmVhdHVyZXMud2lkdGhTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldCh3aW5kb3dfZmVh
dHVyZXMsICJ3aWR0aCIsIGZlYXR1cmVzLndpZHRoLCBOVUxMKTsKKworICAgIGlmKGZlYXR1cmVz
LmhlaWdodFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KHdpbmRvd19mZWF0dXJlcywgImhlaWdo
dCIsIGZlYXR1cmVzLmhlaWdodCwgTlVMTCk7CisKKyAgICBnX29iamVjdF9zZXQod2luZG93X2Zl
YXR1cmVzLAorICAgICAgICAgICAgICAgICAidG9vbGJhcl92aXNpYmxlIiwgZmVhdHVyZXMudG9v
bEJhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJzdGF0dXNiYXJfdmlzaWJsZSIsIGZlYXR1
cmVzLnN0YXR1c0JhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJzY3JvbGxiYXJfdmlzaWJs
ZSIsIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlLAorICAgICAgICAgICAgICAgICAibWVudWJh
cl92aXNpYmxlIiwgZmVhdHVyZXMubWVudUJhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJs
b2NhdGlvbmJhcl92aXNpYmxlIiwgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlLAorICAgICAg
ICAgICAgICAgICAicmVzaXphYmxlIiwgZmVhdHVyZXMucmVzaXphYmxlLAorICAgICAgICAgICAg
ICAgICAiZnVsbHNjcmVlbiIsIGZlYXR1cmVzLmZ1bGxzY3JlZW4sCisgICAgICAgICAgICAgICAg
ICJkaWFsb2ciLCBmZWF0dXJlcy5kaWFsb2csCisgICAgICAgICAgICAgICAgIE5VTEwpOworCisg
ICAgcmV0dXJuIHdpbmRvd19mZWF0dXJlczsKK30KKworfQpJbmRleDogV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEg
PGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18K
KyNkZWZpbmUgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKworI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUyAgICAg
ICAgICAgICh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSgpKQorI2RlZmluZSBX
RUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVT
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mp
KQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZF
QVRVUkVTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xh
c3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJ
TkRPV19GRUFUVVJFUykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9D
TEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBF
X1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorCit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7
CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5n
IGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0
KSAodm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19nZXRfdHlwZSh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyoKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyh2b2lkKTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmIC8qIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfSF9fICovCkluZGV4OiBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMzU5MikKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDA4LTA1LTE5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxn
bnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJ
VGVzdCBoYW5kbGVycyBmb3IgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3ZXJlIGRvbmUg
dG8KKwlDaHJvbWVDbGllbnRHdGssIGFuZCBtYXBwZWQgdGhyb3VnaCBXZWJLaXRXZWJWaWV3OyBH
dGtMYXVuY2hlcgorCXdpbGwgbmVlZCBzb21lIHJlZmFjdG9yaW5nIHRvIHJlYWxseSBzdXBwb3J0
IHRlc3RpbmcgbXVsdGlwbGUKKwl3aW5kb3dzLgorCQorICAgICAgICAqIEd0a0xhdW5jaGVyL21h
aW4uYzoKKyAgICAgICAgKHdpbmRvd19nZW9tZXRyeV9jaGFuZ2VfcmVxdWVzdGVkX2NiKToKKyAg
ICAgICAgKG5ld193aW5kb3dfcmVxdWVzdGVkX2NiKToKKyAgICAgICAgKGNyZWF0ZV9icm93c2Vy
KToKKwogMjAwOC0wNS0xNiAgU3RlcGhhbmllIExld2lzICA8c2xld2lzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZS4KSW5kZXg6IFdlYktpdFRvb2xzL0d0a0xhdW5jaGVy
L21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMJKHJl
dmlzaW9uIDMzNTUyKQorKysgV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSwzNyBAQCB1cGRhdGVfdGl0bGUgKEd0a1dpbmRvdyogd2luZG93
KQogICAgIGdfZnJlZSAodGl0bGUpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4KK3dpbmRvd19nZW9t
ZXRyeV9jaGFuZ2VfcmVxdWVzdGVkX2NiIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgR2RrUmVj
dGFuZ2xlICpyZWN0KQoreworICAgIC8qIHRlc3RpbmcgYXZvaWRpbmcgdGhlIGNoYW5nZSBpbiBz
aXplL3Bvc2l0aW9uICovCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4K
K25ld193aW5kb3dfcmVxdWVzdGVkX2NiIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0
V2ViVmlldyogbmV3X3dlYl92aWV3LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMp
Cit7CisgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfZGlhbG9nX25ldygpOworICAgIGdkb3Vi
bGUgeCwgeTsKKyAgICBnYm9vbGVhbiByZXNpemFibGU7CisKKyAgICBnX29iamVjdF9nZXQoR19P
QkpFQ1QoZmVhdHVyZXMpLAorICAgICAgICAgICAgICAgICAieCIsICZ4LAorICAgICAgICAgICAg
ICAgICAieSIsICZ5LAorICAgICAgICAgICAgICAgICAicmVzaXphYmxlIiwgJnJlc2l6YWJsZSwK
KyAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRP
VyhkaWFsb2cpLCB4LCB5KTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QoZGlhbG9n
KSwgImRlbGV0ZS1ldmVudCIsCisgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGd0a193
aWRnZXRfZGVzdHJveSksIE5VTEwpOworICAgIGd0a19ib3hfcGFja19zdGFydF9kZWZhdWx0cyhH
VEtfQk9YKEdUS19ESUFMT0coZGlhbG9nKS0+dmJveCksIEdUS19XSURHRVQobmV3X3dlYl92aWV3
KSk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAobmV3X3dlYl92aWV3KSwgIndp
bmRvdy1nZW9tZXRyeS1jaGFuZ2UtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyAod2luZG93X2dlb21l
dHJ5X2NoYW5nZV9yZXF1ZXN0ZWRfY2IpLCB3ZWJfdmlldyk7CisKKyAgICByZXR1cm4gVFJVRTsK
K30KKwogc3RhdGljIHZvaWQKIGxpbmtfaG92ZXJfY2IgKFdlYktpdFdlYlZpZXcqIHBhZ2UsIGNv
bnN0IGdjaGFyKiB0aXRsZSwgY29uc3QgZ2NoYXIqIGxpbmssIGdwb2ludGVyIGRhdGEpCiB7CkBA
IC0xMTksNiArMTUwLDggQEAgY3JlYXRlX2Jyb3dzZXIgKCkKICAgICBnX3NpZ25hbF9jb25uZWN0
IChHX09CSkVDVCAod2ViX3ZpZXcpLCAibG9hZC1wcm9ncmVzcy1jaGFuZ2VkIiwgR19DQUxMQkFD
SyAocHJvZ3Jlc3NfY2hhbmdlX2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qg
KEdfT0JKRUNUICh3ZWJfdmlldyksICJsb2FkLWNvbW1pdHRlZCIsIEdfQ0FMTEJBQ0sgKGxvYWRf
Y29tbWl0X2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3
ZWJfdmlldyksICJob3ZlcmluZy1vdmVyLWxpbmsiLCBHX0NBTExCQUNLIChsaW5rX2hvdmVyX2Ni
KSwgd2ViX3ZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyks
ICJuZXctd2luZG93LXJlcXVlc3RlZCIsIEdfQ0FMTEJBQ0sgKG5ld193aW5kb3dfcmVxdWVzdGVk
X2NiKSwgd2ViX3ZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmll
dyksICJ3aW5kb3ctZ2VvbWV0cnktY2hhbmdlLXJlcXVlc3RlZCIsIEdfQ0FMTEJBQ0sgKHdpbmRv
d19nZW9tZXRyeV9jaGFuZ2VfcmVxdWVzdGVkX2NiKSwgd2ViX3ZpZXcpOwogCiAgICAgcmV0dXJu
IHNjcm9sbGVkX3dpbmRvdzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21341</attachid>
            <date>2008-05-25 16:06:47 -0700</date>
            <delta_ts>2008-05-26 18:05:25 -0700</delta_ts>
            <desc>patch merged with work by me and barisione</desc>
            <filename>new-window-stuff.diff</filename>
            <type>text/plain</type>
            <size>63521</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0MTI3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMDUt
MjUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlBZGRlZCB0aGUgbmV3IFdlYktpdEd0ayBmaWxl
cyB0byBiZSBidWlsdDoKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJl
cy57Y3BwLGh9LAorCXdlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcCBhbmQgd2Via2l0d2Vidmlld3Jl
cXVlc3QuaAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDUtMjUgIEphbiBN
aWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWxwIFRva2VyLgpJbmRleDogR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDM0MTI3KQorKysgR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5OCw2ICsyOTgsOCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAor
CVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAorCVdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAogCiB3ZWJraXRndGtfYnVpbHRfc291cmNlcyArPSBcCkBAIC0zMjEsNiAr
MzIzLDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCisJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcCBcCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDA4LTA1LTI1ICBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMw
CisJQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cgYW5kIGZyaWVuZHMgbmVlZCB0byBiZSBpbXBs
ZW1lbnRlZAorCQorCUNvZGUgZnJvbSBHdXN0YXZvIE5vcm9uaGEgYW5kIE1hcmNvIEJhcmlzaW9u
ZQorCTxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPiBpbiB0aGlzIGNoYW5nZSBzZXQu
CisKKwlJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRlcmZhY2VzIG5lZWRlZCB0
byBoYXZlIG5ldworCXdpbmRvdyBjcmVhdGlvbiBmdW5jdGlvbmluZyBhbmQgZXhwb3NlZCB0byBj
bGllbnQgY29kZS4gV2UKKwlpbXBsZW1lbnRlZCBhIG1pcnJvciBHT2JqZWN0IHRvIHRoZSBXaW5k
b3dGZWF0dXJlcyBvYmplY3QgcHJvdmlkZWQKKwlieSBXZWJDb3JlLiBBIG1pcnJvciBmb3IgRnJh
bWVMb2FkZXJSZXF1ZXN0IHdhcyBhbHNvIGNyZWF0ZWQ6CisJV2ViS2l0V2ViVmlld1JlcXVlc3Qu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNW
aXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50OjpzZXRSZXNpemFibGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXQt
bWFyc2hhbC5saXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjopOgorICAgICAg
ICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
Z2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6Ondl
YmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2Vi
Vmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9pbml0KToKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25ldHdvcmtfcmVxdWVz
dCk6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3Zp
ZXdfcmVxdWVzdF9zZXRfbmV0d29ya19yZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3
UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lKToKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X3NldF9uYW1lKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3dfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktp
dFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3dpbmRv
d19mZWF0dXJlcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVk
LgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6
OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19n
ZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2Nv
cmVfZmVhdHVyZXMpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5o
OiBBZGRlZC4KKwogMjAwOC0wNS0yNSAgQWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTmlrby4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDM0MTI3KQorKysgV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0
aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBT
aWx2YSA8Z25zQGdub21lLm9yZz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDYgKzIxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRHdGsuaCIKIAor
I2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTI3LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cmVxdWVz
dC5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCkBAIC02MSw5ICs2NCwzMiBAQCBGbG9h
dFJlY3QgQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7
CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cikKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAg
ICByZXR1cm47CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxl
dmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgaWYgKHdpbmRvdykgeworICAgICAgICBJ
bnRSZWN0IGludHJlY3QgPSBJbnRSZWN0KHJlY3QpOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19m
ZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJX
aW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAgICAgICAieCIsIGludHJlY3QueCgpLAor
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JK
RUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgICAgICJ5IiwgaW50cmVj
dC55KCksCisgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgICAgICBnX29iamVjdF9z
ZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLAorICAgICAgICAgICAgICAgICAgICAgIndp
ZHRoIiwgaW50cmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAg
ICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICJoZWlnaHQiLCBpbnRyZWN0LmhlaWdodCgpLAorICAgICAgICAgICAgICAg
ICAgICAgTlVMTCk7CisgICAgfQogfQogCiBGbG9hdFJlY3QgQ2hyb21lQ2xpZW50OjpwYWdlUmVj
dCgpCkBAIC05NiwyNSArMTIyLDQxIEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKICAg
ICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RLX1dJTkRPVyh3aW5kb3cpLCBOVUxMKTsKIH0K
IAotUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFnZSogQ2hyb21l
Q2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgY29yZUZlYXR1cmVzKQog
ewotICAgIGlmIChmZWF0dXJlcy5kaWFsb2cpIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogbmV0d29ya1JlcXVlc3QgPSAwOworICAgIGlmICgh
ZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5KCkpCisgICAgICAgIG5ldHdvcmtSZXF1ZXN0ID0gd2Vi
a2l0X25ldHdvcmtfcmVxdWVzdF9uZXcoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25l
d19mcm9tX2NvcmVfZmVhdHVyZXMoY29yZUZlYXR1cmVzKTsKKworICAgIGdwb2ludGVyIHdlYlZp
ZXdSZXF1ZXN0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiLCBmcmFtZUxv
YWRSZXF1ZXN0LmZyYW1lTmFtZSgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm5ldHdvcmstcmVxdWVzdCIsIG5ldHdvcmtSZXF1ZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aW5kb3ctZmVh
dHVyZXMiLCB3ZWJXaW5kb3dGZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOwor
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBr
aXQoZnJhbWUpLCB3ZWJWaWV3UmVxdWVzdCwgJndlYlZpZXcpOworCisgICAgZ19vYmplY3RfdW5y
ZWYoR19PQkpFQ1Qod2ViVmlld1JlcXVlc3QpKTsKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVD
VCh3ZWJXaW5kb3dGZWF0dXJlcykpOworICAgIGlmIChuZXR3b3JrUmVxdWVzdCkKKyAgICAgICAg
Z19vYmplY3RfdW5yZWYoR19PQkpFQ1QobmV0d29ya1JlcXVlc3QpKTsKKworICAgIGlmICghd2Vi
VmlldykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogVE9ETzog
RnJhbWVMb2FkUmVxdWVzdCBpcyBub3QgdXNlZCAqLwotICAgICAgICBXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9DTEFTUyhtX3dlYlZpZXcpLT5jcmVhdGVfd2Vi
X3ZpZXcobV93ZWJWaWV3KTsKLSAgICAgICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVEYXRhID0gV0VC
S0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwotICAgICAgICByZXR1cm4gcHJpdmF0
ZURhdGEtPmNvcmVQYWdlOwotICAgIH0KKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0
ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7CisgICAgcmV0dXJu
IHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNob3coKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIHdlYmtpdF93ZWJfdmlld19zaG93KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wg
Q2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkBAIC0xMjgsNTIgKzE3MCwxMDEgQEAgdm9pZCBD
aHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVu
dDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNU
KHdlYldpbmRvd0ZlYXR1cmVzKSwgInRvb2xiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwog
fQogCiBib29sIENocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRv
d0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3
KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdl
YldpbmRvd0ZlYXR1cmVzKSwgInRvb2xiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAg
ICByZXR1cm4gdmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZp
c2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wg
dmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQor
ICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcp
OworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1
c2Jhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50Ojpz
dGF0dXNiYXJWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92
aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxl
OworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1
c2Jhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQog
Ci12b2lkIENocm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hy
b21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dl
Yl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3Nl
dChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsIHZpc2li
bGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUoKSB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dl
YlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1
cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dl
dChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsICZ2aXNp
YmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6
OnNldE1lbnViYXJWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0TWVudWJhclZp
c2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFt
X3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
KiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVz
KG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVy
ZXMpLCAibWVudWJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21l
Q2xpZW50OjptZW51YmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtp
dF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4g
dmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyks
ICJtZW51YmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7
CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUoYm9vbCkKK3ZvaWQgQ2hyb21l
Q2xpZW50OjpzZXRSZXNpemFibGUoYm9vbCByZXNpemFibGUpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dl
dF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVD
VCh3ZWJXaW5kb3dGZWF0dXJlcyksICJyZXNpemFibGUiLCByZXNpemFibGUsIE5VTEwpOwogfQog
CiB2b2lkIENocm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKCkKSW5kZXg6IFdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lv
biAzNDEyNykKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAia2pzX2Jp
bmRpbmcuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3
LmgiCisjaW5jbHVkZSAid2Via2l0d2Vidmlld3JlcXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIApAQCAtMjU5LDcgKzI2MCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG8KICAgICAgICAgcmV0
dXJuOwogICAgIC8vIEZJWE1FOiBJIHRoaW5rIFF0IHZlcnNpb24gbWFyc2hhbHMgdGhpcyB0byBh
bm90aGVyIHRocmVhZCBzbyB3aGVuIHdlCiAgICAgLy8gaGF2ZSBtdWx0aS10aHJlYWRlZCBkb3du
bG9hZCwgd2UgbWlnaHQgbmVlZCB0byBkbyB0aGUgc2FtZQotICAgIChjb3JlKG1fZnJhbWUpLT5s
b2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOworICAgIChjb3JlKG1fZnJh
bWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
RnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKQEAgLTU2
Miw3ICs1NjMsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZSht
X2ZyYW1lKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyh3ZWJWaWV3KTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtNzI5LDggKzczMSwxNyBA
QCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjCiAKIEZyYW1lKiBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAwOworICAgIGdwb2ludGVyIHdlYlZpZXdSZXF1ZXN0ID0gZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QsIE5VTEwpOworICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktpdFdl
YlZpZXcqIG5ld1dlYlZpZXcgPSAwOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3
LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwgd2ViVmlld1JlcXVlc3QsICZuZXdXZWJWaWV3
KTsKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVDVCh3ZWJWaWV3UmVxdWVzdCkpOworCisgICAg
aWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShuZXdXZWJW
aWV3KTsKKyAgICByZXR1cm4gY29yZShwcml2YXRlRGF0YS0+bWFpbkZyYW1lKTsKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25z
dCBSZXNvdXJjZUVycm9yJikKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFs
Lmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwubGlz
dAkocmV2aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5s
aXN0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsMTAgQEAgVk9JRDpPQkpFQ1QsQk9PTEVBTgog
Vk9JRDpPQkpFQ1QsU1RSSU5HCiBWT0lEOk9CSkVDVCxPQkpFQ1QKIFZPSUQ6T0JKRUNULFBPSU5U
RVIsUE9JTlRFUgorQk9PTEVBTjpWT0lECiBCT09MRUFOOlNUUklORyxJTlQsU1RSSU5HCiBCT09M
RUFOOk9CSkVDVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORyxCT09MRUFOCiBCT09MRUFO
Ok9CSkVDVCxTVFJJTkcsU1RSSU5HLFNUUklORwogSU5UOk9CSkVDVCxPQkpFQ1QKK09CSkVDVDpP
QkpFQ1QsT0JKRUNUCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkocmV2aXNpb24gMzQxMjcpCisrKyBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5o
PgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgorI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgpJbmRleDogV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdGRlZmluZXMuaAkocmV2aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRkZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xhc3MgV2ViSwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNl
dHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsKIAordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXNDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsK
IHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgV2ViS2l0V2ViVmlld0NsYXNzOwog
CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCShyZXZpc2lvbiAzNDEyNykKKysrIFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogCiAjaW5jbHVkZSAiQmFja0Zv
cndhcmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJX
aW5kb3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC02Nyw2ICs2OSw3IEBA
IGV4dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgICAg
ICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdl
YlNldHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKICAgICAgICAgV2Vi
Q29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKQEAgLTEwOCw2ICsxMTEs
OSBAQCBleHRlcm4gIkMiIHsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKICAgICB3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
KTsKIAorICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyAoV2ViS2l0V2ViVmlldyog
d2ViVmlldyk7CisKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5o
IG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NM
aXN0KgpAQCAtMTIxLDYgKzEyNyw5IEBAIGV4dGVybiAiQyIgewogCiAgICAgV0VCS0lUX0FQSSBn
Y2hhcioKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NlbGVjdGVkX3RleHQgKFdlYktpdFdlYlZp
ZXcqIHdlYl92aWV3KTsKKworICAgIFdFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
CisgICAgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyAo
Y29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKTsKIH0KIAogI2VuZGlmCklu
ZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMzQxMjcpCisrKyBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2
ICs0LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgWGFuIExvcGV6IDx4YW5AZ25vbWUub3Jn
PgogICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICog
IENvcHlyaWdodCAoQykgMjAwOCBKYW4gQWxvbnpvIDxqbWFsb256b0B1bnBsdWdnYWJsZS5jb20+
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21l
Lm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpA
QCAtNjksNiArNzAsOCBAQCBleHRlcm4gIkMiIHsKIGVudW0gewogICAgIC8qIG5vcm1hbCBzaWdu
YWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAgQ1JFQVRFX1dFQl9WSUVXLAor
ICAgIFNIT1dfV0VCX1ZJRVcsCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURf
U1RBUlRFRCwKICAgICBMT0FEX0NPTU1JVFRFRCwKQEAgLTk4LDYgKzEwMSw3IEBAIGVudW0gewog
ICAgIFBST1BfUEFTVEVfVEFSR0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9Q
X1NFVFRJTkdTLAorICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTLAogICAgIFBST1BfVFJBTlNQQVJF
TlQKIH07CiAKQEAgLTIzMSw2ICsyMzUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3Byb3BlcnR5CiAgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldykpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICBn
X3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1
cmVzKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5U
OgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3RyYW5zcGFyZW50KHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNTAsNiArMjU3LDkg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0eQogICAgIGNhc2UgUFJP
UF9TRVRUSU5HUzoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyh3ZWJWaWV3
LCBXRUJLSVRfV0VCX1NFVFRJTkdTKGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgd2Via2l0
X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMod2ViVmlldywgV0VCS0lUX1dFQl9XSU5ET1df
RkVBVFVSRVMoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSkpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBST1BfVFJBTlNQQVJFTlQ6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfdHJh
bnNwYXJlbnQod2ViVmlldywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBi
cmVhazsKQEAgLTU0NCwxMiArNTU0LDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19j
b250YWluZXJfZm8KICAgICAgICAgKCpjYWxsYmFjaykoKmN1cnJlbnQsIGNhbGxiYWNrRGF0YSk7
CiB9CiAKLXN0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVf
d2ViX3ZpZXcoV2ViS2l0V2ViVmlldyopCitzdGF0aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dl
Yl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqIHdlYnZpZXcsIFdlYktp
dFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG93
X3dlYl92aWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIEZBTFNFOwor
fQorCiBzdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19yZWFs
X25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAt
NzA3LDYgKzcyMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2IK
ICAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+dmVydGljYWxBZGp1c3RtZW50KTsKICAgICBn
X29iamVjdF91bnJlZihwcml2LT5iYWNrRm9yd2FyZExpc3QpOwogICAgIGdfb2JqZWN0X3VucmVm
KHByaXYtPndlYlNldHRpbmdzKTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJXaW5kb3dG
ZWF0dXJlcyk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpbkZyYW1lKTsKICAgICBnX29i
amVjdF91bnJlZihwcml2LT5pbUNvbnRleHQpOwogICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihw
cml2LT5jb3B5X3RhcmdldF9saXN0KTsKQEAgLTcxNiw2ICs3MzEsMTggQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYgogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93
ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCitzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9j
YXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRs
ZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQoreworICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9u
ID0gVFJVRTsKKyAgZ3BvaW50ZXIgbmV3V2ViVmlldyA9IGdfdmFsdWVfZ2V0X29iamVjdChoYW5k
bGVyUmV0dXJuKTsKKyAgZ192YWx1ZV9zZXRfb2JqZWN0KHJldHVybkFjY3UsIG5ld1dlYlZpZXcp
OworCisgIGlmIChuZXdXZWJWaWV3KQorICAgICAgY29udGludWVFbWlzc2lvbiA9IEZBTFNFOwor
CisgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQs
IEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRl
ciBkdW1teSkKIHsKICAgZ2Jvb2xlYW4gY29udGludWVFbWlzc2lvbiA9IFRSVUU7CkBAIC03NTgs
NiArNzg1LDU1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAg
ICAgKiBTaWduYWxzCiAgICAgICovCiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpj
cmVhdGUtd2ViLXZpZXc6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRo
ZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZQor
ICAgICAqIEB3ZWJfdmlld19yZXF1ZXN0OiBhICNXZWJLaXRXZWJWaWV3UmVxdWVzdAorICAgICAq
IEByZXR1cm46IGEgbmV3bHkgYWxsb2NhdGVkICNXZWJLaXRXZWJWaWV3IG9yICVOVUxMCisgICAg
ICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHdpbmRvdyBpcyBy
ZXF1ZXN0ZWQuCisgICAgICogSWYgdGhpcyBzaWduYWwgaXMgaGFuZGxlZCB0aGUgc2lnbmFsIGhh
bmRsZXIgc2hvdWxkIHJldHVybiB0aGUKKyAgICAgKiBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJW
aWV3LiBUaGUgbmV3ICNXZWJLaXRXZWJWaWV3IHNob3VsZCBub3QgYmUKKyAgICAgKiBkaXNwbGF5
ZWQgdG8gdGhlIHVzZXIgdW50aWwgdGhlICJzaG93LXdlYi12aWV3IiBzaWduYWwgaXMgZW1pdHRl
ZC4KKyAgICAgKgorICAgICAqIEB3ZWJfdmlld19yZXF1ZXN0IGNvbnRhaW5zIGluZm9ybWF0aW9u
IGFib3V0IHRoZSBuZXcgI1dlYktpdFdlYlZpZXcsCisgICAgICogYnV0IG5vdGUgdGhhdCB5b3Ug
Y2FuIGZyZWVseSBpZ25vcmUgYW55IHBhcnRpY3VsYXIgcmVxdWVzdCBsaWtlIHRoZQorICAgICAq
IHNpemUgb2YgdGhlIG5ldyB3aW5kb3cgb3Igd2hhdCBiYXJzIHNob3VsZCBiZSBkaXNwbGF5ZWQg
aW4gdGhlIG5ldworICAgICAqIHdpbmRvdy4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdf
c2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3KCJjcmVhdGUtd2ViLXZpZXci
LAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAg
ICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwK
KyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBjcmVhdGVf
d2ViX3ZpZXcpLAorICAgICAgICAgICAgd2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0X2hh
bmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfT0JK
RUNUX19PQkpFQ1RfT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCwgMiwKKyAgICAg
ICAgICAgIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNUKTsKKworICAg
IC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNob3ctd2ViLXZpZXc6CisgICAgICogQHdlYl92
aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBy
ZXR1cm46ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZv
ciB0aGUgZXZlbnQsICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIKKyAgICAg
KgorICAgICAqIEVtaXR0ZWQgYWZ0ZXIgImNyZWF0ZS13ZWItdmlldyIgd2hlbiB0aGUgbmV3ICNX
ZWJLaXRXZWJWaWV3IHNob3VsZAorICAgICAqIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KKyAg
ICAgKgorICAgICAqIElmIHRoZXJlIGlzbid0IGFueSBoYW5kbGVyIGZvciB0aGlzIHNpZ25hbCBv
ciBpZiB0aGV5IHJldHVybiAlRkFMU0UsCisgICAgICogdGhlbiB0aGUgZGVmYXVsdCBhY3Rpb24g
aXMgdG8gY2FsbCBndGtfd2lkZ2V0X3Nob3dfYWxsKCkgb24gdGhlCisgICAgICogdG9wbGV2ZWwg
d2luZG93IGNvbnRhaW5pbmcgQHdlYl92aWV3LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmll
d19zaWduYWxzW1NIT1dfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3KCJzaG93LXdlYi12aWV3IiwK
KyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAg
ICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCksCisgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgc2hvd193ZWJfdmlldyksCisgICAgICAgICAg
ICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdf
VFlQRV9CT09MRUFOLCAwKTsKKwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW05BVklHQVRJ
T05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLAogICAg
ICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAgICAgICAgIChH
U2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKQEAgLTEw
ODUsNiArMTE2MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcK
ICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICovCiAgICAg
d2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVh
dGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNzLT5zaG93X3dlYl92aWV3ID0gd2Via2l0X3dl
Yl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25f
cmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CiAg
ICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmls
ZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTE4NCw2ICsxMjYxLDEz
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX1NFVFRJTkdTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1dJTkRPV19GRUFUVVJFUywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3Qo
IndpbmRvdy1mZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJXaW5kb3cgRmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW4gYXNzb2NpYXRlZCBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVB
VFVSRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfRURJVEFCTEUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZWRpdGFibGUiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkVkaXRhYmxlIiwKQEAgLTEzODMsNiArMTQ2Nyw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19pbml0KFdlYktpdFcKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdl
YlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1jaGFuZ2VkIiwg
R19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxMKTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3
ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAgICBwcml2LT53
ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOwogfQog
CiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTEzOTIsNiArMTQ3OCwy
MCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAgICByZXR1cm4gR1RL
X1dJREdFVCh3ZWJWaWV3KTsKIH0KIAordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2hvdyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IEZBTFNFOworICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0hPV19XRUJfVklF
V10sIDAsICZpc0hhbmRsZWQpOworICAgIGlmIChpc0hhbmRsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKHdlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHRvcGxldmVsKTsKK30K
KworCiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKQEAgLTE0MTUsNiArMTUxNSw0MyBA
QCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl92aWV3X2dldF9zCiB9CiAKIC8qKgorICog
d2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNXZWJL
aXRXZWJWaWV3CisgKiBAd2luZG93X2ZlYXR1cmVzOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cworICoKKyAqIFRoaXMgd2lsbCBzZXQgdGhlIGZlYXR1cmVzIHRoZSB3aW5kb3cgY29udGFpbmlu
ZyB0aGUgI1dlYktpdFdlYlZpZXcKKyAqIHNob3VsZCBzZXQgZm9yIGl0c2VsZi4gV2ViS2l0IHdp
bCBub3QgdHJ5IHRvIGFwcGx5IGFueSBjaGFuZ2VzCisgKiBpdHNlbGYuCisgKi8KK3ZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfV0lORE9XX0ZFQVRVUkVTKHdlYldpbmRvd0ZlYXR1cmVzKSk7
CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAg
Z19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X3Jl
Zih3ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgcHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSB3ZWJX
aW5kb3dGZWF0dXJlczsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19m
ZWF0dXJlcworICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZXR1cm5zIHRo
ZSBpbnN0YW5jZSBvZiAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaGVsZCBieSB0aGUgZ2l2ZW4K
KyAqICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlICNXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcworICovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl92
aWV3X2dldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOwor
CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJl
dHVybiBwcml2LT53ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X21haW50YWluc19iYWNrX2ZvcndhcmRfbGlzdDoKICAqIEB3ZWJWaWV3OiBhICNXZWJL
aXRXZWJWaWV3CiAgKiBAZmxhZzogdG8gdGVsbCB0aGUgdmlldyB0byBtYWludGFpbiBhIGJhY2sg
b3IgZm9yd2FyZCBsaXN0CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCShyZXZpc2lv
biAzNDEyNykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KICNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2Vidmlld3JlcXVlc3QuaD4KIAogR19CRUdJTl9ERUNMUwogCkBAIC02MywxMSArNjQsOSBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAKICAgICAvKgogICAgICAqIGRlZmF1bHQg
aGFuZGxlci92aXJ0dWFsIG1ldGhvZHMKLSAgICAgKiBESVNDVVNTOiBjcmVhdGVfd2ViX3ZpZXcg
bmVlZHMgYSByZXF1ZXN0IGFuZCBzaG91bGQgd2UgbWFrZSB0aGlzIGEgc2lnbmFsIHdpdGggZGVm
YXVsdCBoYW5kbGVyPyB0aGlzIHdvdWxkCi0gICAgICogcmVxdWlyZSBzb21lb25lIGRvaW5nIGEg
Z19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lCi0gICAgICogV2ViVUlEZWxlZ2F0ZSBoYXMg
bm90aGluZyBmb3IgY3JlYXRlX2ZyYW1lLCBXZWJQb2xpY3lEZWxlZ2F0ZSBhcyB3ZWxsLi4uCiAg
ICAgICovCi0gICAgV2ViS2l0V2ViVmlldyogICgqY3JlYXRlX3dlYl92aWV3KSAgKFdlYktpdFdl
YlZpZXcqIHdlYl92aWV3KTsKKyAgICBXZWJLaXRXZWJWaWV3KiAoKmNyZWF0ZV93ZWJfdmlldykg
KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCk7
CisgICAgZ2Jvb2xlYW4gKCpzaG93X3dlYl92aWV3KSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcp
OwogCiAgICAgLyoKICAgICAgKiBUT0RPOiBGSVhNRTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdl
YlBvbGljeURlY2lzaW9uTGlzdGVuZXJfUHJvdG9jb2wgaW5zdGVhZApAQCAtMjA1LDYgKzIwNCwx
MiBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzIChXZWJLaXRXZWJWCiBXRUJLSVRfQVBJ
IFdlYktpdFdlYlNldHRpbmdzKgogd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyAoV2ViS2l0
V2ViVmlldyogd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19z
ZXRfd2luZG93X2ZlYXR1cmVzIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcyk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyAoV2ViS2l0
V2ViVmlldyogd2ViX3ZpZXcpOworCiBXRUJLSVRfT0JTT0xFVEVfQVBJIGdib29sZWFuCiB3ZWJr
aXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2t3YXJkIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAK
SW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cmVxdWVzdC5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cmVxdWVzdC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdHdlYnZp
ZXdyZXF1ZXN0LmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCitleHRlcm4gIkMiIHsK
Kworc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGUgeworICAgIFdlYktpdE5ldHdv
cmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdDsKKyAgICBnY2hhciogbmFtZTsKKyAgICBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXM7Cit9OworCisjZGVmaW5lIFdFQktJ
VF9XRUJfVklFV19SRVFVRVNUX0dFVF9QUklWQVRFKG9iaikoR19UWVBFX0lOU1RBTkNFX0dFVF9Q
UklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNULCBXZWJLaXRXZWJWaWV3
UmVxdWVzdFByaXZhdGUpKQorCitlbnVtICB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9ORVRX
T1JLX1JFUVVFU1QsCisgICAgUFJPUF9OQU1FLAorICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTCit9
OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXdSZXF1ZXN0LCB3ZWJraXRfd2ViX3ZpZXdf
cmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3Jl
cXVlc3Rfc2V0X25ldHdvcmtfcmVxdWVzdChXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwg
V2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmtSZXF1ZXN0KTsKKworCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBX
ZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9XRUJfVklFV19SRVFVRVNUKG9i
amVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9ORVRXT1JL
X1JFUVVFU1Q6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92
aWV3X3JlcXVlc3RfZ2V0X25ldHdvcmtfcmVxdWVzdChyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9OQU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUs
IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lKHJlcXVlc3QpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRf
b2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfd2luZG93X2ZlYXR1cmVz
KHJlcXVlc3QpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19y
ZXF1ZXN0X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNv
bnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlZp
ZXdSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1Qob2JqZWN0KTsKKwor
ICAgIHN3aXRjaChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9QX05FVFdPUktfUkVRVUVTVDoK
KyAgICAgICAgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25ldHdvcmtfcmVxdWVzdChyZXF1
ZXN0LCBzdGF0aWNfY2FzdDxXZWJLaXROZXR3b3JrUmVxdWVzdCo+KGdfdmFsdWVfZ2V0X29iamVj
dCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX05BTUU6CisgICAgICAg
IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9uYW1lKHJlcXVlc3QsIGdfdmFsdWVfZ2V0X3N0
cmluZyh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRV
UkVTOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1cmVz
KHJlcXVlc3QsIHN0YXRpY19jYXN0PFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKj4oZ192YWx1ZV9n
ZXRfb2JqZWN0KHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBw
c3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3JlcXVlc3RfaW5pdChXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICByZXF1ZXN0LT5wcml2ID0gV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1RfR0VUX1BSSVZBVEUocmVx
dWVzdCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0
LT5wcml2OworICAgIHByaXYtPm5hbWUgPSBnX3N0cmR1cCgiIik7CisgICAgcHJpdi0+d2ViV2lu
ZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZmluYWxpemUoR09iamVjdCogb2JqKQor
eworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1dFQl9WSUVXX1JF
UVVFU1Qob2JqKTsKKyAgICBXZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1
ZXN0LT5wcml2OworCisgICAgaWYgKHJlcXVlc3QtPnByaXYtPm5ldHdvcmtSZXF1ZXN0KQorICAg
ICAgICBnX29iamVjdF91bnJlZihwcml2LT5uZXR3b3JrUmVxdWVzdCk7CisKKyAgICBpZiAocmVx
dWVzdC0+cHJpdi0+d2ViV2luZG93RmVhdHVyZXMpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKHBy
aXYtPndlYldpbmRvd0ZlYXR1cmVzKTsKKworICAgIGdfZnJlZShwcml2LT5uYW1lKTsKKworICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iaik7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2Ns
YXNzX2luaXQoV2ViS2l0V2ViVmlld1JlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAg
IEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3Mp
OworCisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfdmlld19yZXF1
ZXN0X2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0
X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3Byb3BlcnR5OworICAgIG9iamVjdENsYXNzLT5kaXNwb3Nl
ID0gd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZmluYWxpemU7CisKKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX05FVFdPUktfUkVRVUVTVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoIm5l
dHdvcmstcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJOZXR3b3JrIHJlcXVlc3QiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG5ldHdvcmsgcmVxdWVzdCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfTkFNRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoIm5hbWUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV3
IHdpbmRvdyBuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlRoZSBuYW1lIG9mIHRoZSBuZXcgd2luZG93IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEV1JJVEUpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
b2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2luZG93LWZlYXR1cmVzIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldp
bmRvdyBmZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJIb3cgdGhlIG5ldyB3aW5kb3cgc2hvdWxkIGxvb2siLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
VFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0V2Vi
Vmlld1JlcXVlc3RQcml2YXRlKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3JlcXVl
c3RfZ2V0X25ldHdvcmtfcmVxdWVzdDoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXROZXR3b3JrUmVx
dWVzdAorICoKKyAqIFJldHVybnMgdGhlICNXZWJLaXROZXR3b3JrUmVxdWVzdCBmb3IgdGhlIHBh
Z2UgdGhhdCB3aWxsIGJlIHNob3duIGluIHRoZQorICogbmV3ICNXZWJLaXRXZWJWaWV3IG9yICVO
VUxMIGlmIHRoZSBuYXZpZ2F0aW9uIHdpbGwgaGFwcGVuIGluIGEgbGF0ZXIgc3RhZ2UuCisgKgor
ICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdE5ldHdvcmtSZXF1ZXN0IG9yIE5VTEwKKyAqLwor
V2ViS2l0TmV0d29ya1JlcXVlc3QqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uZXR3b3Jr
X3JlcXVlc3QoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOwor
CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPm5ldHdvcmtSZXF1ZXN0OworfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfbmV0d29ya19yZXF1ZXN0KFdlYktpdFdl
YlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBXZWJLaXROZXR3b3JrUmVxdWVzdCogbmV0d29ya1JlcXVl
c3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVdfUkVRVUVTVChy
ZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCghbmV0d29ya1JlcXVlc3QgfHwgV0VCS0lU
X0lTX05FVFdPUktfUkVRVUVTVChuZXR3b3JrUmVxdWVzdCkpOworCisgICAgaWYgKHJlcXVlc3Qt
PnByaXYtPm5ldHdvcmtSZXF1ZXN0ID09IG5ldHdvcmtSZXF1ZXN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAocmVxdWVzdC0+cHJpdi0+bmV0d29ya1JlcXVlc3QpCisgICAgICAgIGdfb2Jq
ZWN0X3VucmVmKHJlcXVlc3QtPnByaXYtPm5ldHdvcmtSZXF1ZXN0KTsKKyAgICByZXF1ZXN0LT5w
cml2LT5uZXR3b3JrUmVxdWVzdCA9IG5ldHdvcmtSZXF1ZXN0OworICAgIGdfb2JqZWN0X3JlZihy
ZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHJlcXVlc3QpLCAibmV0d29yay1yZXF1ZXN0Iik7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl92aWV3X3JlcXVlc3RfZ2V0X25hbWU6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1Jl
cXVlc3QKKyAqCisgKiBSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGUgbmV3IHdlYiB2aWV3LgorICoK
KyAqIFJldHVybiB2YWx1ZTogdGhlIG5hbWUgb2YgdGhlIG5ldyB3ZWIgdmlldworICovCitjb25z
dCBnY2hhciogd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25hbWUoV2ViS2l0V2ViVmlld1Jl
cXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnBy
aXYtPm5hbWU7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25hbWU6
CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqIEBuYW1lOiB0aGUgd2Vi
IHZpZXcgbmFtZQorICoKKyAqIFNldHMgdGhlIG5hbWUgZm9yIHRoZSBuZXcgI1dlYktpdFdlYlZp
ZXcuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25hbWUoV2ViS2l0V2Vi
Vmlld1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdjaGFyKiBuYW1lKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwobmFtZSk7CisKKyAgICBpZiAoIXN0cmNtcChyZXF1ZXN0LT5wcml2LT5uYW1l
LCBuYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19mcmVlKHJlcXVlc3QtPnByaXYtPm5h
bWUpOworICAgIHJlcXVlc3QtPnByaXYtPm5hbWUgPSBnX3N0cmR1cChuYW1lKTsKKyAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1QocmVxdWVzdCksICJuYW1lIik7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3dpbmRvd19mZWF0dXJlczoKKyAqIEByZXF1ZXN0OiBh
ICNXZWJLaXROZXR3b3JrUmVxdWVzdAorICoKKyAqIFJldHVybnMgdGhlICNXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyBkZXNjcmliaW5nIGhvdyB0aGUgbmV3IHdpbmRvdyBzaG91bGQgbG9vay4KKyAq
CisgKiBSZXR1cm4gdmFsdWU6IHRoZSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqLworV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3df
ZmVhdHVyZXMoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOwor
CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPndlYldpbmRvd0ZlYXR1cmVzOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF93aW5kb3dfZmVhdHVyZXM6CisgKiBAcmVx
dWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqIEB3ZWJXaW5kb3dGZWF0dXJlczogYSAj
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqCisgKiBTZXRzIHRoZSAjV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMgZGVzY3JpYmluZyBob3cgdGhlIG5ldyB3aW5kb3cgc2hvdWxkIGxvb2suCisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRX
ZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRv
d0ZlYXR1cmVzKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JF
UVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9XSU5E
T1dfRkVBVFVSRVMod2ViV2luZG93RmVhdHVyZXMpKTsKKworICAgIGdfb2JqZWN0X3VucmVmKHJl
cXVlc3QtPnByaXYtPndlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICBnX29iamVjdF9yZWYod2ViV2lu
ZG93RmVhdHVyZXMpOworICAgIHJlcXVlc3QtPnByaXYtPndlYldpbmRvd0ZlYXR1cmVzID0gd2Vi
V2luZG93RmVhdHVyZXM7CisKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QocmVxdWVzdCks
ICJ3aW5kb3ctZmVhdHVyZXMiKTsKK30KKworfQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlld3JlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3cmVxdWVzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlld3JlcXVlc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdFQktJVF9XRUJfVklF
V19SRVFVRVNUX0gKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1RfSAorCisjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+
CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNUICAgICAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJf
VklFV19SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1Qo
KG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QsIFdlYktpdFdlYlZpZXdSZXF1ZXN0
KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNU
LCBXZWJLaXRXZWJWaWV3UmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9WSUVX
X1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVklF
V19SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
V0VCS0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVklFV19S
RVFVRVNUX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCwgV2ViS2l0V2ViVmlld1JlcXVlc3RDbGFzcykp
CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVxdWVzdCBXZWJLaXRXZWJWaWV3UmVx
dWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVxdWVzdENsYXNzIFdlYktpdFdl
YlZpZXdSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld1JlcXVlc3RQ
cml2YXRlIFdlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJW
aWV3UmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisgICAgV2ViS2l0V2Vi
Vmlld1JlcXVlc3RQcml2YXRlKiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVx
dWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lU
X0FQSSBHVHlwZQord2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3R5cGUodm9pZCk7CisKK1dF
QktJVF9BUEkgV2ViS2l0TmV0d29ya1JlcXVlc3QqCit3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9n
ZXRfbmV0d29ya19yZXF1ZXN0KFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KTsKKworV0VC
S0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lKFdl
YktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2ViX3ZpZXdfcmVxdWVzdF9zZXRfbmFtZShXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwg
Y29uc3QgZ2NoYXIqIG5hbWUpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
Kgord2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJW
aWV3UmVxdWVzdCogcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3
X3JlcXVlc3Rfc2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVz
dCwgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdpbmRvd0ZlYXR1cmVzKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0
dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
d2luZG93ZmVhdHVyZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsYSA8Z25zQGdub21lLm9yZz4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUu
aCIKKworZXh0ZXJuICJDIiB7CisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfWCwK
KyAgICBQUk9QX1ksCisgICAgUFJPUF9XSURUSCwKKyAgICBQUk9QX0hFSUdIVCwKKyAgICBQUk9Q
X1RPT0xCQVJfVklTSUJMRSwKKyAgICBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFLAorICAgIFBST1Bf
U0NST0xMQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9NRU5VQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9M
T0NBVElPTkJBUl9WSVNJQkxFLAorICAgIFBST1BfUkVTSVpBQkxFLAorICAgIFBST1BfRlVMTFND
UkVFTiwKKyAgICBQUk9QX0RJQUxPRworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcywgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXMsIEdfVFlQRV9PQkpFQ1QpCisK
K3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIHsKKyAgICBnaW50IHg7Cisg
ICAgZ2ludCB5OworICAgIGdpbnQgd2lkdGg7CisgICAgZ2ludCBoZWlnaHQ7CisKKyAgICBnYm9v
bGVhbiB0b29sYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gc3RhdHVzYmFyX3Zpc2libGU7Cisg
ICAgZ2Jvb2xlYW4gc2Nyb2xsYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gbWVudWJhcl92aXNp
YmxlOworICAgIGdib29sZWFuIGxvY2F0aW9uYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gcmVz
aXphYmxlOworCisgICAgZ2Jvb2xlYW4gZnVsbHNjcmVlbjsKKyAgICBnYm9vbGVhbiBkaWFsb2c7
Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKG9i
aikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJ
TkRPV19GRUFUVVJFUywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKSkKKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0
KTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93
X2ZlYXR1cmVzX2NsYXNzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyoga2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOworICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfZmluYWxpemU7CisgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RfY2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eTsKKwor
ICAgIEdQYXJhbUZsYWdzIGZsYWdzID0gKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFIHwgR19QQVJBTV9DT05TVFJVQ1QpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUaGUgc3RhcnRpbmcgeCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9u
IHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRoZSBzdGFydGluZyB5IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNj
cmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVj
dF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0lEVEgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJXaWR0aCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSEVJR0hULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkhlaWdodCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVGhlIGhlaWdodCBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisK
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1RPT0xCQVJfVklTSUJMRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xiYXItdmlzaWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vbCBiYXIgdmlzaWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUg
dG9vbCBiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJP
UF9TVEFUVVNCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInN0YXR1c2Jhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJTdGF0dXMgYmFyIHZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHN0YXR1cyBiYXIgc2hvdWxkIGJlIHZpc2libGUg
Zm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TQ1JPTExCQVJfVklTSUJMRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcm9sbGJhci12aXNpYmxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTY3JvbGwgYmFyIHZpc2libGUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhl
IHNjcm9sbCBiYXJzIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfTUVOVUJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAibWVudWJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJNZW51IGJhciB2aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBtZW51IGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3Ig
dGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMb2NhdGlvbiBiYXIgdmlzaWJsZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0
aGUgbG9jYXRpb24gYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfUkVTSVpBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicmVzaXphYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXNp
emFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoZXRoZXIgdGhl
IHdpbmRvdyBzaG91bGQgYmUgcmVzaXphYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRlVMTFNDUkVFTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFu
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bGwtc2NyZWVuIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxs
IGJlIGRpc3BsYXllZCBmdWxsc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRElBTE9HLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlhbG9nIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJEaWFsb2ciLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHNob3VsZCBiZSBhIGRpYWxvZywg
b3IgYSB0b3AgbGV2ZWwgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19pbml0KFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1
cmVzKQoreworICAgIHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXYgPSBXRUJLSVRfV0VCX1dJTkRP
V19GRUFUVVJFU19HRVRfUFJJVkFURSh3ZWJfd2luZG93X2ZlYXR1cmVzKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0
KQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzID0g
V0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlc1ByaXZhdGUqIHByaXYgPSB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2OworCisgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfcGFyZW50X2NsYXNzKS0+
ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3Qg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJF
UyhvYmplY3QpOworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdl
Yl93aW5kb3dfZmVhdHVyZXMtPnByaXY7CisKKyAgICBzd2l0Y2gocHJvcF9pZCkgeworICAgIGNh
c2UgUFJPUF9YOgorICAgICAgICBwcml2LT54ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAg
ICAgICAgZ19vYmplY3Rfbm90aWZ5KG9iamVjdCwgIngiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX1k6CisgICAgICAgIHByaXYtPnkgPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOwor
ICAgICAgICBnX29iamVjdF9ub3RpZnkob2JqZWN0LCAieSIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfV0lEVEg6CisgICAgICAgIHByaXYtPndpZHRoID0gZ192YWx1ZV9nZXRfaW50
KHZhbHVlKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KG9iamVjdCwgIndpZHRoIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IRUlHSFQ6CisgICAgICAgIHByaXYtPmhlaWdodCA9
IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShvYmplY3Qs
ICJoZWlnaHQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJM
RToKKyAgICAgICAgcHJpdi0+dG9vbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2
YWx1ZSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShvYmplY3QsICJ0b29sYmFyLXZpc2libGUi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFOgorICAg
ICAgICBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
OworICAgICAgICBnX29iamVjdF9ub3RpZnkob2JqZWN0LCAic3RhdHVzYmFyLXZpc2libGUiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAg
ICBwcml2LT5zY3JvbGxiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwor
ICAgICAgICBnX29iamVjdF9ub3RpZnkob2JqZWN0LCAic2Nyb2xsYmFyLXZpc2libGUiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01FTlVCQVJfVklTSUJMRToKKyAgICAgICAgcHJp
di0+bWVudWJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAg
IGdfb2JqZWN0X25vdGlmeShvYmplY3QsICJtZW51YmFyLXZpc2libGUiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPmxv
Y2F0aW9uYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAg
Z19vYmplY3Rfbm90aWZ5KG9iamVjdCwgImxvY2F0aW9uYmFyLXZpc2libGUiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX1JFU0laQUJMRToKKyAgICAgICAgcHJpdi0+cmVzaXphYmxl
ID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShv
YmplY3QsICJyZXNpemFibGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExT
Q1JFRU46CisgICAgICAgIHByaXYtPmZ1bGxzY3JlZW4gPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KG9iamVjdCwgImZ1bGxzY3JlZW4iKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RJQUxPRzoKKyAgICAgICAgcHJpdi0+ZGlhbG9n
ID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShv
YmplY3QsICJkaWFsb2ciKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVS
RVMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYgPSB3
ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2OworCisgICAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAg
Y2FzZSBQUk9QX1g6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+eCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQo
dmFsdWUsIHByaXYtPnkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lEVEg6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+d2lkdGgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfSEVJR0hUOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUs
IHByaXYtPmhlaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9UT09MQkFSX1ZJ
U0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnRvb2xiYXJf
dmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TVEFUVVNCQVJfVklTSUJM
RToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+c3RhdHVzYmFyX3Zp
c2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJU0lCTEU6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnNjcm9sbGJhcl92aXNp
YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01FTlVCQVJfVklTSUJMRToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+bWVudWJhcl92aXNpYmxlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEU6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmxvY2F0aW9uYmFyX3Zpc2libGUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUkVTSVpBQkxFOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5yZXNpemFibGUpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfRlVMTFNDUkVFTjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgcHJpdi0+ZnVsbHNjcmVlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9E
SUFMT0c6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmRpYWxvZyk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldzoKKyAq
CisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZSB3aXRo
IGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0byBhIFdl
YlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGlu
c3RhbmNlCisgKiovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIE5VTEwpKTsKK30K
KworLy8gZm9yIGludGVybmFsIHVzZSBvbmx5CitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyhjb25zdCBXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXMgKndlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3
KCk7CisKKyAgICBpZihmZWF0dXJlcy54U2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpF
Q1Qod2ViV2luZG93RmVhdHVyZXMpLCAieCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMueCks
IE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMueVNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInkiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVz
LnkpLCBOVUxMKTsKKworICAgIGlmKGZlYXR1cmVzLndpZHRoU2V0KQorICAgICAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAid2lkdGgiLCBzdGF0aWNfY2FzdDxp
bnQ+KGZlYXR1cmVzLndpZHRoKSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy5oZWlnaHRTZXQp
CisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJoZWln
aHQiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLmhlaWdodCksIE5VTEwpOworCisgICAgZ19v
YmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAg
InRvb2xiYXJfdmlzaWJsZSIsIGZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlLAorICAgICAgICAgICAg
ICAgICAic3RhdHVzYmFyX3Zpc2libGUiLCBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlLAorICAg
ICAgICAgICAgICAgICAic2Nyb2xsYmFyX3Zpc2libGUiLCBmZWF0dXJlcy5zY3JvbGxiYXJzVmlz
aWJsZSwKKyAgICAgICAgICAgICAgICAgIm1lbnViYXJfdmlzaWJsZSIsIGZlYXR1cmVzLm1lbnVC
YXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAibG9jYXRpb25iYXJfdmlzaWJsZSIsIGZlYXR1
cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInJlc2l6YWJsZSIsIGZl
YXR1cmVzLnJlc2l6YWJsZSwKKyAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLCBmZWF0dXJl
cy5mdWxsc2NyZWVuLAorICAgICAgICAgICAgICAgICAiZGlhbG9nIiwgZmVhdHVyZXMuZGlhbG9n
LAorICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIHJldHVybiB3ZWJXaW5kb3dGZWF0dXJl
czsKK30KKworfQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVy
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0
dXJlcy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYg
X19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKyNkZWZpbmUgX19XRUJLSVRfV0VCX1dJ
TkRPV19GRUFUVVJFU19IX18KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VC
S0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUyAgICAgICAgICAgICh3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJF
UyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcykpCisj
ZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVS
RVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VC
X1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
VFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUykpCisjZGVmaW5l
IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXNQcml2YXRlIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7CisgICAgR09iamVjdCBwYXJlbnRfaW5z
dGFuY2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXY7Cit9Owor
CitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MgeworICAgIEdPYmplY3RDbGFz
cyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICov
CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9p
ZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitXRUJLSVRf
QVBJIEdUeXBlCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSh2b2lkKTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJfd2luZG93X2Zl
YXR1cmVzX25ldyh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fV0VCS0lUX1dF
Ql9XSU5ET1dfRkVBVFVSRVNfSF9fICovCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNDEyNykKKysrIFdl
YktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDA4
LTA1LTI1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJVGVzdCBoYW5kbGVycyBmb3IgdGhlIG5l
dyBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3ZXJlIGRvbmUgdG8KKwlDaHJvbWVDbGllbnRHdGssIGFu
ZCBtYXBwZWQgdGhyb3VnaCBXZWJLaXRXZWJWaWV3OyBHdGtMYXVuY2hlcgorCXdpbGwgbmVlZCBz
b21lIHJlZmFjdG9yaW5nIHRvIHJlYWxseSBzdXBwb3J0IHRlc3RpbmcgbXVsdGlwbGUKKwl3aW5k
b3dzLgorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIEd0a0xhdW5jaGVyL21haW4u
YzoKKyAgICAgICAgKHdpbmRvd19nZW9tZXRyeV9jaGFuZ2VfcmVxdWVzdGVkX2NiKToKKyAgICAg
ICAgKG5ld193aW5kb3dfcmVxdWVzdGVkX2NiKToKKyAgICAgICAgKGNyZWF0ZV9icm93c2VyKToK
KwogMjAwOC0wNS0yNCAgQW5kcmVpYSBHYWl0YSAgPHNoYW5hQGlzbmluamEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4KSW5kZXg6IFdlYktpdFRvb2xzL0d0a0xhdW5jaGVy
L21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMJKHJl
dmlzaW9uIDM0MTI3KQorKysgV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dC5oPgogCkBAIC01Niw2ICs1Nyw3NyBAQCB1cGRhdGVfdGl0bGUgKEd0a1dpbmRvdyogd2luZG93
KQogfQogCiBzdGF0aWMgdm9pZAord2luZG93X2dlb21ldHJ5X2NoYW5nZV9yZXF1ZXN0ZWRfY2Ig
KFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlcywgR1BhcmFtU3BlYyogc3BlYywgZ3Bv
aW50ZXIgdXNlcl9kYXRhKQoreworICAgIFdlYktpdFdlYlZpZXcqIHdlYl92aWV3OworICAgIEd0
a1dpbmRvdyogd2luZG93OworICAgIGdpbnQgY3VycmVudF94LCBjdXJyZW50X3k7CisgICAgZ2lu
dCBjdXJyZW50X3dpZHRoLCBjdXJyZW50X2hlaWdodDsKKyAgICBnaW50IHgsIHk7CisgICAgZ2lu
dCB3aWR0aCwgaGVpZ2h0OworCisgICAgd2ViX3ZpZXcgPSAoV2ViS2l0V2ViVmlldyopdXNlcl9k
YXRhOworICAgIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsIChHVEtfV0lER0VUKHdl
Yl92aWV3KSk7CisgICAgaWYoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3RrX3dp
bmRvd19nZXRfcG9zaXRpb24gKHdpbmRvdywgJmN1cnJlbnRfeCwgJmN1cnJlbnRfeSk7CisgICAg
Z3RrX3dpbmRvd19nZXRfc2l6ZSAod2luZG93LCAmY3VycmVudF93aWR0aCwgJmN1cnJlbnRfaGVp
Z2h0KTsKKworICAgIGlmKHN0cmNtcChzcGVjLT5uYW1lLCAieCIpID09IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChmZWF0dXJlcyksICJ4IiwgJngsIE5V
TEwpOworICAgICAgICAgICAgZ3RrX3dpbmRvd19tb3ZlKHdpbmRvdywgeCwgY3VycmVudF95KTsK
KyAgICAgICAgfQorICAgIGlmKHN0cmNtcChzcGVjLT5uYW1lLCAid2lkdGgiKSA9PSAwKQorICAg
ICAgICB7CisgICAgICAgICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QoZmVhdHVyZXMpLCAid2lk
dGgiLCAmd2lkdGgsIE5VTEwpOworICAgICAgICAgICAgZ3RrX3dpbmRvd19yZXNpemUod2luZG93
LCB3aWR0aCwgY3VycmVudF9oZWlnaHQpOworICAgICAgICB9CisgICAgaWYoc3RyY21wKHNwZWMt
Pm5hbWUsICJoZWlnaHQiKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnX29iamVjdF9n
ZXQoR19PQkpFQ1QoZmVhdHVyZXMpLCAiaGVpZ2h0IiwgJmhlaWdodCwgTlVMTCk7CisgICAgICAg
ICAgICBndGtfd2luZG93X3Jlc2l6ZSh3aW5kb3csIGN1cnJlbnRfd2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgIH0KK30KKworc3RhdGljIFdlYktpdFdlYlZpZXcqCituZXdfd2luZG93X3JlcXVlc3Rl
ZF9jYiAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2Vi
S2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2ViS2l0V2ViVmlldyogbmV3X3dl
Yl92aWV3OworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBuZXR3b3JrX3JlcXVlc3QgPSB3ZWJr
aXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfbmV0d29ya19yZXF1ZXN0KHJlcXVlc3QpOworICAgIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X2dldF93aW5kb3dfZmVhdHVyZXMocmVxdWVzdCk7CisgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBn
dGtfZGlhbG9nX25ldygpOworCisgICAgZ2ludCB3aWR0aCwgaGVpZ2h0OworCisgICAgZ19vYmpl
Y3RfZ2V0KEdfT0JKRUNUKGZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgIndpZHRoIiwgJndp
ZHRoLAorICAgICAgICAgICAgICAgICAiaGVpZ2h0IiwgJmhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgTlVMTCk7CisgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlh
bG9nKSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBuZXdfd2ViX3ZpZXcgPSBXRUJLSVRfV0VCX1ZJ
RVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICAKKyAgICBpZihuZXR3b3JrX3JlcXVlc3Qp
CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKG5ld193ZWJfdmlldywgd2Via2l0X25ldHdv
cmtfcmVxdWVzdF9nZXRfdXJpKG5ldHdvcmtfcmVxdWVzdCkpOworCisgICAgaWYoZmVhdHVyZXMp
CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzKG5ld193ZWJfdmll
dywgZmVhdHVyZXMpOworCisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0X2RlZmF1bHRzKEdUS19CT1go
R1RLX0RJQUxPRyhkaWFsb2cpLT52Ym94KSwgR1RLX1dJREdFVChuZXdfd2ViX3ZpZXcpKTsKKwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QoZGlhbG9nKSwgImRlbGV0ZS1ldmVudCIsCisg
ICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGd0a193aWRnZXRfZGVzdHJveSksIE5VTEwp
OworCisgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QoZmVhdHVyZXMpLCAibm90aWZ5Ojp4
IiwgR19DQUxMQkFDSyh3aW5kb3dfZ2VvbWV0cnlfY2hhbmdlX3JlcXVlc3RlZF9jYiksIG5ld193
ZWJfdmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QoZmVhdHVyZXMpLCAibm90
aWZ5Ojp3aWR0aCIsIEdfQ0FMTEJBQ0sod2luZG93X2dlb21ldHJ5X2NoYW5nZV9yZXF1ZXN0ZWRf
Y2IpLCBuZXdfd2ViX3ZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUKGZlYXR1
cmVzKSwgIm5vdGlmeTo6aGVpZ2h0IiwgR19DQUxMQkFDSyh3aW5kb3dfZ2VvbWV0cnlfY2hhbmdl
X3JlcXVlc3RlZF9jYiksIG5ld193ZWJfdmlldyk7CisKKyAgICByZXR1cm4gbmV3X3dlYl92aWV3
OworfQorCitzdGF0aWMgdm9pZAogbGlua19ob3Zlcl9jYiAoV2ViS2l0V2ViVmlldyogcGFnZSwg
Y29uc3QgZ2NoYXIqIHRpdGxlLCBjb25zdCBnY2hhciogbGluaywgZ3BvaW50ZXIgZGF0YSkKIHsK
ICAgICAvKiB1bmRlcmZsb3cgaXMgYWxsb3dlZCAqLwpAQCAtMTE5LDYgKzE5MSw3IEBAIGNyZWF0
ZV9icm93c2VyICgpCiAgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3KSwg
ImxvYWQtcHJvZ3Jlc3MtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKHByb2dyZXNzX2NoYW5nZV9jYiks
IHdlYl92aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAi
bG9hZC1jb21taXR0ZWQiLCBHX0NBTExCQUNLIChsb2FkX2NvbW1pdF9jYiksIHdlYl92aWV3KTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAiaG92ZXJpbmctb3Zl
ci1saW5rIiwgR19DQUxMQkFDSyAobGlua19ob3Zlcl9jYiksIHdlYl92aWV3KTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAiY3JlYXRlLXdlYi12aWV3IiwgR19D
QUxMQkFDSyAobmV3X3dpbmRvd19yZXF1ZXN0ZWRfY2IpLCB3ZWJfdmlldyk7CiAKICAgICByZXR1
cm4gc2Nyb2xsZWRfd2luZG93OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21357</attachid>
            <date>2008-05-26 18:05:25 -0700</date>
            <delta_ts>2008-05-27 16:08:53 -0700</delta_ts>
            <desc>merged patch reworked after comments</desc>
            <filename>new-window-stuff.diff</filename>
            <type>text/plain</type>
            <size>59766</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0MTQy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMDUt
MjYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlBZGRlZCB0aGUgbmV3IFdlYktpdEd0ayBmaWxl
cyB0byBiZSBidWlsdDoKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJl
cy57Y3BwLGh9LAorCXdlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcCBhbmQgd2Via2l0d2Vidmlld3Jl
cXVlc3QuaAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDUtMjUgIEphbiBN
aWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWxwIFRva2VyLgpJbmRleDogR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDM0MTI3KQorKysgR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5OCw2ICsyOTgsOCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAor
CVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAorCVdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAogCiB3ZWJraXRndGtfYnVpbHRfc291cmNlcyArPSBcCkBAIC0zMjEsNiAr
MzIzLDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCisJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcCBcCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMzQxNDIpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDA4LTA1LTI2ICBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMw
CisJQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cgYW5kIGZyaWVuZHMgbmVlZCB0byBiZSBpbXBs
ZW1lbnRlZAorCQorCUNvZGUgZnJvbSBHdXN0YXZvIE5vcm9uaGEgYW5kIE1hcmNvIEJhcmlzaW9u
ZQorCTxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPiBpbiB0aGlzIGNoYW5nZSBzZXQu
CisKKwlJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRlcmZhY2VzIG5lZWRlZCB0
byBoYXZlIG5ldworCXdpbmRvdyBjcmVhdGlvbiBmdW5jdGlvbmluZyBhbmQgZXhwb3NlZCB0byBj
bGllbnQgY29kZS4gV2UKKwlpbXBsZW1lbnRlZCBhIG1pcnJvciBHT2JqZWN0IHRvIHRoZSBXaW5k
b3dGZWF0dXJlcyBvYmplY3QgcHJvdmlkZWQKKwlieSBXZWJDb3JlLiBBIG1pcnJvciBmb3IgRnJh
bWVMb2FkZXJSZXF1ZXN0IHdhcyBhbHNvIGNyZWF0ZWQ6CisJV2ViS2l0V2ViVmlld1JlcXVlc3Qu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNW
aXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50OjpzZXRSZXNpemFibGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXQt
bWFyc2hhbC5saXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjopOgorICAgICAg
ICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
Z2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6Ondl
YmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2Vi
Vmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9pbml0KToKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25ldHdvcmtfcmVxdWVz
dCk6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3Zp
ZXdfcmVxdWVzdF9zZXRfbmV0d29ya19yZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3
UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lKToKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X3NldF9uYW1lKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3dfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktp
dFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3dpbmRv
d19mZWF0dXJlcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVk
LgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6
OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19n
ZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2Nv
cmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4KKwogMjAwOC0wNS0yNSAgQWxwIFRva2VyICA8
YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrby4KSW5kZXg6IFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDM0
MTI3KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IENo
cmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIwLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKQEAgLTI3LDYgKzI5LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCkBA
IC02MSw5ICs2NCwzMiBAQCBGbG9hdFJlY3QgQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAg
ICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlm
ICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgaWYg
KHdpbmRvdykgeworICAgICAgICBJbnRSZWN0IGludHJlY3QgPSBJbnRSZWN0KHJlY3QpOworICAg
ICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgICAgIGdfb2Jq
ZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAgICAg
ICAieCIsIGludHJlY3QueCgpLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICAg
ICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICJ5IiwgaW50cmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
KworICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgIndpZHRoIiwgaW50cmVjdC53aWR0aCgpLAorICAgICAgICAgICAg
ICAgICAgICAgTlVMTCk7CisKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiLCBpbnRyZWN0LmhlaWdo
dCgpLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgfQogfQogCiBGbG9hdFJlY3Qg
Q2hyb21lQ2xpZW50OjpwYWdlUmVjdCgpCkBAIC05NiwyNSArMTIyLDQxIEBAIHZvaWQgQ2hyb21l
Q2xpZW50Ojp1bmZvY3VzKCkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RLX1dJTkRP
Vyh3aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgY29yZUZlYXR1cmVzKQogewotICAgIGlmIChmZWF0dXJlcy5kaWFsb2cpIHsKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogbmV0d29ya1Jl
cXVlc3QgPSAwOworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5KCkpCisgICAgICAg
IG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcoZnJhbWVMb2FkUmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29yZUZlYXR1cmVzKTsK
KworICAgIGdwb2ludGVyIHdlYlZpZXdSZXF1ZXN0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9WSUVXX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm5hbWUiLCBmcmFtZUxvYWRSZXF1ZXN0LmZyYW1lTmFtZSgpLnV0ZjgoKS5kYXRhKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldHdvcmstcmVx
dWVzdCIsIG5ldHdvcmtSZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ3aW5kb3ctZmVhdHVyZXMiLCB3ZWJXaW5kb3dGZWF0dXJlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSAwOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcs
ICJjcmVhdGUtd2ViLXZpZXciLCBraXQoZnJhbWUpLCB3ZWJWaWV3UmVxdWVzdCwgJndlYlZpZXcp
OworCisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qod2ViVmlld1JlcXVlc3QpKTsKKyAgICBn
X29iamVjdF91bnJlZihHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcykpOworICAgIGlmIChuZXR3
b3JrUmVxdWVzdCkKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1QobmV0d29ya1JlcXVl
c3QpKTsKKworICAgIGlmICghd2ViVmlldykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLyogVE9ETzogRnJhbWVMb2FkUmVxdWVzdCBpcyBub3QgdXNlZCAqLwotICAg
ICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9DTEFTUyht
X3dlYlZpZXcpLT5jcmVhdGVfd2ViX3ZpZXcobV93ZWJWaWV3KTsKLSAgICAgICAgaWYgKCF3ZWJW
aWV3KQotICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXZhdGVEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwot
ICAgICAgICByZXR1cm4gcHJpdmF0ZURhdGEtPmNvcmVQYWdlOwotICAgIH0KKyAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUo
d2ViVmlldyk7CisgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKIH0KIAogdm9pZCBD
aHJvbWVDbGllbnQ6OnNob3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFt
X3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdF93ZWJfdmlld19zaG93KG1f
d2ViVmlldyk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkBAIC0xMjgs
NTIgKzE3MCwxMDEgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJv
b2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAg
Z19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRvb2xiYXItdmlzaWJs
ZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNp
YmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5k
b3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19v
YmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRvb2xiYXItdmlzaWJsZSIs
ICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVD
bGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRT
dGF0dXNiYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRv
d19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldp
bmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAK
IGJvb2wgQ2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0Zl
YXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsK
KyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldp
bmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAg
IHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zp
c2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZShib29s
IHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRv
d0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3
KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzY3Jv
bGxiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6
c2Nyb2xsYmFyc1Zpc2libGUoKSB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJf
dmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJs
ZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzY3Jv
bGxiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0K
IAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKGJvb2wpCit2b2lkIENocm9t
ZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmll
d19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19P
QkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAibWVudWJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVM
TCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJX
aW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2Vi
Vmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVD
VCh3ZWJXaW5kb3dGZWF0dXJlcyksICJtZW51YmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7
CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRSZXNpemFi
bGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUoYm9vbCByZXNpemFibGUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVz
ID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAg
IGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJyZXNpemFibGUiLCBy
ZXNpemFibGUsIE5VTEwpOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29u
KCkKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCShyZXZpc2lvbiAzNDEyNykKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNp
bmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2Vidmlld3JlcXVlc3Qu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUu
aCIKIApAQCAtMjU5LDcgKzI2MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG8KICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBJIHRoaW5rIFF0IHZlcnNp
b24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3aGVuIHdlCiAgICAgLy8gaGF2
ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVlZCB0byBkbyB0aGUgc2FtZQot
ICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25v
cmUpOworICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lVc2UpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKQEAgLTU2Miw3ICs1NjMsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZpcnN0CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hv
dygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyh3
ZWJWaWV3KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2so
KQpAQCAtNzI5LDggKzczMSwxNyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBh
Z2UoKSBjCiAKIEZyYW1lKiBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdwb2ludGVyIHdl
YlZpZXdSZXF1ZXN0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1Qs
IE5VTEwpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOworICAgIFdlYktpdFdlYlZpZXcqIG5ld1dlYlZpZXcgPSAwOworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwgd2ViVmll
d1JlcXVlc3QsICZuZXdXZWJWaWV3KTsKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVDVCh3ZWJW
aWV3UmVxdWVzdCkpOworCisgICAgaWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURShuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gY29yZShwcml2YXRlRGF0YS0+
bWFpbkZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVU
b0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikKSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LW1hcnNoYWwubGlzdAkocmV2aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsMTAgQEAg
Vk9JRDpPQkpFQ1QsQk9PTEVBTgogVk9JRDpPQkpFQ1QsU1RSSU5HCiBWT0lEOk9CSkVDVCxPQkpF
Q1QKIFZPSUQ6T0JKRUNULFBPSU5URVIsUE9JTlRFUgorQk9PTEVBTjpWT0lECiBCT09MRUFOOlNU
UklORyxJTlQsU1RSSU5HCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNU
UklORyxCT09MRUFOCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcsU1RSSU5HLFNUUklORwogSU5UOk9C
SkVDVCxPQkpFQ1QKK09CSkVDVDpPQkpFQ1QsT0JKRUNUCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkocmV2
aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVz
dC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dm
ZWF0dXJlcy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRl
bS5oPgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAkocmV2aXNpb24gMzQxMjcpCisr
KyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDYgKzU1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xhc3MgV2ViSwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
V2ViS2l0V2ViVmlld0NsYXNzOwogCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCShy
ZXZpc2lvbiAzNDEyNykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2
aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRv
d2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5o
PgogCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5o
PgogCkBAIC02Nyw2ICs2OSw3IEBAIGV4dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2Vi
Vmlld1ByaXZhdGUgewogICAgICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAg
V2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1h
aW5GcmFtZTsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudDsKQEAgLTEwOCw2ICsxMTEsOSBAQCBleHRlcm4gIkMiIHsKICAgICBXZWJLaXRXZWJIaXN0
b3J5SXRlbSoKICAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0o
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAorICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3ZpZXdf
c2hvdyAoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CisKICAgICAvLyBGSVhNRTogTW92ZSB0aGVz
ZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4K
IAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpAQCAtMTIxLDYgKzEyNywxMiBAQCBleHRlcm4gIkMi
IHsKIAogICAgIFdFQktJVF9BUEkgZ2NoYXIqCiAgICAgd2Via2l0X3dlYl92aWV3X2dldF9zZWxl
Y3RlZF90ZXh0IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisKKyAgICBXRUJLSVRfQVBJIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKgorICAgIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25l
d19mcm9tX2NvcmVfZmVhdHVyZXMgKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiBmZWF0
dXJlcyk7CisKKyAgICBXRUJLSVRfQVBJIGdib29sZWFuCisgICAgd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfZXF1YWwoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMSwgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMik7CiB9CiAKICNlbmRpZgpJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDM0MTI3KQorKysgV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDggSmFuIEFsb256byA8am1hbG9uem9AdW5wbHVnZ2FibGUuY29tPgorICogIENvcHly
aWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTY5LDYgKzcw
LDggQEAgZXh0ZXJuICJDIiB7CiBlbnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAg
IE5BVklHQVRJT05fUkVRVUVTVEVELAorICAgIENSRUFURV9XRUJfVklFVywKKyAgICBTSE9XX1dF
Ql9WSUVXLAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwKICAgICBMT0FEX1NUQVJURUQsCiAg
ICAgTE9BRF9DT01NSVRURUQsCkBAIC05OCw2ICsxMDEsNyBAQCBlbnVtIHsKICAgICBQUk9QX1BB
U1RFX1RBUkdFVF9MSVNULAogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9TRVRUSU5HUywK
KyAgICBQUk9QX1dJTkRPV19GRUFUVVJFUywKICAgICBQUk9QX1RSQU5TUEFSRU5UCiB9OwogCkBA
IC0yMzEsNiArMjM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9wcm9wZXJ0
eQogICAgIGNhc2UgUFJPUF9TRVRUSU5HUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZh
bHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRf
b2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3
KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVu
dCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjUwLDYgKzI1Nyw5IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJvcGVydHkKICAgICBjYXNlIFBST1BfU0VUVElOR1M6
CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3Mod2ViVmlldywgV0VCS0lUX1dF
Ql9TRVRUSU5HUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9XSU5ET1dfRkVBVFVSRVM6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19z
ZXRfd2luZG93X2ZlYXR1cmVzKHdlYlZpZXcsIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdf
dmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X1RSQU5TUEFSRU5UOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3RyYW5zcGFyZW50KHdl
YlZpZXcsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC01
NDQsMTIgKzU1NCwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2Zv
CiAgICAgICAgICgqY2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0RhdGEpOwogfQogCi1zdGF0
aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdl
YktpdFdlYlZpZXcqKQorc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFs
X2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViVmlld1JlcXVlc3QqKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG93X3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQor
eworICAgIHJldHVybiBGQUxTRTsKK30KKwogc3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25z
ZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTcwNyw2ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfZmluYWxpemUoR09iCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPnZlcnRp
Y2FsQWRqdXN0bWVudCk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFja0ZvcndhcmRMaXN0
KTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CisgICAgZ19vYmplY3Rf
dW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
Pm1haW5GcmFtZSk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsKICAgICBn
dGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90YXJnZXRfbGlzdCk7CkBAIC03MTYsNiAr
NzMxLDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2IKICAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVz
dF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNj
dSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKK3sKKyAgZ2Jv
b2xlYW4gY29udGludWVFbWlzc2lvbiA9IFRSVUU7CisgIGdwb2ludGVyIG5ld1dlYlZpZXcgPSBn
X3ZhbHVlX2dldF9vYmplY3QoaGFuZGxlclJldHVybik7CisgIGdfdmFsdWVfc2V0X29iamVjdChy
ZXR1cm5BY2N1LCBuZXdXZWJWaWV3KTsKKworICBpZiAobmV3V2ViVmlldykKKyAgICAgIGNvbnRp
bnVlRW1pc3Npb24gPSBGQUxTRTsKKworICByZXR1cm4gY29udGludWVFbWlzc2lvbjsKK30KKwog
c3RhdGljIGdib29sZWFuIHdlYmtpdF9uYXZpZ2F0aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFs
SW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSog
aGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVtbXkpCiB7CiAgIGdib29sZWFuIGNvbnRpbnVlRW1p
c3Npb24gPSBUUlVFOwpAQCAtNzU4LDYgKzc4NSw1OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdChXCiAgICAgICogU2lnbmFscwogICAgICAqLwogCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzo6Y3JlYXRlLXdlYi12aWV3OgorICAgICAqIEB3ZWJfdmlldzog
dGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6
IHRoZSAjV2ViS2l0V2ViRnJhbWUKKyAgICAgKiBAd2ViX3ZpZXdfcmVxdWVzdDogYSAjV2ViS2l0
V2ViVmlld1JlcXVlc3QKKyAgICAgKiBAcmV0dXJuOiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0
V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjcmVhdGlv
biBvZiBhIG5ldyB3aW5kb3cgaXMgcmVxdWVzdGVkLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlz
IGhhbmRsZWQgdGhlIHNpZ25hbCBoYW5kbGVyIHNob3VsZCByZXR1cm4gdGhlCisgICAgICogbmV3
bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldy4gVGhlIG5ldyAjV2ViS2l0V2ViVmlldyBzaG91bGQg
bm90IGJlCisgICAgICogZGlzcGxheWVkIHRvIHRoZSB1c2VyIHVudGlsIHRoZSAic2hvdy13ZWIt
dmlldyIgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAgICoKKyAgICAgKiBUaGUgc2lnbmFsIGhhbmRs
ZXJzIHNob3VsZCBub3QgdHJ5IHRvIGRlYWwgd2l0aCB0aGUgcmVmZXJlbmNlCisgICAgICogY291
bnQgZm9yIHRoZSBuZXcgI1dlYktpdFdlYlZpZXcuIFRoZSB3aWRnZXQgdG8gd2hpY2ggdGhlCisg
ICAgICogd2lkZ2V0IGlzIGFkZGVkIHdpbGwgaGFuZGxlIHRoYXQuCisgICAgICoKKyAgICAgKiBA
d2ViX3ZpZXdfcmVxdWVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3ICNXZWJL
aXRXZWJWaWV3LAorICAgICAqIGJ1dCBub3RlIHRoYXQgeW91IGNhbiBmcmVlbHkgaWdub3JlIGFu
eSBwYXJ0aWN1bGFyIHJlcXVlc3QgbGlrZSB0aGUKKyAgICAgKiBzaXplIG9mIHRoZSBuZXcgd2lu
ZG93IG9yIHdoYXQgYmFycyBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoZSBuZXcKKyAgICAgKiB3
aW5kb3cuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ1JFQVRFX1dFQl9W
SUVXXSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShH
X1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRlX3dlYl92aWV3KSwKKyAgICAgICAg
ICAgIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAg
TlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNUX09CSkVDVCwK
KyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsIDIsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9X
RUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNUKTsKKwor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNob3ctd2ViLXZpZXc6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAq
IEByZXR1cm46ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2Vk
IGZvciB0aGUgZXZlbnQsICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIKKyAg
ICAgKgorICAgICAqIEVtaXR0ZWQgYWZ0ZXIgImNyZWF0ZS13ZWItdmlldyIgd2hlbiB0aGUgbmV3
ICNXZWJLaXRXZWJWaWV3IHNob3VsZAorICAgICAqIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4K
KyAgICAgKgorICAgICAqIElmIHRoZXJlIGlzbid0IGFueSBoYW5kbGVyIGZvciB0aGlzIHNpZ25h
bCBvciBpZiB0aGV5IHJldHVybiAlRkFMU0UsCisgICAgICogdGhlbiB0aGUgZGVmYXVsdCBhY3Rp
b24gaXMgdG8gY2FsbCBndGtfd2lkZ2V0X3Nob3dfYWxsKCkgb24gdGhlCisgICAgICogdG9wbGV2
ZWwgd2luZG93IGNvbnRhaW5pbmcgQHdlYl92aWV3LgorICAgICAqLworICAgIHdlYmtpdF93ZWJf
dmlld19zaWduYWxzW1NIT1dfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3KCJzaG93LXdlYi12aWV3
IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCksCisgICAgICAgICAgICBHX1NU
UlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgc2hvd193ZWJfdmlldyksCisgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxM
LAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAg
IFdFQktJVF9UWVBFX1dFQl9WSUVXLCAwKTsKKwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxz
W05BVklHQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmF2aWdhdGlvbi1yZXF1ZXN0
ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAg
ICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9O
KSwKQEAgLTEwODUsNiArMTE2NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFcKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAg
ICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNzLT5zaG93X3dlYl92aWV3ID0g
d2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5h
dmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1
ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRf
d2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5j
aG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTE4NCw2
ICsxMjY1LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1RZUEVfV0VCX1NFVFRJTkdTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1dJTkRPV19G
RUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19vYmplY3QoIndpbmRvdy1mZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaW5kb3cgRmVhdHVyZXMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW4gYXNzb2Np
YXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9X
SU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKwogICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfRURJVEFCTEUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZWRp
dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkVkaXRhYmxlIiwKQEAgLTEzODMsNiArMTQ3MSw4IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19pbml0KFdlYktpdFcKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3Nl
dHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1j
aGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxM
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19D
QUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAg
ICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25l
dygpOwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTEzOTIs
NiArMTQ4MiwyMCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAgICBy
ZXR1cm4gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIH0KIAordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2hv
dyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IEZBTFNF
OworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0hP
V19XRUJfVklFV10sIDAsICZpc0hhbmRsZWQpOworICAgIGlmIChpc0hhbmRsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHRvcGxl
dmVsKTsKK30KKworCiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQogewogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKQEAgLTE0MTUsNiAr
MTUxOSw0NyBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl92aWV3X2dldF9zCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2luZG93X2ZlYXR1cmVzOiBhICNXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcworICoKKyAqIFRoaXMgd2lsbCBzZXQgdGhlIGZlYXR1cmVzIHRoZSB3aW5kb3cg
Y29udGFpbmluZyB0aGUgI1dlYktpdFdlYlZpZXcKKyAqIHNob3VsZCBzZXQgZm9yIGl0c2VsZi4g
V2ViS2l0IHdpbCBub3QgdHJ5IHRvIGFwcGx5IGFueSBjaGFuZ2VzCisgKiBpdHNlbGYuCisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfV0lORE9XX0ZFQVRVUkVTKHdlYldpbmRvd0Zl
YXR1cmVzKSk7CisgICAgCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
LT5wcml2OworCisgICAgaWYod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwocHJpdi0+
d2ViV2luZG93RmVhdHVyZXMsIHdlYldpbmRvd0ZlYXR1cmVzKSkKKyAgICAgIHJldHVybjsKKwor
ICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICBnX29iamVj
dF9yZWYod2ViV2luZG93RmVhdHVyZXMpOworICAgIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzID0g
d2ViV2luZG93RmVhdHVyZXM7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF93aW5k
b3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogUmV0dXJu
cyB0aGUgaW5zdGFuY2Ugb2YgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGhlbGQgYnkgdGhlIGdp
dmVuCisgKiAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSAjV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMKKyAqLworV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93
ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxM
KTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAg
ICByZXR1cm4gcHJpdi0+d2ViV2luZG93RmVhdHVyZXM7Cit9CisKKy8qKgogICogd2Via2l0X3dl
Yl92aWV3X3NldF9tYWludGFpbnNfYmFja19mb3J3YXJkX2xpc3Q6CiAgKiBAd2ViVmlldzogYSAj
V2ViS2l0V2ViVmlldwogICogQGZsYWc6IHRvIHRlbGwgdGhlIHZpZXcgdG8gbWFpbnRhaW4gYSBi
YWNrIG9yIGZvcndhcmQgbGlzdApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAkocmV2
aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFj
a2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmg+
CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYnZpZXdyZXF1ZXN0Lmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNjMsMTEgKzY0
LDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgLyoKICAgICAgKiBkZWZh
dWx0IGhhbmRsZXIvdmlydHVhbCBtZXRob2RzCi0gICAgICogRElTQ1VTUzogY3JlYXRlX3dlYl92
aWV3IG5lZWRzIGEgcmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2UgdGhpcyBhIHNpZ25hbCB3aXRo
IGRlZmF1bHQgaGFuZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJlcXVpcmUgc29tZW9uZSBkb2lu
ZyBhIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAgICAqIFdlYlVJRGVsZWdhdGUg
aGFzIG5vdGhpbmcgZm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5RGVsZWdhdGUgYXMgd2VsbC4u
LgogICAgICAqLwotICAgIFdlYktpdFdlYlZpZXcqICAoKmNyZWF0ZV93ZWJfdmlldykgIChXZWJL
aXRXZWJWaWV3KiB3ZWJfdmlldyk7CisgICAgV2ViS2l0V2ViVmlldyogKCpjcmVhdGVfd2ViX3Zp
ZXcpIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVl
c3QpOworICAgIGdib29sZWFuICgqc2hvd193ZWJfdmlldykgKFdlYktpdFdlYlZpZXcqIHdlYl92
aWV3KTsKIAogICAgIC8qCiAgICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlr
ZSBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKQEAgLTIwNSw2ICsy
MDQsMTIgQEAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAoV2ViS2l0V2ViVgogV0VCS0lU
X0FQSSBXZWJLaXRXZWJTZXR0aW5ncyoKIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MgKFdl
YktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3dpbmRvd19mZWF0dXJlcyAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKiB3aW5kb3dfZmVhdHVyZXMpOworCitXRUJLSVRfQVBJIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMgKFdl
YktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKwogV0VCS0lUX09CU09MRVRFX0FQSSBnYm9vbGVhbgog
d2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrd2FyZCAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcp
OwogCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3
ZWJ2aWV3cmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKworZXh0ZXJuICJD
IiB7CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlIHsKKyAgICBXZWJLaXRO
ZXR3b3JrUmVxdWVzdCogbmV0d29ya1JlcXVlc3Q7CisgICAgZ2NoYXIqIG5hbWU7CisgICAgV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzOworfTsKKworI2RlZmluZSBX
RUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9HRVRfUFJJVkFURShvYmopKEdfVFlQRV9JTlNUQU5DRV9H
RVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCwgV2ViS2l0V2Vi
Vmlld1JlcXVlc3RQcml2YXRlKSkKKworZW51bSAgeworICAgIFBST1BfMCwKKworICAgIFBST1Bf
TkVUV09SS19SRVFVRVNULAorICAgIFBST1BfTkFNRSwKKyAgICBQUk9QX1dJTkRPV19GRUFUVVJF
UworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3UmVxdWVzdCwgd2Via2l0X3dlYl92
aWV3X3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19yZXF1ZXN0X3NldF9uZXR3b3JrX3JlcXVlc3QoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVl
c3QsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdCk7CisKKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7Cisg
ICAgV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVT
VChvYmplY3QpOworCisgICAgc3dpdGNoKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfTkVU
V09SS19SRVFVRVNUOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93
ZWJfdmlld19yZXF1ZXN0X2dldF9uZXR3b3JrX3JlcXVlc3QocmVxdWVzdCkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfTkFNRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZh
bHVlLCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfbmFtZShyZXF1ZXN0KSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9XSU5ET1dfRkVBVFVSRVM6CisgICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3dpbmRvd19mZWF0
dXJlcyhyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVj
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfcmVxdWVzdF9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlk
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRX
ZWJWaWV3UmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9XRUJfVklFV19SRVFVRVNUKG9iamVjdCk7
CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9ORVRXT1JLX1JFUVVF
U1Q6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9uZXR3b3JrX3JlcXVlc3Qo
cmVxdWVzdCwgc3RhdGljX2Nhc3Q8V2ViS2l0TmV0d29ya1JlcXVlc3QqPihnX3ZhbHVlX2dldF9v
YmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9OQU1FOgorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfbmFtZShyZXF1ZXN0LCBnX3ZhbHVlX2dl
dF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19G
RUFUVVJFUzoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3dpbmRvd19mZWF0
dXJlcyhyZXF1ZXN0LCBzdGF0aWNfY2FzdDxXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyo+KGdfdmFs
dWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJ
ZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2luaXQoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgcmVxdWVzdC0+cHJpdiA9IFdFQktJVF9XRUJfVklFV19SRVFVRVNUX0dFVF9QUklWQVRF
KHJlcXVlc3QpOworCisgICAgV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVx
dWVzdC0+cHJpdjsKKyAgICBwcml2LT5uYW1lID0gZ19zdHJkdXAoIiIpOworICAgIHByaXYtPndl
YldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2ZpbmFsaXplKEdPYmplY3QqIG9i
aikKK3sKKyAgICBXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9XRUJfVklF
V19SRVFVRVNUKG9iaik7CisgICAgV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlKiBwcml2ID0g
cmVxdWVzdC0+cHJpdjsKKworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCkK
KyAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bmV0d29ya1JlcXVlc3QpOworCisgICAgaWYg
KHJlcXVlc3QtPnByaXYtPndlYldpbmRvd0ZlYXR1cmVzKQorICAgICAgICBnX29iamVjdF91bnJl
Zihwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyk7CisKKyAgICBnX2ZyZWUocHJpdi0+bmFtZSk7CisK
KyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmopOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVz
dF9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sK
KyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENs
YXNzKTsKKworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3ZpZXdf
cmVxdWVzdF9nZXRfcHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdl
YmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+ZGlz
cG9zZSA9IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2ZpbmFsaXplOworCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9ORVRXT1JLX1JFUVVFU1Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0
KCJuZXR3b3JrLXJlcXVlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTmV0d29yayByZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuZXR3b3JrIHJlcXVl
c3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncykoV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX05BTUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJuYW1lIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ik5ldyB3aW5kb3cgbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJUaGUgbmFtZSBvZiB0aGUgbmV3IHdpbmRvdyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KG9iamVjdENsYXNzLCBQUk9QX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoIndpbmRvdy1mZWF0dXJlcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJXaW5kb3cgZmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSG93IHRoZSBuZXcgd2luZG93IHNob3VsZCBsb29rIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwor
CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktp
dFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZSkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19y
ZXF1ZXN0X2dldF9uZXR3b3JrX3JlcXVlc3Q6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29y
a1JlcXVlc3QKKyAqCisgKiBSZXR1cm5zIHRoZSAjV2ViS2l0TmV0d29ya1JlcXVlc3QgZm9yIHRo
ZSBwYWdlIHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUKKyAqIG5ldyAjV2ViS2l0V2ViVmlldyBv
ciAlTlVMTCBpZiB0aGUgbmF2aWdhdGlvbiB3aWxsIGhhcHBlbiBpbiBhIGxhdGVyIHN0YWdlLgor
ICoKKyAqIFJldHVybiB2YWx1ZTogdGhlICNXZWJLaXROZXR3b3JrUmVxdWVzdCBvciBOVUxMCisg
Ki8KK1dlYktpdE5ldHdvcmtSZXF1ZXN0KiB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfbmV0
d29ya19yZXF1ZXN0KFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpLCBOVUxM
KTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdDsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25ldHdvcmtfcmVxdWVzdChXZWJL
aXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmtS
ZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JFUVVF
U1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoIW5ldHdvcmtSZXF1ZXN0IHx8IFdF
QktJVF9JU19ORVRXT1JLX1JFUVVFU1QobmV0d29ya1JlcXVlc3QpKTsKKworICAgIGlmIChyZXF1
ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCA9PSBuZXR3b3JrUmVxdWVzdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKHJlcXVlc3QtPnByaXYtPm5ldHdvcmtSZXF1ZXN0KQorICAgICAgICBn
X29iamVjdF91bnJlZihyZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCk7CisgICAgcmVxdWVz
dC0+cHJpdi0+bmV0d29ya1JlcXVlc3QgPSBuZXR3b3JrUmVxdWVzdDsKKyAgICBnX29iamVjdF9y
ZWYocmVxdWVzdC0+cHJpdi0+bmV0d29ya1JlcXVlc3QpOworICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChyZXF1ZXN0KSwgIm5ldHdvcmstcmVxdWVzdCIpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdv
cmtSZXF1ZXN0CisgKgorICogUmV0dXJucyB0aGUgbmFtZSBmb3IgdGhlIG5ldyB3ZWIgdmlldy4K
KyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBuYW1lIG9mIHRoZSBuZXcgd2ViIHZpZXcKKyAqLwor
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lKFdlYktpdFdlYlZp
ZXdSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiByZXF1ZXN0
LT5wcml2LT5uYW1lOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9u
YW1lOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgKiBAbmFtZTogdGhl
IHdlYiB2aWV3IG5hbWUKKyAqCisgKiBTZXRzIHRoZSBuYW1lIGZvciB0aGUgbmV3ICNXZWJLaXRX
ZWJWaWV3LgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9uYW1lKFdlYktp
dFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogbmFtZSkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKG5hbWUpOworCisgICAgaWYgKCFzdHJjbXAocmVxdWVzdC0+cHJpdi0+
bmFtZSwgbmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGdfZnJlZShyZXF1ZXN0LT5wcml2
LT5uYW1lKTsKKyAgICByZXF1ZXN0LT5wcml2LT5uYW1lID0gZ19zdHJkdXAobmFtZSk7CisgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHJlcXVlc3QpLCAibmFtZSIpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3dfZmVhdHVyZXM6CisgKiBAcmVxdWVz
dDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqCisgKiBSZXR1cm5zIHRoZSAjV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMgZGVzY3JpYmluZyBob3cgdGhlIG5ldyB3aW5kb3cgc2hvdWxkIGxvb2su
CisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzCisgKi8K
K1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfd2lu
ZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpLCBOVUxM
KTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT53ZWJXaW5kb3dGZWF0dXJlczsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1cmVzOgorICog
QHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgKiBAd2ViV2luZG93RmVhdHVyZXM6
IGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzCisgKgorICogU2V0cyB0aGUgI1dlYktpdFdlYldp
bmRvd0ZlYXR1cmVzIGRlc2NyaWJpbmcgaG93IHRoZSBuZXcgd2luZG93IHNob3VsZCBsb29rLgor
ICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF93aW5kb3dfZmVhdHVyZXMoV2Vi
S2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJX
aW5kb3dGZWF0dXJlcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
V19SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
V0lORE9XX0ZFQVRVUkVTKHdlYldpbmRvd0ZlYXR1cmVzKSk7CisKKyAgICBpZih3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlc19lcXVhbChyZXF1ZXN0LT5wcml2LT53ZWJXaW5kb3dGZWF0dXJlcywg
d2ViV2luZG93RmVhdHVyZXMpKQorICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3RfdW5yZWYo
cmVxdWVzdC0+cHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X3JlZih3ZWJX
aW5kb3dGZWF0dXJlcyk7CisgICAgcmVxdWVzdC0+cHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSB3
ZWJXaW5kb3dGZWF0dXJlczsKKworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChyZXF1ZXN0
KSwgIndpbmRvdy1mZWF0dXJlcyIpOworfQorCit9CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXdyZXF1ZXN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dFQl9W
SUVXX1JFUVVFU1RfSAorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9ICisKKyNpbmNs
dWRlIDxndGsvZ3RrLmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KKworR19CRUdJ
Tl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QgICAgICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9WSUVXX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT
VCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCwgV2ViS2l0V2ViVmlld1JlcXVl
c3QpKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVF
U1QsIFdlYktpdFdlYlZpZXdSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJ
RVdfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9W
SUVXX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVX
X1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNULCBXZWJLaXRXZWJWaWV3UmVxdWVzdENsYXNz
KSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0IFdlYktpdFdlYlZpZXdS
ZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0Q2xhc3MgV2ViS2l0
V2ViVmlld1JlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVxdWVz
dFByaXZhdGUgV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdl
YlZpZXdSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRX
ZWJWaWV3UmVxdWVzdFByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJL
SVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfdHlwZSh2b2lkKTsKKwor
V0VCS0lUX0FQSSBXZWJLaXROZXR3b3JrUmVxdWVzdCoKK3dlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X2dldF9uZXR3b3JrX3JlcXVlc3QoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworCitX
RUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25hbWUo
V2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X3NldF9uYW1lKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0
LCBjb25zdCBnY2hhciogbmFtZSk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqCit3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdl
YlZpZXdSZXF1ZXN0KiByZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3Zp
ZXdfcmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1
ZXN0LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93RmVhdHVyZXMpOworCitHX0VORF9E
RUNMUworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2Zl
YXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWxhIDxnbnNAZ25vbWUub3Jn
PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2lu
Y2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0
ZS5oIgorCitleHRlcm4gIkMiIHsKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9Y
LAorICAgIFBST1BfWSwKKyAgICBQUk9QX1dJRFRILAorICAgIFBST1BfSEVJR0hULAorICAgIFBS
T1BfVE9PTEJBUl9WSVNJQkxFLAorICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCisgICAgUFJP
UF9TQ1JPTExCQVJfVklTSUJMRSwKKyAgICBQUk9QX01FTlVCQVJfVklTSUJMRSwKKyAgICBQUk9Q
X0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9SRVNJWkFCTEUsCisgICAgUFJPUF9GVUxM
U0NSRUVOLAorICAgIFBST1BfRElBTE9HCit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzLCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlcywgR19UWVBFX09CSkVDVCkK
Kworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUgeworICAgIGdpbnQgeDsK
KyAgICBnaW50IHk7CisgICAgZ2ludCB3aWR0aDsKKyAgICBnaW50IGhlaWdodDsKKworICAgIGdi
b29sZWFuIHRvb2xiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzdGF0dXNiYXJfdmlzaWJsZTsK
KyAgICBnYm9vbGVhbiBzY3JvbGxiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBtZW51YmFyX3Zp
c2libGU7CisgICAgZ2Jvb2xlYW4gbG9jYXRpb25iYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBy
ZXNpemFibGU7CisKKyAgICBnYm9vbGVhbiBmdWxsc2NyZWVuOworICAgIGdib29sZWFuIGRpYWxv
ZzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX1BSSVZBVEUo
b2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
V0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUpKQorCitzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfY2xhc3NfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKiBrbGFz
cykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhr
bGFzcyk7CisgICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19maW5hbGl6ZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5Owor
CisgICAgR1BhcmFtRmxhZ3MgZmxhZ3MgPSAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX1gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cg
b24gdGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19p
bnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVGhlIHN0YXJ0aW5nIHkgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUg
c2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSURU
SCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpZHRoIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9IRUlHSFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSGVpZ2h0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfVE9PTEJBUl9WSVNJQkxFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbGJhci12aXNpYmxlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUb29sIGJhciB2aXNpYmxlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRo
ZSB0b29sIGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX1NUQVRVU0JBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RhdHVzYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlN0YXR1cyBiYXIgdmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgc3RhdHVzIGJhciBzaG91bGQgYmUgdmlzaWJs
ZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Nyb2xsYmFyLXZpc2libGUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNjcm9sbCBiYXIgdmlzaWJsZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0
aGUgc2Nyb2xsIGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9NRU5VQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJtZW51YmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIk1lbnUgYmFyIHZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIG1lbnUgYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZv
ciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2F0aW9uIGJhciB2aXNpYmxl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVy
IHRoZSBsb2NhdGlvbiBiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9SRVNJWkFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZXNpemFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJl
c2l6YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hldGhlciB0
aGUgd2luZG93IHNob3VsZCBiZSByZXNpemFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0ZVTExTQ1JFRU4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWxsLXNjcmVlbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB3aW5kb3cgd2ls
bCBiZSBkaXNwbGF5ZWQgZnVsbHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ESUFMT0csCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWFsb2ciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRpYWxvZyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB3aW5kb3cgc2hvdWxkIGJlIGEgZGlhbG9n
LCBvciBhIHRvcCBsZXZlbCB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dp
bmRvd19mZWF0dXJlc19pbml0KFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2Zl
YXR1cmVzKQoreworICAgIHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXYgPSBXRUJLSVRfV0VCX1dJ
TkRPV19GRUFUVVJFU19HRVRfUFJJVkFURSh3ZWJfd2luZG93X2ZlYXR1cmVzKTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2Jq
ZWN0KQoreworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3Bh
cmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzID0gV0VCS0lUX1dFQl9X
SU5ET1dfRkVBVFVSRVMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZh
dGUqIHByaXYgPSB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2OworCisgICAgc3dpdGNoKHByb3Bf
aWQpIHsKKyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAgcHJpdi0+eCA9IGdfdmFsdWVfZ2V0X2lu
dCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBwcml2
LT55ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX1dJRFRIOgorICAgICAgICBwcml2LT53aWR0aCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IRUlHSFQ6CisgICAgICAgIHByaXYtPmhl
aWdodCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9UT09MQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPnRvb2xiYXJfdmlzaWJsZSA9IGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
U1RBVFVTQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPnN0YXR1c2Jhcl92aXNpYmxlID0gZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9T
Q1JPTExCQVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+c2Nyb2xsYmFyX3Zpc2libGUgPSBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01F
TlVCQVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+bWVudWJhcl92aXNpYmxlID0gZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0NBVElP
TkJBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT5sb2NhdGlvbmJhcl92aXNpYmxlID0gZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9SRVNJ
WkFCTEU6CisgICAgICAgIHByaXYtPnJlc2l6YWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlVMTFNDUkVFTjoKKyAgICAgICAg
cHJpdi0+ZnVsbHNjcmVlbiA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRElBTE9HOgorICAgICAgICBwcml2LT5kaWFsb2cgPSBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwg
cHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzID0gV0VCS0lUX1dFQl9XSU5ET1df
RkVBVFVSRVMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHBy
aXYgPSB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2OworCisgICAgc3dpdGNoIChwcm9wX2lkKSB7
CisgICAgY2FzZSBQUk9QX1g6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+
eCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9pbnQodmFsdWUsIHByaXYtPnkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lE
VEg6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+d2lkdGgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfSEVJR0hUOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQo
dmFsdWUsIHByaXYtPmhlaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9UT09M
QkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnRv
b2xiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TVEFUVVNCQVJf
VklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+c3RhdHVz
YmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJ
U0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnNjcm9sbGJh
cl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01FTlVCQVJfVklTSUJM
RToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+bWVudWJhcl92aXNp
YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEU6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmxvY2F0aW9uYmFyX3Zp
c2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUkVTSVpBQkxFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5yZXNpemFibGUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRlVMTFNDUkVFTjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgcHJpdi0+ZnVsbHNjcmVlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9ESUFMT0c6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmRp
YWxvZyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25l
dzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5j
ZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0
byBhIFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzIGluc3RhbmNlCisgKiovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9XSU5ET1dfRkVB
VFVSRVMoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIE5VTEwp
KTsKK30KKworLy8gZm9yIGludGVybmFsIHVzZSBvbmx5CitXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyhjb25z
dCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCit7CisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMgKndlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVy
ZXNfbmV3KCk7CisKKyAgICBpZihmZWF0dXJlcy54U2V0KQorICAgICAgICBnX29iamVjdF9zZXQo
R19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAieCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVy
ZXMueCksIE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMueVNldCkKKyAgICAgICAgZ19vYmplY3Rf
c2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInkiLCBzdGF0aWNfY2FzdDxpbnQ+KGZl
YXR1cmVzLnkpLCBOVUxMKTsKKworICAgIGlmKGZlYXR1cmVzLndpZHRoU2V0KQorICAgICAgICBn
X29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAid2lkdGgiLCBzdGF0aWNf
Y2FzdDxpbnQ+KGZlYXR1cmVzLndpZHRoKSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy5oZWln
aHRTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyks
ICJoZWlnaHQiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLmhlaWdodCksIE5VTEwpOworCisg
ICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAg
ICAgICAgInRvb2xiYXJfdmlzaWJsZSIsIGZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlLAorICAgICAg
ICAgICAgICAgICAic3RhdHVzYmFyX3Zpc2libGUiLCBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxl
LAorICAgICAgICAgICAgICAgICAic2Nyb2xsYmFyX3Zpc2libGUiLCBmZWF0dXJlcy5zY3JvbGxi
YXJzVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgIm1lbnViYXJfdmlzaWJsZSIsIGZlYXR1cmVz
Lm1lbnVCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAibG9jYXRpb25iYXJfdmlzaWJsZSIs
IGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInJlc2l6YWJs
ZSIsIGZlYXR1cmVzLnJlc2l6YWJsZSwKKyAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLCBm
ZWF0dXJlcy5mdWxsc2NyZWVuLAorICAgICAgICAgICAgICAgICAiZGlhbG9nIiwgZmVhdHVyZXMu
ZGlhbG9nLAorICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIHJldHVybiB3ZWJXaW5kb3dG
ZWF0dXJlczsKK30KKworZ2Jvb2xlYW4gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwo
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMSwgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIGZlYXR1cmVzMikKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHBy
aXYxID0gZmVhdHVyZXMxLT5wcml2OworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0
ZSogcHJpdjIgPSBmZWF0dXJlczItPnByaXY7CisgICAgCisgICAgaWYoKHByaXYxLT54ID09IHBy
aXYyLT54KSAmJgorICAgICAgIChwcml2MS0+eSA9PSBwcml2Mi0+eSkgJiYKKyAgICAgICAocHJp
djEtPndpZHRoID09IHByaXYyLT53aWR0aCkgJiYKKyAgICAgICAocHJpdjEtPmhlaWdodCA9PSBw
cml2Mi0+aGVpZ2h0KSAmJgorICAgICAgIChwcml2MS0+dG9vbGJhcl92aXNpYmxlID09IHByaXYy
LT50b29sYmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5zY3JvbGxiYXJfdmlzaWJsZSA9
PSBwcml2Mi0+c2Nyb2xsYmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5tZW51YmFyX3Zp
c2libGUgPT0gcHJpdjItPm1lbnViYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJpdjEtPmxvY2F0
aW9uYmFyX3Zpc2libGUgPT0gcHJpdjItPmxvY2F0aW9uYmFyX3Zpc2libGUpICYmCisgICAgICAg
KHByaXYxLT5yZXNpemFibGUgPT0gcHJpdjItPnJlc2l6YWJsZSkgJiYKKyAgICAgICAocHJpdjEt
PmZ1bGxzY3JlZW4gPT0gcHJpdjItPmZ1bGxzY3JlZW4pICYmCisgICAgICAgKHByaXYxLT5kaWFs
b2cgPT0gcHJpdjItPmRpYWxvZykpCisgICAgICAgIHJldHVybiBUUlVFOworICAgIHJldHVybiBG
QUxTRTsKK30KKworCit9CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dm
ZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRv
d2ZlYXR1cmVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3
aW5kb3dmZWF0dXJlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBfX1dFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0hfXworI2RlZmluZSBfX1dFQktJVF9X
RUJfV0lORE9XX0ZFQVRVUkVTX0hfXworCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTICAgICAgICAgICAgKHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZF
QVRVUkVTKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiks
IFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpICAgIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19G
RUFUVVJFUywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9J
U19XRUJfV0lORE9XX0ZFQVRVUkVTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMpKQorI2RlZmluZSBX
RUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNk
ZWZpbmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJF
UywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRl
OworCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIHsKKyAgICBHT2JqZWN0IHBhcmVu
dF9pbnN0YW5jZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjsK
K307CisKK3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyB7CisgICAgR09iamVj
dENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNp
b24gKi8KKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgq
X3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMp
ICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKK307CisKK1dF
QktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfbmV3KHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19XRUJL
SVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18gKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21374</attachid>
            <date>2008-05-27 16:08:53 -0700</date>
            <delta_ts>2008-06-02 11:46:24 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>network-request.diff</filename>
            <type>text/plain</type>
            <size>39215</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAzMjcxNCkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMDgtMDQtMjkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKwlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MDgKKwlXZWJL
aXROZXR3b3JrUmVxdWVzdCBuZWVkcyB0byBiZSBmaW5pc2hlZAorCisJQWxtb3N0IGNvbXBsZXRl
IEdPYmplY3QgaW1wbGVtZW50YXRpb24gZXhwb3NpbmcgUmVzb3VyY2VSZXF1ZXN0LgorCQorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgICogd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcDoK
KyAgICAgICAgKF9XZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGU6OndlYmtpdF9uZXR3b3JrX3Jl
cXVlc3RfZmluYWxpemUpOgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6
Y2FjaGVfcG9saWN5X2Zyb21fcmVzb3VyY2VfcmVxdWVzdCk6CisgICAgICAgIChfV2ViS2l0TmV0
d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ld19mcm9tX3Jlc291
cmNlX3JlcXVlc3QpOgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6d2Vi
a2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfY2FjaGVfcG9saWN5KToKKyAgICAgICAgKF9XZWJLaXRO
ZXR3b3JrUmVxdWVzdFByaXZhdGU6OndlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X2NhY2hlX3Bv
bGljeSk6CisgICAgICAgIChfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0
d29ya19yZXF1ZXN0X3NldF90aW1lb3V0X2ludGVydmFsKToKKyAgICAgICAgKF9XZWJLaXROZXR3
b3JrUmVxdWVzdFByaXZhdGU6OndlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3RpbWVvdXRfaW50
ZXJ2YWwpOgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X25l
dHdvcmtfcmVxdWVzdF9zZXRfbWFpbl9kb2N1bWVudF91cmkpOgorICAgICAgICAoX1dlYktpdE5l
dHdvcmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfbWFpbl9kb2N1
bWVudF91cmkpOgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0
X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0cF9tZXRob2QpOgorICAgICAgICAoX1dlYktpdE5ldHdv
cmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfaHR0cF9tZXRob2Qp
OgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6Y29weV9oZWFkZXIpOgor
ICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X25ldHdvcmtfcmVx
dWVzdF9zZXRfaHR0cF9oZWFkZXJzKToKKyAgICAgICAgKF9XZWJLaXROZXR3b3JrUmVxdWVzdFBy
aXZhdGU6OndlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X2h0dHBfaGVhZGVycyk6CisgICAgICAg
IChfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3Nl
dF9odHRwX2hlYWRlcik6CisgICAgICAgIChfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3
ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX2hlYWRlcik6CisgICAgICAgIChfV2ViS2l0
TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3NldF9odHRwX2Nv
bnRlbnRfdHlwZSk6CisgICAgICAgIChfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJr
aXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX2NvbnRlbnRfdHlwZSk6CisgICAgICAgIChfV2Vi
S2l0TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3NldF9odHRw
X3JlZmVyZXIpOgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0
X25ldHdvcmtfcmVxdWVzdF9nZXRfaHR0cF9yZWZlcmVyKToKKyAgICAgICAgKF9XZWJLaXROZXR3
b3JrUmVxdWVzdFByaXZhdGU6OndlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfdXNlcl9h
Z2VudCk6CisgICAgICAgIChfV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0
d29ya19yZXF1ZXN0X2dldF9odHRwX3VzZXJfYWdlbnQpOgorICAgICAgICAoX1dlYktpdE5ldHdv
cmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0cF9hY2NlcHQp
OgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X25ldHdvcmtf
cmVxdWVzdF9nZXRfaHR0cF9hY2NlcHQpOgorICAgICAgICAoX1dlYktpdE5ldHdvcmtSZXF1ZXN0
UHJpdmF0ZTo6d2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfYm9keSk6CisgICAgICAgIChfV2Vi
S2l0TmV0d29ya1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9ib2R5
KToKKyAgICAgICAgKF9XZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGU6OndlYmtpdF9uZXR3b3Jr
X3JlcXVlc3Rfc2V0X2FsbG93X2h0dHBfY29va2llcyk6CisgICAgICAgIChfV2ViS2l0TmV0d29y
a1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9hbGxvd19odHRwX2Nv
b2tpZXMpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisKIDIwMDgtMDQtMjQgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICAtIGJ1aWxkIGZpeApJbmRleDogV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlz
aW9uIDMyNjY2KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwotICAgIFdlYktp
dE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcocmVz
b3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdlYktpdE5l
dHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXdfZnJvbV9y
ZXNvdXJjZV9yZXF1ZXN0KHJlc291cmNlUmVxdWVzdCk7CiAgICAgV2ViS2l0TmF2aWdhdGlvblJl
c3BvbnNlIHJlc3BvbnNlOwogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJu
YXZpZ2F0aW9uLXJlcXVlc3RlZCIsIG1fZnJhbWUsIHJlcXVlc3QsICZyZXNwb25zZSk7CkluZGV4
OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwCShyZXZpc2lvbiAz
MjY2NikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDI1IEBACiAKICNpbmNsdWRlICJ3ZWJraXRuZXR3b3Jr
cmVxdWVzdC5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCiBleHRlcm4gIkMiIHsKIAogR19ERUZJTkVfVFlQRShXZWJLaXROZXR3b3JrUmVx
dWVzdCwgd2Via2l0X25ldHdvcmtfcmVxdWVzdCwgR19UWVBFX09CSkVDVCk7CiAKIHN0cnVjdCBf
V2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlIHsKICAgICBnY2hhciogdXJpOworICAgIFdlYktp
dFJlcUNhY2hlUG9saWN5IGNhY2hlX3BvbGljeTsKKyAgICBnZG91YmxlIHRpbWVvdXRfaW50ZXJ2
YWw7CisgICAgZ2NoYXIqIG1haW5fZG9jdW1lbnRfdXJpOworICAgIGdjaGFyKiBodHRwX21ldGhv
ZDsKKyAgICBHSGFzaFRhYmxlICpodHRwX2hlYWRlcnM7CisgICAgZ2Jvb2xlYW4gYWxsb3dfaHR0
cF9jb29raWVzOworICAgIGdjaGFyICpib2R5OwogfTsKIAogI2RlZmluZSBXRUJLSVRfTkVUV09S
S19SRVFVRVNUX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgo
b2JqKSwgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULCBXZWJLaXROZXR3b3JrUmVxdWVzdFBy
aXZhdGUpKQpAQCAtMzcsNiArNTAsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X25ldHdvcmtfcmVx
dWVzdF9maW5hbAogICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVl
c3QtPnByaXY7CiAKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBnX2ZyZWUocHJpdi0+bWFp
bl9kb2N1bWVudF91cmkpOworICAgIGdfZnJlZShwcml2LT5odHRwX21ldGhvZCk7CisgICAgZ19o
YXNoX3RhYmxlX2Rlc3Ryb3kocHJpdi0+aHR0cF9oZWFkZXJzKTsKKyAgICBnX2ZyZWUocHJpdi0+
Ym9keSk7CiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CkBAIC01NCw2ICs3MSw1MiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2luaXQoCiAgICAgcmVxdWVzdC0+cHJpdiA9IHBy
aXY7CiB9CiAKK3N0YXRpYyBXZWJLaXRSZXFDYWNoZVBvbGljeSBjYWNoZV9wb2xpY3lfZnJvbV9y
ZXNvdXJjZV9yZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQor
eworICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlX3BvbGljeSA9IHJlc291cmNl
UmVxdWVzdC5jYWNoZVBvbGljeSgpOworICAgIAorICAgIHN3aXRjaChjYWNoZV9wb2xpY3kpCisg
ICAgICAgIHsKKyAgICAgICAgY2FzZSBVc2VQcm90b2NvbENhY2hlUG9saWN5OgorICAgICAgICAg
ICAgcmV0dXJuIFdFQktJVF9SRVFfQ0FDSEVfUE9MSUNZX1BST1RPQ09MOworICAgICAgICBjYXNl
IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOgorICAgICAgICAgICAgcmV0dXJuIFdFQktJVF9SRVFf
Q0FDSEVfUE9MSUNZX1JFTE9BRF9JR05PUklOR19DQUNIRTsKKyAgICAgICAgY2FzZSBSZXR1cm5D
YWNoZURhdGFFbHNlTG9hZDoKKyAgICAgICAgICAgIHJldHVybiBXRUJLSVRfUkVRX0NBQ0hFX1BP
TElDWV9BTExPV19TVEFMRTsKKyAgICAgICAgY2FzZSBSZXR1cm5DYWNoZURhdGFEb250TG9hZDoK
KyAgICAgICAgICAgIHJldHVybiBXRUJLSVRfUkVRX0NBQ0hFX1BPTElDWV9DQUNIRV9PTkxZOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFdFQktJVF9SRVFfQ0FDSEVfUE9M
SUNZX05PTkU7CisgICAgICAgIH0KK30KKworLy8gZm9yIGludGVybmFsIHVzZSBvbmx5CitXZWJL
aXROZXR3b3JrUmVxdWVzdCogd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXdfZnJvbV9yZXNvdXJj
ZV9yZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQoreworICAg
IFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX05FVFdPUktfUkVRVUVTVChn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULCBOVUxMKSk7CisgICAgV2Vi
S2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKKworICAgIHBy
aXYtPnVyaSA9IGdfc3RyZHVwKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBwcml2LT5jYWNoZV9wb2xpY3kgPSBjYWNoZV9wb2xpY3lfZnJvbV9yZXNv
dXJjZV9yZXF1ZXN0KHJlc291cmNlUmVxdWVzdCk7CisgICAgcHJpdi0+dGltZW91dF9pbnRlcnZh
bCA9IHJlc291cmNlUmVxdWVzdC50aW1lb3V0SW50ZXJ2YWwoKTsKKyAgICBwcml2LT5tYWluX2Rv
Y3VtZW50X3VyaSA9IGdfc3RyZHVwKHJlc291cmNlUmVxdWVzdC5tYWluRG9jdW1lbnRVUkwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBwcml2LT5odHRwX21ldGhvZCA9IGdfc3RyZHVw
KHJlc291cmNlUmVxdWVzdC5odHRwTWV0aG9kKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBwcml2
LT5odHRwX2hlYWRlcnMgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwoZ19zdHJfaGFzaCwgZ19zdHJf
ZXF1YWwsIGdfZnJlZSwgZ19mcmVlKTsKKyAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnMgPSByZXNv
dXJjZVJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOworICAgIGlmICghaGVhZGVycy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVy
cy5lbmQoKTsKKyAgICAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgZ19oYXNoX3Rh
YmxlX2luc2VydChwcml2LT5odHRwX2hlYWRlcnMsIChncG9pbnRlcilnX3N0cmR1cChpdC0+Zmly
c3QudXRmOCgpLmRhdGEoKSksIChncG9pbnRlcilnX3N0cmR1cChpdC0+c2Vjb25kLnV0ZjgoKS5k
YXRhKCkpKTsKKyAgICB9CisKKyAgICBpZiAoZ19hc2NpaV9zdHJjYXNlY21wIChwcml2LT5odHRw
X21ldGhvZCwgIlBPU1QiKSA9PSAwKQorICAgICAgICBwcml2LT5ib2R5ID0gZ19zdHJkdXAocmVz
b3VyY2VSZXF1ZXN0Lmh0dHBCb2R5KCktPmZsYXR0ZW5Ub1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHByaXYtPmFsbG93X2h0dHBfY29va2llcyA9IHJlc291cmNlUmVxdWVzdC5hbGxvd0hU
VFBDb29raWVzKCk7CisKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKwogV2ViS2l0TmV0d29ya1Jl
cXVlc3QqIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KGNvbnN0IGdjaGFyKiB1cmkpCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwodXJpLCBOVUxMKTsKQEAgLTg1LDQgKzE0OCwyMjYgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0XwogICAgIHJldHVybiBwcml2
LT51cmk7CiB9CiAKK3ZvaWQgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfY2FjaGVfcG9saWN5
KFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBXZWJLaXRSZXFDYWNoZVBvbGlj
eSBjYWNoZV9wb2xpY3kpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfTkVUV09S
S19SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSog
cHJpdiA9IHJlcXVlc3QtPnByaXY7CisKKyAgICBwcml2LT5jYWNoZV9wb2xpY3kgPSBjYWNoZV9w
b2xpY3k7Cit9CisKK1dlYktpdFJlcUNhY2hlUG9saWN5IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3Rf
Z2V0X2NhY2hlX3BvbGljeShXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfTkVUV09SS19SRVFVRVNUKHJlcXVlc3QpLCBX
RUJLSVRfUkVRX0NBQ0hFX1BPTElDWV9OT05FKTsKKworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0
UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CisKKyAgICByZXR1cm4gcHJpdi0+Y2FjaGVf
cG9saWN5OworfQorCit2b2lkIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X3RpbWVvdXRfaW50
ZXJ2YWwoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdkb3VibGUgdGltZW91
dF9pbnRlcnZhbCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JF
UVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2
ID0gcmVxdWVzdC0+cHJpdjsKKworICAgIHByaXYtPnRpbWVvdXRfaW50ZXJ2YWwgPSB0aW1lb3V0
X2ludGVydmFsOworfQorCitnZG91YmxlIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3RpbWVv
dXRfaW50ZXJ2YWwoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChyZXF1ZXN0KSwgMC4wKTsK
KworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7
CisKKyAgICByZXR1cm4gcHJpdi0+dGltZW91dF9pbnRlcnZhbDsKK30KKwordm9pZCB3ZWJraXRf
bmV0d29ya19yZXF1ZXN0X3NldF9tYWluX2RvY3VtZW50X3VyaShXZWJLaXROZXR3b3JrUmVxdWVz
dCogcmVxdWVzdCwgY29uc3QgZ2NoYXIqIG1haW5fZG9jdW1lbnRfdXJpKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChtYWluX2RvY3VtZW50X3VyaSk7CisKKyAgICBXZWJLaXROZXR3b3JrUmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworCisgICAgZ19mcmVlKHByaXYtPm1h
aW5fZG9jdW1lbnRfdXJpKTsKKyAgICBwcml2LT5tYWluX2RvY3VtZW50X3VyaSA9IGdfc3RyZHVw
KG1haW5fZG9jdW1lbnRfdXJpKTsKK30KKworY29uc3QgZ2NoYXIqIHdlYmtpdF9uZXR3b3JrX3Jl
cXVlc3RfZ2V0X21haW5fZG9jdW1lbnRfdXJpKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1Qo
cmVxdWVzdCksIE5VTEwpOworCisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBwcml2
ID0gcmVxdWVzdC0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+bWFpbl9kb2N1bWVudF91cmk7Cit9
CisKK3ZvaWQgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0cF9tZXRob2QoV2ViS2l0TmV0
d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdjaGFyKiBodHRwX21ldGhvZCkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QocmVxdWVzdCkpOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoaHR0cF9tZXRob2QpOworCisgICAgV2ViS2l0TmV0d29ya1JlcXVl
c3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKKworICAgIGdfZnJlZShwcml2LT5odHRw
X21ldGhvZCk7CisgICAgcHJpdi0+aHR0cF9tZXRob2QgPSBnX3N0cmR1cChodHRwX21ldGhvZCk7
Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX21ldGhv
ZChXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfTkVUV09SS19SRVFVRVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIFdl
YktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CisgICAgcmV0
dXJuIHByaXYtPmh0dHBfbWV0aG9kOworfQorCitzdGF0aWMgdm9pZCBjb3B5X2hlYWRlcihjb25z
dCBnY2hhcioga2V5LCBjb25zdCBnY2hhciogdmFsdWUsIGdwb2ludGVyIGRhdGEpCit7CisgICAg
R0hhc2hUYWJsZSAqbmV3X2hhc2hfdGFibGUgPSAoR0hhc2hUYWJsZSopZGF0YTsKKworICAgIGdf
aGFzaF90YWJsZV9pbnNlcnQobmV3X2hhc2hfdGFibGUsIChncG9pbnRlcilrZXksIChncG9pbnRl
cil2YWx1ZSk7Cit9CisKK3ZvaWQgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0cF9oZWFk
ZXJzKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBHSGFzaFRhYmxlKiBodHRw
X2hlYWRlcnMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfTkVUV09SS19SRVFV
RVNUKHJlcXVlc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGh0dHBfaGVhZGVycyk7CisKKyAg
ICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworCisg
ICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kocHJpdi0+aHR0cF9oZWFkZXJzKTsKKyAgICBwcml2LT5o
dHRwX2hlYWRlcnMgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwoZ19zdHJfaGFzaCwgZ19zdHJfZXF1
YWwsIGdfZnJlZSwgZ19mcmVlKTsKKyAgICBnX2hhc2hfdGFibGVfZm9yZWFjaCgoR0hhc2hUYWJs
ZSopaHR0cF9oZWFkZXJzLCAoR0hGdW5jKWNvcHlfaGVhZGVyLCBwcml2LT5odHRwX2hlYWRlcnMp
OworfQorCitjb25zdCBHSGFzaFRhYmxlKiB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRw
X2hlYWRlcnMoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChyZXF1ZXN0KSwgTlVMTCk7CisK
KyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2Owor
ICAgIHJldHVybiBwcml2LT5odHRwX2hlYWRlcnM7Cit9CisKK3ZvaWQgd2Via2l0X25ldHdvcmtf
cmVxdWVzdF9zZXRfaHR0cF9oZWFkZXIoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNv
bnN0IGdjaGFyKiBodHRwX2hlYWRlciwgY29uc3QgZ2NoYXIqIHZhbHVlKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChodHRwX2hlYWRlcik7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7
CisKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OworICAgIEdIYXNoVGFibGUqIGhlYWRlcnMgPSBwcml2LT5odHRwX2hlYWRlcnM7CisKKyAgICBn
X2hhc2hfdGFibGVfcmVwbGFjZShoZWFkZXJzLCBnX3N0cmR1cChodHRwX2hlYWRlciksIGdfc3Ry
ZHVwKHZhbHVlKSk7Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dl
dF9odHRwX2hlYWRlcihXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2NoYXIq
IGh0dHBfaGVhZGVyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ORVRX
T1JLX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGh0
dHBfaGVhZGVyLCBOVUxMKTsKKworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcHJp
diA9IHJlcXVlc3QtPnByaXY7CisgICAgR0hhc2hUYWJsZSogaGVhZGVycyA9IHByaXYtPmh0dHBf
aGVhZGVyczsKKworICAgIHJldHVybiAoY29uc3QgZ2NoYXIqKWdfaGFzaF90YWJsZV9sb29rdXAo
aGVhZGVycywgKGdjb25zdHBvaW50ZXIpaHR0cF9oZWFkZXIpOworfQorCit2b2lkIHdlYmtpdF9u
ZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfY29udGVudF90eXBlKFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiByZXF1ZXN0LCBjb25zdCBnY2hhciogaHR0cF9jb250ZW50X3R5cGUpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfTkVUV09SS19SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKGh0dHBfY29udGVudF90eXBlKTsKKworICAgIHdlYmtpdF9uZXR3b3JrX3Jl
cXVlc3Rfc2V0X2h0dHBfaGVhZGVyKHJlcXVlc3QsICJDb250ZW50LVR5cGUiLCBodHRwX2NvbnRl
bnRfdHlwZSk7Cit9CisKK2NvbnN0IGdjaGFyKiB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9o
dHRwX2NvbnRlbnRfdHlwZShXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfTkVUV09SS19SRVFVRVNUKHJlcXVlc3QpLCBO
VUxMKTsKKworICAgIHJldHVybiB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX2hlYWRl
cihyZXF1ZXN0LCAiQ29udGVudC1UeXBlIik7Cit9CisKK3ZvaWQgd2Via2l0X25ldHdvcmtfcmVx
dWVzdF9zZXRfaHR0cF9yZWZlcmVyKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0LCBjb25z
dCBnY2hhciogaHR0cF9yZWZlcmVyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X05FVFdPUktfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChodHRwX3Jl
ZmVyZXIpOworCisgICAgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0cF9oZWFkZXIocmVx
dWVzdCwgIlJlZmVyZXIiLCBodHRwX3JlZmVyZXIpOworfQorCitjb25zdCBnY2hhciogd2Via2l0
X25ldHdvcmtfcmVxdWVzdF9nZXRfaHR0cF9yZWZlcmVyKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JF
UVVFU1QocmVxdWVzdCksIE5VTEwpOworCisgICAgcmV0dXJuIHdlYmtpdF9uZXR3b3JrX3JlcXVl
c3RfZ2V0X2h0dHBfaGVhZGVyKHJlcXVlc3QsICJSZWZlcmVyIik7Cit9CisKK3ZvaWQgd2Via2l0
X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0cF91c2VyX2FnZW50KFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiByZXF1ZXN0LCBjb25zdCBnY2hhciogaHR0cF91c2VyX2FnZW50KQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19yZXR1
cm5faWZfZmFpbChodHRwX3VzZXJfYWdlbnQpOworCisgICAgd2Via2l0X25ldHdvcmtfcmVxdWVz
dF9zZXRfaHR0cF9oZWFkZXIocmVxdWVzdCwgIlVzZXItQWdlbnQiLCBodHRwX3VzZXJfYWdlbnQp
OworfQorCitjb25zdCBnY2hhciogd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfaHR0cF91c2Vy
X2FnZW50KFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworCisg
ICAgcmV0dXJuIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X2h0dHBfaGVhZGVyKHJlcXVlc3Qs
ICJVc2VyLUFnZW50Iik7Cit9CisKK3ZvaWQgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0
cF9hY2NlcHQoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdjaGFyKiBodHRw
X2FjY2VwdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVF
U1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaHR0cF9hY2NlcHQpOworCisgICAg
d2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfaHR0cF9oZWFkZXIocmVxdWVzdCwgIkFjY2VwdCIs
IGh0dHBfYWNjZXB0KTsKK30KKworY29uc3QgZ2NoYXIqIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3Rf
Z2V0X2h0dHBfYWNjZXB0KFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QocmVxdWVzdCksIE5V
TEwpOworCisgICAgcmV0dXJuIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X2h0dHBfaGVhZGVy
KHJlcXVlc3QsICJBY2NlcHQiKTsKK30KKwordm9pZCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3Nl
dF9ib2R5KFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogYm9keSkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QocmVxdWVz
dCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoYm9keSk7CisKKyAgICBXZWJLaXROZXR3b3JrUmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworCisgICAgZ19mcmVlKHByaXYtPmJv
ZHkpOworICAgIHByaXYtPmJvZHkgPSBnX3N0cmR1cChib2R5KTsKK30KKworY29uc3QgZ2NoYXIq
IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X2JvZHkoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJl
cXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVR
VUVTVChyZXF1ZXN0KSwgTlVMTCk7CisKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdFByaXZhdGUq
IHByaXYgPSByZXF1ZXN0LT5wcml2OworCisgICAgcmV0dXJuIChjb25zdCBnY2hhciopcHJpdi0+
Ym9keTsKK30KKwordm9pZCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3NldF9hbGxvd19odHRwX2Nv
b2tpZXMoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdib29sZWFuIGFsbG93
X2h0dHBfY29va2llcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JL
X1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3RQcml2YXRlKiBw
cml2ID0gcmVxdWVzdC0+cHJpdjsKKworICAgIHByaXYtPmFsbG93X2h0dHBfY29va2llcyA9IGFs
bG93X2h0dHBfY29va2llczsKK30KKworZ2Jvb2xlYW4gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9n
ZXRfYWxsb3dfaHR0cF9jb29raWVzKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QocmVxdWVz
dCksIEZBTFNFKTsKKworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJl
cXVlc3QtPnByaXY7CisKKyAgICByZXR1cm4gcHJpdi0+YWxsb3dfaHR0cF9jb29raWVzOworfQor
CiB9CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmgJKHJldmlz
aW9uIDMyNjY2KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTUgQEAgc3RydWN0IF9XZWJLaXROZXR3b3JrUmVx
dWVzdENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwogfTsKIAordHlwZWRl
ZiBlbnVtCit7CisgIFdFQktJVF9SRVFfQ0FDSEVfUE9MSUNZX05PTkUsCisgIFdFQktJVF9SRVFf
Q0FDSEVfUE9MSUNZX1BST1RPQ09MLAorICBXRUJLSVRfUkVRX0NBQ0hFX1BPTElDWV9SRUxPQURf
SUdOT1JJTkdfQ0FDSEUsCisgIFdFQktJVF9SRVFfQ0FDSEVfUE9MSUNZX0FMTE9XX1NUQUxFLAor
ICBXRUJLSVRfUkVRX0NBQ0hFX1BPTElDWV9DQUNIRV9PTkxZLAorfSBXZWJLaXRSZXFDYWNoZVBv
bGljeTsKKwogV0VCS0lUX0FQSSBHVHlwZQogd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdHlw
ZSAodm9pZCk7CiAKQEAgLTU3LDYgKzY2LDc4IEBAIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0
X3VyaSAoV2ViS2l0TmUKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIqCiB3ZWJraXRfbmV0d29ya19y
ZXF1ZXN0X2dldF91cmkgKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KTsKIAorV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3NldF9jYWNoZV9wb2xpY3koV2ViS2l0
TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IFdlYktpdFJlcUNhY2hlUG9saWN5IGNhY2hl
X3BvbGljeSk7CisKK1dFQktJVF9BUEkgV2ViS2l0UmVxQ2FjaGVQb2xpY3kKK3dlYmtpdF9uZXR3
b3JrX3JlcXVlc3RfZ2V0X2NhY2hlX3BvbGljeShXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVz
dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X25ldHdvcmtfcmVxdWVzdF9zZXRfdGltZW91
dF9pbnRlcnZhbChXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2RvdWJsZSB0
aW1lb3V0X2ludGVydmFsKTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfbmV0d29ya19y
ZXF1ZXN0X2dldF90aW1lb3V0X2ludGVydmFsKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3NldF9tYWluX2Rv
Y3VtZW50X3VyaShXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2NoYXIqIG1h
aW5fZG9jdW1lbnRfdXJpKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF9uZXR3
b3JrX3JlcXVlc3RfZ2V0X21haW5fZG9jdW1lbnRfdXJpKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBy
ZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfbmV0d29ya19yZXF1ZXN0X3NldF9o
dHRwX21ldGhvZCAoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdjaGFyKiBo
dHRwX21ldGhvZCk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfbmV0d29ya19y
ZXF1ZXN0X2dldF9odHRwX21ldGhvZCAoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfaGVhZGVy
cyAoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IEdIYXNoVGFibGUqIGh0dHBf
aGVhZGVycyk7CisKK1dFQktJVF9BUEkgY29uc3QgR0hhc2hUYWJsZSoKK3dlYmtpdF9uZXR3b3Jr
X3JlcXVlc3RfZ2V0X2h0dHBfaGVhZGVycyAoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3Qp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfaGVh
ZGVyIChXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2NoYXIqIGh0dHBfaGVh
ZGVyLCBjb25zdCBnY2hhciogdmFsdWUpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Vi
a2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfaHR0cF9oZWFkZXIgKFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiByZXF1ZXN0LCBjb25zdCBnY2hhciogaHR0cF9oZWFkZXIpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfY29udGVudF90eXBlKFdlYktpdE5ldHdv
cmtSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogaHR0cF9jb250ZW50X3R5cGUpOworCitX
RUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfaHR0cF9j
b250ZW50X3R5cGUoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfcmVmZXJlcihXZWJLaXROZXR3
b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2NoYXIqIGh0dHBfcmVmZXJlcik7CisKK1dFQktJ
VF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX3JlZmVy
ZXIoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfdXNlcl9hZ2VudChXZWJLaXROZXR3b3JrUmVx
dWVzdCogcmVxdWVzdCwgY29uc3QgZ2NoYXIqIGh0dHBfdXNlcl9hZ2VudCk7CisKK1dFQktJVF9B
UEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX3VzZXJfYWdl
bnQoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2h0dHBfYWNjZXB0KFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiByZXF1ZXN0LCBjb25zdCBnY2hhciogaHR0cF9hY2NlcHQpOworCitXRUJLSVRfQVBJIGNvbnN0
IGdjaGFyKgord2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfaHR0cF9hY2NlcHQoV2ViS2l0TmV0
d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9uZXR3b3Jr
X3JlcXVlc3Rfc2V0X2JvZHkoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdj
aGFyKiBib2R5KTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF9uZXR3b3JrX3Jl
cXVlc3RfZ2V0X2JvZHkoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9uZXR3b3JrX3JlcXVlc3Rfc2V0X2FsbG93X2h0dHBfY29va2llcyhX
ZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgZ2Jvb2xlYW4gYWxsb3dfaHR0cF9j
b29raWVzKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X25ldHdvcmtfcmVxdWVzdF9n
ZXRfYWxsb3dfaHR0cF9jb29raWVzKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0KTsKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCShy
ZXZpc2lvbiAzMjY2NikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw5IEBAIGV4dGVybiAiQyIgewogCiAgICAgV0VCS0lU
X0FQSSBnY2hhcioKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NlbGVjdGVkX3RleHQgKFdlYktp
dFdlYlZpZXcqIHdlYl92aWV3KTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBtb3Zl
ZCB0byB3ZWJraXRuZXR3b3JrZXF1ZXN0Lmg/CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHdl
YmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3X2Zyb21fcmVzb3VyY2VfcmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCk7CiB9CiAKICNlbmRpZgpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzI3MTQpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAwOC0wNC0yOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZh
ICA8Z25zQGdub21lLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworCUltcGxlbWVudCBhIGRpYWxvZyB0byBzaG93IHRoZSByZXF1ZXN0cywgYXMgYSB0ZXN0IGZv
ciB0aGUKKwlXZWJLaXROZXR3b3JrUmVxdWVzdCBBUEkuCisJCisgICAgICAgICogR3RrTGF1bmNo
ZXIvbWFpbi5jOgorICAgICAgICAoc2hvd19odHRwX2luc3BlY3Rfd2luZG93X2NiKToKKyAgICAg
ICAgKG5hdmlnYXRpb25fcmVxdWVzdGVkX2NiKToKKyAgICAgICAgKGFwcGVuZF9oZWFkZXJfdG9f
aHR0cF9pbnNwZWN0X2hlYWRlcnNfbW9kZWwpOgorICAgICAgICAoY2FjaGVfcG9saWN5X3RvX3N0
cmluZyk6CisgICAgICAgIChodHRwX2luc3BlY3RfY3Vyc29yX2NoYW5nZWRfY2IpOgorICAgICAg
ICAoY3JlYXRlX2h0dHBfaW5zcGVjdF93aW5kb3cpOgorICAgICAgICAoY3JlYXRlX2Jyb3dzZXIp
OgorICAgICAgICAoY3JlYXRlX3Rvb2xiYXIpOgorICAgICAgICAobWFpbik6CisJQSBuZXcgZGlh
bG9nIHdhcyBjcmVhdGVkLCB3aGljaCBpcyBhY2Nlc3NpYmxlIGZyb20gYSBidXR0b24gYXQgdGhl
CisJbWFpbiB0b29sYmFyOyB0aGF0IGRpYWxvZyBsaXN0cyB0aGUgSFRUUCByZXF1ZXN0cyBhbmQg
ZGlzcGxheXMKKwl0aGVpciBkZXRhaWxzLgorCiAyMDA4LTA0LTI5ICBBZGFtIFJvYmVuICA8YXJv
YmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXN0b3JlIHRoZSBiZWxvdmVkIENPTVB0cjo6b3Bl
cmF0b3ImCkluZGV4OiBXZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCShyZXZpc2lvbiAzMjYwMykKKysrIFdl
YktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
MjIgQEAgc3RhdGljIGdjaGFyKiBtYWluX3RpdGxlOwogc3RhdGljIGdpbnQgbG9hZF9wcm9ncmVz
czsKIHN0YXRpYyBndWludCBzdGF0dXNfY29udGV4dF9pZDsKIAorR3RrV2lkZ2V0KiBodHRwX2lu
c3BlY3Rfd2luZG93OworR3RrV2lkZ2V0KiBodHRwX2luc3BlY3RfcmVxdWVzdHNfbGlzdDsKK0d0
a0xpc3RTdG9yZSogaHR0cF9pbnNwZWN0X3JlcXVlc3RzX21vZGVsOworR3RrV2lkZ2V0KiBodHRw
X2luc3BlY3RfY2FjaGVfcG9saWN5X2xhYmVsOworR3RrV2lkZ2V0KiBodHRwX2luc3BlY3RfdGlt
ZW91dF9pbnRlcnZhbF9sYWJlbDsKK0d0a1dpZGdldCogaHR0cF9pbnNwZWN0X21haW5fZG9jdW1l
bnRfdXJpX2xhYmVsOworR3RrV2lkZ2V0KiBodHRwX2luc3BlY3RfbWV0aG9kX2xhYmVsOworR3Rr
V2lkZ2V0KiBodHRwX2luc3BlY3RfY29udGVudF90eXBlX2xhYmVsOworR3RrV2lkZ2V0KiBodHRw
X2luc3BlY3RfcmVmZXJlcl9sYWJlbDsKK0d0a1dpZGdldCogaHR0cF9pbnNwZWN0X3VzZXJfYWdl
bnRfbGFiZWw7CitHdGtXaWRnZXQqIGh0dHBfaW5zcGVjdF9hY2NlcHRfbGFiZWw7CitHdGtXaWRn
ZXQqIGh0dHBfaW5zcGVjdF9hbGxvd19odHRwX2Nvb2tpZXNfbGFiZWw7CitHdGtXaWRnZXQqIGh0
dHBfaW5zcGVjdF9oZWFkZXJzX2xpc3Q7CitHdGtXaWRnZXQqIGh0dHBfaW5zcGVjdF9ib2R5X3Rl
eHRfdmlldzsKK0d0a0xpc3RTdG9yZSogaHR0cF9pbnNwZWN0X2hlYWRlcnNfbW9kZWw7CisKIHN0
YXRpYyB2b2lkCiBhY3RpdmF0ZV91cmlfZW50cnlfY2IgKEd0a1dpZGdldCogZW50cnksIGdwb2lu
dGVyIGRhdGEpCiB7CkBAIC0xMDYsNiArMTIyLDM1MSBAQCBnb19mb3J3YXJkX2NiIChHdGtXaWRn
ZXQqIHdpZGdldCwgZ3BvaW50CiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQgKHdlYl92
aWV3KTsKIH0KIAorc3RhdGljIHZvaWQKK3Nob3dfaHR0cF9pbnNwZWN0X3dpbmRvd19jYihHdGtX
aWRnZXQqIHdpZGdldCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBndGtfZGlhbG9nX3J1biAoR1RL
X0RJQUxPRyhodHRwX2luc3BlY3Rfd2luZG93KSk7CisgICAgZ3RrX3dpZGdldF9oaWRlIChodHRw
X2luc3BlY3Rfd2luZG93KTsKK30KKworc3RhdGljIHZvaWQKK25hdmlnYXRpb25fcmVxdWVzdGVk
X2NiIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJL
aXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBHdGtMaXN0
U3RvcmUqIG1vZGVsID0gaHR0cF9pbnNwZWN0X3JlcXVlc3RzX21vZGVsOworICAgIEd0a1RyZWVJ
dGVyIGl0ZXI7CisKKyAgICBnX29iamVjdF9yZWYgKHJlcXVlc3QpOworCisgICAgZ3RrX2xpc3Rf
c3RvcmVfYXBwZW5kKG1vZGVsLCAmaXRlcik7CisgICAgZ3RrX2xpc3Rfc3RvcmVfc2V0KG1vZGVs
LCAmaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgMCwgd2Via2l0X25ldHdvcmtfcmVxdWVz
dF9nZXRfdXJpIChyZXF1ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgMSwgcmVxdWVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgLTEpOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmRfaGVh
ZGVyX3RvX2h0dHBfaW5zcGVjdF9oZWFkZXJzX21vZGVsIChnY2hhcioga2V5LCBnY2hhciogdmFs
dWUsIEd0a1RyZWVTZWxlY3Rpb24qIHNlbGVjdGlvbikKK3sKKyAgICBHdGtMaXN0U3RvcmUqIG1v
ZGVsID0gR1RLX0xJU1RfU1RPUkUoaHR0cF9pbnNwZWN0X2hlYWRlcnNfbW9kZWwpOworICAgIEd0
a1RyZWVJdGVyIGl0ZXI7CisgICAgCisgICAgZ3RrX2xpc3Rfc3RvcmVfYXBwZW5kIChtb2RlbCwg
Jml0ZXIpOworICAgIGd0a19saXN0X3N0b3JlX3NldCAobW9kZWwsICZpdGVyLCAwLCBrZXksIDEs
IHZhbHVlLCAtMSk7Cit9CisKK3N0YXRpYyBjb25zdCBnY2hhciogY2FjaGVfcG9saWN5X3RvX3N0
cmluZyAoV2ViS2l0UmVxQ2FjaGVQb2xpY3kgY2FjaGVfcG9saWN5KQoreworICAgIHN3aXRjaChj
YWNoZV9wb2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBXRUJLSVRfUkVRX0NBQ0hFX1BP
TElDWV9QUk9UT0NPTDoKKyAgICAgICAgICAgIHJldHVybiAiTm9ybWFsIGxvYWQiOworICAgICAg
ICBjYXNlIFdFQktJVF9SRVFfQ0FDSEVfUE9MSUNZX1JFTE9BRF9JR05PUklOR19DQUNIRToKKyAg
ICAgICAgICAgIHJldHVybiAiUmVsb2FkIjsKKyAgICAgICAgY2FzZSBXRUJLSVRfUkVRX0NBQ0hF
X1BPTElDWV9BTExPV19TVEFMRToKKyAgICAgICAgICAgIHJldHVybiAiQWxsb3cgc3RhbGUgZGF0
YSI7CisgICAgICAgIGNhc2UgV0VCS0lUX1JFUV9DQUNIRV9QT0xJQ1lfQ0FDSEVfT05MWToKKyAg
ICAgICAgICAgIHJldHVybiAiVXNlIGNhY2hlLCBvbmx5IjsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiAiTm9uZSI7CisgICAgICAgIH0KK30KKwordm9pZCBodHRwX2luc3Bl
Y3RfY3Vyc29yX2NoYW5nZWRfY2IgKEd0a1RyZWVWaWV3KiB0cmVlX3ZpZXcsIGdwb2ludGVyIGRh
dGEpCit7CisgICAgR3RrVHJlZU1vZGVsKiBtb2RlbCA9IEdUS19UUkVFX01PREVMKGh0dHBfaW5z
cGVjdF9yZXF1ZXN0c19tb2RlbCk7CisgICAgR3RrVHJlZVNlbGVjdGlvbiogc2VsZWN0aW9uID0g
Z3RrX3RyZWVfdmlld19nZXRfc2VsZWN0aW9uICh0cmVlX3ZpZXcpOworICAgIEd0a1RyZWVJdGVy
IGl0ZXI7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3Q7CisKKyAgICBpZiAoZ3Rr
X3RyZWVfc2VsZWN0aW9uX2dldF9zZWxlY3RlZCAoc2VsZWN0aW9uLCAmbW9kZWwsICZpdGVyKSkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2NoYXIqIHRtcDsKKworICAgICAgICAgICAgZ3RrX3Ry
ZWVfbW9kZWxfZ2V0IChtb2RlbCwgJml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEsICZyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGd0a19sYWJlbF9zZXRfdGV4dCAoR1RLX0xBQkVMKGh0
dHBfaW5zcGVjdF9jYWNoZV9wb2xpY3lfbGFiZWwpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWNoZV9wb2xpY3lfdG9fc3RyaW5nICh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dl
dF9jYWNoZV9wb2xpY3kgKHJlcXVlc3QpKSk7CisgICAgICAgICAgICB0bXAgPSBnX3N0cmR1cF9w
cmludGYgKCIlLjJmIiwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdGltZW91dF9pbnRlcnZh
bCAocmVxdWVzdCkpOworICAgICAgICAgICAgZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwo
aHR0cF9pbnNwZWN0X3RpbWVvdXRfaW50ZXJ2YWxfbGFiZWwpLCB0bXApOworICAgICAgICAgICAg
Z19mcmVlICh0bXApOworICAgICAgICAgICAgZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwo
aHR0cF9pbnNwZWN0X21haW5fZG9jdW1lbnRfdXJpX2xhYmVsKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfbWFpbl9kb2N1bWVudF91
cmkgKHJlcXVlc3QpKTsKKyAgICAgICAgICAgIGd0a19sYWJlbF9zZXRfdGV4dCAoR1RLX0xBQkVM
KGh0dHBfaW5zcGVjdF9tZXRob2RfbGFiZWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX21ldGhvZCAocmVxdWVzdCkpOwor
ICAgICAgICAgICAgZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwoaHR0cF9pbnNwZWN0X2Nv
bnRlbnRfdHlwZV9sYWJlbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtp
dF9uZXR3b3JrX3JlcXVlc3RfZ2V0X2h0dHBfY29udGVudF90eXBlIChyZXF1ZXN0KSk7CisgICAg
ICAgICAgICBndGtfbGFiZWxfc2V0X3RleHQgKEdUS19MQUJFTChodHRwX2luc3BlY3RfcmVmZXJl
cl9sYWJlbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9uZXR3b3Jr
X3JlcXVlc3RfZ2V0X2h0dHBfcmVmZXJlciAocmVxdWVzdCkpOworICAgICAgICAgICAgZ3RrX2xh
YmVsX3NldF90ZXh0IChHVEtfTEFCRUwoaHR0cF9pbnNwZWN0X3VzZXJfYWdlbnRfbGFiZWwpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dl
dF9odHRwX3VzZXJfYWdlbnQgKHJlcXVlc3QpKTsKKyAgICAgICAgICAgIGd0a19sYWJlbF9zZXRf
dGV4dCAoR1RLX0xBQkVMKGh0dHBfaW5zcGVjdF9hY2NlcHRfbGFiZWwpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF9odHRwX2FjY2Vw
dCAocmVxdWVzdCkpOworICAgICAgICAgICAgZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwo
aHR0cF9pbnNwZWN0X2FsbG93X2h0dHBfY29va2llc19sYWJlbCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X2FsbG93X2h0dHBfY29v
a2llcyAocmVxdWVzdCkgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKworICAgICAgICAgICAgZ3RrX2xp
c3Rfc3RvcmVfY2xlYXIgKGh0dHBfaW5zcGVjdF9oZWFkZXJzX21vZGVsKTsKKyAgICAgICAgICAg
IGdfaGFzaF90YWJsZV9mb3JlYWNoICgoR0hhc2hUYWJsZSopd2Via2l0X25ldHdvcmtfcmVxdWVz
dF9nZXRfaHR0cF9oZWFkZXJzIChyZXF1ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoR0hGdW5jKWFwcGVuZF9oZWFkZXJfdG9faHR0cF9pbnNwZWN0X2hlYWRlcnNfbW9k
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdwb2ludGVyKXNlbGVjdGlv
bik7CisKKyAgICAgICAgICAgIEd0a1RleHRCdWZmZXIqIHRleHRfYnVmZmVyID0gZ3RrX3RleHRf
dmlld19nZXRfYnVmZmVyIChHVEtfVEVYVF9WSUVXKGh0dHBfaW5zcGVjdF9ib2R5X3RleHRfdmll
dykpOworICAgICAgICAgICAgR3RrVGV4dEl0ZXIgc3RhcnQsIGVuZDsKKyAgICAgICAgICAgIGd0
a190ZXh0X2J1ZmZlcl9nZXRfYm91bmRzICh0ZXh0X2J1ZmZlciwgJnN0YXJ0LCAmZW5kKTsKKyAg
ICAgICAgICAgIGd0a190ZXh0X2J1ZmZlcl9kZWxldGUgKHRleHRfYnVmZmVyLCAmc3RhcnQsICZl
bmQpOworCisgICAgICAgICAgICBjb25zdCBnY2hhciAqYm9keSA9IHdlYmtpdF9uZXR3b3JrX3Jl
cXVlc3RfZ2V0X2JvZHkgKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKGJvZHkpCisgICAgICAg
ICAgICAgICAgZ3RrX3RleHRfYnVmZmVyX3NldF90ZXh0ICh0ZXh0X2J1ZmZlciwgYm9keSwgLTEp
OworICAgICAgICB9Cit9CisKK3N0YXRpYyBHdGtXaWRnZXQqCitjcmVhdGVfaHR0cF9pbnNwZWN0
X3dpbmRvdyAoKQoreworICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX2RpYWxvZ19uZXdfd2l0
aF9idXR0b25zICgiSFRUUCBSZXF1ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1cobWFpbl93aW5kb3cpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9H
X0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19DTE9TRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1JFU1BPTlNFX0RFTEVURV9FVkVO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlVMTCk7CisgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplIChHVEtfV0lORE9XKHdpbmRv
dyksIDgwMCwgNjAwKTsKKworICAgIC8vIGJhc2ljIGxheW91dAorICAgIEd0a1dpZGdldCogdmJv
eCA9IEdUS19ESUFMT0cod2luZG93KS0+dmJveDsKKyAgICBHdGtXaWRnZXQqIHBhbmVkID0gZ3Rr
X2hwYW5lZF9uZXcgKCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YKHZib3gpLCBw
YW5lZCwgVFJVRSwgVFJVRSwgMTIpOworICAgIGd0a193aWRnZXRfc2hvdyhwYW5lZCk7CisKKyAg
ICBHdGtXaWRnZXQqIHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3IChO
VUxMLCBOVUxMKTsKKyAgICBndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3kgKEdUS19TQ1JP
TExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19QT0xJQ1lfQVVUT01BVElDLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RLX1BPTElDWV9BVVRPTUFUSUMpOworICAgIGd0a193aWRnZXRfc2V0X3Np
emVfcmVxdWVzdCAoc2Nyb2xsZWRfd2luZG93LCAyMDAsIC0xKTsKKyAgICBndGtfcGFuZWRfYWRk
MSAoR1RLX1BBTkVEKHBhbmVkKSwgc2Nyb2xsZWRfd2luZG93KTsKKyAgICBndGtfd2lkZ2V0X3No
b3cgKHNjcm9sbGVkX3dpbmRvdyk7CisKKyAgICAvLyB0aGUgdHJlZQorICAgIGh0dHBfaW5zcGVj
dF9yZXF1ZXN0c19saXN0ID0gZ3RrX3RyZWVfdmlld19uZXcgKCk7CisgICAgZ3RrX3RyZWVfdmll
d19zZXRfaGVhZGVyc192aXNpYmxlIChHVEtfVFJFRV9WSUVXKGh0dHBfaW5zcGVjdF9yZXF1ZXN0
c19saXN0KSwgRkFMU0UpOworICAgIGd0a190cmVlX3ZpZXdfYXBwZW5kX2NvbHVtbiAoR1RLX1RS
RUVfVklFVyhodHRwX2luc3BlY3RfcmVxdWVzdHNfbGlzdCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndGtfdHJlZV92aWV3X2NvbHVtbl9uZXdfd2l0aF9hdHRyaWJ1dGVzICgi
VVJJIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19jZWxsX3JlbmRlcmVyX3RleHRfbmV3KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGV4dCIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChodHRwX2luc3BlY3RfcmVxdWVzdHNfbGlzdCwgImN1cnNvci1j
aGFuZ2VkIiwKKyAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soaHR0cF9pbnNwZWN0X2N1
cnNvcl9jaGFuZ2VkX2NiKSwgTlVMTCk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05U
QUlORVIoc2Nyb2xsZWRfd2luZG93KSwgaHR0cF9pbnNwZWN0X3JlcXVlc3RzX2xpc3QpOworICAg
IGd0a193aWRnZXRfc2hvdyAoaHR0cF9pbnNwZWN0X3JlcXVlc3RzX2xpc3QpOworCisgICAgaHR0
cF9pbnNwZWN0X3JlcXVlc3RzX21vZGVsID0gZ3RrX2xpc3Rfc3RvcmVfbmV3ICgyLCBHX1RZUEVf
U1RSSU5HLCBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QsIC0xKTsKKyAgICBndGtfdHJlZV92
aWV3X3NldF9tb2RlbCAoR1RLX1RSRUVfVklFVyhodHRwX2luc3BlY3RfcmVxdWVzdHNfbGlzdCks
IEdUS19UUkVFX01PREVMKGh0dHBfaW5zcGVjdF9yZXF1ZXN0c19tb2RlbCkpOworCisgICAgLy8g
bW9yZSBsYXlvdXRpbmcsIGZvciB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgd2luZG93CisgICAgR3Rr
V2lkZ2V0KiBydmJveCA9IGd0a192Ym94X25ldyAoRkFMU0UsIDIpOworICAgIGd0a19wYW5lZF9h
ZGQyIChHVEtfUEFORUQocGFuZWQpLCBydmJveCk7CisgICAgZ3RrX3dpZGdldF9zaG93IChydmJv
eCk7CisKKyAgICBHdGtXaWRnZXQqIHRhYmxlID0gZ3RrX3RhYmxlX25ldyAoOCwgMiwgRkFMU0Up
OworICAgIGd0a190YWJsZV9zZXRfcm93X3NwYWNpbmdzIChHVEtfVEFCTEUodGFibGUpLCAxMik7
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YKHJ2Ym94KSwgdGFibGUsIEZBTFNFLCBG
QUxTRSwgMCk7CisgICAgZ3RrX3dpZGdldF9zaG93ICh0YWJsZSk7CisKKyAgICAvLyBkZXRhaWxz
IG9mIHRoZSByZXF1ZXN0CisgICAgLy8gQ2FjaGUgUG9saWN5CisgICAgR3RrV2lkZ2V0KiBsYWJl
bCA9IGdfb2JqZWN0X25ldyAoR1RLX1RZUEVfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImxhYmVsIiwgIjxiPkNhY2hlIFBvbGljeTwvYj4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UtbWFya3VwIiwgVFJVRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBndGtfdGFibGVfYXR0YWNo
X2RlZmF1bHRzIChHVEtfVEFCTEUodGFibGUpLCBsYWJlbCwgMCwgMSwgMCwgMSk7CisgICAgZ3Rr
X3dpZGdldF9zaG93KGxhYmVsKTsKKworICAgIGh0dHBfaW5zcGVjdF9jYWNoZV9wb2xpY3lfbGFi
ZWwgPSBnX29iamVjdF9uZXcgKEdUS19UWVBFX0xBQkVMLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCIsICIiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cmFwIiwgVFJVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
KyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzIChHVEtfVEFCTEUodGFibGUpLCBodHRwX2lu
c3BlY3RfY2FjaGVfcG9saWN5X2xhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsIDIsIDAsIDEpOworICAgIGd0a193aWRnZXRfc2hvdyhodHRwX2luc3BlY3RfY2FjaGVfcG9s
aWN5X2xhYmVsKTsKKworICAgIC8vIFRpbWVvdXQgSW50ZXJ2YWwKKyAgICBsYWJlbCA9IGdfb2Jq
ZWN0X25ldyAoR1RLX1RZUEVfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJl
bCIsICI8Yj5UaW1lb3V0IGludGVydmFsPC9iPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ1c2UtbWFya3VwIiwgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cisg
ICAgZ3RrX3RhYmxlX2F0dGFjaF9kZWZhdWx0cyAoR1RLX1RBQkxFKHRhYmxlKSwgbGFiZWwsIDAs
IDEsIDEsIDIpOworICAgIGd0a193aWRnZXRfc2hvdyhsYWJlbCk7CisKKyAgICBodHRwX2luc3Bl
Y3RfdGltZW91dF9pbnRlcnZhbF9sYWJlbCA9IGdfb2JqZWN0X25ldyAoR1RLX1RZUEVfTEFCRUws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJsYWJlbCIsICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAid3JhcCIsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGd0a190YWJsZV9hdHRhY2hf
ZGVmYXVsdHMgKEdUS19UQUJMRSh0YWJsZSksIGh0dHBfaW5zcGVjdF90aW1lb3V0X2ludGVydmFs
X2xhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDIsIDEsIDIpOworICAg
IGd0a193aWRnZXRfc2hvdyhodHRwX2luc3BlY3RfdGltZW91dF9pbnRlcnZhbF9sYWJlbCk7CisK
KyAgICAvLyBNYWluIGRvY3VtZW50IFVSSQorICAgIGxhYmVsID0gZ19vYmplY3RfbmV3IChHVEtf
VFlQRV9MQUJFTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIiwgIjxiPk1haW4g
ZG9jdW1lbnQgVVJJPC9iPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UtbWFya3Vw
IiwgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgZ3RrX3RhYmxl
X2F0dGFjaF9kZWZhdWx0cyAoR1RLX1RBQkxFKHRhYmxlKSwgbGFiZWwsIDAsIDEsIDIsIDMpOwor
ICAgIGd0a193aWRnZXRfc2hvdyhsYWJlbCk7CisKKyAgICBodHRwX2luc3BlY3RfbWFpbl9kb2N1
bWVudF91cmlfbGFiZWwgPSBnX29iamVjdF9uZXcgKEdUS19UWVBFX0xBQkVMLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIiwg
IiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAid3JhcCIsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRz
IChHVEtfVEFCTEUodGFibGUpLCBodHRwX2luc3BlY3RfbWFpbl9kb2N1bWVudF91cmlfbGFiZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMiwgMiwgMyk7CisgICAgZ3RrX3dp
ZGdldF9zaG93KGh0dHBfaW5zcGVjdF9tYWluX2RvY3VtZW50X3VyaV9sYWJlbCk7CisKKyAgICAv
LyBIVFRQIG1ldGhvZAorICAgIGxhYmVsID0gZ19vYmplY3RfbmV3IChHVEtfVFlQRV9MQUJFTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIiwgIjxiPk1ldGhvZDwvYj4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAidXNlLW1hcmt1cCIsIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMgKEdUS19U
QUJMRSh0YWJsZSksIGxhYmVsLCAwLCAxLCAzLCA0KTsKKyAgICBndGtfd2lkZ2V0X3Nob3cobGFi
ZWwpOworCisgICAgaHR0cF9pbnNwZWN0X21ldGhvZF9sYWJlbCA9IGdfb2JqZWN0X25ldyAoR1RL
X1RZUEVfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImxhYmVsIiwgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIndyYXAiLCBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMgKEdUS19UQUJM
RSh0YWJsZSksIGh0dHBfaW5zcGVjdF9tZXRob2RfbGFiZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMSwgMiwgMywgNCk7CisgICAgZ3RrX3dpZGdldF9zaG93KGh0dHBfaW5zcGVj
dF9tZXRob2RfbGFiZWwpOworCisgICAgLy8gSFRUUCBDb250ZW50IFR5cGUKKyAgICBsYWJlbCA9
IGdfb2JqZWN0X25ldyAoR1RLX1RZUEVfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJsYWJlbCIsICI8Yj5Db250ZW50IFR5cGU8L2I+IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgInVzZS1tYXJrdXAiLCBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
KyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzIChHVEtfVEFCTEUodGFibGUpLCBsYWJlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCA0LCA1KTsKKyAgICBndGtfd2lk
Z2V0X3Nob3cobGFiZWwpOworCisgICAgaHR0cF9pbnNwZWN0X2NvbnRlbnRfdHlwZV9sYWJlbCA9
IGdfb2JqZWN0X25ldyAoR1RLX1RZUEVfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIiwgIiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyYXAiLCBUUlVFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAg
IGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMgKEdUS19UQUJMRSh0YWJsZSksIGh0dHBfaW5zcGVj
dF9jb250ZW50X3R5cGVfbGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwg
MiwgNCwgNSk7CisgICAgZ3RrX3dpZGdldF9zaG93KGh0dHBfaW5zcGVjdF9jb250ZW50X3R5cGVf
bGFiZWwpOworCisgICAgLy8gSFRUUCBSZWZlcmVyCisgICAgbGFiZWwgPSBnX29iamVjdF9uZXcg
KEdUS19UWVBFX0xBQkVMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiLCAiPGI+
UmVmZXJlcjwvYj4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlLW1hcmt1cCIsIFRS
VUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGd0a190YWJsZV9hdHRh
Y2hfZGVmYXVsdHMgKEdUS19UQUJMRSh0YWJsZSksIGxhYmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDEsIDUsIDYpOworICAgIGd0a193aWRnZXRfc2hvdyhsYWJlbCk7CisK
KyAgICBodHRwX2luc3BlY3RfcmVmZXJlcl9sYWJlbCA9IGdfb2JqZWN0X25ldyAoR1RLX1RZUEVf
TEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxh
YmVsIiwgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3cmFwIiwgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMKTsKKyAgICBndGtfdGFibGVfYXR0YWNoX2RlZmF1bHRzIChHVEtfVEFCTEUodGFi
bGUpLCBodHRwX2luc3BlY3RfcmVmZXJlcl9sYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLCAyLCA1LCA2KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coaHR0cF9pbnNwZWN0X3Jl
ZmVyZXJfbGFiZWwpOworCisgICAgLy8gSFRUUCBVc2VyIEFnZW50CisgICAgbGFiZWwgPSBnX29i
amVjdF9uZXcgKEdUS19UWVBFX0xBQkVMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibGFi
ZWwiLCAiPGI+VXNlciBBZ2VudDwvYj4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidXNl
LW1hcmt1cCIsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGd0
a190YWJsZV9hdHRhY2hfZGVmYXVsdHMgKEdUS19UQUJMRSh0YWJsZSksIGxhYmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDYsIDcpOworICAgIGd0a193aWRnZXRfc2hv
dyhsYWJlbCk7CisKKyAgICBodHRwX2luc3BlY3RfdXNlcl9hZ2VudF9sYWJlbCA9IGdfb2JqZWN0
X25ldyAoR1RLX1RZUEVfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJsYWJlbCIsICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAid3JhcCIsIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGd0a190YWJsZV9hdHRh
Y2hfZGVmYXVsdHMgKEdUS19UQUJMRSh0YWJsZSksIGh0dHBfaW5zcGVjdF91c2VyX2FnZW50X2xh
YmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDIsIDYsIDcpOworICAgIGd0
a193aWRnZXRfc2hvdyhodHRwX2luc3BlY3RfdXNlcl9hZ2VudF9sYWJlbCk7CisKKyAgICAvLyBI
VFRQIEFjY2VwdAorICAgIGxhYmVsID0gZ19vYmplY3RfbmV3IChHVEtfVFlQRV9MQUJFTCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIiwgIjxiPkFjY2VwdDwvYj4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAidXNlLW1hcmt1cCIsIFRSVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwpOworICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMgKEdUS19UQUJM
RSh0YWJsZSksIGxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDcs
IDgpOworICAgIGd0a193aWRnZXRfc2hvdyhsYWJlbCk7CisKKyAgICBodHRwX2luc3BlY3RfYWNj
ZXB0X2xhYmVsID0gZ19vYmplY3RfbmV3IChHVEtfVFlQRV9MQUJFTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiLCAiIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JhcCIsIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgZ3RrX3Rh
YmxlX2F0dGFjaF9kZWZhdWx0cyAoR1RLX1RBQkxFKHRhYmxlKSwgaHR0cF9pbnNwZWN0X2FjY2Vw
dF9sYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAyLCA3LCA4KTsKKyAg
ICBndGtfd2lkZ2V0X3Nob3coaHR0cF9pbnNwZWN0X2FjY2VwdF9sYWJlbCk7CisKKyAgICAvLyBB
bGxvdyBIVFRQIENvb2tpZXMKKyAgICBsYWJlbCA9IGdfb2JqZWN0X25ldyAoR1RLX1RZUEVfTEFC
RUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCIsICI8Yj5BbGxvdyBIVFRQIENv
b2tpZXM8L2I+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZS1tYXJrdXAiLCBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBndGtfdGFibGVfYXR0YWNo
X2RlZmF1bHRzIChHVEtfVEFCTEUodGFibGUpLCBsYWJlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAxLCA4LCA5KTsKKyAgICBndGtfd2lkZ2V0X3Nob3cobGFiZWwpOworCisg
ICAgaHR0cF9pbnNwZWN0X2FsbG93X2h0dHBfY29va2llc19sYWJlbCA9IGdfb2JqZWN0X25ldyAo
R1RLX1RZUEVfTEFCRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImxhYmVsIiwgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyYXAiLCBUUlVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwor
ICAgIGd0a190YWJsZV9hdHRhY2hfZGVmYXVsdHMgKEdUS19UQUJMRSh0YWJsZSksIGh0dHBfaW5z
cGVjdF9hbGxvd19odHRwX2Nvb2tpZXNfbGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMSwgMiwgNywgOCk7CisgICAgZ3RrX3dpZGdldF9zaG93KGh0dHBfaW5zcGVjdF9hY2Nl
cHRfbGFiZWwpOworCisgICAgLy8gaGVhZGVycyBsaXN0aW5nCisgICAgR3RrV2lkZ2V0KiBleHBh
bmRlciA9IGd0a19leHBhbmRlcl9uZXcgKCJIZWFkZXJzLi4uIik7CisgICAgZ3RrX2JveF9wYWNr
X3N0YXJ0IChHVEtfQk9YKHJ2Ym94KSwgZXhwYW5kZXIsIEZBTFNFLCBGQUxTRSwgMCk7CisgICAg
Z3RrX3dpZGdldF9zaG93IChleHBhbmRlcik7CisKKyAgICBzY3JvbGxlZF93aW5kb3cgPSBndGtf
c2Nyb2xsZWRfd2luZG93X25ldyAoTlVMTCwgTlVMTCk7CisgICAgZ3RrX3Njcm9sbGVkX3dpbmRv
d19zZXRfcG9saWN5IChHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksIEdUS19Q
T0xJQ1lfQVVUT01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CisgICAgZ3RrX3dpZGdldF9z
ZXRfc2l6ZV9yZXF1ZXN0IChzY3JvbGxlZF93aW5kb3csIC0xLCAxODApOworICAgIGd0a19jb250
YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSKGV4cGFuZGVyKSwgc2Nyb2xsZWRfd2luZG93KTsKKyAg
ICBndGtfd2lkZ2V0X3Nob3cgKHNjcm9sbGVkX3dpbmRvdyk7CisKKyAgICBodHRwX2luc3BlY3Rf
aGVhZGVyc19saXN0ID0gZ3RrX3RyZWVfdmlld19uZXcgKCk7CisgICAgZ3RrX3RyZWVfdmlld19h
cHBlbmRfY29sdW1uIChHVEtfVFJFRV9WSUVXKGh0dHBfaW5zcGVjdF9oZWFkZXJzX2xpc3QpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3RyZWVfdmlld19jb2x1bW5fbmV3
X3dpdGhfYXR0cmlidXRlcyAoIkhlYWRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfY2VsbF9y
ZW5kZXJlcl90ZXh0X25ldyAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0IiwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpKTsKKyAgICBndGtfdHJlZV92aWV3X2FwcGVuZF9jb2x1bW4gKEdU
S19UUkVFX1ZJRVcoaHR0cF9pbnNwZWN0X2hlYWRlcnNfbGlzdCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndGtfdHJlZV92aWV3X2NvbHVtbl9uZXdfd2l0aF9hdHRyaWJ1dGVz
ICgiVmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2NlbGxfcmVuZGVyZXJfdGV4dF9uZXcg
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidGV4dCIsIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KSk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIoc2Nyb2xsZWRfd2luZG93
KSwgaHR0cF9pbnNwZWN0X2hlYWRlcnNfbGlzdCk7CisgICAgZ3RrX3dpZGdldF9zaG93IChodHRw
X2luc3BlY3RfaGVhZGVyc19saXN0KTsKKworICAgIGh0dHBfaW5zcGVjdF9oZWFkZXJzX21vZGVs
ID0gZ3RrX2xpc3Rfc3RvcmVfbmV3ICgyLCBHX1RZUEVfU1RSSU5HLCBHX1RZUEVfU1RSSU5HKTsK
KyAgICBndGtfdHJlZV92aWV3X3NldF9tb2RlbCAoR1RLX1RSRUVfVklFVyhodHRwX2luc3BlY3Rf
aGVhZGVyc19saXN0KSwgR1RLX1RSRUVfTU9ERUwoaHR0cF9pbnNwZWN0X2hlYWRlcnNfbW9kZWwp
KTsKKworICAgIC8vIHJlcXVlc3QgYm9keQorICAgIEd0a1dpZGdldCogZnJhbWUgPSBndGtfZnJh
bWVfbmV3ICgiQm9keSIpOworICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWChydmJveCks
IGZyYW1lLCBUUlVFLCBUUlVFLCAwKTsKKyAgICBndGtfd2lkZ2V0X3Nob3cgKGZyYW1lKTsKKwor
ICAgIHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3IChOVUxMLCBOVUxM
KTsKKyAgICBndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3kgKEdUS19TQ1JPTExFRF9XSU5E
T1coc2Nyb2xsZWRfd2luZG93KSwgR1RLX1BPTElDWV9BVVRPTUFUSUMsIEdUS19QT0xJQ1lfQVVU
T01BVElDKTsKKyAgICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUihmcmFtZSksIHNj
cm9sbGVkX3dpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9zaG93IChzY3JvbGxlZF93aW5kb3cpOwor
CisgICAgaHR0cF9pbnNwZWN0X2JvZHlfdGV4dF92aWV3ID0gZ3RrX3RleHRfdmlld19uZXcgKCk7
CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIoc2Nyb2xsZWRfd2luZG93KSwg
aHR0cF9pbnNwZWN0X2JvZHlfdGV4dF92aWV3KTsKKyAgICBndGtfd2lkZ2V0X3Nob3cgKGh0dHBf
aW5zcGVjdF9ib2R5X3RleHRfdmlldyk7CisKKyAgICByZXR1cm4gd2luZG93OworfQorCiBzdGF0
aWMgR3RrV2lkZ2V0KgogY3JlYXRlX2Jyb3dzZXIgKCkKIHsKQEAgLTExOSw2ICs0ODAsNyBAQCBj
cmVhdGVfYnJvd3NlciAoKQogICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmll
dyksICJsb2FkLXByb2dyZXNzLWNoYW5nZWQiLCBHX0NBTExCQUNLIChwcm9ncmVzc19jaGFuZ2Vf
Y2IpLCB3ZWJfdmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3
KSwgImxvYWQtY29tbWl0dGVkIiwgR19DQUxMQkFDSyAobG9hZF9jb21taXRfY2IpLCB3ZWJfdmll
dyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3KSwgImhvdmVyaW5n
LW92ZXItbGluayIsIEdfQ0FMTEJBQ0sgKGxpbmtfaG92ZXJfY2IpLCB3ZWJfdmlldyk7CisgICAg
Z19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3KSwgIm5hdmlnYXRpb24tcmVxdWVz
dGVkIiwgR19DQUxMQkFDSyAobmF2aWdhdGlvbl9yZXF1ZXN0ZWRfY2IpLCB3ZWJfdmlldyk7CiAK
ICAgICByZXR1cm4gc2Nyb2xsZWRfd2luZG93OwogfQpAQCAtMTUyLDYgKzUxNCwxMSBAQCBjcmVh
dGVfdG9vbGJhciAoKQogICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChpdGVtKSwgImNs
aWNrZWQiLCBHX0NBTExCQUNLIChnb19mb3J3YXJkX2NiKSwgTlVMTCk7CiAgICAgZ3RrX3Rvb2xi
YXJfaW5zZXJ0IChHVEtfVE9PTEJBUiAodG9vbGJhciksIGl0ZW0sIC0xKTsKIAorICAgIC8qIFRo
ZSBodHRwIGluc3BlY3QgYnV0dG9uICovCisgICAgaXRlbSA9IGd0a190b29sX2J1dHRvbl9uZXdf
ZnJvbV9zdG9jayAoR1RLX1NUT0NLX05FVFdPUkspOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdf
T0JKRUNUIChpdGVtKSwgImNsaWNrZWQiLCBHX0NBTExCQUNLIChzaG93X2h0dHBfaW5zcGVjdF93
aW5kb3dfY2IpLCBOVUxMKTsKKyAgICBndGtfdG9vbGJhcl9pbnNlcnQgKEdUS19UT09MQkFSICh0
b29sYmFyKSwgaXRlbSwgLTEpOworCiAgICAgLyogVGhlIFVSTCBlbnRyeSAqLwogICAgIGl0ZW0g
PSBndGtfdG9vbF9pdGVtX25ldyAoKTsKICAgICBndGtfdG9vbF9pdGVtX3NldF9leHBhbmQgKGl0
ZW0sIFRSVUUpOwpAQCAtMTkyLDYgKzU1OSw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCiAgICAgbWFpbl93aW5kb3cgPSBjcmVhdGVfd2luZG93ICgpOwogICAgIGd0a19jb250YWlu
ZXJfYWRkIChHVEtfQ09OVEFJTkVSIChtYWluX3dpbmRvdyksIHZib3gpOwogCisgICAgaHR0cF9p
bnNwZWN0X3dpbmRvdyA9IGNyZWF0ZV9odHRwX2luc3BlY3Rfd2luZG93ICgpOworCiAgICAgZ2No
YXIqIHVyaSA9IChnY2hhciopIChhcmdjID4gMSA/IGFyZ3ZbMV0gOiAiaHR0cDovL3d3dy5nb29n
bGUuY29tLyIpOwogICAgIHdlYmtpdF93ZWJfdmlld19vcGVuICh3ZWJfdmlldywgdXJpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21464</attachid>
            <date>2008-06-02 11:46:24 -0700</date>
            <delta_ts>2008-06-24 06:20:15 -0700</delta_ts>
            <desc>Correct proposed patch</desc>
            <filename>new-window-stuff.diff</filename>
            <type>text/plain</type>
            <size>59846</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0MTQy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMDUt
MjYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlBZGRlZCB0aGUgbmV3IFdlYktpdEd0ayBmaWxl
cyB0byBiZSBidWlsdDoKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJl
cy57Y3BwLGh9LAorCXdlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcCBhbmQgd2Via2l0d2Vidmlld3Jl
cXVlc3QuaAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDUtMjUgIEphbiBN
aWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWxwIFRva2VyLgpJbmRleDogR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDM0MTI3KQorKysgR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5OCw2ICsyOTgsOCBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAor
CVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAorCVdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAogCiB3ZWJraXRndGtfYnVpbHRfc291cmNlcyArPSBcCkBAIC0zMjEsNiAr
MzIzLDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCisJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcCBcCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMzQxNDIpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDA4LTA1LTI2ICBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMw
CisJQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cgYW5kIGZyaWVuZHMgbmVlZCB0byBiZSBpbXBs
ZW1lbnRlZAorCQorCUNvZGUgZnJvbSBHdXN0YXZvIE5vcm9uaGEgYW5kIE1hcmNvIEJhcmlzaW9u
ZQorCTxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPiBpbiB0aGlzIGNoYW5nZSBzZXQu
CisKKwlJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRlcmZhY2VzIG5lZWRlZCB0
byBoYXZlIG5ldworCXdpbmRvdyBjcmVhdGlvbiBmdW5jdGlvbmluZyBhbmQgZXhwb3NlZCB0byBj
bGllbnQgY29kZS4gV2UKKwlpbXBsZW1lbnRlZCBhIG1pcnJvciBHT2JqZWN0IHRvIHRoZSBXaW5k
b3dGZWF0dXJlcyBvYmplY3QgcHJvdmlkZWQKKwlieSBXZWJDb3JlLiBBIG1pcnJvciBmb3IgRnJh
bWVMb2FkZXJSZXF1ZXN0IHdhcyBhbHNvIGNyZWF0ZWQ6CisJV2ViS2l0V2ViVmlld1JlcXVlc3Qu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNW
aXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50OjpzZXRSZXNpemFibGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXQt
bWFyc2hhbC5saXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjopOgorICAgICAg
ICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
Z2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6Ondl
YmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2Vi
Vmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9pbml0KToKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25ldHdvcmtfcmVxdWVz
dCk6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3Zp
ZXdfcmVxdWVzdF9zZXRfbmV0d29ya19yZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3
UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lKToKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X3NldF9uYW1lKToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3dfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktp
dFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3dpbmRv
d19mZWF0dXJlcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVk
LgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6
OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19n
ZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2Nv
cmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4KKwogMjAwOC0wNS0yNSAgQWxwIFRva2VyICA8
YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrby4KSW5kZXg6IFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDM0
MTI3KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IENo
cmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIwLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKQEAgLTI3LDYgKzI5LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCkBA
IC02MSw5ICs2NCwzMiBAQCBGbG9hdFJlY3QgQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAg
ICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlm
ICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgaWYg
KHdpbmRvdykgeworICAgICAgICBJbnRSZWN0IGludHJlY3QgPSBJbnRSZWN0KHJlY3QpOworICAg
ICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgICAgIGdfb2Jq
ZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAgICAg
ICAieCIsIGludHJlY3QueCgpLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICAg
ICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICJ5IiwgaW50cmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
KworICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgIndpZHRoIiwgaW50cmVjdC53aWR0aCgpLAorICAgICAgICAgICAg
ICAgICAgICAgTlVMTCk7CisKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiLCBpbnRyZWN0LmhlaWdo
dCgpLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgfQogfQogCiBGbG9hdFJlY3Qg
Q2hyb21lQ2xpZW50OjpwYWdlUmVjdCgpCkBAIC05NiwyNSArMTIyLDQxIEBAIHZvaWQgQ2hyb21l
Q2xpZW50Ojp1bmZvY3VzKCkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RLX1dJTkRP
Vyh3aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgY29yZUZlYXR1cmVzKQogewotICAgIGlmIChmZWF0dXJlcy5kaWFsb2cpIHsKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCogbmV0d29ya1Jl
cXVlc3QgPSAwOworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5KCkpCisgICAgICAg
IG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcoZnJhbWVMb2FkUmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29yZUZlYXR1cmVzKTsK
KworICAgIGdwb2ludGVyIHdlYlZpZXdSZXF1ZXN0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9WSUVXX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm5hbWUiLCBmcmFtZUxvYWRSZXF1ZXN0LmZyYW1lTmFtZSgpLnV0ZjgoKS5kYXRhKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldHdvcmstcmVx
dWVzdCIsIG5ldHdvcmtSZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ3aW5kb3ctZmVhdHVyZXMiLCB3ZWJXaW5kb3dGZWF0dXJlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSAwOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcs
ICJjcmVhdGUtd2ViLXZpZXciLCBraXQoZnJhbWUpLCB3ZWJWaWV3UmVxdWVzdCwgJndlYlZpZXcp
OworCisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qod2ViVmlld1JlcXVlc3QpKTsKKyAgICBn
X29iamVjdF91bnJlZihHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcykpOworICAgIGlmIChuZXR3
b3JrUmVxdWVzdCkKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1QobmV0d29ya1JlcXVl
c3QpKTsKKworICAgIGlmICghd2ViVmlldykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLyogVE9ETzogRnJhbWVMb2FkUmVxdWVzdCBpcyBub3QgdXNlZCAqLwotICAg
ICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9DTEFTUyht
X3dlYlZpZXcpLT5jcmVhdGVfd2ViX3ZpZXcobV93ZWJWaWV3KTsKLSAgICAgICAgaWYgKCF3ZWJW
aWV3KQotICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXZhdGVEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKHdlYlZpZXcpOwot
ICAgICAgICByZXR1cm4gcHJpdmF0ZURhdGEtPmNvcmVQYWdlOwotICAgIH0KKyAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUo
d2ViVmlldyk7CisgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKIH0KIAogdm9pZCBD
aHJvbWVDbGllbnQ6OnNob3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFt
X3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdF93ZWJfdmlld19zaG93KG1f
d2ViVmlldyk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkBAIC0xMjgs
NTIgKzE3MCwxMDEgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJv
b2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAg
Z19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRvb2xiYXItdmlzaWJs
ZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNp
YmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5k
b3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19v
YmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRvb2xiYXItdmlzaWJsZSIs
ICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVD
bGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRT
dGF0dXNiYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRv
d19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldp
bmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAK
IGJvb2wgQ2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0Zl
YXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsK
KyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldp
bmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAg
IHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zp
c2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZShib29s
IHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRv
d0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3
KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzY3Jv
bGxiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6
c2Nyb2xsYmFyc1Zpc2libGUoKSB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJf
dmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJs
ZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzY3Jv
bGxiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0K
IAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKGJvb2wpCit2b2lkIENocm9t
ZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmll
d19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19P
QkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAibWVudWJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVM
TCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJX
aW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2Vi
Vmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVD
VCh3ZWJXaW5kb3dGZWF0dXJlcyksICJtZW51YmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7
CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRSZXNpemFi
bGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUoYm9vbCByZXNpemFibGUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVz
ID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAg
IGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJyZXNpemFibGUiLCBy
ZXNpemFibGUsIE5VTEwpOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29u
KCkKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCShyZXZpc2lvbiAzNDEyNykKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKICNp
bmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2Vidmlld3JlcXVlc3Qu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUu
aCIKIApAQCAtMjU5LDcgKzI2MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG8KICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBJIHRoaW5rIFF0IHZlcnNp
b24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3aGVuIHdlCiAgICAgLy8gaGF2
ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVlZCB0byBkbyB0aGUgc2FtZQot
ICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25v
cmUpOworICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lVc2UpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKQEAgLTU2Miw3ICs1NjMsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZpcnN0CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hv
dygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyh3
ZWJWaWV3KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2so
KQpAQCAtNzI5LDggKzczMSwxNyBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBh
Z2UoKSBjCiAKIEZyYW1lKiBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdwb2ludGVyIHdl
YlZpZXdSZXF1ZXN0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1Qs
IE5VTEwpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOworICAgIFdlYktpdFdlYlZpZXcqIG5ld1dlYlZpZXcgPSAwOworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwgd2ViVmll
d1JlcXVlc3QsICZuZXdXZWJWaWV3KTsKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVDVCh3ZWJW
aWV3UmVxdWVzdCkpOworCisgICAgaWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURShuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gY29yZShwcml2YXRlRGF0YS0+
bWFpbkZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVU
b0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikKSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LW1hcnNoYWwubGlzdAkocmV2aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsMTAgQEAg
Vk9JRDpPQkpFQ1QsQk9PTEVBTgogVk9JRDpPQkpFQ1QsU1RSSU5HCiBWT0lEOk9CSkVDVCxPQkpF
Q1QKIFZPSUQ6T0JKRUNULFBPSU5URVIsUE9JTlRFUgorQk9PTEVBTjpWT0lECiBCT09MRUFOOlNU
UklORyxJTlQsU1RSSU5HCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNU
UklORyxCT09MRUFOCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcsU1RSSU5HLFNUUklORwogSU5UOk9C
SkVDVCxPQkpFQ1QKK09CSkVDVDpPQkpFQ1QsT0JKRUNUCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkocmV2
aXNpb24gMzQxMjcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVz
dC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dm
ZWF0dXJlcy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRl
bS5oPgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAkocmV2aXNpb24gMzQxMjcpCisr
KyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDYgKzU1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xhc3MgV2ViSwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
V2ViS2l0V2ViVmlld0NsYXNzOwogCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCShy
ZXZpc2lvbiAzNDEyNykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2
aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRv
d2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5o
PgogCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5o
PgogCkBAIC02Nyw2ICs2OSw3IEBAIGV4dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2Vi
Vmlld1ByaXZhdGUgewogICAgICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAg
V2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1h
aW5GcmFtZTsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudDsKQEAgLTEwOCw2ICsxMTEsOSBAQCBleHRlcm4gIkMiIHsKICAgICBXZWJLaXRXZWJIaXN0
b3J5SXRlbSoKICAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0o
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAorICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3ZpZXdf
c2hvdyAoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CisKICAgICAvLyBGSVhNRTogTW92ZSB0aGVz
ZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4K
IAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpAQCAtMTIxLDYgKzEyNywxMiBAQCBleHRlcm4gIkMi
IHsKIAogICAgIFdFQktJVF9BUEkgZ2NoYXIqCiAgICAgd2Via2l0X3dlYl92aWV3X2dldF9zZWxl
Y3RlZF90ZXh0IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisKKyAgICBXRUJLSVRfQVBJIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKgorICAgIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25l
d19mcm9tX2NvcmVfZmVhdHVyZXMgKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiBmZWF0
dXJlcyk7CisKKyAgICBXRUJLSVRfQVBJIGdib29sZWFuCisgICAgd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfZXF1YWwoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMSwgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMik7CiB9CiAKICNlbmRpZgpJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDM0MTI3KQorKysgV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDggSmFuIEFsb256byA8am1hbG9uem9AdW5wbHVnZ2FibGUuY29tPgorICogIENvcHly
aWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTY5LDYgKzcw
LDggQEAgZXh0ZXJuICJDIiB7CiBlbnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAg
IE5BVklHQVRJT05fUkVRVUVTVEVELAorICAgIENSRUFURV9XRUJfVklFVywKKyAgICBTSE9XX1dF
Ql9WSUVXLAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwKICAgICBMT0FEX1NUQVJURUQsCiAg
ICAgTE9BRF9DT01NSVRURUQsCkBAIC05OCw2ICsxMDEsNyBAQCBlbnVtIHsKICAgICBQUk9QX1BB
U1RFX1RBUkdFVF9MSVNULAogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9TRVRUSU5HUywK
KyAgICBQUk9QX1dJTkRPV19GRUFUVVJFUywKICAgICBQUk9QX1RSQU5TUEFSRU5UCiB9OwogCkBA
IC0yMzEsNiArMjM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9wcm9wZXJ0
eQogICAgIGNhc2UgUFJPUF9TRVRUSU5HUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZh
bHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRf
b2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3
KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVu
dCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjUwLDYgKzI1Nyw5IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJvcGVydHkKICAgICBjYXNlIFBST1BfU0VUVElOR1M6
CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3Mod2ViVmlldywgV0VCS0lUX1dF
Ql9TRVRUSU5HUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9XSU5ET1dfRkVBVFVSRVM6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19z
ZXRfd2luZG93X2ZlYXR1cmVzKHdlYlZpZXcsIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdf
dmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X1RSQU5TUEFSRU5UOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3RyYW5zcGFyZW50KHdl
YlZpZXcsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC01
NDQsMTIgKzU1NCwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2Zv
CiAgICAgICAgICgqY2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0RhdGEpOwogfQogCi1zdGF0
aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdl
YktpdFdlYlZpZXcqKQorc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFs
X2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViVmlld1JlcXVlc3QqKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG93X3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQor
eworICAgIHJldHVybiBGQUxTRTsKK30KKwogc3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25z
ZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTcwNyw2ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfZmluYWxpemUoR09iCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPnZlcnRp
Y2FsQWRqdXN0bWVudCk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFja0ZvcndhcmRMaXN0
KTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CisgICAgZ19vYmplY3Rf
dW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
Pm1haW5GcmFtZSk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsKICAgICBn
dGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90YXJnZXRfbGlzdCk7CkBAIC03MTYsNiAr
NzMxLDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2IKICAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVz
dF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNj
dSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKK3sKKyAgZ2Jv
b2xlYW4gY29udGludWVFbWlzc2lvbiA9IFRSVUU7CisgIGdwb2ludGVyIG5ld1dlYlZpZXcgPSBn
X3ZhbHVlX2dldF9vYmplY3QoaGFuZGxlclJldHVybik7CisgIGdfdmFsdWVfc2V0X29iamVjdChy
ZXR1cm5BY2N1LCBuZXdXZWJWaWV3KTsKKworICBpZiAobmV3V2ViVmlldykKKyAgICAgIGNvbnRp
bnVlRW1pc3Npb24gPSBGQUxTRTsKKworICByZXR1cm4gY29udGludWVFbWlzc2lvbjsKK30KKwog
c3RhdGljIGdib29sZWFuIHdlYmtpdF9uYXZpZ2F0aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFs
SW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSog
aGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVtbXkpCiB7CiAgIGdib29sZWFuIGNvbnRpbnVlRW1p
c3Npb24gPSBUUlVFOwpAQCAtNzU4LDYgKzc4NSw1OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdChXCiAgICAgICogU2lnbmFscwogICAgICAqLwogCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzo6Y3JlYXRlLXdlYi12aWV3OgorICAgICAqIEB3ZWJfdmlldzog
dGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6
IHRoZSAjV2ViS2l0V2ViRnJhbWUKKyAgICAgKiBAd2ViX3ZpZXdfcmVxdWVzdDogYSAjV2ViS2l0
V2ViVmlld1JlcXVlc3QKKyAgICAgKiBAcmV0dXJuOiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0
V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjcmVhdGlv
biBvZiBhIG5ldyB3aW5kb3cgaXMgcmVxdWVzdGVkLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlz
IGhhbmRsZWQgdGhlIHNpZ25hbCBoYW5kbGVyIHNob3VsZCByZXR1cm4gdGhlCisgICAgICogbmV3
bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldy4gVGhlIG5ldyAjV2ViS2l0V2ViVmlldyBzaG91bGQg
bm90IGJlCisgICAgICogZGlzcGxheWVkIHRvIHRoZSB1c2VyIHVudGlsIHRoZSAic2hvdy13ZWIt
dmlldyIgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAgICoKKyAgICAgKiBUaGUgc2lnbmFsIGhhbmRs
ZXJzIHNob3VsZCBub3QgdHJ5IHRvIGRlYWwgd2l0aCB0aGUgcmVmZXJlbmNlCisgICAgICogY291
bnQgZm9yIHRoZSBuZXcgI1dlYktpdFdlYlZpZXcuIFRoZSB3aWRnZXQgdG8gd2hpY2ggdGhlCisg
ICAgICogd2lkZ2V0IGlzIGFkZGVkIHdpbGwgaGFuZGxlIHRoYXQuCisgICAgICoKKyAgICAgKiBA
d2ViX3ZpZXdfcmVxdWVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3ICNXZWJL
aXRXZWJWaWV3LAorICAgICAqIGJ1dCBub3RlIHRoYXQgeW91IGNhbiBmcmVlbHkgaWdub3JlIGFu
eSBwYXJ0aWN1bGFyIHJlcXVlc3QgbGlrZSB0aGUKKyAgICAgKiBzaXplIG9mIHRoZSBuZXcgd2lu
ZG93IG9yIHdoYXQgYmFycyBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoZSBuZXcKKyAgICAgKiB3
aW5kb3cuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ1JFQVRFX1dFQl9W
SUVXXSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShH
X1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRlX3dlYl92aWV3KSwKKyAgICAgICAg
ICAgIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAg
TlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNUX09CSkVDVCwK
KyAgICAgICAgICAgIEdfVFlQRV9PQkpFQ1QsIDIsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9X
RUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNUKTsKKwor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNob3ctd2ViLXZpZXc6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAq
IEByZXR1cm46ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2Vk
IGZvciB0aGUgZXZlbnQsICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIKKyAg
ICAgKgorICAgICAqIEVtaXR0ZWQgYWZ0ZXIgImNyZWF0ZS13ZWItdmlldyIgd2hlbiB0aGUgbmV3
ICNXZWJLaXRXZWJWaWV3IHNob3VsZAorICAgICAqIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4K
KyAgICAgKgorICAgICAqIElmIHRoZXJlIGlzbid0IGFueSBoYW5kbGVyIGZvciB0aGlzIHNpZ25h
bCBvciBpZiB0aGV5IHJldHVybiAlRkFMU0UsCisgICAgICogdGhlbiB0aGUgZGVmYXVsdCBhY3Rp
b24gaXMgdG8gY2FsbCBndGtfd2lkZ2V0X3Nob3dfYWxsKCkgb24gdGhlCisgICAgICogdG9wbGV2
ZWwgd2luZG93IGNvbnRhaW5pbmcgQHdlYl92aWV3LgorICAgICAqLworICAgIHdlYmtpdF93ZWJf
dmlld19zaWduYWxzW1NIT1dfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3KCJzaG93LXdlYi12aWV3
IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCksCisgICAgICAgICAgICBHX1NU
UlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgc2hvd193ZWJfdmlldyksCisgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxM
LAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAg
IFdFQktJVF9UWVBFX1dFQl9WSUVXLCAwKTsKKwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxz
W05BVklHQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmF2aWdhdGlvbi1yZXF1ZXN0
ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAg
ICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9O
KSwKQEAgLTEwODUsNiArMTE2NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFcKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAg
ICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNzLT5zaG93X3dlYl92aWV3ID0g
d2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5h
dmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1
ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRf
d2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5j
aG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTE4NCw2
ICsxMjY1LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1RZUEVfV0VCX1NFVFRJTkdTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1dJTkRPV19G
RUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19vYmplY3QoIndpbmRvdy1mZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaW5kb3cgRmVhdHVyZXMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW4gYXNzb2Np
YXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9X
SU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKwogICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfRURJVEFCTEUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZWRp
dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkVkaXRhYmxlIiwKQEAgLTEzODMsNiArMTQ3MSw4IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19pbml0KFdlYktpdFcKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3Nl
dHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1j
aGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxM
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19D
QUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAg
ICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25l
dygpOwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTEzOTIs
NiArMTQ4MiwyMCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAgICBy
ZXR1cm4gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIH0KIAordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2hv
dyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IEZBTFNF
OworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0hP
V19XRUJfVklFV10sIDAsICZpc0hhbmRsZWQpOworICAgIGlmIChpc0hhbmRsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHRvcGxl
dmVsKTsKK30KKworCiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQogewogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKQEAgLTE0MTUsNiAr
MTUxOSw0OCBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl92aWV3X2dldF9zCiB9CiAK
IC8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2luZG93X2ZlYXR1cmVzOiBhICNXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcworICoKKyAqIFRoaXMgd2lsbCBzZXQgaG93IHRoZSB3aW5kb3cgY29udGFpbmlu
ZyB0aGUgI1dlYktpdFdlYlZpZXcgc2hvdWxkCisgKiBsb29rIGFuZCBiZWhhdmUuIEFwcGxpY2F0
aW9ucyBtYXkgd2FudCB0byBtb25pdG9yIHRoaXMgcHJvcGVydHkgYW5kCisgKiBhcHBseSB0aGUg
c2V0dGluZ3MgaXQgY2FycmllcyB0byB0aGUgd2luZG93IGhvbGRpbmcgdGhlIHJlbGV2YW50Cisg
KiAjV2ViS2l0V2ViVmlldy4KKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19m
ZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyog
d2ViV2luZG93RmVhdHVyZXMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9XSU5E
T1dfRkVBVFVSRVMod2ViV2luZG93RmVhdHVyZXMpKTsKKyAgICAKKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBpZih3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19lcXVhbChwcml2LT53ZWJXaW5kb3dGZWF0dXJlcywgd2ViV2luZG93RmVhdHVy
ZXMpKQorICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93
RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X3JlZih3ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgcHJp
di0+d2ViV2luZG93RmVhdHVyZXMgPSB3ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZpZXc6IGEgI1dlYktp
dFdlYlZpZXcKKyAqCisgKiBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiAjV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMgaGVsZCBieSB0aGUgZ2l2ZW4KKyAqICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJl
dHVybiB2YWx1ZTogdGhlICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICovCitXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT53ZWJXaW5kb3dGZWF0dXJlczsK
K30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21haW50YWluc19iYWNrX2ZvcndhcmRf
bGlzdDoKICAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBAZmxhZzogdG8gdGVsbCB0
aGUgdmlldyB0byBtYWludGFpbiBhIGJhY2sgb3IgZm9yd2FyZCBsaXN0CkluZGV4OiBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCShyZXZpc2lvbiAzNDEyNykKKysrIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuaD4KIAogR19CRUdJ
Tl9ERUNMUwogCkBAIC02MywxMSArNjQsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7
CiAKICAgICAvKgogICAgICAqIGRlZmF1bHQgaGFuZGxlci92aXJ0dWFsIG1ldGhvZHMKLSAgICAg
KiBESVNDVVNTOiBjcmVhdGVfd2ViX3ZpZXcgbmVlZHMgYSByZXF1ZXN0IGFuZCBzaG91bGQgd2Ug
bWFrZSB0aGlzIGEgc2lnbmFsIHdpdGggZGVmYXVsdCBoYW5kbGVyPyB0aGlzIHdvdWxkCi0gICAg
ICogcmVxdWlyZSBzb21lb25lIGRvaW5nIGEgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1l
Ci0gICAgICogV2ViVUlEZWxlZ2F0ZSBoYXMgbm90aGluZyBmb3IgY3JlYXRlX2ZyYW1lLCBXZWJQ
b2xpY3lEZWxlZ2F0ZSBhcyB3ZWxsLi4uCiAgICAgICovCi0gICAgV2ViS2l0V2ViVmlldyogICgq
Y3JlYXRlX3dlYl92aWV3KSAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKyAgICBXZWJLaXRX
ZWJWaWV3KiAoKmNyZWF0ZV93ZWJfdmlldykgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJL
aXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gKCpzaG93X3dlYl92aWV3
KSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiAgICAgLyoKICAgICAgKiBUT0RPOiBGSVhN
RTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJfUHJvdG9j
b2wgaW5zdGVhZApAQCAtMjA1LDYgKzIwNCwxMiBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRp
bmdzIChXZWJLaXRXZWJWCiBXRUJLSVRfQVBJIFdlYktpdFdlYlNldHRpbmdzKgogd2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzIChXZWJLaXRXZWJW
aWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcyk7
CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqCit3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3dpbmRvd19mZWF0dXJlcyAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworCiBXRUJLSVRf
T0JTT0xFVEVfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2t3YXJkIChX
ZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXdyZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3cmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3cmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIndlYmtpdHdlYnZpZXdyZXF1ZXN0LmgiCisjaW5jbHVkZSAid2Via2l0
cHJpdmF0ZS5oIgorCitleHRlcm4gIkMiIHsKKworc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVxdWVz
dFByaXZhdGUgeworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdDsKKyAg
ICBnY2hhciogbmFtZTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXM7Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJfVklFV19SRVFVRVNUX0dFVF9QUklWQVRF
KG9iaikoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
VklFV19SRVFVRVNULCBXZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGUpKQorCitlbnVtICB7Cisg
ICAgUFJPUF8wLAorCisgICAgUFJPUF9ORVRXT1JLX1JFUVVFU1QsCisgICAgUFJPUF9OQU1FLAor
ICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTCit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlZp
ZXdSZXF1ZXN0LCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25ldHdvcmtfcmVxdWVzdChXZWJL
aXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmtS
ZXF1ZXN0KTsKKworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCA9
IFdFQktJVF9XRUJfVklFV19SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJ
ZCkgeworICAgIGNhc2UgUFJPUF9ORVRXT1JLX1JFUVVFU1Q6CisgICAgICAgIGdfdmFsdWVfc2V0
X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25ldHdvcmtfcmVxdWVz
dChyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9OQU1FOgorICAgICAg
ICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9u
YW1lKHJlcXVlc3QpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFU
VVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdf
cmVxdWVzdF9nZXRfd2luZG93X2ZlYXR1cmVzKHJlcXVlc3QpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBzcGVjKQoreworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1dF
Ql9WSUVXX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIHN3aXRjaChwcm9wZXJ0eUlkKSB7CisgICAg
Y2FzZSBQUk9QX05FVFdPUktfUkVRVUVTVDoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3JlcXVl
c3Rfc2V0X25ldHdvcmtfcmVxdWVzdChyZXF1ZXN0LCBzdGF0aWNfY2FzdDxXZWJLaXROZXR3b3Jr
UmVxdWVzdCo+KGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX05BTUU6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9u
YW1lKHJlcXVlc3QsIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdf
cmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1cmVzKHJlcXVlc3QsIHN0YXRpY19jYXN0PFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKj4oZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfaW5pdChXZWJLaXRXZWJW
aWV3UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXF1ZXN0LT5wcml2ID0gV0VCS0lUX1dFQl9W
SUVXX1JFUVVFU1RfR0VUX1BSSVZBVEUocmVxdWVzdCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworICAgIHByaXYtPm5hbWUgPSBnX3N0
cmR1cCgiIik7CisgICAgcHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19uZXcoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVl
c3RfZmluYWxpemUoR09iamVjdCogb2JqKQoreworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0KiBy
ZXF1ZXN0ID0gV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1Qob2JqKTsKKyAgICBXZWJLaXRXZWJWaWV3
UmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworCisgICAgaWYgKHJlcXVlc3Qt
PnByaXYtPm5ldHdvcmtSZXF1ZXN0KQorICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT5uZXR3
b3JrUmVxdWVzdCk7CisKKyAgICBpZiAocmVxdWVzdC0+cHJpdi0+d2ViV2luZG93RmVhdHVyZXMp
CisgICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzKTsKKworICAg
IGdfZnJlZShwcml2LT5uYW1lKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmll
d19yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iaik7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld1JlcXVlc3RD
bGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworCisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RD
bGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3Byb3BlcnR5
OworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZmlu
YWxpemU7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNz
LCBQUk9QX05FVFdPUktfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19vYmplY3QoIm5ldHdvcmstcmVxdWVzdCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXR3b3JrIHJlcXVl
c3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVGhlIG5ldHdvcmsgcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xh
c3MsIFBST1BfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoIm5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTmV3IHdpbmRvdyBuYW1lIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lIG9mIHRo
ZSBuZXcgd2luZG93IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRV
UkVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29i
amVjdCgid2luZG93LWZlYXR1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIldpbmRvdyBmZWF0dXJlcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3cgdGhlIG5ldyB3
aW5kb3cgc2hvdWxkIGxvb2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVx
dWVzdENsYXNzLCBzaXplb2YoV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlKSk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25ldHdvcmtfcmVxdWVzdDoKKyAqIEBy
ZXF1ZXN0OiBhICNXZWJLaXROZXR3b3JrUmVxdWVzdAorICoKKyAqIFJldHVybnMgdGhlICNXZWJL
aXROZXR3b3JrUmVxdWVzdCBmb3IgdGhlIHBhZ2UgdGhhdCB3aWxsIGJlIHNob3duIGluIHRoZQor
ICogbmV3ICNXZWJLaXRXZWJWaWV3IG9yICVOVUxMIGlmIHRoZSBuYXZpZ2F0aW9uIHdpbGwgaGFw
cGVuIGluIGEgbGF0ZXIgc3RhZ2UuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdE5l
dHdvcmtSZXF1ZXN0IG9yIE5VTEwKKyAqLworV2ViS2l0TmV0d29ya1JlcXVlc3QqIHdlYmtpdF93
ZWJfdmlld19yZXF1ZXN0X2dldF9uZXR3b3JrX3JlcXVlc3QoV2ViS2l0V2ViVmlld1JlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVX
X1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPm5l
dHdvcmtSZXF1ZXN0OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9z
ZXRfbmV0d29ya19yZXF1ZXN0KFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBXZWJLaXRO
ZXR3b3JrUmVxdWVzdCogbmV0d29ya1JlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVdfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFp
bCghbmV0d29ya1JlcXVlc3QgfHwgV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChuZXR3b3JrUmVx
dWVzdCkpOworCisgICAgaWYgKHJlcXVlc3QtPnByaXYtPm5ldHdvcmtSZXF1ZXN0ID09IG5ldHdv
cmtSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocmVxdWVzdC0+cHJpdi0+bmV0
d29ya1JlcXVlc3QpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3QtPnByaXYtPm5ldHdv
cmtSZXF1ZXN0KTsKKyAgICByZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCA9IG5ldHdvcmtS
ZXF1ZXN0OworICAgIGdfb2JqZWN0X3JlZihyZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCk7
CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHJlcXVlc3QpLCAibmV0d29yay1yZXF1ZXN0
Iik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25hbWU6CisgKiBA
cmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqCisgKiBSZXR1cm5zIHRoZSBuYW1l
IGZvciB0aGUgbmV3IHdlYiB2aWV3LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlIG5hbWUgb2Yg
dGhlIG5ldyB3ZWIgdmlldworICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3X3JlcXVl
c3RfZ2V0X25hbWUoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JFUVVFU1QocmVxdWVzdCksIE5VTEwp
OworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPm5hbWU7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25hbWU6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29y
a1JlcXVlc3QKKyAqIEBuYW1lOiB0aGUgd2ViIHZpZXcgbmFtZQorICoKKyAqIFNldHMgdGhlIG5h
bWUgZm9yIHRoZSBuZXcgI1dlYktpdFdlYlZpZXcuCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3
X3JlcXVlc3Rfc2V0X25hbWUoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdj
aGFyKiBuYW1lKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JF
UVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwobmFtZSk7CisKKyAgICBpZiAo
IXN0cmNtcChyZXF1ZXN0LT5wcml2LT5uYW1lLCBuYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZ19mcmVlKHJlcXVlc3QtPnByaXYtPm5hbWUpOworICAgIHJlcXVlc3QtPnByaXYtPm5hbWUg
PSBnX3N0cmR1cChuYW1lKTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QocmVxdWVzdCks
ICJuYW1lIik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3dpbmRv
d19mZWF0dXJlczoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXROZXR3b3JrUmVxdWVzdAorICoKKyAq
IFJldHVybnMgdGhlICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBkZXNjcmliaW5nIGhvdyB0aGUg
bmV3IHdpbmRvdyBzaG91bGQgbG9vay4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSAjV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMKKyAqLworV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93
ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlld1JlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVX
X1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPndl
YldpbmRvd0ZlYXR1cmVzOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3Nl
dF93aW5kb3dfZmVhdHVyZXM6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QK
KyAqIEB3ZWJXaW5kb3dGZWF0dXJlczogYSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqCisg
KiBTZXRzIHRoZSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgZGVzY3JpYmluZyBob3cgdGhlIG5l
dyB3aW5kb3cgc2hvdWxkIGxvb2suCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
c2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVMod2ViV2luZG93RmVhdHVyZXMp
KTsKKworICAgIGlmKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKHJlcXVlc3QtPnBy
aXYtPndlYldpbmRvd0ZlYXR1cmVzLCB3ZWJXaW5kb3dGZWF0dXJlcykpCisgICAgICByZXR1cm47
CisKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0LT5wcml2LT53ZWJXaW5kb3dGZWF0dXJlcyk7
CisgICAgZ19vYmplY3RfcmVmKHdlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICByZXF1ZXN0LT5wcml2
LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYldpbmRvd0ZlYXR1cmVzOworCisgICAgZ19vYmplY3Rf
bm90aWZ5KEdfT0JKRUNUKHJlcXVlc3QpLCAid2luZG93LWZlYXR1cmVzIik7Cit9CisKK30KSW5k
ZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdyZXF1ZXN0LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9ICisjZGVmaW5lIFdFQktJVF9XRUJf
VklFV19SRVFVRVNUX0gKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VC
X1ZJRVdfUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfdHlw
ZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVChvYmopICAgICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVklFV19SRVFV
RVNULCBXZWJLaXRXZWJWaWV3UmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVklFV19SRVFV
RVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VC
S0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCwgV2ViS2l0V2ViVmlld1JlcXVlc3RDbGFzcykpCisj
ZGVmaW5lIFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QpKQor
I2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJRVdfUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QpKQor
I2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QsIFdl
YktpdFdlYlZpZXdSZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmll
d1JlcXVlc3QgV2ViS2l0V2ViVmlld1JlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
Vmlld1JlcXVlc3RDbGFzcyBXZWJLaXRXZWJWaWV3UmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZh
dGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld1JlcXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50
X2luc3RhbmNlOworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZSogcHJpdjsKK307CisK
K3N0cnVjdCBfV2ViS2l0V2ViVmlld1JlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBh
cmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfdmlld19yZXF1
ZXN0X2dldF90eXBlKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdE5ldHdvcmtSZXF1ZXN0Kgor
d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25ldHdvcmtfcmVxdWVzdChXZWJLaXRXZWJWaWV3
UmVxdWVzdCogcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2Vi
X3ZpZXdfcmVxdWVzdF9nZXRfbmFtZShXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25hbWUoV2ViS2l0
V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdjaGFyKiBuYW1lKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF93
aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF93aW5kb3dfZmVhdHVyZXMoV2Vi
S2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3aW5k
b3dGZWF0dXJlcyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3Jv
bmhhIFNpbGEgPGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIK
KyNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisKK2V4dGVybiAiQyIgeworCitlbnVtIHsKKyAg
ICBQUk9QXzAsCisKKyAgICBQUk9QX1gsCisgICAgUFJPUF9ZLAorICAgIFBST1BfV0lEVEgsCisg
ICAgUFJPUF9IRUlHSFQsCisgICAgUFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9TVEFU
VVNCQVJfVklTSUJMRSwKKyAgICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAgIFBST1BfTUVO
VUJBUl9WSVNJQkxFLAorICAgIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICBQUk9QX1JF
U0laQUJMRSwKKyAgICBQUk9QX0ZVTExTQ1JFRU4sCisgICAgUFJPUF9ESUFMT0cKK307CisKK0df
REVGSU5FX1RZUEUoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMsIHdlYmtpdF93ZWJfd2luZG93X2Zl
YXR1cmVzLCBHX1RZUEVfT0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
UHJpdmF0ZSB7CisgICAgZ2ludCB4OworICAgIGdpbnQgeTsKKyAgICBnaW50IHdpZHRoOworICAg
IGdpbnQgaGVpZ2h0OworCisgICAgZ2Jvb2xlYW4gdG9vbGJhcl92aXNpYmxlOworICAgIGdib29s
ZWFuIHN0YXR1c2Jhcl92aXNpYmxlOworICAgIGdib29sZWFuIHNjcm9sbGJhcl92aXNpYmxlOwor
ICAgIGdib29sZWFuIG1lbnViYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBsb2NhdGlvbmJhcl92
aXNpYmxlOworICAgIGdib29sZWFuIHJlc2l6YWJsZTsKKworICAgIGdib29sZWFuIGZ1bGxzY3Jl
ZW47CisgICAgZ2Jvb2xlYW4gZGlhbG9nOworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRP
V19GRUFUVVJFU19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
KG9iaiksIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzUHJpdmF0ZSkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQs
IGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworCitzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9j
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplOworICAgIGdvYmplY3RfY2xh
c3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0
eTsKKyAgICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19nZXRfcHJvcGVydHk7CisKKyAgICBHUGFyYW1GbGFncyBmbGFncyA9IChHUGFyYW1G
bGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfWCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAieCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
eCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0aW5nIHgg
cG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9ZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3RhcnRpbmcgeSBwb3NpdGlv
biBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19N
QVhJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX1dJRFRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3aWR0aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lkdGgi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3aWR0aCBvZiB0aGUg
d2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0hFSUdIVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVp
Z2h0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZWlnaHQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBoZWlnaHQgb2YgdGhlIHdpbmRv
dyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0b29sYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlRvb2wgYmFyIHZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2wgYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0
aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXNiYXItdmlzaWJsZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzIGJhciB2aXNpYmxlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0
dXMgYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
U0NST0xMQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJzY3JvbGxiYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiU2Nyb2xsIGJhciB2aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBzY3JvbGwgYmFycyBzaG91bGQgYmUgdmlzaWJsZSBm
b3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX01FTlVCQVJfVklTSUJMRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbnViYXItdmlzaWJsZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVudSBiYXIgdmlzaWJsZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgbWVudSBi
YXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9MT0NB
VElPTkJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
bG9jYXRpb25iYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTG9jYXRpb24gYmFyIHZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIGxvY2F0aW9uIGJhciBzaG91bGQgYmUgdmlzaWJs
ZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1JFU0laQUJMRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc2l6YWJsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiUmVzaXphYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIHJlc2l6YWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfRlVMTFNDUkVFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkZ1bGwtc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250
cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2NyZWVuLiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0RJQUxPRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRpYWxvZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlhbG9nIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHdp
bmRvdyBzaG91bGQgYmUgYSBkaWFsb2csIG9yIGEgdG9wIGxldmVsIHdpbmRvdy4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKSk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2luaXQoV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVyZXMpCit7CisgICAgd2ViX3dpbmRvd19mZWF0dXJl
cy0+cHJpdiA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKHdlYl93aW5k
b3dfZmVhdHVyZXMpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3df
ZmVhdHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAgIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVyZXMtPnBy
aXY7CisKKyAgICBzd2l0Y2gocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9YOgorICAgICAgICBw
cml2LT54ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX1k6CisgICAgICAgIHByaXYtPnkgPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lEVEg6CisgICAgICAgIHByaXYtPndpZHRoID0g
Z192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hF
SUdIVDoKKyAgICAgICAgcHJpdi0+aGVpZ2h0ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAgICAgcHJp
di0+dG9vbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9TVEFUVVNCQVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+
c3RhdHVzYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT5z
Y3JvbGxiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfTUVOVUJBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT5tZW51
YmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPmxvY2F0
aW9uYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1JFU0laQUJMRToKKyAgICAgICAgcHJpdi0+cmVzaXphYmxlID0g
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9GVUxMU0NSRUVOOgorICAgICAgICBwcml2LT5mdWxsc2NyZWVuID0gZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ESUFMT0c6CisgICAg
ICAgIHByaXYtPmRpYWxvZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVy
ZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXY7CisK
KyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAgZ192YWx1
ZV9zZXRfaW50KHZhbHVlLCBwcml2LT54KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+eSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVl
LCBwcml2LT53aWR0aCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IRUlHSFQ6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+aGVpZ2h0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgcHJpdi0+dG9vbGJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9TQ1JPTExCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgcHJpdi0+c2Nyb2xsYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfTUVOVUJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCBwcml2LT5tZW51YmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfTE9DQVRJT05CQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9SRVNJWkFCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYt
PnJlc2l6YWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GVUxMU0NSRUVOOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5mdWxsc2NyZWVuKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RJQUxPRzoKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgcHJpdi0+ZGlhbG9nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdl
YldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11c3QKKyAq
IGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBhIG5l
dyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqKi8KK1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKQoreworICAgIHJldHVy
biBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X1dJTkRPV19GRUFUVVJFUywgTlVMTCkpOworfQorCisvLyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkK
K1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXdf
ZnJvbV9jb3JlX2ZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJl
cykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyAqd2ViV2luZG93RmVhdHVyZXMgPSB3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKTsKKworICAgIGlmKGZlYXR1cmVzLnhTZXQp
CisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ4Iiwg
c3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy54KSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy55
U2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAi
eSIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMueSksIE5VTEwpOworCisgICAgaWYoZmVhdHVy
ZXMud2lkdGhTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJ3aWR0aCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMud2lkdGgpLCBOVUxMKTsK
KworICAgIGlmKGZlYXR1cmVzLmhlaWdodFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JK
RUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgImhlaWdodCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVy
ZXMuaGVpZ2h0KSwgTlVMTCk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93
RmVhdHVyZXMpLAorICAgICAgICAgICAgICAgICAidG9vbGJhcl92aXNpYmxlIiwgZmVhdHVyZXMu
dG9vbEJhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJzdGF0dXNiYXJfdmlzaWJsZSIsIGZl
YXR1cmVzLnN0YXR1c0JhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJzY3JvbGxiYXJfdmlz
aWJsZSIsIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlLAorICAgICAgICAgICAgICAgICAibWVu
dWJhcl92aXNpYmxlIiwgZmVhdHVyZXMubWVudUJhclZpc2libGUsCisgICAgICAgICAgICAgICAg
ICJsb2NhdGlvbmJhcl92aXNpYmxlIiwgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlLAorICAg
ICAgICAgICAgICAgICAicmVzaXphYmxlIiwgZmVhdHVyZXMucmVzaXphYmxlLAorICAgICAgICAg
ICAgICAgICAiZnVsbHNjcmVlbiIsIGZlYXR1cmVzLmZ1bGxzY3JlZW4sCisgICAgICAgICAgICAg
ICAgICJkaWFsb2ciLCBmZWF0dXJlcy5kaWFsb2csCisgICAgICAgICAgICAgICAgIE5VTEwpOwor
CisgICAgcmV0dXJuIHdlYldpbmRvd0ZlYXR1cmVzOworfQorCitnYm9vbGVhbiB3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlc19lcXVhbChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMx
LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMyKQoreworICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjEgPSBmZWF0dXJlczEtPnByaXY7CisgICAgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2MiA9IGZlYXR1cmVzMi0+cHJpdjsKKyAgICAK
KyAgICBpZigocHJpdjEtPnggPT0gcHJpdjItPngpICYmCisgICAgICAgKHByaXYxLT55ID09IHBy
aXYyLT55KSAmJgorICAgICAgIChwcml2MS0+d2lkdGggPT0gcHJpdjItPndpZHRoKSAmJgorICAg
ICAgIChwcml2MS0+aGVpZ2h0ID09IHByaXYyLT5oZWlnaHQpICYmCisgICAgICAgKHByaXYxLT50
b29sYmFyX3Zpc2libGUgPT0gcHJpdjItPnRvb2xiYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJp
djEtPnNjcm9sbGJhcl92aXNpYmxlID09IHByaXYyLT5zY3JvbGxiYXJfdmlzaWJsZSkgJiYKKyAg
ICAgICAocHJpdjEtPm1lbnViYXJfdmlzaWJsZSA9PSBwcml2Mi0+bWVudWJhcl92aXNpYmxlKSAm
JgorICAgICAgIChwcml2MS0+bG9jYXRpb25iYXJfdmlzaWJsZSA9PSBwcml2Mi0+bG9jYXRpb25i
YXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJpdjEtPnJlc2l6YWJsZSA9PSBwcml2Mi0+cmVzaXph
YmxlKSAmJgorICAgICAgIChwcml2MS0+ZnVsbHNjcmVlbiA9PSBwcml2Mi0+ZnVsbHNjcmVlbikg
JiYKKyAgICAgICAocHJpdjEtPmRpYWxvZyA9PSBwcml2Mi0+ZGlhbG9nKSkKKyAgICAgICAgcmV0
dXJuIFRSVUU7CisgICAgcmV0dXJuIEZBTFNFOworfQorCisKK30KSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNp
bHZhIDxnbnNAZ25vbWUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNf
SF9fCisjZGVmaW5lIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfSF9fCisKKyNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKwor
R19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMg
ICAgICAgICAgICAod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFU
VVJFU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBX
RUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0Ns
YXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRP
V19GRUFUVVJFUykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dF
Ql9XSU5ET1dfRkVBVFVSRVMpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0V2ViV2luZG93
RmVhdHVyZXNQcml2YXRlKiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFk
ZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkNCkgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfZ2V0X3R5cGUodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXMqCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcodm9pZCk7CisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZiAvKiBfX1dFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0hfXyAqLwo=
</data>
<flag name="review"
          id="9394"
          type_id="1"
          status="-"
          setter="christian"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21902</attachid>
            <date>2008-06-24 06:20:15 -0700</date>
            <delta_ts>2008-06-25 14:35:46 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>46276</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NDA4ZGViLi4xN2E0YTEx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMDgtMDYtMjIgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlBZGRlZCB0aGUgbmV3IFdlYktp
dEd0ayBmaWxlcyB0byBiZSBidWlsdDoKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy57Y3BwLGh9LAorCXdlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcCBhbmQgd2Via2l0
d2Vidmlld3JlcXVlc3QuaAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDYt
MTggIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwIFRva2VyLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUu
YW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBhNmFlMjk5Li4yMWI3ZmJmIDEwMDY0NAotLS0gYS9H
TlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMzE3LDYgKzMxNyw3IEBAIHdl
YmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaCBc
CiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5o
CiAKIHdlYmtpdGd0a19idWlsdF9zb3VyY2VzICs9IFwKQEAgLTM0Myw2ICszNDQsNyBAQCB3ZWJr
aXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3Bw
IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAgXAogCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
Y3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNw
cCBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDlkMzRjNGYuLjdmMzYwMTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMDgtMDYt
MjIgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxMzAKKwlDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBhbmQgZnJpZW5k
cyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCisJCisJQ29kZSBmcm9tIEd1c3Rhdm8gTm9yb25oYSBh
bmQgTWFyY28gQmFyaXNpb25lCisJPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+IGlu
IHRoaXMgY2hhbmdlIHNldC4KKworCUltcGxlbWVudGVkIGFsbCB0aGUgQ2hyb21lQ2xpZW50IGlu
dGVyZmFjZXMgbmVlZGVkIHRvIGhhdmUgbmV3CisJd2luZG93IGNyZWF0aW9uIGZ1bmN0aW9uaW5n
IGFuZCBleHBvc2VkIHRvIGNsaWVudCBjb2RlLiBXZQorCWltcGxlbWVudGVkIGEgbWlycm9yIEdP
YmplY3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9iamVjdCBwcm92aWRlZAorCWJ5IFdlYkNvcmUu
IEEgbWlycm9yIGZvciBGcmFtZUxvYWRlclJlcXVlc3Qgd2FzIGFsc28gY3JlYXRlZDoKKwlXZWJL
aXRXZWJWaWV3UmVxdWVzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50OjpzZXRUb29sYmFyc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
OnRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0U3Rh
dHVzYmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c3RhdHVzYmFy
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNjcm9sbGJhcnNWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6bWVudWJhclZpc2libGUpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFJlc2l6YWJsZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAgICAg
ICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CisgICAgICAgICogd2Via2l0L3dlYmtpdC5o
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vi
d2luZG93ZmVhdHVyZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2NsYXNzX2luaXQpOgorICAg
ICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRl
Ojp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZSk6CisgICAgICAgIChfV2ViS2l0
V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRf
cHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyk6
CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dp
bmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzKToKKyAgICAgICAgKF9XZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFs
KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaDogQWRkZWQuCisK
IDIwMDgtMDYtMTggIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEu
Y28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwIFRva2VyLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDJlNTZjMWQuLjcyYTdmZDQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAg
LTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxj
aHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3Jv
bmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNiAr
MjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0ay5o
IgogCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAt
MjcsNiArMjksNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdG5ldHdvcmty
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKQEAgLTYxLDkgKzY0LDIzIEBA
IEZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3QoKQogICAgIHJldHVybiBGbG9hdFJl
Y3QoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
dG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBpZiAod2luZG93KSB7CisgICAg
ICAgIEludFJlY3QgaW50cmVjdCA9IEludFJlY3QocmVjdCk7CisgICAgICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2lu
ZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNU
KHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgICAgICJ4IiwgaW50cmVjdC54
KCksCisgICAgICAgICAgICAgICAgICAgICAieSIsIGludHJlY3QueSgpLAorICAgICAgICAgICAg
ICAgICAgICAgIndpZHRoIiwgaW50cmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAg
ImhlaWdodCIsIGludHJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
KyAgICB9CiB9CiAKIEZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OnBhZ2VSZWN0KCkKQEAgLTk2LDI1
ICsxMTMsMzQgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnVuZm9jdXMoKQogICAgICAgICBndGtfd2lu
ZG93X3NldF9mb2N1cyhHVEtfV0lORE9XKHdpbmRvdyksIE5VTEwpOwogfQogCi1QYWdlKiBDaHJv
bWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBj
b25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCitQYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0
ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJl
cXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBjb3JlRmVhdHVyZXMpCiB7Ci0gICAgaWYgKGZl
YXR1cmVzLmRpYWxvZykgewotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFdlYktpdE5l
dHdvcmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdCA9IDA7CisgICAgaWYgKCFmcmFtZUxvYWRSZXF1
ZXN0LmlzRW1wdHkoKSkKKyAgICAgICAgbmV0d29ya1JlcXVlc3QgPSB3ZWJraXRfbmV0d29ya19y
ZXF1ZXN0X25ldyhmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldp
bmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9m
ZWF0dXJlcyhjb3JlRmVhdHVyZXMpOworCisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IDA7
CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgImNyZWF0ZS13ZWItdmlldyIs
IGtpdChmcmFtZSksIHdlYldpbmRvd0ZlYXR1cmVzLCBuZXR3b3JrUmVxdWVzdCwgJndlYlZpZXcp
OworCisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpKTsKKyAg
ICBpZiAobmV0d29ya1JlcXVlc3QpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKG5l
dHdvcmtSZXF1ZXN0KSk7CisKKyAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybiAwOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFRPRE86IEZyYW1lTG9hZFJlcXVlc3QgaXMgbm90IHVz
ZWQgKi8KLSAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19H
RVRfQ0xBU1MobV93ZWJWaWV3KS0+Y3JlYXRlX3dlYl92aWV3KG1fd2ViVmlldyk7Ci0gICAgICAg
IGlmICghd2ViVmlldykKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3
ZWJWaWV3KTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKLSAgICB9CisK
KyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdf
R0VUX1BSSVZBVEUod2ViVmlldyk7CisgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsK
IH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNob3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdF93ZWJf
dmlld19zaG93KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpjYW5SdW5Nb2Rh
bCgpCkBAIC0xMjgsNTIgKzE1NCwxMDEgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJh
cnNWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2lu
ZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZp
ZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRv
b2xiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6
dG9vbGJhcnNWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92
aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxl
OworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRvb2xi
YXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAot
dm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21l
Q2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgdmlzaWJsZSwg
TlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmll
dykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMo
bV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgJnZpc2libGUs
IE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0
U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJz
VmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
IW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENo
cm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUoKSB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jv
b2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4g
dmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKGJvb2wp
Cit2b2lkIENocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUoYm9vbCB2aXNpYmxlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdl
YmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29i
amVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAibWVudWJhci12aXNpYmxlIiwg
dmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSgp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFt
X3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2Zl
YXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0
X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJtZW51YmFyLXZpc2libGUiLCAmdmlz
aWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50
OjpzZXRSZXNpemFibGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUoYm9v
bCByZXNpemFibGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmll
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldp
bmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJW
aWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJy
ZXNpemFibGUiLCByZXNpemFibGUsIE5VTEwpOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6Y2xv
c2VXaW5kb3dTb29uKCkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHAKaW5kZXggZWE3OWU5OS4uYWE5NTRhZCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdG5l
dHdvcmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3
ZWJraXRwcml2YXRlLmgiCiAKQEAgLTI1OCw3ICsyNTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBt
YXJzaGFscyB0aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11
bHRpLXRocmVhZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCi0gICAg
KGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7
CisgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVz
ZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCkBAIC01NjEsNyArNTYyLDggQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCiAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyh3ZWJWaWV3KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtNzI4LDggKzczMCwyMSBAQCBib29sIEZy
YW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAogCiBGcmFtZSogRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21G
cmFtZShtX2ZyYW1lKTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX1dJTkRPV19GRUFUVVJFUywgTlVMTCkpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiBuZXR3b3JrUmVxdWVzdCA9IFdFQktJVF9ORVRXT1JLX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCwgTlVMTCkpOworICAgIFdlYktpdFdlYlZpZXcqIG5l
d1dlYlZpZXcgPSAwOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJjcmVh
dGUtd2ViLXZpZXciLCBtX2ZyYW1lLCB3ZWJXaW5kb3dGZWF0dXJlcywgbmV0d29ya1JlcXVlc3Qs
ICZuZXdXZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRvd0Zl
YXR1cmVzKSk7CisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1QobmV0d29ya1JlcXVlc3QpKTsK
KworICAgIGlmICghbmV3V2ViVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUo
bmV3V2ViVmlldyk7CisgICAgcmV0dXJuIGNvcmUocHJpdmF0ZURhdGEtPm1haW5GcmFtZSk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3koY29uc3QgUmVzb3VyY2VFcnJvciYpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXQtbWFyc2hhbC5saXN0IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwubGlz
dAppbmRleCBhOGYyNDUzLi4wOGUwZWNkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXQtbWFyc2hhbC5saXN0CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFs
Lmxpc3QKQEAgLTUsOCArNSwxMSBAQCBWT0lEOk9CSkVDVCxCT09MRUFOCiBWT0lEOk9CSkVDVCxT
VFJJTkcKIFZPSUQ6T0JKRUNULE9CSkVDVAogVk9JRDpPQkpFQ1QsUE9JTlRFUixQT0lOVEVSCitC
T09MRUFOOlZPSUQKIEJPT0xFQU46U1RSSU5HLElOVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNU
UklORwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklO
RyxTVFJJTkcsU1RSSU5HCiBJTlQ6T0JKRUNULE9CSkVDVAorT0JKRUNUOk9CSkVDVCxPQkpFQ1QK
K09CSkVDVDpPQkpFQ1QsT0JKRUNULE9CSkVDVApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAppbmRleCAxMGMyMTRmLi4y
OWQzZGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
ZGVmaW5lcy5oCmluZGV4IDM4NmMzZTEuLmRhYzJkZDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGRlZmluZXMuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmgKQEAgLTU1LDYgKzU1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xh
c3MgV2ViS2l0V2ViRnJhbWVDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5n
cyBXZWJLaXRXZWJTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3M7
CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IGVkODFhMWMuLjVlMmQ1OGQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRwcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3
aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuaD4KIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMzgsNiArMzksNyBAQAog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAogI2luY2x1ZGUgPGds
aWIuaD4KIApAQCAtNjcsNiArNjksNyBAQCBleHRlcm4gIkMiIHsKICAgICBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdQcml2YXRlIHsKICAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2U7CiAgICAg
ICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKKyAgICAgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzOwogCiAgICAgICAgIFdlYktpdFdlYkZyYW1l
KiBtYWluRnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQ7CkBAIC0xMTAsNiArMTEzLDkgQEAgZXh0ZXJuICJDIiB7CiAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9p
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKKyAgICB2b2lkCisgICAgd2Via2l0X3dlYl92
aWV3X3Nob3cgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOworCiAgICAgLy8gRklYTUU6IE1vdmUg
dGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNz
ZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKQEAgLTEyMyw2ICsxMjksMTIgQEAgZXh0ZXJu
ICJDIiB7CiAKICAgICBXRUJLSVRfQVBJIGdjaGFyKgogICAgIHdlYmtpdF93ZWJfdmlld19nZXRf
c2VsZWN0ZWRfdGV4dCAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworCisgICAgV0VCS0lUX0FQ
SSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKKyAgICB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzIChjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYg
ZmVhdHVyZXMpOworCisgICAgV0VCS0lUX0FQSSBnYm9vbGVhbgorICAgIHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX2VxdWFsKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczIpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNmE3ZWExZi4uNDdjMWQ2MSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggSmFuIEFsb256
byA8am1hbG9uem9AdW5wbHVnZ2FibGUuY29tPgorICogIENvcHlyaWdodCAoQykgMjAwOCBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IE51YW50aSBMdGQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgpA
QCAtNzAsNiArNzEsOCBAQCBleHRlcm4gIkMiIHsKIGVudW0gewogICAgIC8qIG5vcm1hbCBzaWdu
YWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAgQ1JFQVRFX1dFQl9WSUVXLAor
ICAgIFNIT1dfV0VCX1ZJRVcsCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURf
U1RBUlRFRCwKICAgICBMT0FEX0NPTU1JVFRFRCwKQEAgLTk5LDYgKzEwMiw3IEBAIGVudW0gewog
ICAgIFBST1BfUEFTVEVfVEFSR0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9Q
X1NFVFRJTkdTLAorICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTLAogICAgIFBST1BfVFJBTlNQQVJF
TlQsCiAgICAgUFJPUF9aT09NX0xFVkVMLAogICAgIFBST1BfRlVMTF9DT05URU5UX1pPT00KQEAg
LTIzNCw2ICsyMzgsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKgogICAgIGNhc2UgUFJPUF9T
RVRUSU5HUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMjU5LDYgKzI2Niw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHCiAg
ICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRp
bmdzKHdlYlZpZXcsIFdFQktJVF9XRUJfU0VUVElOR1MoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVl
KSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3LCBXRUJLSVRf
V0VCX1dJTkRPV19GRUFUVVJFUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgd2Via2l0X3dlYl92
aWV3X3NldF90cmFuc3BhcmVudCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4LDEyICs1NjgsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2NvbnRhaW5lcl9mb3JhbGwoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIGdib29s
ZWFuLAogICAgICAgICAoKmNhbGxiYWNrKSgqY3VycmVudCwgY2FsbGJhY2tEYXRhKTsKIH0KIAot
c3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmll
dyhXZWJLaXRXZWJWaWV3KikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jcmVhdGVfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiwgV2ViS2l0TmV0d29ya1JlcXVlc3QqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
aG93X3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQoreworICAgIHJldHVybiBGQUxTRTsKK30KKwog
c3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZp
Z2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBX
ZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTcyMSw2
ICs3MzUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCog
b2JqZWN0KQogICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQp
OwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmJhY2tGb3J3YXJkTGlzdCk7CiAgICAgZ19vYmpl
Y3RfdW5yZWYocHJpdi0+d2ViU2V0dGluZ3MpOworICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndl
YldpbmRvd0ZlYXR1cmVzKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUpOwog
ICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmltQ29udGV4dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0
X3VucmVmKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QpOwpAQCAtNzMwLDYgKzc0NSwxOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0
X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1
LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQoreworICBnYm9v
bGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKKyAgZ3BvaW50ZXIgbmV3V2ViVmlldyA9IGdf
dmFsdWVfZ2V0X29iamVjdChoYW5kbGVyUmV0dXJuKTsKKyAgZ192YWx1ZV9zZXRfb2JqZWN0KHJl
dHVybkFjY3UsIG5ld1dlYlZpZXcpOworCisgIGlmIChuZXdXZWJWaWV3KQorICAgICAgY29udGlu
dWVFbWlzc2lvbiA9IEZBTFNFOworCisgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOworfQorCiBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJ
bnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBo
YW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKIHsKICAgZ2Jvb2xlYW4gY29udGludWVFbWlz
c2lvbiA9IFRSVUU7CkBAIC03NzIsNiArNzk5LDYxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAq
IFNpZ25hbHMKICAgICAgKi8KIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0
ZS13ZWItdmlldzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lCisgICAg
ICogQHdpbmRvd19mZWF0dXJlczogYSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXN0CisgICAgICog
QG5ldHdvcmtfcmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAgICAgKiBAcmV0dXJu
OiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAg
ICogRW1pdHRlZCB3aGVuIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB3aW5kb3cgaXMgcmVxdWVzdGVk
LgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlzIGhhbmRsZWQgdGhlIHNpZ25hbCBoYW5kbGVyIHNo
b3VsZCByZXR1cm4gdGhlCisgICAgICogbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldy4gVGhl
IG5ldyAjV2ViS2l0V2ViVmlldyBzaG91bGQgbm90IGJlCisgICAgICogZGlzcGxheWVkIHRvIHRo
ZSB1c2VyIHVudGlsIHRoZSAic2hvdy13ZWItdmlldyIgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAg
ICoKKyAgICAgKiBUaGUgc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBub3QgdHJ5IHRvIGRlYWwgd2l0
aCB0aGUgcmVmZXJlbmNlCisgICAgICogY291bnQgZm9yIHRoZSBuZXcgI1dlYktpdFdlYlZpZXcu
IFRoZSB3aWRnZXQgdG8gd2hpY2ggdGhlCisgICAgICogd2lkZ2V0IGlzIGFkZGVkIHdpbGwgaGFu
ZGxlIHRoYXQuCisgICAgICoKKyAgICAgKiBAd2ViX3ZpZXdfcmVxdWVzdCBjb250YWlucyBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgbmV3ICNXZWJLaXRXZWJWaWV3LAorICAgICAqIGJ1dCBub3RlIHRo
YXQgeW91IGNhbiBmcmVlbHkgaWdub3JlIGFueSBwYXJ0aWN1bGFyIHJlcXVlc3QgbGlrZSB0aGUK
KyAgICAgKiBzaXplIG9mIHRoZSBuZXcgd2luZG93IG9yIHdoYXQgYmFycyBzaG91bGQgYmUgZGlz
cGxheWVkIGluIHRoZSBuZXcKKyAgICAgKiB3aW5kb3cuCisgICAgICovCisgICAgd2Via2l0X3dl
Yl92aWV3X3NpZ25hbHNbQ1JFQVRFX1dFQl9WSUVXXSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLXdl
Yi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisg
ICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FD
VElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywg
Y3JlYXRlX3dlYl92aWV3KSwKKyAgICAgICAgICAgIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVx
dWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX09CSkVDVF9fT0JKRUNUX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfT0JK
RUNULCAzLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FLAorICAgICAgICAgICAg
V0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgIFdFQktJVF9UWVBF
X05FVFdPUktfUkVRVUVTVCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpzaG93
LXdlYi12aWV3OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2ln
bmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmV0dXJuOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRs
ZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LCAlRkFMU0UgdG8gcHJvcGFnYXRl
IHRoZSBldmVudCBmdXJ0aGVyCisgICAgICoKKyAgICAgKiBFbWl0dGVkIGFmdGVyICJjcmVhdGUt
d2ViLXZpZXciIHdoZW4gdGhlIG5ldyAjV2ViS2l0V2ViVmlldyBzaG91bGQKKyAgICAgKiBiZSBk
aXNwbGF5ZWQgdG8gdGhlIHVzZXIuCisgICAgICoKKyAgICAgKiBJZiB0aGVyZSBpc24ndCBhbnkg
aGFuZGxlciBmb3IgdGhpcyBzaWduYWwgb3IgaWYgdGhleSByZXR1cm4gJUZBTFNFLAorICAgICAq
IHRoZW4gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIGNhbGwgZ3RrX3dpZGdldF9zaG93X2FsbCgp
IG9uIHRoZQorICAgICAqIHRvcGxldmVsIHdpbmRvdyBjb250YWluaW5nIEB3ZWJfdmlldy4KKyAg
ICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tTSE9XX1dFQl9WSUVXXSA9IGdfc2ln
bmFsX25ldygic2hvdy13ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3
ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xB
U1QpLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xhc3MsIHNo
b3dfd2ViX3ZpZXcpLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5k
bGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xF
QU5fX1ZPSUQsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywgMCk7CisKICAgICB3
ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9u
ZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5f
TEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCkBAIC0xMTA3LDYgKzExODksNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdD
bGFzcykKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICov
CiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVh
bF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNzLT5zaG93X3dlYl92aWV3ID0gd2Vi
a2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmln
YXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0
ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2Vi
X3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9v
c2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTIwNiw2ICsx
Mjg5LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdl
YlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkob2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2luZG93LWZlYXR1cmVzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IldpbmRvdyBGZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJBbiBhc3NvY2lhdGVkIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
IGluc3RhbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURXUklURSkpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmpl
Y3RDbGFzcywgUFJPUF9FRElUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlZGl0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWRpdGFibGUiLApAQCAtMTQz
Nyw2ICsxNTI3LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZp
ZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1jaGFuZ2VkIiwgR19D
QUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxMKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJr
aXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAgICBwcml2LT53ZWJX
aW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOwogfQogCiBH
dGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTE0NDYsNiArMTUzOCwyMiBA
QCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAgICByZXR1cm4gR1RLX1dJ
REdFVCh3ZWJWaWV3KTsKIH0KIAordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2hvdyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVX
KHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IEZBTFNFOworICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0hPV19XRUJfVklFV10s
IDAsICZpc0hhbmRsZWQpOworICAgIGlmIChpc0hhbmRsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lE
R0VUKHdlYlZpZXcpKTsKKyAgICBpZiAodG9wbGV2ZWwpCisgICAgICAgIGd0a193aWRnZXRfc2hv
dyh0b3BsZXZlbCk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQod2ViVmlldykpOwor
fQorCisKIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwpAQCAtMTQ3MCw2ICsxNTc4LDQ4
IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF93aW5k
b3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2luZG93X2Zl
YXR1cmVzOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFRoaXMgd2lsbCBzZXQg
aG93IHRoZSB3aW5kb3cgY29udGFpbmluZyB0aGUgI1dlYktpdFdlYlZpZXcgc2hvdWxkCisgKiBs
b29rIGFuZCBiZWhhdmUuIEFwcGxpY2F0aW9ucyBtYXkgd2FudCB0byBtb25pdG9yIHRoaXMgcHJv
cGVydHkgYW5kCisgKiBhcHBseSB0aGUgc2V0dGluZ3MgaXQgY2FycmllcyB0byB0aGUgd2luZG93
IGhvbGRpbmcgdGhlIHJlbGV2YW50CisgKiAjV2ViS2l0V2ViVmlldy4KKyAqLwordm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVMod2ViV2luZG93RmVhdHVyZXMpKTsK
KyAgICAKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisK
KyAgICBpZih3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbChwcml2LT53ZWJXaW5kb3dG
ZWF0dXJlcywgd2ViV2luZG93RmVhdHVyZXMpKQorICAgICAgcmV0dXJuOworCisgICAgZ19vYmpl
Y3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X3JlZih3ZWJX
aW5kb3dGZWF0dXJlcyk7CisgICAgcHJpdi0+d2ViV2luZG93RmVhdHVyZXMgPSB3ZWJXaW5kb3dG
ZWF0dXJlczsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJl
cworICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZXR1cm5zIHRoZSBpbnN0
YW5jZSBvZiAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaGVsZCBieSB0aGUgZ2l2ZW4KKyAqICNX
ZWJLaXRXZWJWaWV3LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlICNXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcworICovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl92aWV3X2dl
dF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBw
cml2LT53ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0
X21haW50YWluc19iYWNrX2ZvcndhcmRfbGlzdDoKICAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJW
aWV3CiAgKiBAZmxhZzogdG8gdGVsbCB0aGUgdmlldyB0byBtYWludGFpbiBhIGJhY2sgb3IgZm9y
d2FyZCBsaXN0CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3Lmgg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggZWJkMWFhMS4uOTViOTc3
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtNjMsMTEgKzYzLDEyIEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKIAogICAgIC8qCiAgICAgICogZGVmYXVsdCBoYW5kbGVy
L3ZpcnR1YWwgbWV0aG9kcwotICAgICAqIERJU0NVU1M6IGNyZWF0ZV93ZWJfdmlldyBuZWVkcyBh
IHJlcXVlc3QgYW5kIHNob3VsZCB3ZSBtYWtlIHRoaXMgYSBzaWduYWwgd2l0aCBkZWZhdWx0IGhh
bmRsZXI/IHRoaXMgd291bGQKLSAgICAgKiByZXF1aXJlIHNvbWVvbmUgZG9pbmcgYSBnX3NpZ25h
bF9zdG9wX2VtaXNzaW9uX2J5X25hbWUKLSAgICAgKiBXZWJVSURlbGVnYXRlIGhhcyBub3RoaW5n
IGZvciBjcmVhdGVfZnJhbWUsIFdlYlBvbGljeURlbGVnYXRlIGFzIHdlbGwuLi4KICAgICAgKi8K
LSAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgKiAoKiBjcmVhdGVfd2ViX3ZpZXcpICAgICAg
ICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAqICgqIGNyZWF0ZV93ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TmV0
d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAg
KCogc2hvd193ZWJfdmlldykgICAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAog
ICAgIC8qCiAgICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xp
Y3lEZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKQEAgLTI0Nyw2ICsyNDgsMTIgQEAg
d2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICp3ZWJfdmlldywKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgog
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92
aWV3X3NldF93aW5kb3dfZmVhdHVyZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92
aWV3LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzKTsKKworV0VCS0lU
X0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJfdmlld19nZXRfd2luZG93
X2ZlYXR1cmVzICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisKIFdFQktJ
VF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHJhbnNwYXJlbnQgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAgYi9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZWY4NzMwYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcApAQCAtMCwwICsxLDM3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsYSA8Z25zQGdub21lLm9yZz4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUu
aCIKKworZXh0ZXJuICJDIiB7CisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfWCwK
KyAgICBQUk9QX1ksCisgICAgUFJPUF9XSURUSCwKKyAgICBQUk9QX0hFSUdIVCwKKyAgICBQUk9Q
X1RPT0xCQVJfVklTSUJMRSwKKyAgICBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFLAorICAgIFBST1Bf
U0NST0xMQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9NRU5VQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9M
T0NBVElPTkJBUl9WSVNJQkxFLAorICAgIFBST1BfUkVTSVpBQkxFLAorICAgIFBST1BfRlVMTFND
UkVFTiwKKyAgICBQUk9QX0RJQUxPRworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcywgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXMsIEdfVFlQRV9PQkpFQ1QpCisK
K3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIHsKKyAgICBnaW50IHg7Cisg
ICAgZ2ludCB5OworICAgIGdpbnQgd2lkdGg7CisgICAgZ2ludCBoZWlnaHQ7CisKKyAgICBnYm9v
bGVhbiB0b29sYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gc3RhdHVzYmFyX3Zpc2libGU7Cisg
ICAgZ2Jvb2xlYW4gc2Nyb2xsYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gbWVudWJhcl92aXNp
YmxlOworICAgIGdib29sZWFuIGxvY2F0aW9uYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gcmVz
aXphYmxlOworCisgICAgZ2Jvb2xlYW4gZnVsbHNjcmVlbjsKKyAgICBnYm9vbGVhbiBkaWFsb2c7
Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKG9i
aikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJ
TkRPV19GRUFUVVJFUywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKSkKKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0
KTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93
X2ZlYXR1cmVzX2NsYXNzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyoga2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOworICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfZmluYWxpemU7CisgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RfY2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eTsKKwor
ICAgIEdQYXJhbUZsYWdzIGZsYWdzID0gKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFIHwgR19QQVJBTV9DT05TVFJVQ1QpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUaGUgc3RhcnRpbmcgeCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9u
IHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRoZSBzdGFydGluZyB5IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNj
cmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVj
dF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0lEVEgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJXaWR0aCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSEVJR0hULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkhlaWdodCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVGhlIGhlaWdodCBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisK
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1RPT0xCQVJfVklTSUJMRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xiYXItdmlzaWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vbGJhciBWaXNpYmxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSB0
b29sIGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X1NUQVRVU0JBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic3RhdHVzYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlN0YXR1c2JhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXMgYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZv
ciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU0NST0xMQkFSX1ZJU0lCTEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JvbGxiYXItdmlzaWJsZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsYmFyIFZpc2libGUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHNj
cm9sbCBiYXJzIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfTUVOVUJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAibWVudWJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNZW51YmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkNvbnRyb2xzIHdoZXRoZXIgdGhlIG1lbnUgYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUg
d2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2F0aW9uYmFyIFZpc2libGUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIGxv
Y2F0aW9uIGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX1JFU0laQUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJl
c2l6YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVzaXphYmxl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGV0aGVyIHRoZSB3aW5k
b3cgc2hvdWxkIGJlIHJlc2l6YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRlVMTFNDUkVFTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlz
cGxheWVkIGZ1bGxzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRElBTE9HLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlhbG9nIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEaWFsb2ciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHNob3VsZCBiZSBhIGRpYWxvZywgb3IgYSB0
b3AgbGV2ZWwgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlc1ByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcykK
K3sKKyAgICB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2ID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVB
VFVSRVNfR0VUX1BSSVZBVEUod2ViX3dpbmRvd19mZWF0dXJlcyk7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZF
QVRVUkVTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2
ID0gd2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7Cisg
ICAgY2FzZSBQUk9QX1g6CisgICAgICAgIHByaXYtPnggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgcHJpdi0+eSA9IGdf
dmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSURU
SDoKKyAgICAgICAgcHJpdi0+d2lkdGggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfSEVJR0hUOgorICAgICAgICBwcml2LT5oZWlnaHQgPSBn
X3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9P
TEJBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT50b29sYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JB
Ul9WSVNJQkxFOgorICAgICAgICBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0
X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFS
X1ZJU0lCTEU6CisgICAgICAgIHByaXYtPnNjcm9sbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJ
U0lCTEU6CisgICAgICAgIHByaXYtPm1lbnViYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTE9DQVRJT05CQVJfVklT
SUJMRToKKyAgICAgICAgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUkVTSVpBQkxFOgor
ICAgICAgICBwcml2LT5yZXNpemFibGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExTQ1JFRU46CisgICAgICAgIHByaXYtPmZ1
bGxzY3JlZW4gPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0RJQUxPRzoKKyAgICAgICAgcHJpdi0+ZGlhbG9nID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVT
KG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2Vi
X3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNh
c2UgUFJPUF9YOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPngpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZh
bHVlLCBwcml2LT55KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJRFRIOgorICAg
ICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPndpZHRoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0hFSUdIVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBw
cml2LT5oZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJ
QkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT50b29sYmFyX3Zp
c2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnN0YXR1c2Jhcl92aXNp
YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5zY3JvbGxiYXJfdmlzaWJs
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lCTEU6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPm1lbnViYXJfdmlzaWJsZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5sb2NhdGlvbmJhcl92aXNpYmxlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JFU0laQUJMRToKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+cmVzaXphYmxlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0ZVTExTQ1JFRU46CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHByaXYtPmZ1bGxzY3JlZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRElB
TE9HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5kaWFsb2cpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXc6CisgKgor
ICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2Ugd2l0aCBk
ZWZhdWx0IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJW
aWV3LgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0
YW5jZQorICoqLworV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2Zl
YXR1cmVzX25ldygpCit7CisgICAgcmV0dXJuIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBOVUxMKSk7Cit9CisK
Ky8vIGZvciBpbnRlcm5hbCB1c2Ugb25seQorV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtp
dF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29uc3QgV2ViQ29y
ZTo6V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzICp3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygp
OworCisgICAgaWYoZmVhdHVyZXMueFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNU
KHdlYldpbmRvd0ZlYXR1cmVzKSwgIngiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLngpLCBO
VUxMKTsKKworICAgIGlmKGZlYXR1cmVzLnlTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09C
SkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ5Iiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy55
KSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy53aWR0aFNldCkKKyAgICAgICAgZ19vYmplY3Rf
c2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgIndpZHRoIiwgc3RhdGljX2Nhc3Q8aW50
PihmZWF0dXJlcy53aWR0aCksIE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMuaGVpZ2h0U2V0KQor
ICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAiaGVpZ2h0
Iiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy5oZWlnaHQpLCBOVUxMKTsKKworICAgIGdfb2Jq
ZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAgICJ0
b29sYmFyLXZpc2libGUiLCBmZWF0dXJlcy50b29sQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAg
ICAgInN0YXR1c2Jhci12aXNpYmxlIiwgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSwKKyAgICAg
ICAgICAgICAgICAgInNjcm9sbGJhci12aXNpYmxlIiwgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2li
bGUsCisgICAgICAgICAgICAgICAgICJtZW51YmFyLXZpc2libGUiLCBmZWF0dXJlcy5tZW51QmFy
VmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCBmZWF0dXJl
cy5sb2NhdGlvbkJhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJyZXNpemFibGUiLCBmZWF0
dXJlcy5yZXNpemFibGUsCisgICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiwgZmVhdHVyZXMu
ZnVsbHNjcmVlbiwKKyAgICAgICAgICAgICAgICAgImRpYWxvZyIsIGZlYXR1cmVzLmRpYWxvZywK
KyAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICByZXR1cm4gd2ViV2luZG93RmVhdHVyZXM7
Cit9CisKK2dib29sZWFuIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0
dXJlczIpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2MSA9IGZl
YXR1cmVzMS0+cHJpdjsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYy
ID0gZmVhdHVyZXMyLT5wcml2OworICAgIAorICAgIGlmKChwcml2MS0+eCA9PSBwcml2Mi0+eCkg
JiYKKyAgICAgICAocHJpdjEtPnkgPT0gcHJpdjItPnkpICYmCisgICAgICAgKHByaXYxLT53aWR0
aCA9PSBwcml2Mi0+d2lkdGgpICYmCisgICAgICAgKHByaXYxLT5oZWlnaHQgPT0gcHJpdjItPmhl
aWdodCkgJiYKKyAgICAgICAocHJpdjEtPnRvb2xiYXJfdmlzaWJsZSA9PSBwcml2Mi0+dG9vbGJh
cl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+c2Nyb2xsYmFyX3Zpc2libGUgPT0gcHJpdjIt
PnNjcm9sbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+bWVudWJhcl92aXNpYmxlID09
IHByaXYyLT5tZW51YmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5sb2NhdGlvbmJhcl92
aXNpYmxlID09IHByaXYyLT5sb2NhdGlvbmJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+
cmVzaXphYmxlID09IHByaXYyLT5yZXNpemFibGUpICYmCisgICAgICAgKHByaXYxLT5mdWxsc2Ny
ZWVuID09IHByaXYyLT5mdWxsc2NyZWVuKSAmJgorICAgICAgIChwcml2MS0+ZGlhbG9nID09IHBy
aXYyLT5kaWFsb2cpKQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICByZXR1cm4gRkFMU0U7Cit9
CisKKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg2NTI1MgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEg
PGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18K
KyNkZWZpbmUgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKworI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUyAgICAg
ICAgICAgICh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSgpKQorI2RlZmluZSBX
RUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVT
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mp
KQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZF
QVRVUkVTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xh
c3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJ
TkRPV19GRUFUVVJFUykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9D
TEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBF
X1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorCit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7
CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5n
IGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0
KSAodm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19nZXRfdHlwZSh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyoKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyh2b2lkKTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmIC8qIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfSF9fICovCg==
</data>
<flag name="review"
          id="9625"
          type_id="1"
          status="-"
          setter="christian"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21935</attachid>
            <date>2008-06-25 14:35:46 -0700</date>
            <delta_ts>2008-07-30 14:17:15 -0700</delta_ts>
            <desc>new proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>46892</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NDA4ZGViLi5kYjEyMDNj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDYtMjUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlBZGRlZCB0aGUgbmV3IFdlYktp
dEd0ayBmaWxlcyB0byBiZSBidWlsdDoKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy57Y3BwLGh9CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAwOC0w
Ni0xOCAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmls
ZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGE2YWUyOTkuLjIxYjdmYmYgMTAwNjQ0Ci0tLSBh
L0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0zMTcsNiArMzE3LDcgQEAg
d2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5o
IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwKIAlXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmgKIAogd2Via2l0Z3RrX2J1aWx0X3NvdXJjZXMgKz0gXApAQCAtMzQzLDYgKzM0NCw3IEBAIHdl
YmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5j
cHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcCBcCiAJV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHAgXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggOWQzNGM0Zi4uMTU1YzhiZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOC0w
Ni0yNSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTEzMAorCUNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93IGFuZCBmcmll
bmRzIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQKKwkKKwlDb2RlIGZyb20gR3VzdGF2byBOb3Jvbmhh
IGFuZCBNYXJjbyBCYXJpc2lvbmUKKwk8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4g
aW4gdGhpcyBjaGFuZ2Ugc2V0LgorCisJSW1wbGVtZW50ZWQgYWxsIHRoZSBDaHJvbWVDbGllbnQg
aW50ZXJmYWNlcyBuZWVkZWQgdG8gaGF2ZSBuZXcKKwl3aW5kb3cgY3JlYXRpb24gZnVuY3Rpb25p
bmcgYW5kIGV4cG9zZWQgdG8gY2xpZW50IGNvZGUuIFdlCisJaW1wbGVtZW50ZWQgYSBtaXJyb3Ig
R09iamVjdCB0byB0aGUgV2luZG93RmVhdHVyZXMgb2JqZWN0IHByb3ZpZGVkCisJYnkgV2ViQ29y
ZS4gQSBtaXJyb3IgZm9yIEZyYW1lTG9hZGVyUmVxdWVzdCB3YXMgYWxzbyBjcmVhdGVkOgorCVdl
YktpdFdlYlZpZXdSZXF1ZXN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRT
dGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdGF0dXNi
YXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJz
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6Cisg
ICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZh
dGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJL
aXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3Nl
dF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3
KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1
YWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4K
KwogMjAwOC0wNi0xOCAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9y
YS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMmU1NmMxZC4uYmU1ZWY5
YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
Y3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApA
QCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBDaHJpc3RpYW4gRHl3YW4g
PGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5v
cm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMCw2
ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3Rr
LmgiCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBA
IC0yNyw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0bmV0d29y
a3JlcXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtNTIsNyArNTUsNyBA
QCBGbG9hdFJlY3QgQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICBpZiAoIW1fd2ViVmll
dykKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgIEd0a1dpZGdldCogd2luZG93ID0g
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAo
d2luZG93KSB7CisgICAgaWYgKEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSkgewogICAgICAg
ICBnaW50IGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodDsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRf
cG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCAmbGVmdCwgJnRvcCk7CiAgICAgICAgIGd0a193
aW5kb3dfZ2V0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCAmd2lkdGgsICZoZWlnaHQpOwpAQCAt
NjEsOSArNjQsMjMgQEAgRmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAg
cmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVj
dChjb25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
IW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBn
dGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIGlmIChH
VEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpIHsKKyAgICAgICAgSW50UmVjdCBpbnRyZWN0ID0g
SW50UmVjdChyZWN0KTsKKyAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRv
d0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3
KTsKKworICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLAor
ICAgICAgICAgICAgICAgICAgICAgIngiLCBpbnRyZWN0LngoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICJ5IiwgaW50cmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLCBpbnRy
ZWN0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IiwgaW50cmVjdC5oZWln
aHQoKSwKKyAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIH0KIH0KIAogRmxvYXRSZWN0
IENocm9tZUNsaWVudDo6cGFnZVJlY3QoKQpAQCAtOTIsMjkgKzEwOSwzNyBAQCB2b2lkIENocm9t
ZUNsaWVudDo6dW5mb2N1cygpCiAgICAgaWYgKCFtX3dlYlZpZXcpCiAgICAgICAgIHJldHVybjsK
ICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURH
RVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKHdpbmRvdykKKyAgICBpZiAoR1RLX1dJREdFVF9UT1BM
RVZFTCh3aW5kb3cpKQogICAgICAgICBndGtfd2luZG93X3NldF9mb2N1cyhHVEtfV0lORE9XKHdp
bmRvdyksIE5VTEwpOwogfQogCi1QYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFt
ZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVy
ZXMpCitQYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVz
JiBjb3JlRmVhdHVyZXMpCiB7Ci0gICAgaWYgKGZlYXR1cmVzLmRpYWxvZykgewotICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVz
dCA9IDA7CisgICAgaWYgKCFmcmFtZUxvYWRSZXF1ZXN0LmlzRW1wdHkoKSkKKyAgICAgICAgbmV0
d29ya1JlcXVlc3QgPSB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X25ldyhmcmFtZUxvYWRSZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyhjb3JlRmVhdHVyZXMpOworCisg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IDA7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KG1fd2ViVmlldywgImNyZWF0ZS13ZWItdmlldyIsIGtpdChmcmFtZSksIHdlYldpbmRvd0ZlYXR1
cmVzLCBuZXR3b3JrUmVxdWVzdCwgJndlYlZpZXcpOworCisgICAgZ19vYmplY3RfdW5yZWYoR19P
QkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpKTsKKyAgICBpZiAobmV0d29ya1JlcXVlc3QpCisgICAg
ICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKG5ldHdvcmtSZXF1ZXN0KSk7CisKKyAgICBpZiAo
IXdlYlZpZXcpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFRP
RE86IEZyYW1lTG9hZFJlcXVlc3QgaXMgbm90IHVzZWQgKi8KLSAgICAgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19HRVRfQ0xBU1MobV93ZWJWaWV3KS0+Y3JlYXRl
X3dlYl92aWV3KG1fd2ViVmlldyk7Ci0gICAgICAgIGlmICghd2ViVmlldykKLSAgICAgICAgICAg
IHJldHVybiAwOwotCi0gICAgICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9
IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KTsKLSAgICAgICAgcmV0dXJuIHBy
aXZhdGVEYXRhLT5jb3JlUGFnZTsKLSAgICB9CisKKyAgICByZXR1cm4gY29yZSh3ZWJWaWV3KTsK
IH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNob3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdF93ZWJf
dmlld19zaG93KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpjYW5SdW5Nb2Rh
bCgpCkBAIC0xMjgsNTIgKzE1MywxMDEgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJh
cnNWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3
KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2lu
ZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZp
ZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRv
b2xiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6
dG9vbGJhcnNWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92
aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxl
OworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInRvb2xi
YXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAot
dm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21l
Q2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgdmlzaWJsZSwg
TlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmll
dykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMo
bV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxlIiwgJnZpc2libGUs
IE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0
U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJz
VmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
IW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENo
cm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUoKSB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jv
b2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4g
dmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKGJvb2wp
Cit2b2lkIENocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUoYm9vbCB2aXNpYmxlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdl
YmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29i
amVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAibWVudWJhci12aXNpYmxlIiwg
dmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSgp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFt
X3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2Zl
YXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0
X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJtZW51YmFyLXZpc2libGUiLCAmdmlz
aWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50
OjpzZXRSZXNpemFibGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUoYm9v
bCByZXNpemFibGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmll
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldp
bmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJW
aWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJy
ZXNpemFibGUiLCByZXNpemFibGUsIE5VTEwpOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6Y2xv
c2VXaW5kb3dTb29uKCkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHAKaW5kZXggZWE3OWU5OS4uYWE5NTRhZCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdG5l
dHdvcmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3
ZWJraXRwcml2YXRlLmgiCiAKQEAgLTI1OCw3ICsyNTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBt
YXJzaGFscyB0aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11
bHRpLXRocmVhZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCi0gICAg
KGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7
CisgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVz
ZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCkBAIC01NjEsNyArNTYyLDggQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCiAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyh3ZWJWaWV3KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtNzI4LDggKzczMCwyMSBAQCBib29sIEZy
YW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAogCiBGcmFtZSogRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21G
cmFtZShtX2ZyYW1lKTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX1dJTkRPV19GRUFUVVJFUywgTlVMTCkpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiBuZXR3b3JrUmVxdWVzdCA9IFdFQktJVF9ORVRXT1JLX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCwgTlVMTCkpOworICAgIFdlYktpdFdlYlZpZXcqIG5l
d1dlYlZpZXcgPSAwOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJjcmVh
dGUtd2ViLXZpZXciLCBtX2ZyYW1lLCB3ZWJXaW5kb3dGZWF0dXJlcywgbmV0d29ya1JlcXVlc3Qs
ICZuZXdXZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRvd0Zl
YXR1cmVzKSk7CisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1QobmV0d29ya1JlcXVlc3QpKTsK
KworICAgIGlmICghbmV3V2ViVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUo
bmV3V2ViVmlldyk7CisgICAgcmV0dXJuIGNvcmUocHJpdmF0ZURhdGEtPm1haW5GcmFtZSk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3koY29uc3QgUmVzb3VyY2VFcnJvciYpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXQtbWFyc2hhbC5saXN0IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwubGlz
dAppbmRleCBhOGYyNDUzLi4wOGUwZWNkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXQtbWFyc2hhbC5saXN0CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFs
Lmxpc3QKQEAgLTUsOCArNSwxMSBAQCBWT0lEOk9CSkVDVCxCT09MRUFOCiBWT0lEOk9CSkVDVCxT
VFJJTkcKIFZPSUQ6T0JKRUNULE9CSkVDVAogVk9JRDpPQkpFQ1QsUE9JTlRFUixQT0lOVEVSCitC
T09MRUFOOlZPSUQKIEJPT0xFQU46U1RSSU5HLElOVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNU
UklORwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklO
RyxTVFJJTkcsU1RSSU5HCiBJTlQ6T0JKRUNULE9CSkVDVAorT0JKRUNUOk9CSkVDVCxPQkpFQ1QK
K09CSkVDVDpPQkpFQ1QsT0JKRUNULE9CSkVDVApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAppbmRleCAxMGMyMTRmLi4y
OWQzZGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
ZGVmaW5lcy5oCmluZGV4IDM4NmMzZTEuLmRhYzJkZDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGRlZmluZXMuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZp
bmVzLmgKQEAgLTU1LDYgKzU1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZyYW1lQ2xh
c3MgV2ViS2l0V2ViRnJhbWVDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5n
cyBXZWJLaXRXZWJTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3M7
CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IGVkODFhMWMuLmY1MmRkMmIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRwcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3
aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuaD4KIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMzgsNiArMzksNyBAQAog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAogI2luY2x1ZGUgPGds
aWIuaD4KIApAQCAtNjcsNiArNjksNyBAQCBleHRlcm4gIkMiIHsKICAgICBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdQcml2YXRlIHsKICAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2U7CiAgICAg
ICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKKyAgICAgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzOwogCiAgICAgICAgIFdlYktpdFdlYkZyYW1l
KiBtYWluRnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQ7CkBAIC0xMTAsNiArMTEzLDkgQEAgZXh0ZXJuICJDIiB7CiAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9p
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyoKKyAgICB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVz
IChjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpOworCiAgICAgLy8gRklY
TUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVl
biBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggNmE3ZWExZi4uZGRkZmVkOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFhhbiBM
b3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxh
bHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggSmFuIEFsb256byA8am1hbG9u
em9AdW5wbHVnZ2FibGUuY29tPgorICogIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBM
dGQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgpAQCAtNzAsNiAr
NzEsOCBAQCBleHRlcm4gIkMiIHsKIGVudW0gewogICAgIC8qIG5vcm1hbCBzaWduYWxzICovCiAg
ICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAgQ1JFQVRFX1dFQl9WSUVXLAorICAgIFNIT1df
V0VCX1ZJRVcsCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURfU1RBUlRFRCwK
ICAgICBMT0FEX0NPTU1JVFRFRCwKQEAgLTk5LDYgKzEwMiw3IEBAIGVudW0gewogICAgIFBST1Bf
UEFTVEVfVEFSR0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1NFVFRJTkdT
LAorICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTLAogICAgIFBST1BfVFJBTlNQQVJFTlQsCiAgICAg
UFJPUF9aT09NX0xFVkVMLAogICAgIFBST1BfRlVMTF9DT05URU5UX1pPT00KQEAgLTIzNCw2ICsy
MzgsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKgogICAgIGNhc2UgUFJPUF9TRVRUSU5HUzoK
ICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nl
dHRpbmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19G
RUFUVVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMjU5LDYgKzI2Niw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHCiAgICAgY2FzZSBQ
Uk9QX1NFVFRJTkdTOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKHdlYlZp
ZXcsIFdFQktJVF9XRUJfU0VUVElOR1MoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSkpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3LCBXRUJLSVRfV0VCX1dJTkRP
V19GRUFUVVJFUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF90
cmFuc3BhcmVudCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNTU4LDEyICs1NjgsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2NvbnRhaW5lcl9mb3JhbGwoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIGdib29sZWFuLAogICAg
ICAgICAoKmNhbGxiYWNrKSgqY3VycmVudCwgY2FsbGJhY2tEYXRhKTsKIH0KIAotc3RhdGljIFdl
YktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRX
ZWJWaWV3KikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVh
dGVfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiwgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19yZWFsX3Nob3dfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyopCit7CisgICAgcmV0dXJuIEZBTFNF
OworfQorCiBzdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJfdmlld19y
ZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJGcmFtZSog
ZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpA
QCAtNzIxLDYgKzczNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPnZlcnRpY2FsQWRq
dXN0bWVudCk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFja0ZvcndhcmRMaXN0KTsKICAg
ICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CisgICAgZ19vYmplY3RfdW5yZWYo
cHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPm1haW5G
cmFtZSk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsKICAgICBndGtfdGFy
Z2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90YXJnZXRfbGlzdCk7CkBAIC03MzAsNiArNzQ1LDE4
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmZpbmFs
aXplKG9iamVjdCk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfY3JlYXRlX3dlYl92aWV3
X3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFsdWUqIHJl
dHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVtbXkpCit7
CisgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICBncG9pbnRlciBuZXdXZWJW
aWV3ID0gZ192YWx1ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOworICBnX3ZhbHVlX3NldF9v
YmplY3QocmV0dXJuQWNjdSwgbmV3V2ViVmlldyk7CisKKyAgaWYgKG5ld1dlYlZpZXcpCisgICAg
ICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7CisKKyAgcmV0dXJuIGNvbnRpbnVlRW1pc3Npb247
Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQo
R1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBH
VmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQogewogICBnYm9vbGVhbiBjb250
aW51ZUVtaXNzaW9uID0gVFJVRTsKQEAgLTc3Miw2ICs3OTksNTcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3Mp
CiAgICAgICogU2lnbmFscwogICAgICAqLwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6Y3JlYXRlLXdlYi12aWV3OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGlj
aCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJh
bWUKKyAgICAgKiBAd2luZG93X2ZlYXR1cmVzOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc3QK
KyAgICAgKiBAbmV0d29ya19yZXF1ZXN0OiBhICNXZWJLaXROZXR3b3JrUmVxdWVzdAorICAgICAq
IEByZXR1cm46IGEgbmV3bHkgYWxsb2NhdGVkICNXZWJLaXRXZWJWaWV3IG9yICVOVUxMCisgICAg
ICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHdpbmRvdyBpcyBy
ZXF1ZXN0ZWQuCisgICAgICogSWYgdGhpcyBzaWduYWwgaXMgaGFuZGxlZCB0aGUgc2lnbmFsIGhh
bmRsZXIgc2hvdWxkIHJldHVybiB0aGUKKyAgICAgKiBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJW
aWV3LiBUaGUgbmV3ICNXZWJLaXRXZWJWaWV3IHNob3VsZCBub3QgYmUKKyAgICAgKiBkaXNwbGF5
ZWQgdG8gdGhlIHVzZXIgdW50aWwgdGhlICJzaG93LXdlYi12aWV3IiBzaWduYWwgaXMgZW1pdHRl
ZC4KKyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIG5vdCB0cnkgdG8g
ZGVhbCB3aXRoIHRoZSByZWZlcmVuY2UKKyAgICAgKiBjb3VudCBmb3IgdGhlIG5ldyAjV2ViS2l0
V2ViVmlldy4gVGhlIHdpZGdldCB0byB3aGljaCB0aGUKKyAgICAgKiB3aWRnZXQgaXMgYWRkZWQg
d2lsbCBoYW5kbGUgdGhhdC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tD
UkVBVEVfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3KCJjcmVhdGUtd2ViLXZpZXciLAorICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2ln
bmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAg
ICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBjcmVhdGVfd2ViX3ZpZXcp
LAorICAgICAgICAgICAgd2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQsCisg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfT0JKRUNUX19PQkpF
Q1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXICwgMywK
KyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSwKKyAgICAgICAgICAgIFdFQktJVF9U
WVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ORVRXT1JL
X1JFUVVFU1QpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6c2hvdy13ZWItdmll
dzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBl
bWl0dGVkCisgICAgICogQHJldHVybjogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9t
IGJlaW5nIGludm9rZWQgZm9yCisgICAgICogdGhlIGV2ZW50LCAlRkFMU0UgdG8gcHJvcGFnYXRl
IHRoZSBldmVudCBmdXJ0aGVyCisgICAgICoKKyAgICAgKiBFbWl0dGVkIGFmdGVyICJjcmVhdGUt
d2ViLXZpZXciIHdoZW4gdGhlIG5ldyAjV2ViS2l0V2ViVmlldyBzaG91bGQKKyAgICAgKiBiZSBk
aXNwbGF5ZWQgdG8gdGhlIHVzZXIuCisgICAgICoKKyAgICAgKiBJZiB0aGVyZSBpc24ndCBhbnkg
aGFuZGxlciBmb3IgdGhpcyBzaWduYWwgb3IgaWYgdGhleSByZXR1cm4KKyAgICAgKiAlRkFMU0Us
IHRoZW4gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIGNhbGwgZ3RrX3dpZGdldF9zaG93KCkgb24K
KyAgICAgKiB0aGUgdG9wbGV2ZWwgd2luZG93IGNvbnRhaW5pbmcgQHdlYl92aWV3LCBhbmQgb24g
QHdlYl92aWV3LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1NIT1dfV0VC
X1ZJRVddID0gZ19zaWduYWxfbmV3KCJzaG93LXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShH
X1NJR05BTF9SVU5fTEFTVCksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdl
YlZpZXdDbGFzcywgc2hvd193ZWJfdmlldyksCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVs
YXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0
X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAwKTsK
KwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW05BVklHQVRJT05fUkVRVUVTVEVEXSA9IGdf
c2lnbmFsX25ldygibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lH
TkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKQEAgLTExMDcsNiArMTE4NSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyog
d2ViVmlld0NsYXNzKQogICAgICAqIGltcGxlbWVudGF0aW9ucyBvZiB2aXJ0dWFsIG1ldGhvZHMK
ICAgICAgKi8KICAgICB3ZWJWaWV3Q2xhc3MtPmNyZWF0ZV93ZWJfdmlldyA9IHdlYmtpdF93ZWJf
dmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldzsKKyAgICB3ZWJWaWV3Q2xhc3MtPnNob3dfd2ViX3Zp
ZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG93X3dlYl92aWV3OwogICAgIHdlYlZpZXdDbGFz
cy0+bmF2aWdhdGlvbl9yZXF1ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9u
X3JlcXVlc3RlZDsKICAgICB3ZWJWaWV3Q2xhc3MtPndpbmRvd19vYmplY3RfY2xlYXJlZCA9IHdl
YmtpdF93ZWJfdmlld19yZWFsX3dpbmRvd19vYmplY3RfY2xlYXJlZDsKICAgICB3ZWJWaWV3Q2xh
c3MtPmNob29zZV9maWxlID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX2ZpbGU7CkBAIC0x
MjA2LDYgKzEyODUsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5H
UywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9XSU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJ3aW5kb3ctZmVh
dHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiV2luZG93IEZlYXR1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFuIGFzc29jaWF0ZWQgV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMgaW5zdGFuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KG9iamVjdENsYXNzLCBQUk9QX0VESVRBQkxFLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVkaXRhYmxlIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFZGl0YWJsZSIs
CkBAIC0xNDM3LDYgKzE1MjMsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGlu
Z3Mod2ViVmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAic2NyZWVuLWNoYW5n
ZWQiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdlZCksIE5VTEwpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+d2ViU2V0dGluZ3MsICJub3RpZnkiLCBHX0NBTExC
QUNLKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpLCB3ZWJWaWV3KTsKKworICAgIHBy
aXYtPndlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCk7
CiB9CiAKIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ldyh2b2lkKQpAQCAtMTQ0Niw2ICsx
NTM0LDIyIEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ldyh2b2lkKQogICAgIHJldHVy
biBHVEtfV0lER0VUKHdlYlZpZXcpOwogfQogCit2b2lkIHdlYmtpdF93ZWJfdmlld19zaG93KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOworCisgICAgZ2Jvb2xlYW4gaXNIYW5kbGVkID0gRkFMU0U7Cisg
ICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tTSE9XX1dF
Ql9WSUVXXSwgMCwgJmlzSGFuZGxlZCk7CisgICAgaWYgKGlzSGFuZGxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVs
KEdUS19XSURHRVQod2ViVmlldykpOworICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHRvcGxl
dmVsKSkKKyAgICAgICAgZ3RrX3dpZGdldF9zaG93KHRvcGxldmVsKTsKKyAgICBndGtfd2lkZ2V0
X3Nob3coR1RLX1dJREdFVCh3ZWJWaWV3KSk7Cit9CisKKwogdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
c2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlNldHRpbmdzKiB3
ZWJTZXR0aW5ncykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3
ZWJWaWV3KSk7CkBAIC0xNDcwLDYgKzE1NzQsNDggQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtp
dF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAogLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqIEB3aW5kb3dfZmVhdHVyZXM6IGEgI1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzCisgKgorICogVGhpcyB3aWxsIHNldCBob3cgdGhlIHdpbmRvdyBjb250YWluaW5nIHRo
ZSAjV2ViS2l0V2ViVmlldyBzaG91bGQKKyAqIGxvb2sgYW5kIGJlaGF2ZS4gQXBwbGljYXRpb25z
IG1heSB3YW50IHRvIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQKKyAqIGFwcGx5IHRoZSBzZXR0
aW5ncyBpdCBjYXJyaWVzIHRvIHRoZSB3aW5kb3cgaG9sZGluZyB0aGUgcmVsZXZhbnQKKyAqICNX
ZWJLaXRXZWJWaWV3LgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1
cmVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJX
aW5kb3dGZWF0dXJlcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1dJTkRPV19G
RUFUVVJFUyh3ZWJXaW5kb3dGZWF0dXJlcykpOworICAgIAorICAgIFdlYktpdFdlYlZpZXdQcml2
YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIGlmKHdlYmtpdF93ZWJfd2luZG93X2Zl
YXR1cmVzX2VxdWFsKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzLCB3ZWJXaW5kb3dGZWF0dXJlcykp
CisgICAgICByZXR1cm47CisKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJXaW5kb3dGZWF0
dXJlcyk7CisgICAgZ19vYmplY3RfcmVmKHdlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICBwcml2LT53
ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYldpbmRvd0ZlYXR1cmVzOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzCisgKiBAd2ViVmlldzogYSAjV2ViS2l0V2Vi
VmlldworICoKKyAqIFJldHVybnMgdGhlIGluc3RhbmNlIG9mICNXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcyBoZWxkIGJ5IHRoZSBnaXZlbgorICogI1dlYktpdFdlYlZpZXcuCisgKgorICogUmV0dXJu
IHZhbHVlOiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzCisgKi8KK1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzOworfQor
CisvKioKICAqIHdlYmtpdF93ZWJfdmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0
OgogICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqIEBmbGFnOiB0byB0ZWxsIHRoZSB2
aWV3IHRvIG1haW50YWluIGEgYmFjayBvciBmb3J3YXJkIGxpc3QKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuaAppbmRleCBlYmQxYWExLi5kZGQ3ZGUzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oCkBAIC02MywxMSArNjMsMTMgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAg
ICAgLyoKICAgICAgKiBkZWZhdWx0IGhhbmRsZXIvdmlydHVhbCBtZXRob2RzCi0gICAgICogRElT
Q1VTUzogY3JlYXRlX3dlYl92aWV3IG5lZWRzIGEgcmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2Ug
dGhpcyBhIHNpZ25hbCB3aXRoIGRlZmF1bHQgaGFuZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJl
cXVpcmUgc29tZW9uZSBkb2luZyBhIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAg
ICAqIFdlYlVJRGVsZWdhdGUgaGFzIG5vdGhpbmcgZm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5
RGVsZWdhdGUgYXMgd2VsbC4uLgogICAgICAqLwotICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAqICgqIGNyZWF0ZV93ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7
CisgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICAgICogKCogY3JlYXRlX3dlYl92aWV3KSAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViRnJhbWUgICAg
ICAgKndlYl9mcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgKndpbmRvd19mZWF0dXJl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QgKnJlcXVlc3QpOworCisgICAgZ2Jvb2xlYW4gICAg
ICAgICAgICAgICAgICAgKCogc2hvd193ZWJfdmlldykgICAgICAgICAgKFdlYktpdFdlYlZpZXcq
IHdlYl92aWV3KTsKIAogICAgIC8qCiAgICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhp
bmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKQEAgLTI0
MSwxMiArMjQzLDIyIEBAIFdFQktJVF9BUEkgR3RrVGFyZ2V0TGlzdCAqCiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3Bhc3RlX3RhcmdldF9saXN0ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
KndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2hvdyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsK
KworV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlNldHRpbmdzICAg
ICpzZXR0aW5ncyk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgogd2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF93
aW5kb3dfZmVhdHVyZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsKKworV0VCS0lUX0FQSSBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVz
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRf
QVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhlNjExZjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKQEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1
ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5o
IgorCitleHRlcm4gIkMiIHsKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9YLAor
ICAgIFBST1BfWSwKKyAgICBQUk9QX1dJRFRILAorICAgIFBST1BfSEVJR0hULAorICAgIFBST1Bf
VE9PTEJBUl9WSVNJQkxFLAorICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9T
Q1JPTExCQVJfVklTSUJMRSwKKyAgICBQUk9QX01FTlVCQVJfVklTSUJMRSwKKyAgICBQUk9QX0xP
Q0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9SRVNJWkFCTEUsCisgICAgUFJPUF9GVUxMU0NS
RUVOLAorICAgIFBST1BfRElBTE9HCit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzLCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlcywgR19UWVBFX09CSkVDVCkKKwor
c3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUgeworICAgIGdpbnQgeDsKKyAg
ICBnaW50IHk7CisgICAgZ2ludCB3aWR0aDsKKyAgICBnaW50IGhlaWdodDsKKworICAgIGdib29s
ZWFuIHRvb2xiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzdGF0dXNiYXJfdmlzaWJsZTsKKyAg
ICBnYm9vbGVhbiBzY3JvbGxiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBtZW51YmFyX3Zpc2li
bGU7CisgICAgZ2Jvb2xlYW4gbG9jYXRpb25iYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiByZXNp
emFibGU7CisKKyAgICBnYm9vbGVhbiBmdWxsc2NyZWVuOworICAgIGdib29sZWFuIGRpYWxvZzsK
K307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX1BSSVZBVEUob2Jq
KSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lO
RE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUpKQorCitzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
OworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfY2xhc3NfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKiBrbGFzcykK
K3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFz
cyk7CisgICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19maW5hbGl6ZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRf
d2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5OworCisg
ICAgR1BhcmFtRmxhZ3MgZmxhZ3MgPSAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVCk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX1gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24g
dGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVGhlIHN0YXJ0aW5nIHkgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2Ny
ZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0
X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSURUSCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIldpZHRoIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9IRUlHSFQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiSGVpZ2h0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfVE9PTEJBUl9WSVNJQkxFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbGJhci12aXNpYmxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUb29sYmFyIFZpc2libGUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHRv
b2xiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9T
VEFUVVNCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InN0YXR1c2Jhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTdGF0dXNiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29udHJvbHMgd2hldGhlciB0aGUgc3RhdHVzYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0
aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfU0NST0xMQkFSX1ZJU0lCTEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JvbGxiYXItdmlzaWJsZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsYmFyIFZpc2libGUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHNjcm9s
bGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9N
RU5VQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJt
ZW51YmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1l
bnViYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29u
dHJvbHMgd2hldGhlciB0aGUgbWVudWJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRv
dy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJMb2NhdGlvbmJhciBWaXNpYmxlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBsb2NhdGlv
bmJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1JF
U0laQUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc2l6YWJs
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVzaXphYmxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGV0aGVyIHRoZSB3aW5kb3cgc2hv
dWxkIGJlIHJlc2l6YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRlVMTFNDUkVFTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlzcGxheWVk
IGZ1bGxzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRElBTE9HLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGlhbG9nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJEaWFsb2ciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHNob3VsZCBiZSBhIGRpYWxvZywgb3IgYSB0b3AgbGV2
ZWwgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX3R5
cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
c1ByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
aW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcykKK3sKKyAg
ICB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2ID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNf
R0VUX1BSSVZBVEUod2ViX3dpbmRvd19mZWF0dXJlcyk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVT
KG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2Vi
X3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2Fz
ZSBQUk9QX1g6CisgICAgICAgIHByaXYtPnggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgcHJpdi0+eSA9IGdfdmFsdWVf
Z2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAg
ICAgICAgcHJpdi0+d2lkdGggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfSEVJR0hUOgorICAgICAgICBwcml2LT5oZWlnaHQgPSBnX3ZhbHVl
X2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9PTEJBUl9W
SVNJQkxFOgorICAgICAgICBwcml2LT50b29sYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJ
QkxFOgorICAgICAgICBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJU0lC
TEU6CisgICAgICAgIHByaXYtPnNjcm9sbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lCTEU6
CisgICAgICAgIHByaXYtPm1lbnViYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRToK
KyAgICAgICAgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUkVTSVpBQkxFOgorICAgICAg
ICBwcml2LT5yZXNpemFibGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExTQ1JFRU46CisgICAgICAgIHByaXYtPmZ1bGxzY3Jl
ZW4gPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0RJQUxPRzoKKyAgICAgICAgcHJpdi0+ZGlhbG9nID0gZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUq
IHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iamVj
dCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2ViX3dpbmRv
d19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJP
UF9YOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPngpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBw
cml2LT55KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJRFRIOgorICAgICAgICBn
X3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPndpZHRoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0hFSUdIVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT5o
ZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJQkxFOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT50b29sYmFyX3Zpc2libGUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnN0YXR1c2Jhcl92aXNpYmxlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5zY3JvbGxiYXJfdmlzaWJsZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lCTEU6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPm1lbnViYXJfdmlzaWJsZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFOgorICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5sb2NhdGlvbmJhcl92aXNpYmxlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JFU0laQUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgcHJpdi0+cmVzaXphYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0ZVTExTQ1JFRU46CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHBy
aXYtPmZ1bGxzY3JlZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRElBTE9HOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5kaWFsb2cpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXc6CisgKgorICogQ3Jl
YXRlcyBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0
IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3Lgor
ICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQor
ICoqLworV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X25ldygpCit7CisgICAgcmV0dXJuIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBOVUxMKSk7Cit9CisKKy8vIGZv
ciBpbnRlcm5hbCB1c2Ugb25seQorV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMmIGZlYXR1cmVzKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3
ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOworCisg
ICAgaWYoZmVhdHVyZXMueFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldp
bmRvd0ZlYXR1cmVzKSwgIngiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLngpLCBOVUxMKTsK
KworICAgIGlmKGZlYXR1cmVzLnlTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3
ZWJXaW5kb3dGZWF0dXJlcyksICJ5Iiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy55KSwgTlVM
TCk7CisKKyAgICBpZihmZWF0dXJlcy53aWR0aFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgIndpZHRoIiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0
dXJlcy53aWR0aCksIE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMuaGVpZ2h0U2V0KQorICAgICAg
ICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAiaGVpZ2h0Iiwgc3Rh
dGljX2Nhc3Q8aW50PihmZWF0dXJlcy5oZWlnaHQpLCBOVUxMKTsKKworICAgIGdfb2JqZWN0X3Nl
dChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAgICJ0b29sYmFy
LXZpc2libGUiLCBmZWF0dXJlcy50b29sQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInN0
YXR1c2Jhci12aXNpYmxlIiwgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSwKKyAgICAgICAgICAg
ICAgICAgInNjcm9sbGJhci12aXNpYmxlIiwgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUsCisg
ICAgICAgICAgICAgICAgICJtZW51YmFyLXZpc2libGUiLCBmZWF0dXJlcy5tZW51QmFyVmlzaWJs
ZSwKKyAgICAgICAgICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCBmZWF0dXJlcy5sb2Nh
dGlvbkJhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJyZXNpemFibGUiLCBmZWF0dXJlcy5y
ZXNpemFibGUsCisgICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiwgZmVhdHVyZXMuZnVsbHNj
cmVlbiwKKyAgICAgICAgICAgICAgICAgImRpYWxvZyIsIGZlYXR1cmVzLmRpYWxvZywKKyAgICAg
ICAgICAgICAgICAgTlVMTCk7CisKKyAgICByZXR1cm4gd2ViV2luZG93RmVhdHVyZXM7Cit9CisK
K2dib29sZWFuIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczIp
Cit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2MSA9IGZlYXR1cmVz
MS0+cHJpdjsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYyID0gZmVh
dHVyZXMyLT5wcml2OworICAgIAorICAgIGlmKChwcml2MS0+eCA9PSBwcml2Mi0+eCkgJiYKKyAg
ICAgICAocHJpdjEtPnkgPT0gcHJpdjItPnkpICYmCisgICAgICAgKHByaXYxLT53aWR0aCA9PSBw
cml2Mi0+d2lkdGgpICYmCisgICAgICAgKHByaXYxLT5oZWlnaHQgPT0gcHJpdjItPmhlaWdodCkg
JiYKKyAgICAgICAocHJpdjEtPnRvb2xiYXJfdmlzaWJsZSA9PSBwcml2Mi0+dG9vbGJhcl92aXNp
YmxlKSAmJgorICAgICAgIChwcml2MS0+c2Nyb2xsYmFyX3Zpc2libGUgPT0gcHJpdjItPnNjcm9s
bGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+bWVudWJhcl92aXNpYmxlID09IHByaXYy
LT5tZW51YmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5sb2NhdGlvbmJhcl92aXNpYmxl
ID09IHByaXYyLT5sb2NhdGlvbmJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+cmVzaXph
YmxlID09IHByaXYyLT5yZXNpemFibGUpICYmCisgICAgICAgKHByaXYxLT5mdWxsc2NyZWVuID09
IHByaXYyLT5mdWxsc2NyZWVuKSAmJgorICAgICAgIChwcml2MS0+ZGlhbG9nID09IHByaXYyLT5k
aWFsb2cpKQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKwor
fQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMu
aCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODczMDA3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bn
bm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKyNkZWZp
bmUgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RF
Q0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUyAgICAgICAgICAg
ICh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRf
V0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNT
KGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBF
X1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorI2Rl
ZmluZSBXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVT
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19G
RUFUVVJFUykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9X
SU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7CisgICAg
R09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1By
aXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mg
eworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBm
dXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7
CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9p
ZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19n
ZXRfdHlwZSAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyoKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyAgICAgICAgICAgICAgICAg
KHZvaWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19lcXVhbCAgICAgICAgICAgICAgIChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAv
KiBfX1dFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0hfXyAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22564</attachid>
            <date>2008-07-30 14:17:15 -0700</date>
            <delta_ts>2008-08-01 12:12:33 -0700</delta_ts>
            <desc>improved proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>49073</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NzRkMDBlLi4wNWIxOGFl
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDctMzAgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDA4LTA3LTMwICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KZGlmZiAtLWdpdCBh
L0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggOWIyZjA2Zi4uZGE5YmRlOCAx
MDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTMxNyw2
ICszMTcsNyBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmgg
XAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAorCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAogCiB3ZWJraXRndGtfYnVpbHRfc291cmNlcyArPSBcCkBAIC0zNDMsNiAr
MzQ0LDcgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCiAJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVu
dUNsaWVudEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzMjQzOWUwLi43NjdlMmM4IDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDA4LTA3LTMwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorICAgICAgICBDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCisgICAg
ICAgIAorICAgICAgICBDb2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFuZCBNYXJjbyBCYXJpc2lv
bmUKKyAgICAgICAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+IGluIHRoaXMgY2hh
bmdlIHNldC4KKworICAgICAgICBJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRl
cmZhY2VzIG5lZWRlZCB0byBoYXZlIG5ldworICAgICAgICB3aW5kb3cgY3JlYXRpb24gZnVuY3Rp
b25pbmcgYW5kIGV4cG9zZWQgdG8gY2xpZW50IGNvZGUuIFdlCisgICAgICAgIGltcGxlbWVudGVk
IGEgbWlycm9yIEdPYmplY3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9iamVjdCBwcm92aWRlZAor
ICAgICAgICBieSBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRT
dGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdGF0dXNi
YXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJz
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6Cisg
ICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZh
dGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJL
aXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3Nl
dF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3
KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1
YWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4K
KwogMjAwOC0wNy0zMCAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9y
YS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMmU1NmMxZC4uZjkyMWI0YiAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNo
cmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMCw2ICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgi
CiAKKyNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0y
Nyw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0bmV0d29ya3Jl
cXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtNTIsNyArNTUsNyBAQCBG
bG9hdFJlY3QgQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICBpZiAoIW1fd2ViVmlldykK
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2lu
ZG93KSB7CisgICAgaWYgKEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSkgewogICAgICAgICBn
aW50IGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodDsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfcG9z
aXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCAmbGVmdCwgJnRvcCk7CiAgICAgICAgIGd0a193aW5k
b3dfZ2V0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCAmd2lkdGgsICZoZWlnaHQpOwpAQCAtNjEs
OSArNjQsMjMgQEAgRmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgcmV0
dXJuIEZsb2F0UmVjdCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChj
b25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1f
d2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIGlmIChHVEtf
V0lER0VUX1RPUExFVkVMKHdpbmRvdykpIHsKKyAgICAgICAgSW50UmVjdCBpbnRyZWN0ID0gSW50
UmVjdChyZWN0KTsKKyAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0Zl
YXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsK
KworICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgIngiLCBpbnRyZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICJ5IiwgaW50cmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLCBpbnRyZWN0
LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IiwgaW50cmVjdC5oZWlnaHQo
KSwKKyAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIH0KIH0KIAogRmxvYXRSZWN0IENo
cm9tZUNsaWVudDo6cGFnZVJlY3QoKQpAQCAtOTIsMjkgKzEwOSw0MCBAQCB2b2lkIENocm9tZUNs
aWVudDo6dW5mb2N1cygpCiAgICAgaWYgKCFtX3dlYlZpZXcpCiAgICAgICAgIHJldHVybjsKICAg
ICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQo
bV93ZWJWaWV3KSk7Ci0gICAgaWYgKHdpbmRvdykKKyAgICBpZiAoR1RLX1dJREdFVF9UT1BMRVZF
TCh3aW5kb3cpKQogICAgICAgICBndGtfd2luZG93X3NldF9mb2N1cyhHVEtfV0lORE9XKHdpbmRv
dyksIE5VTEwpOwogfQogCi1QYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSos
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMp
CitQYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBj
b3JlRmVhdHVyZXMpCiB7Ci0gICAgaWYgKGZlYXR1cmVzLmRpYWxvZykgewotICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdCA9
IDA7CisKKyAgICAvLyBGSVhNRTogdXNlIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3X2Zyb21f
cmVzb3VyY2VfcmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCkKKyAgICAv
LyB3aGVuICMxODYwOCBsYW5kcworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5KCkp
CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcoZnJh
bWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29yZUZl
YXR1cmVzKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBraXQoZnJhbWUpLCB3
ZWJXaW5kb3dGZWF0dXJlcywgbmV0d29ya1JlcXVlc3QsICZ3ZWJWaWV3KTsKKworICAgIGdfb2Jq
ZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSk7CisgICAgaWYgKG5ldHdvcmtS
ZXF1ZXN0KQorICAgICAgICBnX29iamVjdF91bnJlZihHX09CSkVDVChuZXR3b3JrUmVxdWVzdCkp
OworCisgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2Ugewot
ICAgICAgICAvKiBUT0RPOiBGcmFtZUxvYWRSZXF1ZXN0IGlzIG5vdCB1c2VkICovCi0gICAgICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG1fd2Vi
VmlldyktPmNyZWF0ZV93ZWJfdmlldyhtX3dlYlZpZXcpOwotICAgICAgICBpZiAoIXdlYlZpZXcp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAg
ICAgIHJldHVybiBwcml2YXRlRGF0YS0+Y29yZVBhZ2U7Ci0gICAgfQorCisgICAgcmV0dXJuIGNv
cmUod2ViVmlldyk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpzaG93KCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyhtX3dlYlZpZXcpOwogfQogCiBib29sIENocm9tZUNsaWVu
dDo6Y2FuUnVuTW9kYWwoKQpAQCAtMTI4LDUyICsxNTYsMTAxIEBAIHZvaWQgQ2hyb21lQ2xpZW50
OjpydW5Nb2RhbCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGll
bnQ6OnNldFRvb2xiYXJzVmlzaWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFRvb2xi
YXJzVmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVh
dHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dG
ZWF0dXJlcyksICJ0b29sYmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBD
aHJvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jv
b2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJ0b29sYmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZp
c2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wp
Cit2b2lkIENocm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVmlzaWJsZShib29sIHZpc2libGUpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0
dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0g
d2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdf
b2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzdGF0dXNiYXItdmlzaWJs
ZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6c3RhdHVzYmFyVmlz
aWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2lu
ZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdf
b2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJzdGF0dXNiYXItdmlzaWJs
ZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAotdm9pZCBDaHJv
bWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6
c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
d2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qo
d2ViV2luZG93RmVhdHVyZXMpLCAic2Nyb2xsYmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsK
IH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnNjcm9sbGJhcnNWaXNpYmxlKCkgewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2lu
ZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZp
ZXcpOworICAgIGdib29sZWFuIHZpc2libGU7CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qo
d2ViV2luZG93RmVhdHVyZXMpLCAic2Nyb2xsYmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7
CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRNZW51YmFy
VmlzaWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKGJvb2wg
dmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQor
ICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcp
OworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgIm1lbnVi
YXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNsaWVudDo6bWVu
dWJhclZpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdib29sZWFuIHZpc2libGU7CisK
KyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAibWVudWJhci12
aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lk
IENocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0
UmVzaXphYmxlKGJvb2wgcmVzaXphYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
aWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2Zl
YXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93
RmVhdHVyZXMpLCAicmVzaXphYmxlIiwgcmVzaXphYmxlLCBOVUxMKTsKIH0KIAogdm9pZCBDaHJv
bWVDbGllbnQ6OmNsb3NlV2luZG93U29vbigpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDhjZjA4ODYuLjBmYmY0YjEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNs
dWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgi
CiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCkBAIC0yNTgsNyArMjU5LDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
RnJhbWVQb2xpY3lGdW5jdGkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBJIHRoaW5r
IFF0IHZlcnNpb24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3aGVuIHdlCiAg
ICAgLy8gaGF2ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVlZCB0byBkbyB0
aGUgc2FtZQotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQ
b2xpY3lJZ25vcmUpOworICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0
aW9uKShQb2xpY3lVc2UpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lG
dW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQpAQCAtNTYxLDcg
KzU2Miw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQo
KQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJh
bWUobV9mcmFtZSk7CisgICAgd2Via2l0X3dlYl92aWV3X3Nob3cod2ViVmlldyk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTcyOCw4ICs3MzAs
MjEgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKIAogRnJh
bWUqIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYldpbmRvd0ZlYXR1cmVzID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIE5VTEwpKTsKKyAgICBXZWJLaXRO
ZXR3b3JrUmVxdWVzdCogbmV0d29ya1JlcXVlc3QgPSBXRUJLSVRfTkVUV09SS19SRVFVRVNUKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QsIE5VTEwpKTsKKyAgICBXZWJL
aXRXZWJWaWV3KiBuZXdXZWJWaWV3ID0gMDsKKworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3
ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwgd2ViV2luZG93RmVhdHVyZXMsIG5l
dHdvcmtSZXF1ZXN0LCAmbmV3V2ViVmlldyk7CisKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVD
VCh3ZWJXaW5kb3dGZWF0dXJlcykpOworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKG5ldHdv
cmtSZXF1ZXN0KSk7CisKKyAgICBpZiAoIW5ld1dlYlZpZXcpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVEYXRhID0gV0VCS0lUX1dFQl9WSUVX
X0dFVF9QUklWQVRFKG5ld1dlYlZpZXcpOworICAgIHJldHVybiBjb3JlKHByaXZhdGVEYXRhLT5t
YWluRnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAppbmRleCAx
MGMyMTRmLi4yOWQzZGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAor
KysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJk
bGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0ZGVmaW5lcy5oCmluZGV4IDM4NmMzZTEuLmRhYzJkZDMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRkZWZpbmVzLmgKQEAgLTU1LDYgKzU1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YkZyYW1lQ2xhc3MgV2ViS2l0V2ViRnJhbWVDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJT
ZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzQ2xhc3M7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7
CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IGVkODFhMWMuLmY1MmRkMmIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNr
Zm9yd2FyZGxpc3QuaD4KIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMzgsNiAr
MzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAogI2lu
Y2x1ZGUgPGdsaWIuaD4KIApAQCAtNjcsNiArNjksNyBAQCBleHRlcm4gIkMiIHsKICAgICBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBh
Z2U7CiAgICAgICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKKyAgICAgICAgV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzOwogCiAgICAgICAgIFdlYktp
dFdlYkZyYW1lKiBtYWluRnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBhcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQ7CkBAIC0xMTAsNiArMTEzLDkgQEAgZXh0ZXJuICJDIiB7CiAgICAg
V2ViS2l0V2ViSGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dp
dGhfY29yZV9pdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKKyAgICBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyoKKyAgICB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3Jl
X2ZlYXR1cmVzIChjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpOworCiAg
ICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQ
SSBoYXMgYmVlbiBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggN2Y5OTk0OS4uYTVjNDVmNiAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggSmFuIEFsb256
byA8am1hbG9uem9AdW5wbHVnZ2FibGUuY29tPgorICogIENvcHlyaWdodCAoQykgMjAwOCBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IE51YW50aSBMdGQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKgpA
QCAtNzAsNiArNzEsOCBAQCBleHRlcm4gIkMiIHsKIGVudW0gewogICAgIC8qIG5vcm1hbCBzaWdu
YWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAgQ1JFQVRFX1dFQl9WSUVXLAor
ICAgIFNIT1dfV0VCX1ZJRVcsCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURf
U1RBUlRFRCwKICAgICBMT0FEX0NPTU1JVFRFRCwKQEAgLTk5LDYgKzEwMiw3IEBAIGVudW0gewog
ICAgIFBST1BfUEFTVEVfVEFSR0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9Q
X1NFVFRJTkdTLAorICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTLAogICAgIFBST1BfVFJBTlNQQVJF
TlQsCiAgICAgUFJPUF9aT09NX0xFVkVMLAogICAgIFBST1BfRlVMTF9DT05URU5UX1pPT00KQEAg
LTIzNiw2ICsyNDAsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKgogICAgIGNhc2UgUFJPUF9T
RVRUSU5HUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMjYxLDYgKzI2OCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHCiAg
ICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRp
bmdzKHdlYlZpZXcsIFdFQktJVF9XRUJfU0VUVElOR1MoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVl
KSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3LCBXRUJLSVRf
V0VCX1dJTkRPV19GRUFUVVJFUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgd2Via2l0X3dlYl92
aWV3X3NldF90cmFuc3BhcmVudCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtNTYwLDEyICs1NzAsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2NvbnRhaW5lcl9mb3JhbGwoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIGdib29s
ZWFuLAogICAgICAgICAoKmNhbGxiYWNrKSgqY3VycmVudCwgY2FsbGJhY2tEYXRhKTsKIH0KIAot
c3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmll
dyhXZWJLaXRXZWJWaWV3KikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jcmVhdGVfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiwgV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMqLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19yZWFsX3Nob3dfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyopCit7CisgICAgcmV0
dXJuIEZBTFNFOworfQorCiBzdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93
ZWJfdmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRX
ZWJGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpAQCAtNzI0LDYgKzczOCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFja0Zv
cndhcmRMaXN0KTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJp
di0+d2ViU2V0dGluZ3MsIChncG9pbnRlcil3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5
LCB3ZWJWaWV3KTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CisgICAg
Z19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwogICAgIGdfb2JqZWN0X3Vu
cmVmKHByaXYtPm1haW5GcmFtZSk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0
KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90YXJnZXRfbGlzdCk7CkBA
IC03MzMsNiArNzQ4LDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
Y3JlYXRlX3dlYl92aWV3X3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGlo
aW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3Bv
aW50ZXIgZHVtbXkpCit7CisgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICBn
cG9pbnRlciBuZXdXZWJWaWV3ID0gZ192YWx1ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOwor
ICBnX3ZhbHVlX3NldF9vYmplY3QocmV0dXJuQWNjdSwgbmV3V2ViVmlldyk7CisKKyAgaWYgKG5l
d1dlYlZpZXcpCisgICAgICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7CisKKyAgcmV0dXJuIGNv
bnRpbnVlRW1pc3Npb247Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9y
ZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1
cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQogewog
ICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKQEAgLTc3NSw2ICs4MDIsNjEgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNz
KiB3ZWJWaWV3Q2xhc3MpCiAgICAgICogU2lnbmFscwogICAgICAqLwogCisgICAgLyoqCisgICAg
ICogV2ViS2l0V2ViVmlldzo6Y3JlYXRlLXdlYi12aWV3OgorICAgICAqIEB3ZWJfdmlldzogdGhl
IG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRo
ZSAjV2ViS2l0V2ViRnJhbWUKKyAgICAgKiBAd2luZG93X2ZlYXR1cmVzOiBhICNXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlc3QKKyAgICAgKiBAbmV0d29ya19yZXF1ZXN0OiBhICNXZWJLaXROZXR3b3Jr
UmVxdWVzdAorICAgICAqIEByZXR1cm46IGEgbmV3bHkgYWxsb2NhdGVkICNXZWJLaXRXZWJWaWV3
IG9yICVOVUxMCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNyZWF0aW9uIG9mIGEg
bmV3IHdpbmRvdyBpcyByZXF1ZXN0ZWQuCisgICAgICogSWYgdGhpcyBzaWduYWwgaXMgaGFuZGxl
ZCB0aGUgc2lnbmFsIGhhbmRsZXIgc2hvdWxkIHJldHVybiB0aGUKKyAgICAgKiBuZXdseSBjcmVh
dGVkICNXZWJLaXRXZWJWaWV3LiBUaGUgbmV3ICNXZWJLaXRXZWJWaWV3IHNob3VsZCBub3QgYmUK
KyAgICAgKiBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgdW50aWwgdGhlICJzaG93LXdlYi12aWV3IiBz
aWduYWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaGFuZGxlcnMgc2hv
dWxkIG5vdCB0cnkgdG8gZGVhbCB3aXRoIHRoZSByZWZlcmVuY2UKKyAgICAgKiBjb3VudCBmb3Ig
dGhlIG5ldyAjV2ViS2l0V2ViVmlldy4gVGhlIHdpZGdldCB0byB3aGljaCB0aGUKKyAgICAgKiB3
aWRnZXQgaXMgYWRkZWQgd2lsbCBoYW5kbGUgdGhhdC4KKyAgICAgKgorICAgICAqIFNpbmNlIDEu
MC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ1JFQVRFX1dFQl9WSUVX
XSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQRV9G
Uk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJ
R05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRlX3dlYl92aWV3KSwKKyAgICAgICAgICAg
IHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVM
TCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNUX09CSkVDVF9PQkpF
Q1QsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVyAsIDMsCisgICAgICAgICAgICBX
RUJLSVRfVFlQRV9XRUJfRlJBTUUsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfV0lORE9X
X0ZFQVRVUkVTLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNUKTsKKwor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNob3ctd2ViLXZpZXc6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAq
IEByZXR1cm46ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2Vk
IGZvcgorICAgICAqIHRoZSBldmVudCwgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVy
dGhlcgorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciAiY3JlYXRlLXdlYi12aWV3IiB3aGVu
IHRoZSBuZXcgI1dlYktpdFdlYlZpZXcgc2hvdWxkCisgICAgICogYmUgZGlzcGxheWVkIHRvIHRo
ZSB1c2VyLgorICAgICAqCisgICAgICogSWYgdGhlcmUgaXNuJ3QgYW55IGhhbmRsZXIgZm9yIHRo
aXMgc2lnbmFsIG9yIGlmIHRoZXkgcmV0dXJuCisgICAgICogJUZBTFNFLCB0aGVuIHRoZSBkZWZh
dWx0IGFjdGlvbiBpcyB0byBjYWxsIGd0a193aWRnZXRfc2hvdygpIG9uCisgICAgICogdGhlIHRv
cGxldmVsIHdpbmRvdyBjb250YWluaW5nIEB3ZWJfdmlldywgYW5kIG9uIEB3ZWJfdmlldy4KKyAg
ICAgKgorICAgICAqIFNpbmNlIDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3Np
Z25hbHNbU0hPV19XRUJfVklFV10gPSBnX3NpZ25hbF9uZXcoInNob3ctd2ViLXZpZXciLAorICAg
ICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChH
U2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBzaG93X3dlYl92aWV3KSwKKyAgICAgICAgICAgIGdf
c2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAg
ICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgR19UWVBF
X0JPT0xFQU4sIDApOworCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTkFWSUdBVElPTl9S
RVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIsCiAgICAgICAg
ICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAogICAgICAgICAgICAgKEdTaWdu
YWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLApAQCAtMTExMCw2
ICsxMTkyLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZp
cnR1YWwgbWV0aG9kcwogICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OworICAgIHdlYlZpZXdDbGFz
cy0+c2hvd193ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nob3dfd2ViX3ZpZXc7CiAg
ICAgd2ViVmlld0NsYXNzLT5uYXZpZ2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19y
ZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkOwogICAgIHdlYlZpZXdDbGFzcy0+d2luZG93X29iamVj
dF9jbGVhcmVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVkOwog
ICAgIHdlYlZpZXdDbGFzcy0+Y2hvb3NlX2ZpbGUgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9v
c2VfZmlsZTsKQEAgLTEyMDksNiArMTI5MiwyMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1NFVFRJTkdTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICAvKioKKyAg
ICAqIFdlYktpdFdlYlZpZXc6d2luZG93LWZlYXR1cmVzOgorICAgICoKKyAgICAqIEFuIGFzc29j
aWF0ZWQgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UuCisgICAgKgorICAgICogU2lu
Y2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9i
amVjdENsYXNzLCBQUk9QX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoIndpbmRvdy1mZWF0dXJlcyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaW5k
b3cgRmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQW4gYXNzb2NpYXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0
YW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xh
c3MsIFBST1BfRURJVEFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfYm9vbGVhbigiZWRpdGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVkaXRhYmxlIiwKQEAgLTE0NDAsNiAr
MTUzNyw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyh3ZWJWaWV3KTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJzY3JlZW4tY2hhbmdlZCIsIEdfQ0FMTEJB
Q0sod2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkKSwgTlVMTCk7CiAgICAgZ19zaWduYWxf
Y29ubmVjdChwcml2LT53ZWJTZXR0aW5ncywgIm5vdGlmeSIsIEdfQ0FMTEJBQ0sod2Via2l0X3dl
Yl92aWV3X3NldHRpbmdzX25vdGlmeSksIHdlYlZpZXcpOworCisgICAgcHJpdi0+d2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKTsKIH0KIAogR3RrV2lk
Z2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCkBAIC0xNDQ5LDYgKzE1NDgsMjIgQEAgR3Rr
V2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCiAgICAgcmV0dXJuIEdUS19XSURHRVQo
d2ViVmlldyk7CiB9CiAKK3ZvaWQgd2Via2l0X3dlYl92aWV3X3Nob3coV2ViS2l0V2ViVmlldyog
d2ViVmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CisKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBGQUxTRTsKKyAgICBnX3NpZ25hbF9l
bWl0KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1NIT1dfV0VCX1ZJRVddLCAwLCAm
aXNIYW5kbGVkKTsKKyAgICBpZiAoaXNIYW5kbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBH
dGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3
ZWJWaWV3KSk7CisgICAgaWYgKEdUS19XSURHRVRfVE9QTEVWRUwodG9wbGV2ZWwpKQorICAgICAg
ICBndGtfd2lkZ2V0X3Nob3codG9wbGV2ZWwpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lE
R0VUKHdlYlZpZXcpKTsKK30KKworCiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3Mo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKQEAg
LTE0NzMsNiArMTU4OCw1MiBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93
ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzCisgKiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmll
dworICogQHdpbmRvd19mZWF0dXJlczogYSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqCisg
KiBUaGlzIHdpbGwgc2V0IGhvdyB0aGUgd2luZG93IGNvbnRhaW5pbmcgdGhlICNXZWJLaXRXZWJW
aWV3IHNob3VsZAorICogbG9vayBhbmQgYmVoYXZlLiBBcHBsaWNhdGlvbnMgbWF5IHdhbnQgdG8g
bW9uaXRvciB0aGlzIHByb3BlcnR5IGFuZAorICogYXBwbHkgdGhlIHNldHRpbmdzIGl0IGNhcnJp
ZXMgdG8gdGhlIHdpbmRvdyBob2xkaW5nIHRoZSByZWxldmFudAorICogI1dlYktpdFdlYlZpZXcu
CisgKgorICogU2luY2U6IDEuMC4yCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF93aW5k
b3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
V0lORE9XX0ZFQVRVUkVTKHdlYldpbmRvd0ZlYXR1cmVzKSk7CisgICAgCisgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgaWYod2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfZXF1YWwocHJpdi0+d2ViV2luZG93RmVhdHVyZXMsIHdlYldpbmRvd0Zl
YXR1cmVzKSkKKyAgICAgIHJldHVybjsKKworICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldp
bmRvd0ZlYXR1cmVzKTsKKyAgICBnX29iamVjdF9yZWYod2ViV2luZG93RmVhdHVyZXMpOworICAg
IHByaXYtPndlYldpbmRvd0ZlYXR1cmVzID0gd2ViV2luZG93RmVhdHVyZXM7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNX
ZWJLaXRXZWJWaWV3CisgKgorICogUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgI1dlYktpdFdlYldp
bmRvd0ZlYXR1cmVzIGhlbGQgYnkgdGhlIGdpdmVuCisgKiAjV2ViS2l0V2ViVmlldy4KKyAqCisg
KiBSZXR1cm4gdmFsdWU6IHRoZSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqCisgKiBTaW5j
ZTogMS4wLjIKKyAqLworV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKworICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4g
cHJpdi0+d2ViV2luZG93RmVhdHVyZXM7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X3Nl
dF9tYWludGFpbnNfYmFja19mb3J3YXJkX2xpc3Q6CiAgKiBAd2ViVmlldzogYSAjV2ViS2l0V2Vi
VmlldwogICogQGZsYWc6IHRvIHRlbGwgdGhlIHZpZXcgdG8gbWFpbnRhaW4gYSBiYWNrIG9yIGZv
cndhcmQgbGlzdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5o
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCmluZGV4IGViZDFhYTEuLmRkZDdk
ZTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAorKysgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTYzLDExICs2MywxMyBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAKICAgICAvKgogICAgICAqIGRlZmF1bHQgaGFuZGxl
ci92aXJ0dWFsIG1ldGhvZHMKLSAgICAgKiBESVNDVVNTOiBjcmVhdGVfd2ViX3ZpZXcgbmVlZHMg
YSByZXF1ZXN0IGFuZCBzaG91bGQgd2UgbWFrZSB0aGlzIGEgc2lnbmFsIHdpdGggZGVmYXVsdCBo
YW5kbGVyPyB0aGlzIHdvdWxkCi0gICAgICogcmVxdWlyZSBzb21lb25lIGRvaW5nIGEgZ19zaWdu
YWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lCi0gICAgICogV2ViVUlEZWxlZ2F0ZSBoYXMgbm90aGlu
ZyBmb3IgY3JlYXRlX2ZyYW1lLCBXZWJQb2xpY3lEZWxlZ2F0ZSBhcyB3ZWxsLi4uCiAgICAgICov
Ci0gICAgV2ViS2l0V2ViVmlldyAgICAgICAgICAgICogKCogY3JlYXRlX3dlYl92aWV3KSAgICAg
ICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKyAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgKiAoKiBjcmVhdGVfd2ViX3ZpZXcpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRXZWJGcmFtZSAgICAgICAqd2ViX2ZyYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXROZXR3b3JrUmVxdWVzdCAq
cmVxdWVzdCk7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBzaG93X3dlYl92
aWV3KSAgICAgICAgICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiAgICAgLyoKICAgICAg
KiBUT0RPOiBGSVhNRTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBvbGljeURlY2lzaW9uTGlz
dGVuZXJfUHJvdG9jb2wgaW5zdGVhZApAQCAtMjQxLDEyICsyNDMsMjIgQEAgV0VCS0lUX0FQSSBH
dGtUYXJnZXRMaXN0ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfcGFzdGVfdGFyZ2V0X2xpc3QgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdmlld19zaG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93
ZWJfdmlld19zZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MgICAgKnNldHRpbmdzKTsKIAogV0VCS0lUX0FQSSBX
ZWJLaXRXZWJTZXR0aW5ncyAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3aW5kb3df
ZmVhdHVyZXMpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0
X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICp3ZWJfdmlldyk7CisKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmll
d19nZXRfdHJhbnNwYXJlbnQgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAq
d2ViX3ZpZXcpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJl
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNjYTQ3YgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNw
cApAQCAtMCwwICsxLDQ3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5v
cm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMu
aCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisKK2V4dGVybiAiQyIgeworCitlbnVtIHsK
KyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1gsCisgICAgUFJPUF9ZLAorICAgIFBST1BfV0lEVEgs
CisgICAgUFJPUF9IRUlHSFQsCisgICAgUFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9T
VEFUVVNCQVJfVklTSUJMRSwKKyAgICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAgIFBST1Bf
TUVOVUJBUl9WSVNJQkxFLAorICAgIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICBQUk9Q
X1JFU0laQUJMRSwKKyAgICBQUk9QX0ZVTExTQ1JFRU4sCisgICAgUFJPUF9ESUFMT0cKK307CisK
K0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMsIHdlYmtpdF93ZWJfd2luZG93
X2ZlYXR1cmVzLCBHX1RZUEVfT0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzUHJpdmF0ZSB7CisgICAgZ2ludCB4OworICAgIGdpbnQgeTsKKyAgICBnaW50IHdpZHRoOwor
ICAgIGdpbnQgaGVpZ2h0OworCisgICAgZ2Jvb2xlYW4gdG9vbGJhcl92aXNpYmxlOworICAgIGdi
b29sZWFuIHN0YXR1c2Jhcl92aXNpYmxlOworICAgIGdib29sZWFuIHNjcm9sbGJhcl92aXNpYmxl
OworICAgIGdib29sZWFuIG1lbnViYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBsb2NhdGlvbmJh
cl92aXNpYmxlOworICAgIGdib29sZWFuIHJlc2l6YWJsZTsKKworICAgIGdib29sZWFuIGZ1bGxz
Y3JlZW47CisgICAgZ2Jvb2xlYW4gZGlhbG9nOworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX1dJ
TkRPV19GRUFUVVJFU19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZB
VEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZSkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3Bf
aWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVj
dF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5h
bGl6ZSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplOworICAgIGdvYmplY3Rf
Y2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9w
ZXJ0eTsKKyAgICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19nZXRfcHJvcGVydHk7CisKKyAgICBHUGFyYW1GbGFncyBmbGFncyA9IChHUGFy
YW1GbGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKwor
ICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6eDoKKyAgICAqCisgICAgKiBU
aGUgc3RhcnRpbmcgeCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisgICAg
KgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX1gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cg
b24gdGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVh
dHVyZXM6eToKKyAgICAqCisgICAgKiBUaGUgc3RhcnRpbmcgeSBwb3NpdGlvbiBvZiB0aGUgd2lu
ZG93IG9uIHRoZSBzY3JlZW4uCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1ksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzdGFydGluZyB5
IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgor
ICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6d2lkdGg6CisgICAgKgorICAgICogVGhlIHdp
ZHRoIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4w
LjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9j
bGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0lEVEgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJXaWR0aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6aGVpZ2h0OgorICAgICoK
KyAgICAqIFRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgorICAgICoKKyAg
ICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9IRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGVpZ2h0IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24g
dGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXM6dG9vbGJhci12aXNpYmxlOgorICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRv
b2xiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2lu
Y2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1RP
T0xCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRv
b2xiYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9v
bGJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250
cm9scyB3aGV0aGVyIHRoZSB0b29sYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXM6c3RhdHVzYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29u
dHJvbHMgd2hldGhlciB0aGUgc3RhdHVzYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2lu
ZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUFJPUF9TVEFUVVNCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInN0YXR1c2Jhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJTdGF0dXNiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgc3RhdHVzYmFyIHNo
b3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6c2Nyb2xs
YmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgc2Nyb2xsYmFy
cyBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAgKiBTaW5jZTog
MS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVj
dF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU0NST0xM
QkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3Jv
bGxiYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Ny
b2xsYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRyb2xzIHdoZXRoZXIgdGhlIHNjcm9sbGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3
aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAg
KiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczptZW51YmFyLXZpc2libGU6CisgICAgKgorICAgICog
Q29udHJvbHMgd2hldGhlciB0aGUgbWVudWJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdp
bmRvdy4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfTUVOVUJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAibWVudWJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNZW51YmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIG1lbnViYXIgc2hvdWxkIGJl
IHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpsb2NhdGlvbmJhci12
aXNpYmxlOgorICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGxvY2F0aW9uYmFyIHNo
b3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAu
MgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2Ns
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9MT0NBVElPTkJB
Ul9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRp
b25iYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTG9j
YXRpb25iYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Q29udHJvbHMgd2hldGhlciB0aGUgbG9jYXRpb25iYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRo
ZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpyZXNpemFibGU6CisgICAgKgorICAgICogV2hl
dGhlciB0aGUgd2luZG93IHNob3VsZCBiZSByZXNpemFibGUKKyAgICAqCisgICAgKiBTaW5jZTog
MS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVj
dF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfUkVTSVpB
QkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzaXphYmxlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXNpemFibGUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoZXRoZXIgdGhlIHdpbmRvdyBzaG91bGQg
YmUgcmVzaXphYmxlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8q
KgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6ZnVsbHNjcmVlOgorICAgICoKKyAgICAq
IENvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlzcGxheWVkIGZ1bGxzY3JlZW4uCisg
ICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0ZVTExTQ1JFRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJGdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250
cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2NyZWVuLiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzOmRpYWxvZzoKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHdpbmRv
dyBzaG91bGQgYmUgYSBkaWFsb2csIG9yIGEgdG9wIGxldmVsIHdpbmRvdy4KKyAgICAqCisgICAg
KiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRElBTE9HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlhbG9n
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWFsb2ciLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHNo
b3VsZCBiZSBhIGRpYWxvZywgb3IgYSB0b3AgbGV2ZWwgd2luZG93LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3Ms
IHNpemVvZihXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUpKTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyogd2ViX3dpbmRvd19mZWF0dXJlcykKK3sKKyAgICB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2
ID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX1BSSVZBVEUod2ViX3dpbmRvd19mZWF0
dXJlcyk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3dp
bmRvd19mZWF0dXJlc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJl
cyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKwor
ICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1g6CisgICAgICAgIHByaXYtPngg
PSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
WToKKyAgICAgICAgcHJpdi0+eSA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAgICAgICAgcHJpdi0+d2lkdGggPSBnX3ZhbHVl
X2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSEVJR0hUOgor
ICAgICAgICBwcml2LT5oZWlnaHQgPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT50b29s
YmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT5zdGF0dXNi
YXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPnNjcm9sbGJh
cl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPm1lbnViYXJfdmlz
aWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+bG9jYXRpb25iYXJf
dmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfUkVTSVpBQkxFOgorICAgICAgICBwcml2LT5yZXNpemFibGUgPSBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExT
Q1JFRU46CisgICAgICAgIHByaXYtPmZ1bGxzY3JlZW4gPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RJQUxPRzoKKyAgICAgICAgcHJp
di0+ZGlhbG9nID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykK
K3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdF
QktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlKiBwcml2ID0gd2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3
aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9YOgorICAgICAgICBnX3ZhbHVlX3NldF9p
bnQodmFsdWUsIHByaXYtPngpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT55KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX1dJRFRIOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYt
PndpZHRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hFSUdIVDoKKyAgICAgICAg
Z192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT5oZWlnaHQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCBwcml2LT50b29sYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHByaXYtPnN0YXR1c2Jhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBwcml2LT5zY3JvbGxiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9NRU5VQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHBy
aXYtPm1lbnViYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0NB
VElPTkJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2
LT5sb2NhdGlvbmJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JF
U0laQUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+cmVzaXph
YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExTQ1JFRU46CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmZ1bGxzY3JlZW4pOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRElBTE9HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCBwcml2LT5kaWFsb2cpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBw
c3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3dp
bmRvd19mZWF0dXJlc19uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFu
dWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQorICoKKyAqIFNpbmNlIDEuMC4yCisgKiovCitX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCkK
K3sKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIE5VTEwpKTsKK30KKworLy8gZm9yIGludGVy
bmFsIHVzZSBvbmx5CitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgKndlYldpbmRv
d0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCk7CisKKyAgICBpZihm
ZWF0dXJlcy54U2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVh
dHVyZXMpLCAieCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMueCksIE5VTEwpOworCisgICAg
aWYoZmVhdHVyZXMueVNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSwgInkiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLnkpLCBOVUxMKTsKKwor
ICAgIGlmKGZlYXR1cmVzLndpZHRoU2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qo
d2ViV2luZG93RmVhdHVyZXMpLCAid2lkdGgiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLndp
ZHRoKSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy5oZWlnaHRTZXQpCisgICAgICAgIGdfb2Jq
ZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJoZWlnaHQiLCBzdGF0aWNfY2Fz
dDxpbnQ+KGZlYXR1cmVzLmhlaWdodCksIE5VTEwpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JK
RUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgInRvb2xiYXItdmlzaWJs
ZSIsIGZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAic3RhdHVzYmFy
LXZpc2libGUiLCBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAi
c2Nyb2xsYmFyLXZpc2libGUiLCBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSwKKyAgICAgICAg
ICAgICAgICAgIm1lbnViYXItdmlzaWJsZSIsIGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlLAorICAg
ICAgICAgICAgICAgICAibG9jYXRpb25iYXItdmlzaWJsZSIsIGZlYXR1cmVzLmxvY2F0aW9uQmFy
VmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInJlc2l6YWJsZSIsIGZlYXR1cmVzLnJlc2l6YWJs
ZSwKKyAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLCBmZWF0dXJlcy5mdWxsc2NyZWVuLAor
ICAgICAgICAgICAgICAgICAiZGlhbG9nIiwgZmVhdHVyZXMuZGlhbG9nLAorICAgICAgICAgICAg
ICAgICBOVUxMKTsKKworICAgIHJldHVybiB3ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbDoKKyAqIEBmZWF0dXJlczE6IGEgI1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlCisgKiBAZmVhdHVyZXMyOiBhbm90aGVyICNX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQorICoKKyAqIERlY2lkZXMgaWYgYSAjV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UgZXF1YWxzIGFub3RoZXIsIGFzCisgKiBpbiBo
YXMgdGhlIHNhbWUgdmFsdWVzLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBpbnN0YW5j
ZXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZXMsICVGQUxTRQorICogb3RoZXJ3aXNlCisgKgorICogU2lu
Y2UgMS4wLjIKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFs
KFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiBmZWF0dXJlczIpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBw
cml2MSA9IGZlYXR1cmVzMS0+cHJpdjsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZh
dGUqIHByaXYyID0gZmVhdHVyZXMyLT5wcml2OworICAgIAorICAgIGlmKChwcml2MS0+eCA9PSBw
cml2Mi0+eCkgJiYKKyAgICAgICAocHJpdjEtPnkgPT0gcHJpdjItPnkpICYmCisgICAgICAgKHBy
aXYxLT53aWR0aCA9PSBwcml2Mi0+d2lkdGgpICYmCisgICAgICAgKHByaXYxLT5oZWlnaHQgPT0g
cHJpdjItPmhlaWdodCkgJiYKKyAgICAgICAocHJpdjEtPnRvb2xiYXJfdmlzaWJsZSA9PSBwcml2
Mi0+dG9vbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+c2Nyb2xsYmFyX3Zpc2libGUg
PT0gcHJpdjItPnNjcm9sbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+bWVudWJhcl92
aXNpYmxlID09IHByaXYyLT5tZW51YmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5sb2Nh
dGlvbmJhcl92aXNpYmxlID09IHByaXYyLT5sb2NhdGlvbmJhcl92aXNpYmxlKSAmJgorICAgICAg
IChwcml2MS0+cmVzaXphYmxlID09IHByaXYyLT5yZXNpemFibGUpICYmCisgICAgICAgKHByaXYx
LT5mdWxsc2NyZWVuID09IHByaXYyLT5mdWxsc2NyZWVuKSAmJgorICAgICAgIChwcml2MS0+ZGlh
bG9nID09IHByaXYyLT5kaWFsb2cpKQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICByZXR1cm4g
RkFMU0U7Cit9CisKKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
d2luZG93ZmVhdHVyZXMuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1
cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODczMDA3ZQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFU
VVJFU19IX18KKyNkZWZpbmUgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKworI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5o
PgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFU
VVJFUyAgICAgICAgICAgICh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSgpKQor
I2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRV
UkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9X
X0ZFQVRVUkVTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
V0lORE9XX0ZFQVRVUkVTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVNf
Q0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZ
UEVfV0VCX1dJTkRPV19GRUFUVVJFUykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRV
UkVTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xh
c3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAv
KiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3dp
bmRvd19mZWF0dXJlc19nZXRfdHlwZSAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyAg
ICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlc19lcXVhbCAgICAgICAgICAgICAgIChXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcyogZmVhdHVyZXMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMik7CisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZiAvKiBfX1dFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0hfXyAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22605</attachid>
            <date>2008-08-01 12:12:33 -0700</date>
            <delta_ts>2008-09-04 14:55:09 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>46990</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NzRkMDBlLi4wNWIxOGFl
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDctMzAgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDA4LTA3LTMwICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KZGlmZiAtLWdpdCBh
L0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggOWIyZjA2Zi4uZGE5YmRlOCAx
MDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTMxNyw2
ICszMTcsNyBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmgg
XAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAorCVdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAogCiB3ZWJraXRndGtfYnVpbHRfc291cmNlcyArPSBcCkBAIC0zNDMsNiAr
MzQ0LDcgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCiAJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVu
dUNsaWVudEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzMjQzOWUwLi43NjdlMmM4IDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDA4LTA3LTMwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorICAgICAgICBDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCisgICAg
ICAgIAorICAgICAgICBDb2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFuZCBNYXJjbyBCYXJpc2lv
bmUKKyAgICAgICAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+IGluIHRoaXMgY2hh
bmdlIHNldC4KKworICAgICAgICBJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRl
cmZhY2VzIG5lZWRlZCB0byBoYXZlIG5ldworICAgICAgICB3aW5kb3cgY3JlYXRpb24gZnVuY3Rp
b25pbmcgYW5kIGV4cG9zZWQgdG8gY2xpZW50IGNvZGUuIFdlCisgICAgICAgIGltcGxlbWVudGVk
IGEgbWlycm9yIEdPYmplY3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9iamVjdCBwcm92aWRlZAor
ICAgICAgICBieSBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRT
dGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdGF0dXNi
YXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJz
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6Cisg
ICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZh
dGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJL
aXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3Nl
dF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3
KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1
YWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4K
KwogMjAwOC0wNy0zMCAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9y
YS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMmU1NmMxZC4uNWRjYzZiZiAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNo
cmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMCw2ICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgi
CiAKKyNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0y
Nyw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0bmV0d29ya3Jl
cXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtNTIsNyArNTUsNyBAQCBG
bG9hdFJlY3QgQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICBpZiAoIW1fd2ViVmlldykK
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2lu
ZG93KSB7CisgICAgaWYgKEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSkgewogICAgICAgICBn
aW50IGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodDsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfcG9z
aXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCAmbGVmdCwgJnRvcCk7CiAgICAgICAgIGd0a193aW5k
b3dfZ2V0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCAmd2lkdGgsICZoZWlnaHQpOwpAQCAtNjEs
OSArNjQsMjMgQEAgRmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgcmV0
dXJuIEZsb2F0UmVjdCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChj
b25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1f
d2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIGlmIChHVEtf
V0lER0VUX1RPUExFVkVMKHdpbmRvdykpIHsKKyAgICAgICAgSW50UmVjdCBpbnRyZWN0ID0gSW50
UmVjdChyZWN0KTsKKyAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0Zl
YXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsK
KworICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgIngiLCBpbnRyZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICJ5IiwgaW50cmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLCBpbnRyZWN0
LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IiwgaW50cmVjdC5oZWlnaHQo
KSwKKyAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIH0KIH0KIAogRmxvYXRSZWN0IENo
cm9tZUNsaWVudDo6cGFnZVJlY3QoKQpAQCAtOTIsMjkgKzEwOSw0MCBAQCB2b2lkIENocm9tZUNs
aWVudDo6dW5mb2N1cygpCiAgICAgaWYgKCFtX3dlYlZpZXcpCiAgICAgICAgIHJldHVybjsKICAg
ICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQo
bV93ZWJWaWV3KSk7Ci0gICAgaWYgKHdpbmRvdykKKyAgICBpZiAoR1RLX1dJREdFVF9UT1BMRVZF
TCh3aW5kb3cpKQogICAgICAgICBndGtfd2luZG93X3NldF9mb2N1cyhHVEtfV0lORE9XKHdpbmRv
dyksIE5VTEwpOwogfQogCi1QYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSos
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMp
CitQYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBj
b3JlRmVhdHVyZXMpCiB7Ci0gICAgaWYgKGZlYXR1cmVzLmRpYWxvZykgewotICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdCA9
IDA7CisKKyAgICAvLyBGSVhNRTogdXNlIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3X2Zyb21f
cmVzb3VyY2VfcmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCkKKyAgICAv
LyB3aGVuICMxODYwOCBsYW5kcworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5KCkp
CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcoZnJh
bWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29yZUZl
YXR1cmVzKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBraXQoZnJhbWUpLCB3
ZWJXaW5kb3dGZWF0dXJlcywgbmV0d29ya1JlcXVlc3QsICZ3ZWJWaWV3KTsKKworICAgIGdfb2Jq
ZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSk7CisgICAgaWYgKG5ldHdvcmtS
ZXF1ZXN0KQorICAgICAgICBnX29iamVjdF91bnJlZihHX09CSkVDVChuZXR3b3JrUmVxdWVzdCkp
OworCisgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2Ugewot
ICAgICAgICAvKiBUT0RPOiBGcmFtZUxvYWRSZXF1ZXN0IGlzIG5vdCB1c2VkICovCi0gICAgICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG1fd2Vi
VmlldyktPmNyZWF0ZV93ZWJfdmlldyhtX3dlYlZpZXcpOwotICAgICAgICBpZiAoIXdlYlZpZXcp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAg
ICAgIHJldHVybiBwcml2YXRlRGF0YS0+Y29yZVBhZ2U7Ci0gICAgfQorCisgICAgcmV0dXJuIGNv
cmUod2ViVmlldyk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpzaG93KCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyhtX3dlYlZpZXcpOwogfQogCiBib29sIENocm9tZUNsaWVu
dDo6Y2FuUnVuTW9kYWwoKQpAQCAtMTI4LDUyICsxNTYsOTYgQEAgdm9pZCBDaHJvbWVDbGllbnQ6
OnJ1bk1vZGFsKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVu
dDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJh
cnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlm
ICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0
dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0Zl
YXR1cmVzKSwgInRvb2xiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENo
cm9tZUNsaWVudDo6dG9vbGJhcnNWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0g
d2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9v
bGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1
cmVzKSwgInRvb2xiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlz
aWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkK
K3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1
cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19v
YmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxl
IiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNp
YmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5k
b3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19v
YmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxl
IiwgJnZpc2libGUsIE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9t
ZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50Ojpz
ZXRTY3JvbGxiYXJzVmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93
aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3
ZWJXaW5kb3dGZWF0dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwog
fQogCiBib29sIENocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUoKSB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5k
b3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmll
dyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3
ZWJXaW5kb3dGZWF0dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsK
KyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJW
aXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUoYm9vbCB2
aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dG
ZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7
CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAibWVudWJh
ci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjptZW51
YmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKwor
ICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJtZW51YmFyLXZp
c2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKIHZvaWQg
Q2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUoYm9vbCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIC8vIElnbm9yZWQgZm9yIG5vdwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6Y2xvc2VX
aW5kb3dTb29uKCkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKaW5kZXggOGNmMDg4Ni4uMGZiZjRiMSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdG5ldHdv
cmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJr
aXRwcml2YXRlLmgiCiAKQEAgLTI1OCw3ICsyNTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBtYXJz
aGFscyB0aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11bHRp
LXRocmVhZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCi0gICAgKGNv
cmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7Cisg
ICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVzZSk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCkBAIC01NjEsNyArNTYyLDggQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCiAKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyh3ZWJWaWV3KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtNzI4LDggKzczMCwyMSBAQCBib29sIEZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAogCiBGcmFtZSogRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFt
ZShtX2ZyYW1lKTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVy
ZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1dJTkRPV19GRUFUVVJFUywgTlVMTCkpOworICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiBu
ZXR3b3JrUmVxdWVzdCA9IFdFQktJVF9ORVRXT1JLX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX05FVFdPUktfUkVRVUVTVCwgTlVMTCkpOworICAgIFdlYktpdFdlYlZpZXcqIG5ld1dl
YlZpZXcgPSAwOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJjcmVhdGUt
d2ViLXZpZXciLCBtX2ZyYW1lLCB3ZWJXaW5kb3dGZWF0dXJlcywgbmV0d29ya1JlcXVlc3QsICZu
ZXdXZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1
cmVzKSk7CisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1QobmV0d29ya1JlcXVlc3QpKTsKKwor
ICAgIGlmICghbmV3V2ViVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUobmV3
V2ViVmlldyk7CisgICAgcmV0dXJuIGNvcmUocHJpdmF0ZURhdGEtPm1haW5GcmFtZSk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3ko
Y29uc3QgUmVzb3VyY2VFcnJvciYpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXQuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IDEwYzIxNGYuLjI5ZDNkZjQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dG5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcu
aD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmg+CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRkZWZpbmVzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVz
LmgKaW5kZXggMzg2YzNlMS4uZGFjMmRkMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZGVmaW5lcy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApA
QCAtNTUsNiArNTUsOSBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJL
aXRXZWJGcmFtZUNsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktp
dFdlYlNldHRpbmdzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzczsKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YldpbmRvd0ZlYXR1cmVzQ2xhc3MgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzczsKKwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJWaWV3Q2xhc3MgV2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmgKaW5kZXggZWQ4MWExYy4uZjUyZGQyYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2Zl
YXR1cmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgog
CiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgog
CkBAIC02Nyw2ICs2OSw3IEBAIGV4dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2ViVmll
d1ByaXZhdGUgewogICAgICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAgV2Vi
S2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcyogd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5G
cmFtZTsKICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dDsKQEAgLTExMCw2ICsxMTMsOSBAQCBleHRlcm4gIkMiIHsKICAgICBXZWJLaXRXZWJIaXN0b3J5
SXRlbSoKICAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qKTsKIAorICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgorICAg
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMgKGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcyk7CisKICAgICAvLyBGSVhNRTogTW92
ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1
c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAppbmRleCA3Zjk5OTQ5Li5hNWM0NWY2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcApAQCAtNCw2ICs0LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgWGFuIExvcGV6IDx4
YW5AZ25vbWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9r
ZXIuY29tPgogICogIENvcHlyaWdodCAoQykgMjAwOCBKYW4gQWxvbnpvIDxqbWFsb256b0B1bnBs
dWdnYWJsZS5jb20+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSA8Z25zQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCkBAIC03MCw2ICs3MSw4IEBA
IGV4dGVybiAiQyIgewogZW51bSB7CiAgICAgLyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJ
R0FUSU9OX1JFUVVFU1RFRCwKKyAgICBDUkVBVEVfV0VCX1ZJRVcsCisgICAgU0hPV19XRUJfVklF
VywKICAgICBXSU5ET1dfT0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAgIExP
QURfQ09NTUlUVEVELApAQCAtOTksNiArMTAyLDcgQEAgZW51bSB7CiAgICAgUFJPUF9QQVNURV9U
QVJHRVRfTElTVCwKICAgICBQUk9QX0VESVRBQkxFLAogICAgIFBST1BfU0VUVElOR1MsCisgICAg
UFJPUF9XSU5ET1dfRkVBVFVSRVMsCiAgICAgUFJPUF9UUkFOU1BBUkVOVCwKICAgICBQUk9QX1pP
T01fTEVWRUwsCiAgICAgUFJPUF9GVUxMX0NPTlRFTlRfWk9PTQpAQCAtMjM2LDYgKzI0MCw5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wX2lkLCBHVmFsdWUqCiAgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAg
ICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mo
d2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVT
OgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRf
d2luZG93X2ZlYXR1cmVzKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X1RSQU5TUEFSRU5UOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50KHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC0y
NjEsNiArMjY4LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEcKICAgICBjYXNlIFBST1BfU0VU
VElOR1M6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3Mod2ViVmlldywgV0VC
S0lUX1dFQl9TRVRUSU5HUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9XSU5ET1dfRkVBVFVSRVM6CisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19zZXRfd2luZG93X2ZlYXR1cmVzKHdlYlZpZXcsIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRV
UkVTKGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQUk9QX1RSQU5TUEFSRU5UOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3RyYW5zcGFy
ZW50KHdlYlZpZXcsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7
CkBAIC01NjAsMTIgKzU3MCwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFp
bmVyX2ZvcmFsbChHdGtDb250YWluZXIqIGNvbnRhaW5lciwgZ2Jvb2xlYW4sCiAgICAgICAgICgq
Y2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0RhdGEpOwogfQogCi1zdGF0aWMgV2ViS2l0V2Vi
Vmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdlYktpdFdlYlZpZXcq
KQorc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJf
dmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqLCBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcyosIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxf
c2hvd193ZWJfdmlldyhXZWJLaXRXZWJWaWV3KikKK3sKKyAgICByZXR1cm4gRkFMU0U7Cit9CisK
IHN0YXRpYyBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2Ugd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2
aWdhdGlvbl9yZXF1ZXN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
V2ViS2l0TmV0d29ya1JlcXVlc3QqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC03MjQs
NiArNzM4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKICAgICBnX29iamVjdF91bnJlZihwcml2LT5iYWNrRm9yd2FyZExpc3QpOwogICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncywg
KGdwb2ludGVyKXdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcpOwogICAg
IGdfb2JqZWN0X3VucmVmKHByaXYtPndlYlNldHRpbmdzKTsKKyAgICBnX29iamVjdF91bnJlZihw
cml2LT53ZWJXaW5kb3dGZWF0dXJlcyk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpbkZy
YW1lKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT5pbUNvbnRleHQpOwogICAgIGd0a190YXJn
ZXRfbGlzdF91bnJlZihwcml2LT5jb3B5X3RhcmdldF9saXN0KTsKQEAgLTczMyw2ICs3NDgsMTgg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
ICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdf
cmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0
dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKK3sK
KyAgZ2Jvb2xlYW4gY29udGludWVFbWlzc2lvbiA9IFRSVUU7CisgIGdwb2ludGVyIG5ld1dlYlZp
ZXcgPSBnX3ZhbHVlX2dldF9vYmplY3QoaGFuZGxlclJldHVybik7CisgIGdfdmFsdWVfc2V0X29i
amVjdChyZXR1cm5BY2N1LCBuZXdXZWJWaWV3KTsKKworICBpZiAobmV3V2ViVmlldykKKyAgICAg
IGNvbnRpbnVlRW1pc3Npb24gPSBGQUxTRTsKKworICByZXR1cm4gY29udGludWVFbWlzc2lvbjsK
K30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdF9uYXZpZ2F0aW9uX3JlcXVlc3RfaGFuZGxlZChH
U2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdW
YWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVtbXkpCiB7CiAgIGdib29sZWFuIGNvbnRp
bnVlRW1pc3Npb24gPSBUUlVFOwpAQCAtNzc1LDYgKzgwMiw2MSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykK
ICAgICAgKiBTaWduYWxzCiAgICAgICovCiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3
OjpjcmVhdGUtd2ViLXZpZXc6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFt
ZQorICAgICAqIEB3aW5kb3dfZmVhdHVyZXM6IGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzdAor
ICAgICAqIEBuZXR3b3JrX3JlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgICAgICog
QHJldHVybjogYSBuZXdseSBhbGxvY2F0ZWQgI1dlYktpdFdlYlZpZXcgb3IgJU5VTEwKKyAgICAg
KgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGlzIHJl
cXVlc3RlZC4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBoYW5kbGVkIHRoZSBzaWduYWwgaGFu
ZGxlciBzaG91bGQgcmV0dXJuIHRoZQorICAgICAqIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZp
ZXcuIFRoZSBuZXcgI1dlYktpdFdlYlZpZXcgc2hvdWxkIG5vdCBiZQorICAgICAqIGRpc3BsYXll
ZCB0byB0aGUgdXNlciB1bnRpbCB0aGUgInNob3ctd2ViLXZpZXciIHNpZ25hbCBpcyBlbWl0dGVk
LgorICAgICAqCisgICAgICogVGhlIHNpZ25hbCBoYW5kbGVycyBzaG91bGQgbm90IHRyeSB0byBk
ZWFsIHdpdGggdGhlIHJlZmVyZW5jZQorICAgICAqIGNvdW50IGZvciB0aGUgbmV3ICNXZWJLaXRX
ZWJWaWV3LiBUaGUgd2lkZ2V0IHRvIHdoaWNoIHRoZQorICAgICAqIHdpZGdldCBpcyBhZGRlZCB3
aWxsIGhhbmRsZSB0aGF0LgorICAgICAqCisgICAgICogU2luY2UgMS4wLjIKKyAgICAgKi8KKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3
KCJjcmVhdGUtd2ViLXZpZXciLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmll
d0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwg
R19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2Vi
Vmlld0NsYXNzLCBjcmVhdGVfd2ViX3ZpZXcpLAorICAgICAgICAgICAgd2Via2l0X2NyZWF0ZV93
ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfT0JKRUNUX19PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAg
IFdFQktJVF9UWVBFX1dFQl9WSUVXICwgMywKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9G
UkFNRSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QpOworCisgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzo6c2hvdy13ZWItdmlldzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmpl
Y3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjogJVRSVUUg
dG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yCisgICAgICogdGhl
IGV2ZW50LCAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyCisgICAgICoKKyAg
ICAgKiBFbWl0dGVkIGFmdGVyICJjcmVhdGUtd2ViLXZpZXciIHdoZW4gdGhlIG5ldyAjV2ViS2l0
V2ViVmlldyBzaG91bGQKKyAgICAgKiBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCisgICAgICoK
KyAgICAgKiBJZiB0aGVyZSBpc24ndCBhbnkgaGFuZGxlciBmb3IgdGhpcyBzaWduYWwgb3IgaWYg
dGhleSByZXR1cm4KKyAgICAgKiAlRkFMU0UsIHRoZW4gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRv
IGNhbGwgZ3RrX3dpZGdldF9zaG93KCkgb24KKyAgICAgKiB0aGUgdG9wbGV2ZWwgd2luZG93IGNv
bnRhaW5pbmcgQHdlYl92aWV3LCBhbmQgb24gQHdlYl92aWV3LgorICAgICAqCisgICAgICogU2lu
Y2UgMS4wLjIKKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tTSE9XX1dFQl9W
SUVXXSA9IGdfc2lnbmFsX25ldygic2hvdy13ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19T
SUdOQUxfUlVOX0xBU1QpLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJW
aWV3Q2xhc3MsIHNob3dfd2ViX3ZpZXcpLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0
b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9t
YXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisK
ICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3Np
Z25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05B
TF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCkBAIC0xMTEwLDYgKzExOTIsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAg
ICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNzLT5zaG93X3dlYl92aWV3
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3Mt
Pm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9y
ZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNz
LT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTIw
OSw2ICsxMjkyLDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViVmll
dzp3aW5kb3ctZmVhdHVyZXM6CisgICAgKgorICAgICogQW4gYXNzb2NpYXRlZCBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyBpbnN0YW5jZS4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1Bf
V0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX29iamVjdCgid2luZG93LWZlYXR1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbmRvdyBGZWF0dXJlcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJB
biBhc3NvY2lhdGVkIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCiAgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9FRElUQUJM
RSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKCJlZGl0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRWRpdGFibGUiLApAQCAtMTQ0MCw2ICsxNTM3LDggQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICB3
ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2ViVmlldywgInNjcmVlbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3Zp
ZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxMKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndl
YlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nf
bm90aWZ5KSwgd2ViVmlldyk7CisKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtp
dF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJf
dmlld19uZXcodm9pZCkKQEAgLTE0NDksNiArMTU0OCwyMiBAQCBHdGtXaWRnZXQqIHdlYmtpdF93
ZWJfdmlld19uZXcodm9pZCkKICAgICByZXR1cm4gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIH0KIAor
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2hvdyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIGdi
b29sZWFuIGlzSGFuZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbU0hPV19XRUJfVklFV10sIDAsICZpc0hhbmRsZWQpOworICAg
IGlmIChpc0hhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIEd0a1dpZGdldCogdG9wbGV2
ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBp
ZiAoR1RLX1dJREdFVF9UT1BMRVZFTCh0b3BsZXZlbCkpCisgICAgICAgIGd0a193aWRnZXRfc2hv
dyh0b3BsZXZlbCk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQod2ViVmlldykpOwor
fQorCisKIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwpAQCAtMTQ3Myw2ICsxNTg4LDUy
IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF93aW5k
b3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2luZG93X2Zl
YXR1cmVzOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFRoaXMgd2lsbCBzZXQg
aG93IHRoZSB3aW5kb3cgY29udGFpbmluZyB0aGUgI1dlYktpdFdlYlZpZXcgc2hvdWxkCisgKiBs
b29rIGFuZCBiZWhhdmUuIEFwcGxpY2F0aW9ucyBtYXkgd2FudCB0byBtb25pdG9yIHRoaXMgcHJv
cGVydHkgYW5kCisgKiBhcHBseSB0aGUgc2V0dGluZ3MgaXQgY2FycmllcyB0byB0aGUgd2luZG93
IGhvbGRpbmcgdGhlIHJlbGV2YW50CisgKiAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBTaW5jZTog
MS4wLjIKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVMo
d2ViV2luZG93RmVhdHVyZXMpKTsKKyAgICAKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IHdlYlZpZXctPnByaXY7CisKKyAgICBpZih3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19l
cXVhbChwcml2LT53ZWJXaW5kb3dGZWF0dXJlcywgd2ViV2luZG93RmVhdHVyZXMpKQorICAgICAg
cmV0dXJuOworCisgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwor
ICAgIGdfb2JqZWN0X3JlZih3ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgcHJpdi0+d2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAq
CisgKiBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaGVs
ZCBieSB0aGUgZ2l2ZW4KKyAqICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJldHVybiB2YWx1ZTog
dGhlICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFNpbmNlOiAxLjAuMgorICovCitX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT53ZWJXaW5kb3dG
ZWF0dXJlczsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21haW50YWluc19iYWNr
X2ZvcndhcmRfbGlzdDoKICAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBAZmxhZzog
dG8gdGVsbCB0aGUgdmlldyB0byBtYWludGFpbiBhIGJhY2sgb3IgZm9yd2FyZCBsaXN0CmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggZWJkMWFhMS4uZGRkN2RlMyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaApAQCAtNjMsMTEgKzYzLDEzIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0NsYXNzIHsKIAogICAgIC8qCiAgICAgICogZGVmYXVsdCBoYW5kbGVyL3ZpcnR1YWwgbWV0aG9k
cwotICAgICAqIERJU0NVU1M6IGNyZWF0ZV93ZWJfdmlldyBuZWVkcyBhIHJlcXVlc3QgYW5kIHNo
b3VsZCB3ZSBtYWtlIHRoaXMgYSBzaWduYWwgd2l0aCBkZWZhdWx0IGhhbmRsZXI/IHRoaXMgd291
bGQKLSAgICAgKiByZXF1aXJlIHNvbWVvbmUgZG9pbmcgYSBnX3NpZ25hbF9zdG9wX2VtaXNzaW9u
X2J5X25hbWUKLSAgICAgKiBXZWJVSURlbGVnYXRlIGhhcyBub3RoaW5nIGZvciBjcmVhdGVfZnJh
bWUsIFdlYlBvbGljeURlbGVnYXRlIGFzIHdlbGwuLi4KICAgICAgKi8KLSAgICBXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgKiAoKiBjcmVhdGVfd2ViX3ZpZXcpICAgICAgICAoV2ViS2l0V2ViVmll
dyogd2ViX3ZpZXcpOworICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAgICAqICgqIGNyZWF0ZV93
ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFdlYkZyYW1lICAgICAgICp3ZWJfZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3
aW5kb3dfZmVhdHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdE5ldHdvcmtSZXF1ZXN0ICpyZXF1ZXN0KTsKKworICAg
IGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIHNob3dfd2ViX3ZpZXcpICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKICAgICAvKgogICAgICAqIFRPRE86IEZJWE1FOiBD
cmVhdGUgc29tZXRoaW5nIGxpa2UgV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lcl9Qcm90b2NvbCBp
bnN0ZWFkCkBAIC0yNDEsMTIgKzI0MywyMiBAQCBXRUJLSVRfQVBJIEd0a1RhcmdldExpc3QgKgog
d2Via2l0X3dlYl92aWV3X2dldF9wYXN0ZV90YXJnZXRfbGlzdCAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKIFdFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92
aWV3X3Nob3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3NldF9zZXR0
aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRX
ZWJTZXR0aW5ncyAgICAqc2V0dGluZ3MpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYlNldHRpbmdz
ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgKndpbmRvd19mZWF0dXJlcyk7CisKK1dF
QktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dp
bmRvd19mZWF0dXJlcyAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3
KTsKKwogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVu
dCAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDc3ZTAxCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwCkBAIC0wLDAgKzEsNDE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25z
QGdub21lLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2luZG93RmVhdHVy
ZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgorI2luY2x1ZGUgIndl
YmtpdHByaXZhdGUuaCIKKworZXh0ZXJuICJDIiB7CisKK2VudW0geworICAgIFBST1BfMCwKKwor
ICAgIFBST1BfWCwKKyAgICBQUk9QX1ksCisgICAgUFJPUF9XSURUSCwKKyAgICBQUk9QX0hFSUdI
VCwKKyAgICBQUk9QX1RPT0xCQVJfVklTSUJMRSwKKyAgICBQUk9QX1NUQVRVU0JBUl9WSVNJQkxF
LAorICAgIFBST1BfU0NST0xMQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9NRU5VQkFSX1ZJU0lCTEUs
CisgICAgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFLAorICAgIFBST1BfRlVMTFNDUkVFTiwKK307
CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMsIHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzLCBHX1RZUEVfT0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzUHJpdmF0ZSB7CisgICAgZ2ludCB4OworICAgIGdpbnQgeTsKKyAgICBnaW50IHdpZHRo
OworICAgIGdpbnQgaGVpZ2h0OworCisgICAgZ2Jvb2xlYW4gdG9vbGJhcl92aXNpYmxlOworICAg
IGdib29sZWFuIHN0YXR1c2Jhcl92aXNpYmxlOworICAgIGdib29sZWFuIHNjcm9sbGJhcl92aXNp
YmxlOworICAgIGdib29sZWFuIG1lbnViYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBsb2NhdGlv
bmJhcl92aXNpYmxlOworCisgICAgZ2Jvb2xlYW4gZnVsbHNjcmVlbjsKK307CisKKyNkZWZpbmUg
V0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUpKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpOworCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBzcGVjKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3Nf
aW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ29iamVj
dF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZTsK
KyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5OworCisgICAgR1BhcmFtRmxhZ3Mg
ZmxhZ3MgPSAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NP
TlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOng6Cisg
ICAgKgorICAgICogVGhlIHN0YXJ0aW5nIHggcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUg
c2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3RhcnRpbmcgeCBwb3NpdGlvbiBv
ZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzOnk6CisgICAgKgorICAgICogVGhlIHN0YXJ0aW5nIHkgcG9zaXRp
b24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAu
MgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2Ns
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJU
aGUgc3RhcnRpbmcgeSBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7
CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOndpZHRoOgorICAgICoK
KyAgICAqIFRoZSB3aWR0aCBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisgICAgKgorICAg
ICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX1dJRFRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lkdGgiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3aWR0aCBvZiB0aGUgd2luZG93IG9uIHRoZSBz
Y3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmhl
aWdodDoKKyAgICAqCisgICAgKiBUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVl
bi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfSEVJR0hULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoZWlnaHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlaWdo
dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGhlaWdodCBvZiB0
aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzOnRvb2xiYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3
aGV0aGVyIHRoZSB0b29sYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAg
ICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0b29sYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRvb2xiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgdG9vbGJhciBzaG91bGQgYmUgdmlzaWJsZSBm
b3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOnN0YXR1c2Jhci12aXNpYmxlOgorICAg
ICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHN0YXR1c2JhciBzaG91bGQgYmUgdmlzaWJs
ZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXNiYXItdmlzaWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzYmFyIFZpc2libGUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhl
IHN0YXR1c2JhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzOnNjcm9sbGJhci12aXNpYmxlOgorICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIg
dGhlIHNjcm9sbGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgor
ICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic2Nyb2xsYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlNjcm9sbGJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBzY3JvbGxiYXJzIHNob3VsZCBiZSB2aXNp
YmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKwor
ICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6bWVudWJhci12aXNpYmxlOgor
ICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIG1lbnViYXIgc2hvdWxkIGJlIHZpc2li
bGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX01FTlVCQVJfVklTSUJMRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbnViYXItdmlzaWJsZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVudWJhciBWaXNpYmxlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBtZW51
YmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6
bG9jYXRpb25iYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBs
b2NhdGlvbmJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAg
KiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkxvY2F0aW9uYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIGxvY2F0aW9uYmFyIHNob3VsZCBiZSB2
aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6ZnVsbHNjcmVlOgorICAg
ICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlzcGxheWVkIGZ1bGxz
Y3JlZW4uCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0ZVTExTQ1JFRU4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJGdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJDb250cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2NyZWVu
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKworICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0
ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0KFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzKQoreworICAgIHdlYl93
aW5kb3dfZmVhdHVyZXMtPnByaXYgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19HRVRfUFJJ
VkFURSh3ZWJfd2luZG93X2ZlYXR1cmVzKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3BhcmVudF9jbGFzcyktPmZpbmFsaXpl
KG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3Nl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
KiB3ZWJfd2luZG93X2ZlYXR1cmVzID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqZWN0
KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYgPSB3ZWJfd2luZG93
X2ZlYXR1cmVzLT5wcml2OworCisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1Bf
WDoKKyAgICAgICAgcHJpdi0+eCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBwcml2LT55ID0gZ192YWx1ZV9nZXRfaW50
KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJRFRIOgorICAgICAgICBw
cml2LT53aWR0aCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9IRUlHSFQ6CisgICAgICAgIHByaXYtPmhlaWdodCA9IGdfdmFsdWVfZ2V0X2lu
dCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9UT09MQkFSX1ZJU0lCTEU6
CisgICAgICAgIHByaXYtPnRvb2xiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6Cisg
ICAgICAgIHByaXYtPnN0YXR1c2Jhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQ1JPTExCQVJfVklTSUJMRToKKyAg
ICAgICAgcHJpdi0+c2Nyb2xsYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01FTlVCQVJfVklTSUJMRToKKyAgICAg
ICAgcHJpdi0+bWVudWJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFOgorICAgICAg
ICBwcml2LT5sb2NhdGlvbmJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GVUxMU0NSRUVOOgorICAgICAgICBwcml2
LT5mdWxsc2NyZWVuID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9J
RChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9
IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93
RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAg
IHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9YOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9pbnQodmFsdWUsIHByaXYtPngpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToK
KyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT55KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX1dJRFRIOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHBy
aXYtPndpZHRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hFSUdIVDoKKyAgICAg
ICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT5oZWlnaHQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCBwcml2LT50b29sYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHByaXYtPnN0YXR1c2Jhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCBwcml2LT5zY3JvbGxiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9NRU5VQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHByaXYtPm1lbnViYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9M
T0NBVElPTkJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBw
cml2LT5sb2NhdGlvbmJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0ZVTExTQ1JFRU46CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmZ1
bGxzY3JlZW4pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5z
dGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNo
ZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyBpbnN0YW5jZQorICoKKyAqIFNpbmNlIDEuMC4yCisgKiovCitXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCkKK3sKKyAgICByZXR1
cm4gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9XSU5ET1dfRkVBVFVSRVMsIE5VTEwpKTsKK30KKworLy8gZm9yIGludGVybmFsIHVzZSBvbmx5
CitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3
X2Zyb21fY29yZV9mZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVhdHVy
ZXMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgKndlYldpbmRvd0ZlYXR1cmVzID0g
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCk7CisKKyAgICBpZihmZWF0dXJlcy54U2V0
KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAieCIs
IHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMueCksIE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMu
eVNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwg
InkiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLnkpLCBOVUxMKTsKKworICAgIGlmKGZlYXR1
cmVzLndpZHRoU2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVh
dHVyZXMpLCAid2lkdGgiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLndpZHRoKSwgTlVMTCk7
CisKKyAgICBpZihmZWF0dXJlcy5oZWlnaHRTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09C
SkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJoZWlnaHQiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1
cmVzLmhlaWdodCksIE5VTEwpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgInRvb2xiYXItdmlzaWJsZSIsIGZlYXR1cmVz
LnRvb2xCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAic3RhdHVzYmFyLXZpc2libGUiLCBm
ZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAic2Nyb2xsYmFyLXZp
c2libGUiLCBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgIm1l
bnViYXItdmlzaWJsZSIsIGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAg
ICAibG9jYXRpb25iYXItdmlzaWJsZSIsIGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSwKKyAg
ICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLCBmZWF0dXJlcy5mdWxsc2NyZWVuLAorICAgICAg
ICAgICAgICAgICBOVUxMKTsKKworICAgIHJldHVybiB3ZWJXaW5kb3dGZWF0dXJlczsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbDoKKyAqIEBmZWF0dXJlczE6
IGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlCisgKiBAZmVhdHVyZXMyOiBhbm90
aGVyICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQorICoKKyAqIERlY2lkZXMgaWYg
YSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UgZXF1YWxzIGFub3RoZXIsIGFzCisg
KiBpbiBoYXMgdGhlIHNhbWUgdmFsdWVzLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBp
bnN0YW5jZXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZXMsICVGQUxTRQorICogb3RoZXJ3aXNlCisgKgor
ICogU2luY2UgMS4wLjIKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X2VxdWFsKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiBmZWF0dXJlczIpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2
YXRlKiBwcml2MSA9IGZlYXR1cmVzMS0+cHJpdjsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
c1ByaXZhdGUqIHByaXYyID0gZmVhdHVyZXMyLT5wcml2OworICAgIAorICAgIGlmKChwcml2MS0+
eCA9PSBwcml2Mi0+eCkgJiYKKyAgICAgICAocHJpdjEtPnkgPT0gcHJpdjItPnkpICYmCisgICAg
ICAgKHByaXYxLT53aWR0aCA9PSBwcml2Mi0+d2lkdGgpICYmCisgICAgICAgKHByaXYxLT5oZWln
aHQgPT0gcHJpdjItPmhlaWdodCkgJiYKKyAgICAgICAocHJpdjEtPnRvb2xiYXJfdmlzaWJsZSA9
PSBwcml2Mi0+dG9vbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+c2Nyb2xsYmFyX3Zp
c2libGUgPT0gcHJpdjItPnNjcm9sbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+bWVu
dWJhcl92aXNpYmxlID09IHByaXYyLT5tZW51YmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYx
LT5sb2NhdGlvbmJhcl92aXNpYmxlID09IHByaXYyLT5sb2NhdGlvbmJhcl92aXNpYmxlKSAmJgor
ICAgICAgIChwcml2MS0+ZnVsbHNjcmVlbiA9PSBwcml2Mi0+ZnVsbHNjcmVlbikpCisgICAgICAg
IHJldHVybiBUUlVFOworICAgIHJldHVybiBGQUxTRTsKK30KKworCit9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44NzMwMDdlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBfX1dFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0hfXworI2RlZmluZSBfX1dFQktJVF9XRUJf
V0lORE9XX0ZFQVRVUkVTX0hfXworCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTICAgICAgICAgICAgKHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRV
UkVTKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKSkK
KyNkZWZpbmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFU
VVJFUywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19X
RUJfV0lORE9XX0ZFQVRVUkVTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZ
UEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMpKQorI2RlZmluZSBXRUJL
SVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFT
U19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOwor
CitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIHsKKyAgICBHT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyB7CisgICAgR09iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKKworICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24g
Ki8KKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2
b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKK307CisKK1dFQktJ
VF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlICAgICAgICAg
ICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3ICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJ
VF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsICAgICAgICAg
ICAgICAgKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyogZmVhdHVyZXMyKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fV0VCS0lUX1dFQl9X
SU5ET1dfRkVBVFVSRVNfSF9fICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23180</attachid>
            <date>2008-09-04 14:55:09 -0700</date>
            <delta_ts>2008-09-04 15:09:19 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>201413</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNTk3M2E4Li42ZGM3YmEw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDktMDQgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDA4LTA5LTA0ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBlMjc0Mjg5Li5iZjdl
M2JlIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAt
MzE0LDYgKzMxNCw3IEBAIHdlYmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCiAKIHdlYmtpdGd0a19idWlsdF9zb3VyY2VzICs9IFwKQEAgLTM0
NSw3ICszNDYsOCBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5
aXRlbS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCi0J
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKwlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuY3BwCiAKIHdlYmtpdGd0a19jcHBmbGFncyArPSBcCiAJLURCVUlMRElOR19XRUJLSVQg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBlMWZlNGU1Li44NWIwNjNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtNzg3ODAsNiArNzg3ODAsMzcyNiBAQCBlbGVtZW50IGlzIHdo
ZW4gdGhlIGVsZW1lbnQgcmVwb3J0cyBpdHNlbGYgdG8gdGhlIHNjcmVlbiByZWFkZXIuIFNvIGFs
bCBvZiB0aGVzZQogICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgogICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnN1cHBvcnRzQ29udHJvbFRpbnRzKToKIAor
MjAwNy0xMS0wOCAgS2V2aW4gTWNDdWxsb3VnaCAgPGttY2N1bGxvdWdoQGFwcGxlLmNvbT4KKwor
ICAgICAgICAtIEJ1aWxkIGZpeC4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFnZUVtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6d2luZG93
T2JqZWN0Q2xlYXJlZCk6CisKKzIwMDctMTEtMDggIEtldmluIE1jQ3VsbG91Z2ggIDxrbWNjdWxs
b3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtLgorCisgICAgICAgIC0g
d2luZG93T2JqZWN0Q2xlYXJlZCgpIGlzIG5vIGxvbmdlciBjb25zdC4gIEl0IG5lZWRzIHRvIHNl
dHVwIHRoZQorICAgICAgICBzY3JpcHQgZGVidWdnZXIgYW5kIGNhbm5vdCBiZSBjb25zdCB0byBk
byBzby4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFnZUVtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6d2luZG93T2JqZWN0Q2xlYXJlZCk6
CisKKzIwMDctMTEtMDggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAg
IEhvcGVmdWwgV2luZG93cyBidWlsZCBmaXgKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOiBUb3VjaCB0aGlzIGZpbGUgdG8gbWFrZSBpdCByZWNvbXBpbGUuCisKKzIwMDct
MTEtMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbi4KKworICAgICAgICBDb252ZXJ0IEphdmFTY3JpcHQgaW50ZXJuYWwgZnVuY3Rpb24g
b2JqZWN0cyB0byB1c2Ugb25lIGNsYXNzIHBlcgorICAgICAgICBmdW5jdGlvbi4gIFRoaXMgYXZv
aWRzIGEgc3dpdGNoIHN0YXRlbWVudCBpbnNpZGUgd2hhdCB1c2VkIHRvIGJlCisgICAgICAgIHRo
ZSBzaGFyZWQgZnVuY3Rpb24gY2xhc3NlcyBhbmQgd2lsbCBhbGxvdyBTaGFyayB0byBiZXR0ZXIg
YW5hbHl6ZQorICAgICAgICB0aGUgY29kZS4KKworICAgICAgICBUbyBtYWtlIHRoaXMgc3dpdGNo
LCB0aGUgdmFsdWUgcHJvcGVydHkgb2YgdGhlIEhhc2hFbnRyeSB3YXMgY2hhbmdlZAorICAgICAg
ICB0byBhIHVuaW9uIG9mIGFuIGludHB0cl90ICh3aGljaCBpcyB1c2VkIHRvIGNvbnRpbnVlIGhh
bmRsZSB2YWx1ZUdldHRlcnMpCisgICAgICAgIGFuZCBmdW5jdGlvbiBwb2ludGVyIHdoaWNoIHBv
aW50cyB0byBhIHN0YXRpYyBjb25zdHJ1Y3RvciBmb3IgdGhlCisgICAgICAgIGluZGl2aWR1YWwg
bmV3IGZ1bmN0aW9uIG9iamVjdHMuCisKKyAgICAgICAgU3VuU3BpZGVyIGNsYWltcyB0aGlzIGlz
IGEgMS4wJSBzcGVlZHVwLgorCisgICAgICAgIC0gT24gdGhlIFdlYkNvcmUgc2lkZSwgSSB1cGRh
dGVkIENvZGVHZW5lcmF0b3JKUy5wbSB0byBnZW5lcmF0ZSB0aGUKKyAgICAgICAgICBuZXcgY2xh
c3NlcyBhbmQgaGFuZCB1cGRhdGVkIHRoZSByZW1haW4gbm9uLWdlbmVyYXRlZCAoZ3JvYW4pIGNs
YXNzZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5l
cjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGVQ
cm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXI6OmNhbGxBc0Z1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlRnVuY3Rpb25EaXNwYXRj
aEV2ZW50OjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldE5vZGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudEJhc2VGdW5jdGlvblNl
dFNlbGVjdGlvblJhbmdlOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hU
TUxJbnB1dEVsZW1lbnRCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TElucHV0RWxlbWVudEJhc2U6Oik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVx
dWVzdC5jcHA6CisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3RQcm90b3R5cGVGdW5jdGlv
bkFib3J0OjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3RQ
cm90b3R5cGVGdW5jdGlvbkdldEFsbFJlc3BvbnNlSGVhZGVyczo6Y2FsbEFzRnVuY3Rpb24pOgor
ICAgICAgICAoS0pTOjpKU1hNTEh0dHBSZXF1ZXN0UHJvdG90eXBlRnVuY3Rpb25HZXRSZXNwb25z
ZUhlYWRlcjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjpKU1hNTEh0dHBSZXF1ZXN0
UHJvdG90eXBlRnVuY3Rpb25PcGVuOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkpT
WE1MSHR0cFJlcXVlc3RQcm90b3R5cGVGdW5jdGlvblNlbmQ6OmNhbGxBc0Z1bmN0aW9uKToKKyAg
ICAgICAgKEtKUzo6SlNYTUxIdHRwUmVxdWVzdFByb3RvdHlwZUZ1bmN0aW9uU2V0UmVxdWVzdEhl
YWRlcjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjpKU1hNTEh0dHBSZXF1ZXN0UHJv
dG90eXBlRnVuY3Rpb25PdmVycmlkZU1JTUVUeXBlOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAg
IChLSlM6OkpTWE1MSHR0cFJlcXVlc3RQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXI6
OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6SlNYTUxIdHRwUmVxdWVzdFByb3RvdHlw
ZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAo
S0pTOjpKU1hNTEh0dHBSZXF1ZXN0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50OjpjYWxs
QXNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5oOgor
ICAgICAgICAoS0pTOjpKU1hNTEh0dHBSZXF1ZXN0OjppbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoS0pTOjpKU1hTTFRQcm9jZXNzb3JQ
cm90b3R5cGVGdW5jdGlvbkltcG9ydFN0eWxlc2hlZXQ6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAg
ICAgKEtKUzo6SlNYU0xUUHJvY2Vzc29yUHJvdG90eXBlRnVuY3Rpb25UcmFuc2Zvcm1Ub0ZyYWdt
ZW50OjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkpTWFNMVFByb2Nlc3NvclByb3Rv
dHlwZUZ1bmN0aW9uVHJhbnNmb3JtVG9Eb2N1bWVudDo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAg
ICAoS0pTOjpKU1hTTFRQcm9jZXNzb3JQcm90b3R5cGVGdW5jdGlvblNldFBhcmFtZXRlcjo6Y2Fs
bEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjpKU1hTTFRQcm9jZXNzb3JQcm90b3R5cGVGdW5j
dGlvbkdldFBhcmFtZXRlcjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjpKU1hTTFRQ
cm9jZXNzb3JQcm90b3R5cGVGdW5jdGlvblJlbW92ZVBhcmFtZXRlcjo6Y2FsbEFzRnVuY3Rpb24p
OgorICAgICAgICAoS0pTOjpKU1hTTFRQcm9jZXNzb3JQcm90b3R5cGVGdW5jdGlvbkNsZWFyUGFy
YW1ldGVyczo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjpKU1hTTFRQcm9jZXNzb3JQ
cm90b3R5cGVGdW5jdGlvblJlc2V0OjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNYU0xUUHJvY2Vzc29yLmg6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2V2ZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NsaXBib2FyZFByb3RvdHlwZUZ1bmN0aW9uQ2xl
YXJEYXRhOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0NsaXBib2FyZFBy
b3RvdHlwZUZ1bmN0aW9uR2V0RGF0YTo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDbGlwYm9hcmRQcm90b3R5cGVGdW5jdGlvblNldERhdGE6OmNhbGxBc0Z1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2xpcGJvYXJkUHJvdG90eXBlRnVuY3Rpb25TZXREcmFnSW1h
Z2U6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZXZlbnRzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMva2pzX25hdmlnYXRvci5jcHA6CisgICAgICAgIChLSlM6
OlBsdWdpbnM6Oik6CisgICAgICAgIChLSlM6Ok5hdmlnYXRvcjo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEtKUzo6UGx1Z2luczo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEtKUzo6UGx1Z2luc0Z1bmN0aW9uUmVmcmVzaDo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAo
S0pTOjpOYXZpZ2F0b3JQcm90b0Z1bmNKYXZhRW5hYmxlZDo6Y2FsbEFzRnVuY3Rpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL2tqc19uYXZpZ2F0b3IuaDoKKyAgICAgICAgKEtKUzo6TmF2aWdh
dG9yOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwOgorICAgICAgICAo
S0pTOjpXaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OldpbmRvdzo6
cHV0KToKKyAgICAgICAgKEtKUzo6V2luZG93UHJvdG9GdW5jQVRvQjo6Y2FsbEFzRnVuY3Rpb24p
OgorICAgICAgICAoS0pTOjpXaW5kb3dQcm90b0Z1bmNCVG9BOjpjYWxsQXNGdW5jdGlvbik6Cisg
ICAgICAgIChLSlM6OldpbmRvd1Byb3RvRnVuY09wZW46OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAg
ICAgKEtKUzo6V2luZG93UHJvdG9GdW5jU2Nyb2xsQnk6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAg
ICAgKEtKUzo6V2luZG93UHJvdG9GdW5jU2Nyb2xsVG86OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAg
ICAgKEtKUzo6V2luZG93UHJvdG9GdW5jTW92ZUJ5OjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAg
IChLSlM6OldpbmRvd1Byb3RvRnVuY01vdmVUbzo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAo
S0pTOjpXaW5kb3dQcm90b0Z1bmNSZXNpemVCeTo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAo
S0pTOjpXaW5kb3dQcm90b0Z1bmNSZXNpemVUbzo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAo
S0pTOjpXaW5kb3dQcm90b0Z1bmNTZXRUaW1lb3V0OjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAg
IChLSlM6OldpbmRvd1Byb3RvRnVuY0NsZWFyVGltZW91dDo6Y2FsbEFzRnVuY3Rpb24pOgorICAg
ICAgICAoS0pTOjpXaW5kb3dQcm90b0Z1bmNTZXRJbnRlcnZhbDo6Y2FsbEFzRnVuY3Rpb24pOgor
ICAgICAgICAoS0pTOjpXaW5kb3dQcm90b0Z1bmNBZGRFdmVudExpc3RlbmVyOjpjYWxsQXNGdW5j
dGlvbik6CisgICAgICAgIChLSlM6OldpbmRvd1Byb3RvRnVuY1JlbW92ZUV2ZW50TGlzdGVuZXI6
OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6V2luZG93UHJvdG9GdW5jU2hvd01vZGFs
RGlhbG9nOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OldpbmRvd1Byb3RvRnVuY05v
dEltcGxlbWVudGVkOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkxvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoS0pTOjpMb2NhdGlvbjo6cHV0KToKKyAgICAg
ICAgKEtKUzo6TG9jYXRpb25Qcm90b0Z1bmNSZXBsYWNlOjpjYWxsQXNGdW5jdGlvbik6CisgICAg
ICAgIChLSlM6OkxvY2F0aW9uUHJvdG9GdW5jUmVsb2FkOjpjYWxsQXNGdW5jdGlvbik6CisgICAg
ICAgIChLSlM6OkxvY2F0aW9uUHJvdG9GdW5jQXNzaWduOjpjYWxsQXNGdW5jdGlvbik6CisgICAg
ICAgIChLSlM6OkxvY2F0aW9uUHJvdG9GdW5jVG9TdHJpbmc6OmNhbGxBc0Z1bmN0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9ranNfd2luZG93Lmg6CisgICAgICAgIChLSlM6OldpbmRvdzo6
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKworMjAw
Ny0xMS0wOCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0aGUg
R3RrLCBRdCBhbmQgV3ggYnVpbGRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1RlbXBvcmFy
eUxpbmtTdHVicy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOgorCisy
MDA3LTExLTA4ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAgICAgTm90IHJl
dmlld2VkLiAgRml4IHR3byBpbnN0YW5jZXMgb2YgaW5jbHVkZXMgdXNpbmcgdGhlIHdyb25nIGNh
c2UgaW4gdGhlIGZpbGVuYW1lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01v
dmllUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01pbWVUeXBlUmVnaXN0
cnlXeC5jcHA6CisKKzIwMDctMTEtMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0uCisKKyAgICAgICAgLSBmaXggPHJkYXI6Ly9wcm9i
bGVtLzU1NTI5NDM+IGFjY2Vzc2tleSBkb2VzIG5vdCBmb2N1cyA8YnV0dG9uPiBlbGVtZW50cwor
CisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvYWNjZXNzLWtleS5odG1sCisKKyAgICAgICAgKiBo
dG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDogKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojph
Y2Nlc3NLZXlBY3Rpb24pOgorICAgICAgICBBZGRlZCBhIGNhbGwgdG8gZm9jdXMuCisKKzIwMDct
MTEtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFN0ZXZlLgorCisgICAgICAgIC0gY3V0IGRvd24gb24gbm90SW1wbGVtZW50ZWQoKSBmdW5j
dGlvbnMgb24gV2luZG93cworCisgICAgICAgICogYnJpZGdlL0FYT2JqZWN0Q2FjaGUuaDogUHV0
ICNpZiBhcm91bmQgdGhlIGFjY2Vzc2liaWxpdHkKKyAgICAgICAgZ2xvYmFsLgorCisgICAgICAg
ICogYnJpZGdlL3dpbi9GcmFtZVdpbi5jcHA6IChXZWJDb3JlOjpGcmFtZTo6c2V0TmVlZHNSZWFw
cGx5U3R5bGVzKToKKyAgICAgICAgTW92ZWQgaGVyZSBmcm9tIFRlbXBvcmFyeUxpbmtTdHVicy4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IChXZWJDb3JlOjpEb2N1bWVudDo6bGFzdE1v
ZGlmaWVkKTogUmUtaW1wbGVtZW50ZWQKKyAgICAgICAgdXNpbmcgdGhlIFJlc291cmNlUmVzcG9u
c2UgdGhhdCdzIG5vdyBhdmFpbGFibGUgZnJvbSB0aGUgRG9jdW1lbnRMb2FkZXIuCisKKyAgICAg
ICAgKiBlZGl0aW5nL0pTRWRpdG9yLmNwcDogKGV4ZWNUcmFuc3Bvc2UpOiBDaGFuZ2VkIHRvIGNh
bGwgdHJhbnNwb3NlKCkgb24KKyAgICAgICAgdGhlIEVkaXRvciBpbnN0ZWFkIG9mIHRoZSBvYnNv
bGV0ZSBvbmUgb24gdGhlIEZyYW1lLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6IFJlbW92ZWQgZ2V0UmVzcG9uc2VNb2RpZmllZEhlYWRlci4KKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuaDogUmVtb3ZlZCBvdmVycmlkZU1lZGlhVHlwZS4KKworICAgICAgICAqIGxv
YWRlci9ndGsvRG9jdW1lbnRMb2FkZXJHdGsuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRl
ci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVyL3F0
L0RvY3VtZW50TG9hZGVyUXQuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICogcGFnZS9GcmFtZS5j
cHA6IFJlbW92ZWQgdHJhbnNwb3NlLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDogRGl0dG8uCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDogUmVtb3ZlZCB1cGRhdGVCb3JkZXIuCisgICAgICAg
ICogcGFnZS9ndGsvRnJhbWVHdGsuY3BwOiBSZW1vdmVkIGlzc3VlVHJhbnNwb3NlQ29tbWFuZC4K
KyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbTogRGl0dG8uCisgICAgICAgICogcGFnZS9t
YWMvV2ViQ29yZUZyYW1lQnJpZGdlLmg6IFJlbW92ZWQgaXNzdWVUcmFuc3Bvc2VDb21tYW5kIGFu
ZAorICAgICAgICBvdmVycmlkZU1lZGlhVHlwZS4KKyAgICAgICAgKiBwYWdlL3F0L0ZyYW1lUXQu
Y3BwOiBSZW1vdmVkIGlzc3VlVHJhbnNwb3NlQ29tbWFuZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOiBSZW1vdmVkIGdBY2Nlc3NpYmlsaXR5RW5hYmxl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDogUmVtb3ZlZCBv
ciBtb3ZlZCBhbGwgYnV0IDMgb2YgdGhlIHN0dWJzLgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Rl
bXBvcmFyeUxpbmtTdHVicy5jcHA6IFJlbW92ZWQgZ0FjY2Vzc2liaWxpdHlFbmFibGVkLAorICAg
ICAgICBpc3N1ZVRyYW5zcG9zZUNvbW1hbmQsIGFuZCBvdmVycmlkZU1lZGlhVHlwZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKTogTW92ZWQgaGVyZSBm
cm9tIFRlbXBvcmFyeUxpbmtTdHVicy4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Ojp3aWxsTG9hZEZyb21DYWNoZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9HcmFw
aGljc0NvbnRleHRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpjbGlwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9s
bFZpZXdXaW4uY3BwOiAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6aW5XaW5kb3cpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHA6IChXZWJDb3JlOjp1c2VySWRs
ZVRpbWUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDogKFdl
YkNvcmU6OldpZGdldDo6c2V0SXNTZWxlY3RlZCk6IERpdHRvLgorCisgICAgICAgICogV2ViQ29y
ZS5wcm86IFVwZGF0ZWQgZm9yIHJlbW92ZWQgZmlsZXMuCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBVcGRhdGVkIGZvciByZW1vdmVkIGZpbGUuCisKKzIwMDct
MTEtMDggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKworICAgICAgIEJ1aWxkIGZpeCBm
b3IgY2FzZS1zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLiAgRml4IGNhc2Ugb2YgZmlsZSBuYW1lcwor
ICAgICAgIGluICNpbmNsdWRlJ3MuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vdmllLmNwcDoKKworMjAwNy0xMS0w
OCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5j
b20+LgorCisgICAgICAgIFJlbW92ZSBzb21lIHdhcm5pbmdzIGFib3V0IG5vdCBpbXBsZW1lbnRl
ZCBtZXRob2RzLgorCisgICAgICAgICogUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tlZCBhbmQg
UmVzb3VyY2VIYW5kbGU6OnN1cHBvcnRzQnVmZmVyZWREYXRhIGFyZQorICAgICAgICBzcGVjaWZp
YyB0byB0aGUgTlMgQVBJIGFuZCB3b24ndCBiZSBpbXBsZW1lbnRlZCBvbiBRdC4KKyAgICAgICAg
KiBSZXNvdXJjZUhhbmRsZTo6YnVmZmVyZWREYXRhIGNhbiBub3QgYmUgcmVhY2hlZCBhcyB3ZSBy
ZXR1cm4gZmFsc2UgaW4KKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnN1cHBvcnRzQnVmZmVyZWRE
YXRhLgorCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN1cHBvcnRzQnVmZmVyZWRE
YXRhKToKKworMjAwNy0xMS0wOCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIu
ZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzIEtub2xs
IDxsYXJzQHRyb2xsdGVjaC5jb20+LgorCisgICAgICAgIENsZWFudXAgY2hlY2tpbmcgZm9yIHRo
ZSByZXF1ZXN0IG1ldGhvZC4KKworICAgICAgICAqIENoZWNrIHRoZSByZXF1ZXN0IG1ldGhvZCBv
bmx5IGluIFFXZWJOZXR3b3JrTWFuYWdlcjo6YWRkLgorICAgICAgICAqIEN1cnJlbnRseSBIRUFE
LCBHRVQsIFBPU1QgYXJlIGFsbG93ZWQgYW5kIGZvciBldmVyeXRoaW5nIGVsc2UKKyAgICAgICAg
UVdlYk5ldHdvcmtNYW5hZ2VyOjphZGQgcmV0dXJucyBmYWxzZS4KKyAgICAgICAgKiBSZXR1cm5p
bmcgZmFsc2UgaXMgY29tcGF0aWJsZSB3aXRoIFJlc291cmNlSGFuZGxlOjpzdGFydCBhbmQgaXQK
KyAgICAgICAgY2FuIGJlIHVzZWQgaW4gUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkgdG8gZ2VuZXJhdGUKKyAgICAgICAgYSBSZXNvdXJjZUVycm9yCisKKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorCisyMDA3LTExLTA4ICBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4uCisK
KyAgICAgICAgSW1wbGVtZW50IFdlYkNvcmU6OmNhbGxPbk1haW5UaHJlYWQKKworICAgICAgICBJ
bXBsZW1lbnRlZCB1c2luZyBhIGdsb2JhbCBRT2JqZWN0LCB0aGF0IGlzIG1vdmVkIHRvIHRoZSBt
YWluIHRocmVhZAorICAgICAgICBhbmQgdGhlbiBzZW5kaW5nIGEgY3VzdG9tIGV2ZW50IHRvIGl0
LgorICAgICAgICBQaWNrZWQgYSBudW1iZXIgYmVsb3cgUUV2ZW50OjpVc2VyIGJ1dCBhYm92ZSBh
bnkgb3RoZXIgZG9jdW1lbnRlZCB2YWx1ZS4KKworCisgICAgICAgICogcGxhdGZvcm0vcXQvVGhy
ZWFkaW5nUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybUZ1bmN0aW9uRXZlbnQ6OlBl
cmZvcm1GdW5jdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRJbnZva2Vy
OjpNYWluVGhyZWFkSW52b2tlcik6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkSW52b2tl
cjo6ZXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbE9uTWFpblRocmVhZCk6CisKKzIwMDct
MTEtMDggIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRl
Y2guY29tPi4KKworICAgICAgICBBdm9pZCBwcm9ibGVtcyB3aXRoIGNhbGxpbmcgUVBhaW50ZXI6
OmJlZ2luKCkgb24gYW4gYWxyZWFkeSBhY3RpdmUgcGFpbnRkZXZpY2UKKworICAgICAgICAqIFBh
cnRpYWwgcGljayBmcm9tIDYyMDBlMDRjM2UwYTc3ODczYzNiM2YzOTY5YjY1YmM3MDEwMjAzMjYg
dG8gYXZvaWQgZ2V0dGluZworICAgICAgICBjcmFzaGVzIG9uIFF0L01hYyA0LjQgd2l0aCBRUGFp
bnRlcjo6YmVnaW4gdG8gZmFpbCBiZWNhdXNlIHdlIGFscmVhZHkgZHJhdy4KKyAgICAgICAgKiBJ
ZiB3ZSBhcmUgaW4gYSBsYXlvdXQgb3IgbmVlZCBvbmUgZG8gbm90IHBhaW50LiBUaGlzIGNhbiBo
YXBwZW4gZm9yIHRoZSBQbGF0Zm9ybVNjcm9sbEJhcgorICAgICAgICB1c2VkIGJ5IHRoZSBTY3Jv
bGxWaWV3IG9uIGEgbGF5b3V0IHRyaWdnZXJlZCBieSBRV2ViUGFnZTo6cGFpbnRFdmVudC4KKwor
CisgICAgICAgICogcGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2lkZ2V0OjppbnZhbGlkYXRlUmVjdCk6CisKKzIwMDctMTEtMDggIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgorCisgICAgICAgIE5vIHJldmlldy4KKworICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdQYXRoRWxlbWVudC5oOiByZW1vdmUgb2xkIGNvbW1lbnQKKworMjAwNy0xMS0wNyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2xs
aWUuCisKKyAgICAgICAgRW5zdXJlIHZpZGVvIHJlbmRlcmVyIGhhcyBjb3JyZWN0IHNpemUgaWYg
dmlkZW8gaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQKKyAgICAgICAgd2hlbiBpdCBpcyBjb25zdHJ1
Y3RlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8pOgorCisyMDA3LTExLTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBPbGxpZS4K
KworICAgICAgICBFbnN1cmUgdmlkZW8gaXMgdmlzaWJsZSB3aGVuIGl0IHNob3VsZCBiZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWRlbzo6dXBkYXRlTW92aWUpOgorCisyMDA3LTExLTA3ICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgLSBmaXggPHJkYXI6Ly9wcm9ibGVtLzU1MjM1MDM+IFNhZmFyaSBjcmFzaGVzIGNsaWNr
aW5nIHNjcm9sbCBiYXIgaW4gRmFjZUJvb2sgJ1RyaXBzJworCisgICAgICAgIExheWVycyBhbmQg
bGlzdGJveGVzIGFyZSB0d28ga2luZHMgb2YgU2Nyb2xsQmFyQ2xpZW50IHRoYXQgY2FuIGJlCisg
ICAgICAgIHJlbW92ZWQgd2hpbGUgdGhlIHNjcm9sbGJhciBpcyB0cmFja2luZyB0aGUgbW91c2Uu
IFRoZSBzY3JvbGxiYXIgaXMgbm90CisgICAgICAgIGRlc3Ryb3llZCB1bnRpbCBsYXRlciwgYW5k
IG1lYW53aGlsZSBpdCBjYW4gdHJ5IHRvIGNhbGwgdGhlIGNsaWVudCwKKyAgICAgICAgd2hpY2gg
cmVzdWx0cyBpbiBhIGNyYXNoLgorCisgICAgICAgICogbWFudWFsLXRlc3RzL3N0YWxlLXNjcm9s
bGJhci1jbGllbnQtY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
QmFyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnNldENsaWVudCk6IEFkZGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcik6IENhbGwgU2Nyb2xsYmFyOjpzZXRDbGllbnQo
KS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMaXN0Qm94Ojp+UmVuZGVyTGlzdEJveCk6IERpdHRvLgorCisyMDA3LTExLTA3
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggPHJkYXI6Ly81
NTY5MjY4PiBDcmFzaCB3aGVuIG9wZW5pbmcgYW55IEZUUCBzaXRlIGluIHNlY29uZCB0YWIvd2lu
ZG93CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtLgorCisgICAgICAgIE5vIHRlc3QgcG9zc2li
bGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKTogQmFp
bCBpZiB3ZSBnZXQgYW4KKyAgICAgICAgZW1wdHkgcGF0aCwgYmVjYXVzZSBfd2ZvcGVuX3Mgd2ls
bCBjcmFzaCBpZiB3ZSBwYXNzIGl0IGEgbnVsbCBwb2ludGVyLgorCisyMDA3LTExLTA3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IGNvbmZ1c2Vz
IHdpZHRoL2hlaWdodCBmb3IgTWVkaWEgUXVlcmllcyBkZXZpY2UtYXNwZWN0LXJhdGlvIGV2YWx1
YXRpb24KKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
ODkzPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM4MDI5NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbi4KKworICAgICAgICBUZXN0czogZmFzdC9jc3MvZGV2aWNlLWFzcGVjdC1yYXRp
by5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9tYXgtZGV2aWNlLWFzcGVjdC1yYXRpby5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9taW4tZGV2aWNlLWFzcGVjdC1yYXRpby5odG1s
CisKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZUFzcGVjdFJhdGlvKTogUmVuYW1lZCBtZXRob2QgcGFyYW1ldGVycyBmcm9tIGEv
YiB0byBoL3YuCisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VfYXNwZWN0X3JhdGlvTWVkaWFGZWF0
dXJlRXZhbCk6IFJlbmFtZWQgbG9jYWwgdmFyaWFibGVzIGZyb20KKyAgICAgICAgYS9iIHRvIGgv
di4gIFN3aXRjaGVkIGZpcnN0IHR3byBhcmd1bWVudHMgb2YgdGhlIGNhbGwgdG8gY21wdmFsdWUo
KSB0byBmaXgKKyAgICAgICAgdGhlIGJ1Zy4KKworMjAwNy0xMS0wNyAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCisKKyAg
ICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODcK
KyAgICAgICAgICBSRUdSRVNTSU9OIChyMjc1NzYpOiBDcmFzaCBpbiBSZW5kZXJTdHlsZTo6YWZm
ZWN0ZWRCeUhvdmVyUnVsZXMgY2xpY2tpbmcgbGluayBvbiBEaWdnCisKKyAgICAgICAgVGVzdDog
ZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbAorCisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVj
YWxjU3R5bGUpOiBGaXhlZCB0aGUgY3Jhc2ggYnkgbnVsbC1jaGVja2luZworICAgICAgICB0aGUg
Y3VycmVudCBzdHlsZSBhbmQgcmVtb3ZlZCBvdGhlciBjaGVja3MgdGhhdCBhcmUgbm90IHN0cmlj
dGx5CisgICAgICAgIG5lY2Vzc2FyeS4KKworMjAwNy0xMS0wNyAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUnViYmVyc3RhbXBlZCBieSBTYW0KKworICAgICAg
ICBSZW1vdmUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcyBmcm9tIFNWRyB0aGF0IHdlcmUgcHJ1
bmVkIGF3aGlsZSBhZ28KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFn
ZUVtcHR5Q2xpZW50cy5oOgorCisyMDA3LTExLTA3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgLSBm
aXggYSBidWcgd2hlcmUgQ1NTIHJ1bGVzIHdpdGggOmhvdmVyIGluIHRoZSBhbmNlc3RvciBjaGFp
biBzdG9wcGVkCisgICAgICAgICAgd29ya2luZyBhZnRlciBjaGFuZ2luZyB0aGUgaW5saW5lIHN0
eWxlIGRlY2xhcmF0aW9uIG9mIHRoZSBhbmNlc3RvcgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3Nz
L2FmZmVjdGVkLWJ5LWhvdmVyLWFmdGVyLXN0eWxlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWNhbGNTdHlsZSk6
IElmIHdlIGFyZSBub3QgZm9yY2luZyBzdHlsZQorICAgICAgICByZWNhbGN1bGF0aW9uIGZvciBh
bGwgZGVzY2VuZGFudHMsIHByZXNlcnZlIGFueSAiYWZmZWN0ZWQgYnkKKyAgICAgICAge2hvdmVy
fGFjdGl2ZXxkcmFnfSBiaXRzIHRoYXQgd2UgbWF5IGhhdmUgYWNxdWlyZWQgZnJvbSB0aGVtLgor
ICAgICAgICBBbHNvIHJlbmFtZWQgX3N0eWxlIHRvIGN1cnJlbnRTdHlsZS4KKworMjAwNy0xMS0w
NiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbS4KKworICAgICAgICBCdWcgMTE5MjA6IFdlYiBJbnNwZWN0b3Igc2hvdWxkIGhh
dmUgRmlyZWJ1Zy1saWtlIENTUyBlZGl0aW5nCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExOTIwCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmg6CisgICAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KTogUmV0dXJuIGZhbHNlLiBJJ20gbm90IHN1cmUg
d2h5CisgICAgICAgICAgdGhpcyB3YXMgdHJ1ZSwgYnV0IGNvbXB1dGVkIHN0eWxlIGhhcyBubyBj
b25jZXB0IG9mIGltcGxpY2l0LiBTbyBmYWxzZSBtYWtlcyBtb3JlIHNlbnNlCisgICAgICAgICAg
YW5kIG1ha2VzIHRoZSBjb2RlIHNpbXBsZXIgaW4gdGhlIGluc3BlY3Rvci4gVGhpcyBmdW5jdGlv
biB3YXMgYWRkZWQgZm9yIHRoZSBpbnNwZWN0b3IsCisgICAgICAgICAgc28gdGhpcyBpc24ndCBh
IGNvbXBhdGliaWxpdHkgY2hhbmdlLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL1Byb3BlcnRp
ZXNTZWN0aW9uLmpzOiBBZGQgYSBnZXR0ZXIvc2V0dGVyIHRvIHJlc2V0IHBvcHVsYXRlZCBzdGF0
dXMuCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvU3R5bGVzU2lkZWJhclBhbmUuanM6IFNvbWUg
cmVmYWN0b3JpbmcgYWxvbmcgd2l0aCB0aGUgbWFpbiBzdXBwb3J0IGZvcgorICAgICAgICAgIHN0
eWxlIGVkaXRpbmcuCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmNzczogU3R5
bGUgY2hhbmdlcyBmb3IgcHJvcGVyeSBlZGl0aW5nIGFuZCBmb2N1cyBjb3JyZWN0bmVzcy4KKyAg
ICAgICAgKiBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanM6IExvb2sgZm9yIGEgaGFuZGxlS2V5
RXZlbnQgZnVuY3Rpb24gb2YgdGhlIGZvY3VzIGVsZW1lbnQgYmVmb3JlCisgICAgICAgICAgdHJ5
aW5nIHRvIGNhbGwgYSBmdW5jdGlvbiBiYXNlZCBvbiB0aGUgZWxlbWVudCdzIGlkLiBDYWxsIGZv
Y3VzZWQgYW5kIGJsdXJyZWQgb24gdGhlIGZvY3VzZWQKKyAgICAgICAgICBlbGVtZW50IHdoZW4g
Y3VycmVudEZvY3VzRWxlbWVudCBpcyBjaGFuZ2VkLiBVc2UgdGhlIG5ldyBsaXN0SXRlbUVsZW1l
bnQgZ2V0dGVyIGluc3RlYWQgb2YKKyAgICAgICAgICB0aGUgcHJpdmF0ZSBwcm9wZXJ0eS4KKyAg
ICAgICAgKiBwYWdlL2luc3BlY3Rvci90cmVlb3V0bGluZS5qczogTm8gbG9uZ2VyIGV4cGFuZCBv
biBkb3VibGUgY2xpY2sgaWYgb25kYmxjbGljayBpcyBpbXBsZW1lbnRlZC4KKyAgICAgICAgICBT
aHJpbmsgdGhlIHRvZ2dsZSB6b25lIHRvIDEwcHggdG8gYmV0dGVyIG1hdGNoIHRoZSBzaXplIG9m
IHRoZSBhcnJvdy4gQWRkIGFuIG9uYXR0YWNoIGNhbGwKKyAgICAgICAgICB0byBhbGxvdyBnZW5l
cmF0aW9uIG9mIHRoZSB0aXRsZSB1c2luZyB0aGUgRE9NIGVsZW1lbnQuIEFkZCBsaXN0SXRlbUVs
ZW1lbnQgYW5kCisgICAgICAgICAgY2hpbGRyZW5MaXN0RWxlbWVudCBnZXR0ZXJzLgorICAgICAg
ICAqIHBhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qczogQWRkIG5ldyBoZWxwZXIgcHJvdG90eXBl
IG1ldGhvZHMgb24gQ1NTU3R5bGVEZWNsYXJhdGlvbi4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rv
ci9Eb2N1bWVudFBhbmVsLmpzOiBVc2UgdGhlIG5ldyBsaXN0SXRlbUVsZW1lbnQgZ2V0dGVyIGlu
c3RlYWQgb2YgdGhlIHByaXZhdGUKKyAgICAgICAgICBwcm9wZXJ0eS4gQWxzbyBleHBhbmQgdGhl
IERPTSBub2RlIG9uIGRvdWJsZSBjbGljayBub3cgdGhhdCB0aGUgVHJlZU91dGxpbmUgZG9zZW4n
dCBkbyBpdC4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9SZXNvdXJjZS5qczogVXNlIHRoZSBu
ZXcgbGlzdEl0ZW1FbGVtZW50IGFuZCBjaGlsZHJlbkxpc3RFbGVtZW50IGdldHRlcnMKKyAgICAg
ICAgICBpbnN0ZWFkIG9mIHRoZSBwcml2YXRlIHByb3BlcnRpZXMuCisKKzIwMDctMTEtMDcgIFNp
bW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIENvZGluZyBzdHlsZSBmaXgsIGRvbid0IHVz
ZSBpbmxpbmUgZXhwbGljaXRseS4KKworICAgICAgICAqIGJyaWRnZS9XaW5kb3dGZWF0dXJlcy5o
OgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgorCisgICAgICAgIEZvciBzYWZldHkgcHJvdmlkZSBh
IGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIFdpbmRvd0ZlYXR1cmVzKCkuCisgICAgICAgIENvbnRl
eHRNZW51Q29udHJvbGxlci5jcHA6IGNyZWF0ZU5ld1dpbmRvdyBhcyB3ZWxsIGFzIFFXZWJQYWdl
IG5lZWQgdG8KKyAgICAgICAgY3JlYXRlIGEgZGVmYXVsdCBpbml0aWFsaXplZCBXaW5kb3dGZWF0
dXJlcyBvYmplY3Qgb24gdGhlIGZseS4KKworICAgICAgICAqIGJyaWRnZS9XaW5kb3dGZWF0dXJl
cy5oOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93RmVhdHVyZXM6OldpbmRvd0ZlYXR1cmVzKToK
KworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxzaGF1c21hbkB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgRml4ICJubWFrZSBjbGVhbiIg
Zm9yIHRoZSBRdC9XaW5kb3dzIGJ1aWxkIGJ5IHJlcGxhY2luZyB0bXAvIHdpdGggYSB2YXJpYWJs
ZSB0aGF0IGVuZHMgd2l0aCB0aGUgY29ycmVjdCB0eXBlIG9mIHNsYXNoL2JhY2tzbGFzaCBkZXBl
bmRpbmcgb24gdGhlIGNob2ljZSBvZiBjb21waWxlci9tYWtlIHRvb2wuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgTWFkZSB0aGUgUVdl
YlNldHRpbmdzOjp3ZWJHcmFwaGljIGZ1bmN0aW9ucyBzdGF0aWMuIFRoZSBpbXBsZW1lbnRhdGlv
biB3YXMgdXNpbmcgUVdlYlNldHRpbmdzOjpnbG9iYWwoKSBhbnl3YXkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAgKGxvYWRSZXNvdXJjZVBp
eG1hcCk6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIE1vdmVkIHRoZSBXZWJDb3Jl
OjpJbWFnZSBzcGVjaWZpYyBmdW5jdGlvbiBsb2FkUmVzb3VyY2VQaXhtYXAgZnJvbSBxd2Vic2V0
dGluZ3MuY3BwIHRvIEltYWdlUXQuY3BwIGFuZCBtYWRlIGl0IHN0YXRpYy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAobG9hZFJlc291cmNl
UGl4bWFwKToKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgUmVzdHJ1Y3R1cmUgdGhl
IGNvbnRleHQgbWVudSBjbGFzc2VzIGZvciB0aGUgUXQgcG9ydC4gQ29udGV4dE1lbnUgYW5kIENv
bnRleHRNZW51SXRlbSBkb24ndCBzdG9yZQorICAgICAgICBRQWN0aW9ucy9RTWVudXMgYW55bW9y
ZSBidXQganVzdCBzdG9yZSB0aGUgYWN0aW9uIHR5cGUsIHRhZywgdGl0bGUgYW5kIG9wdGlvbmFs
bHkgc3VibWVudSBhcyBjcmVhdGVkCisgICAgICAgIGluIENvbnRleHRNZW51Ojpwb3B1bGF0ZSgp
LgorICAgICAgICBGb3IgdGhlIGFjdHVhbCBRdCBjb250ZXh0IG1lbnUgd2UgdHJhdmVyc2UgdGhp
cyBzdHJ1Y3R1cmUgYWZ0ZXIgc2VuZENvbnRleHRNZW51RXZlbnQgYW5kIGNyZWF0ZSBhIFFNZW51
CisgICAgICAgIG91dCBvZiBpdC4gVGhhdCBtZW51IGlzIGN1cnJlbnRseSBub3QgZnVuY3Rpb25h
bCBhbnltb3JlIHRob3VnaC4KKworICAgICAgICAqIHBsYXRmb3JtL0NvbnRleHRNZW51Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb246OlBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9Db250ZXh0TWVudUl0ZW1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW06OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpz
ZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6YWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbTo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtOjpzZXRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06
OnBsYXRmb3JtU3ViTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnNl
dFN1Yk1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtOjpzZXRDaGVja2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0RW5hYmxlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudTo6Q29udGV4dE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6
On5Db250ZXh0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6YXBwZW5kSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6aXRlbUNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51OjppbnNlcnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51OjpzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKToKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1
c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisK
KyAgICAgICAgQ2hhbmdlZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbiBmb3Ig
dGhlIFF0IHBvcnQgdG8gbm90IHNob3cgdGhlIHFtZW51IHJpZ2h0IGF3YXkKKyAgICAgICAgYnV0
IGluc3RlYWQganVzdCBiZWhhdmUgYXMgYSBub3JtYWwgc2V0dGVyIHRoYXQgdGFrZXMgb3duZXJz
aGlwIG9mIHRoZSBwbGF0Zm9ybSBtZW51IGRlc2NyaXB0aW9uICh0aGUgcW1lbnUpLgorICAgICAg
ICBJbnN0ZWFkIG5vdyBRV2ViUGFnZTo6Y29udGV4dE1lbnVFdmVudCgpIHJldHJpZXZlcyB0aGUg
UU1lbnUgYWZ0ZXIgY2FsbGluZyBzZW5kQ29udGV4dE1lbnVFdmVudCBhbmQgY2FsbHMgZXhlYygp
CisgICAgICAgIG9uIGl0LgorCisgICAgICAgICogcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVRdC5j
cHA6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIENoYW5nZWQgdG8gUGxhdGZvcm1N
b3VzZUV2ZW50IGNvbnN0cnVjdG9yIHRvIGFsbG93IGNvbnN0cnVjdGlvbiBmcm9tIGEgUUNvbnRl
eHRNZW51RXZlbnQuCisgICAgICAgIENhbGwgc2VuZENvbnRleHRNZW51RXZlbnQgb24gdGhlIGV2
ZW50IGhhbmRsZXIgZnJvbSBhIFFXaWRnZXQ6OmNvbnRleHRNZW51RXZlbnQgcmUtaW1wbGVtZW50
YXRpb24gaW5zdGVhZCBvZiBpbiBtb3VzZVByZXNzRXZlbnQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybU1v
dXNlRXZlbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBs
YXRmb3JtTW91c2VFdmVudCk6CisKKzIwMDctMTEtMDcgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgZG9uJ3Qg
cHV0IG5ic3AncyBpbnRvIHRoZSBwbGFuIHRleHQgcGFzdGUKKyAgICAgICAgCisgICAgICAgIEZp
eCBib3RoIENsaXBib2FyZFF0IGFuZCBQYXN0ZWJvYXJkUXQgdG8gcmVwbGFjZQorICAgICAgICBu
YnNwJ3Mgd2l0aCBzcGFjZXMgYmVmb3JlIHB1dHRpbmcgdGhlIHRleHQgb250byB0aGUKKyAgICAg
ICAgbmF0aXZlIGNsaXBib2FyZC4gVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggTWFjIGFuZCBXaW4K
KyAgICAgICAgYW5kIGZpeGVzIGF0IGxlYXN0IGVkaXRpbmcvcGFzdGVib2FyZC80MDc2MjY3LTMu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNl
bGVjdGlvbik6CisKKzIwMDctMTEtMDcgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9s
Z2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycyBL
bm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPi4KKworICAgICAgICBJbXBsZW1lbnQgUGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZSgpCisgICAgICAgIAorICAgICAgICAqIFBhc3RlYm9hcmQgaXMgbm93IGZ1
bGx5IGltcGxlbWVudGVkLiBDb3B5aW5nIG9mIEltYWdlcyBpbnRvIHRoZSBDbGlwYm9hcmQKKyAg
ICAgICAgaXMgbm93IHN1cHBvcnRlZC4KKyAgICAgICAgKiBBcyB3aXRoIFVSTHMgd2Ugb25seSBj
b3B5IGludG8gdGhlIENsaXBib2FyZCAoYW5kIG5vdCBhZGRpdGlvbmFsbHkgdG8gdGhlCisgICAg
ICAgIFNlbGVjdGlvbikKKworICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKworMjAwNy0xMS0w
NyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5j
b20+LgorCisgICAgICAgIEFwcGxlIENvZGluZ1N0eWxlIGZpeGVzCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
ZG9jdW1lbnRGcmFnbWVudCk6CisKKzIwMDctMTEtMDcgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPi4KKworICAgICAgICBJbXBsZW1lbnQg
UGFzdGVib2FyZDo6d3JpdGVVUkwoKQorICAgICAgICAqIFRoZSBVUkwgY3VycmVudGx5IGdldHMg
d3JpdHRlbiBhcyB0ZXh0L3BsYWluIGFuZCB0ZXh0L3VyaS1saXN0LgorICAgICAgICBUaGUgd2lu
IGFuZCBtYWMgcG9ydCBoYXZlIHNvbWUgbW9yZSB0eXBlcyB3aGljaCB3ZSBjdXJyZW50bHkgZG8K
KyAgICAgICAgbm90IHN1cHBvcnQuIFdoZW4gc3VwcG9ydGluZyB0aGVtIHdlIGNhbiB1c2UgdGhl
ICd0aXRsZVN0cmluZycKKyAgICAgICAgYXMgd2VsbC4KKyAgICAgICAgKiBBcyB3aXRoIHdyaXRl
U2VsZWN0aW9uIHdlIG9ubHkgY29weSBpbnRvIHRoZSBDbGlwYm9hcmQuIFdlIGNvdWxkCisgICAg
ICAgIGNvbnNpZGVyIGNvcHlpbmcgaW50byB0aGUgU2VsZWN0aW9uIGFzIHdlbGwuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGVVUkwpOgorCisyMDA3LTExLTA3ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4uCisKKyAgICAgICAgS2lsbCB3aGl0
ZXNwYWNlCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudCk6CisKKzIwMDctMTEtMDcg
IExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24uCisKKyAgICAgICAgVXNlIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIGNhbGxzIHRvIGNvbnZl
cnQgYSBzZWxlY3Rpb24gdG8KKyAgICAgICAgSFRNTCBvciBwbGFpbiB0ZXh0LgorCisgICAgICAg
ICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkUXQ6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OndyaXRlUmFu
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6CisKKzIwMDctMTEtMDcgIExhcnMg
S25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24u
CisKKyAgICAgICAgU29tZSBtb3JlIGNsaXBib2FyZCBmaXhlcy4KKyAgICAgICAgCisgICAgICAg
IFdlIGhhdmUgdG8gc2V0IHRoaW5ncyBpbW1lZGlhdGVseSBvbiB0aGUgUUNsaXBCb2FyZCBpZiB0
aGUKKyAgICAgICAgQ2xpcGJvYXJkIG9iamVjdCBpcyBub3QgZm9yIGRyYWdnaW5nLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgQ2xpcGJvYXJkIG9i
amVjdCBtaWdodCBiZQorICAgICAgICByYXRoZXIgbG9uZyBsaXZlZCBpZiBhY2Nlc3NlZCB0aHJv
dWdoIGphdmFzY3JpcHQgKGl0J2xsIG9ubHkKKyAgICAgICAgZ2V0IGRlbGV0ZWQgYnkgSlMgZ2Fy
YmFnZSBjb2xsZWN0aW9uKS4gV2UgaGF2ZSB0byB0cmFuc2ZlcgorICAgICAgICB0aGUgZGF0YSBv
dmVyIHRvIHRoZSBRQ2xpcGJvYXJkIGJlZm9yZSB0aGF0IHRvIG1ha2UgdGhpbmdzIHdvcmsuCisg
ICAgICAgIAorICAgICAgICBGaXhlcyBlZGl0aW5nL2V4ZWNDb21tYW5kL2NvcHktd2l0aG91dC1z
ZWxlY3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OkNsaXBib2FyZFF0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZFF0Ojp+Q2xpcGJvYXJkUXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkUXQ6OmNsZWFyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6Y2xl
YXJBbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpnZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZFF0OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkUXQ6OndyaXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
Ojp3cml0ZVJhbmdlKToKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBr
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsuCisKKyAgICAgICAgRml4IGNvbXBp
bGF0aW9uIG9uIFdpbmRvd3Mgd2l0aCBub24tY3lnd2luIHBlcmwuIG9wZW4gRklMRSwgInwtIiBp
cworICAgICAgICBub3Qgc3VwcG9ydGVkIGR1ZSB0byBpbXBsaWNpdCBmb3JrcywgdXNlIElQQzo6
T3BlbjIgaW5zdGVhZC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
OgorCisyMDA3LTExLTA3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODc3CisgICAgICAgICAgUkVHUkVTU0lPTjog
cjI3NDg2IGNhdXNlZCBhIGxheW91dCByZWdyZXNzaW9uIGF0IG15IGJhbmsncyB3ZWJzaXRlCisK
KyAgICAgICAgVGVzdDogZmFzdC9ibG9jay9mbG9hdC9vdmVyaGFuZ2luZy1hZnRlci1oZWlnaHQt
ZGVjcmVhc2Utb2Zmc2V0cy5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKToKKworMjAw
Ny0xMS0wNiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTc1ODEyPiBSRUdSRVNTSU9O
OldoZW4gdXNpbmcgYWJzb2x1dGUgcG9zaXRpb25pbmcgCisgICAgICAgIHdpdGggb3ZlcmZsb3c6
YXV0byBkaXYsIFdlYktpdCBzZWVtcyB0byBhZGQgYW4gYWRkaXRpb25hbCAxNXB4CisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29udGFpbmluZ0Jsb2NrV2lkdGhGb3JQb3NpdGlvbmVkKTogV2UgbmVlZCB0byAKKyAgICAg
ICAgc3VidHJhY3Qgb2ZmIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgd2lkdGggdG9vLgorCisyMDA3
LTExLTA2ICBKdXN0aW4gR2FyY2lhICA8anVzdGluLmdhcmNpYUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KKyAgICAgICAgCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NTgzMzg3PiBBU1NFUlRJT04gRkFJTEVEOiAhcmVmQ2hpbGQtPmhhc1RhZ05hbWUo
Ym9keVRhZykgd2hlbiBwYXN0aW5nIG5ld2xpbmUgaW4gcGxhaW4gdGV4dCBpbnRvIHJpY2ggdGV4
dCBNYWlsCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTgzMzYyPiBSRUdSRVNTSU9OICg1NTIz
LjEwLjMtVE9UKTogTmV3bGluZXMgc3RyaXBwZWQgd2hlbiBwYXN0aW5nIHBsYWluIHRleHQgaW4g
TWFpbAorCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dCk6IFB1dCBwYXJhZ3JhcGhzIG9mIHRleHQgaW50byBjbG9u
ZXMgb2YgdGhlIGJsb2NrCisgICAgICAgIHRoYXQgZW5jbG9zZXMgdGhlIGlucHV0IGNvbnRleHQs
IHVubGVzcyB0aGF0IGJsb2NrIGlzIHRoZSBib2R5LCB3aGljaCBzaG91bGRuJ3QKKyAgICAgICAg
YmUgY2xvbmVkLiAgSW4gdGhhdCBjYXNlLCB1c2UgcmVndWxhciBkaXZzLCBhcyB3ZSBkaWQgYmVm
b3JlIHIyNzM2OS4KKworMjAwNy0xMS0wNiAgQ2hyaXN0aWFuIER5d2FuICA8Y2hyaXN0aWFuQHR3
b3RvYXN0cy5kZT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KKworICAgICAgICBGaXgg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjgKKyAgICAgICAgQnVn
IDE1ODI4OiBXZWJLaXQgR1RLIGluY2x1ZGUgYW5kIGxpYiBkaXJlY3RvcnkgaXMgaW5zdGFsbGVk
IGluIHF0NC1uYW1lZCBkaXJlY3RvcnkKKworICAgICAgICAqIFdlYkNvcmUucHJvOiBVc2Ugc2Fu
ZSBkZWZhdWx0IGluc3RhbGwgcGF0aHMgZm9yIHRoZSBndGsgcG9ydC4KKworMjAwNy0xMS0wNiAg
SnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorICAgICAgICAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1
NzY2MTk+IAorICAgICAgICBSRUdSRVNTSU9OOiBDYXJldCBkaXNhcHBlYXJzIGFmdGVyIGRlbGV0
aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBpbmxpbmUgaG9sZSAoMTU3MTQpCisKKyAgICAgICAg
KiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6ZGVsZXRlU2VsZWN0aW9uKTogTGlrZSB0aGUgb3RoZXIgVHlwaW5nQ29tbWFuZHMsIGlu
Y2x1ZGluZworICAgICAgICBib3RoIG9mIHRoZSBvdGhlciBkZWxldGlvbiBjb21tYW5kcywgY2Fs
bCB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoKSwgd2hpY2ggdGFrZXMgCisgICAgICAgIHRoZSBj
b21tYW5kJ3MgZW5kaW5nU2VsZWN0aW9uIGFuZCBzZXRzIGl0IGFzIHNlbGVjdGlvbi4KKworMjAw
Ny0xMS0wNiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvIGFuZCBEYXZlIEh5YXR0LgorCisgICAgICAgIC0gZml4IDxy
ZGFyOi8vcHJvYmxlbS81NTgyOTYxPiBJbmNvcnJlY3QgbGF5b3V0IGFuZCBmbG9hdGluZyBvYmpl
Y3QgbGlzdCBjb3JydXB0aW9uIHdoZW4gQ1NTIGRlY3JlYXNlcyBhIGJsb2NrJ3MgaGVpZ2h0CisK
KyAgICAgICAgVGVzdDogZmFzdC9ibG9jay9mbG9hdC9vdmVyaGFuZ2luZy1hZnRlci1oZWlnaHQt
ZGVjcmVhc2UuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6IElmIGFmdGVyIGNhbGN1
bGF0aW5nIHRoZSBoZWlnaHQKKyAgICAgICAgaXQgdHVybnMgb3V0IHRoYXQgdGhlcmUgYXJlIG92
ZXJoYW5naW5nIGZsb2F0cyB0aGF0IHdlcmUgbm90IG92ZXJoYW5naW5nCisgICAgICAgIGJlZm9y
ZSwgcmVzY2FuIGNoaWxkcmVuIHdpdGggb3ZlcmhhbmdpbmcgZmxvYXRzIGFuZCBhZGQgdGhlbS4g
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbik6IEFk
ZGVkIGEgcGFyYW1ldGVyIHRoYXQKKyAgICAgICAgcmV0dXJucyB0aGUgbG93ZXN0IGZsb2F0IGJv
dHRvbSBvZiBhbnkgb2YgdGhlIGNoaWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmFkZE92ZXJoYW5naW5nRmxvYXRzKTogQ2hhbmdlZCB0byByZXR1cm4gdGhlCisgICAgICAg
IGxvd2VzdCBmbG9hdCBib3R0b20uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6
CisKKzIwMDctMTEtMDYgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluLgorCisgICAgICAgIFN3aXRjaGVkIGFsbCB1c2VzIG9mIEhU
TUxJbWFnZUxvYWRlciB0byB1c2UgT3duUHRycy4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6On5IVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnNldElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjpIVE1MT2JqZWN0RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6fkhUTUxPYmplY3RFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKworMjAwNy0xMS0wNiAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4u
CisgICAgICAgIAorICAgICAgICBUcmlnZ2VyIG1lZGlhIGxvYWQgb24gb24gc3JjIGF0dHJpYnV0
ZSBjaGFuZ2VzIGFzIHNwZWNpZmllZCBpbiBuZXcgSFRNTDUgZHJhZnQuCisKKyAgICAgICAgVGVz
dHM6IG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2UuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlk
ZW8tc3JjLXJlbW92ZS5odG1sCisgICAgICAgICAgICAgICBtZWRpYS92aWRlby1zcmMtc2V0Lmh0
bWwKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKworMjAwNy0xMS0wNiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IC0gZml4IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM4CisgICAg
ICAgICAgSW5jb21wbGV0ZSByZXBhaW50IHRvZ2dsaW5nICJIb3cgeW91IGtub3cgdGhpcyBwZXJz
b24iIG9uIEZhY2Vib29rCisKKyAgICAgICAgVGVzdDogZmFzdC9yZXBhaW50L21ha2UtY2hpbGRy
ZW4tbm9uLWlubGluZS5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1ha2VDaGlsZHJlbk5vbklubGluZSk6
IFJlcGFpbnQgdGhlIGJsb2NrLiBUaGlzCisgICAgICAgIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBp
bmxpbmUgY2hpbGRyZW4gbWF5IGJlIHJlcG9zaXRpb25lZCBhcyB0aGV5IG1vdmUKKyAgICAgICAg
aW50byBuZXcgYW5vbnltb3VzIGJsb2NrcywgYnV0IHRob3NlIGJsb2NrcyBoYXZlIG5vIGtub3ds
ZWRnZSBvZiB3aGVyZQorICAgICAgICB0aGVpciBjaGlsZHJlbiB1c2VkIHRvIGJlLCBzbyB0aGV5
IGNhbm5vdCBpbnZhbGlkYXRlIHRob3NlIGFyZWFzLgorCisyMDA3LTExLTA2ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
KworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0Nwor
ICAgICAgICBTb21lIGVkaXRpbmcgY2xlYW51cAorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5j
dGlvbmFsaXR5LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGxhaW5UZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5o
OgorICAgICAgICBNYWRlIFdlYkNvcmU6OnBsYWluVGV4dCgpIHJldHVybiBTdHJpbmcgaW5zdGVh
ZCBvZiBEZXByZWNhdGVkU3RyaW5nLgorCisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlQVhP
YmplY3QubW06CisgICAgICAgICgtW1dlYkNvcmVBWE9iamVjdCB0ZXh0VW5kZXJFbGVtZW50XSk6
CisgICAgICAgICgtW1dlYkNvcmVBWE9iamVjdCB2YWx1ZV0pOgorICAgICAgICAoLVtXZWJDb3Jl
QVhPYmplY3QgZG9BWEJvdW5kc0ZvclRleHRNYXJrZXJSYW5nZTpdKToKKyAgICAgICAgKC1bV2Vi
Q29yZUFYT2JqZWN0IGRvQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcjpd
KToKKyAgICAgICAgKC1bV2ViQ29yZUFYT2JqZWN0IGRvQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcjpdKToKKyAgICAgICAgVXBkYXRlZCBmb3IgdGhlIGFib3Zl
IGNoYW5nZS4gVGhlcmUgaXMgbm8gbmVlZCB0byBleHBsaWNpdGx5IGNvbnZlcnQgdG8gTlNTdHJp
bmcgbm93LgorCisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENvbW1hbmQpOiBtX3N0YXJ0aW5nU2VsZWN0aW9uIGFu
ZCBtX2VuZGluZ1NlbGVjdGlvbiBhcmUgYWN0dWFsbHkKKyAgICAgICAgaW5pdGlhbGl6ZWQgaW4g
Y29uc3RydWN0b3IgYm9keSwgc28gdGhlIHdvcmsgZG9uZSBpbiBpbml0aWFsaXplciBsaXN0IHdh
cyB3YXN0ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjphcHBseSk6IE1vdmVk
IHNvbWUgc3RhcnMuCisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6dW5hcHBseSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmQ6OnJlYXBwbHkpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpzZXRTdGFydGluZ1NlbGVjdGlvbik6IFRoZSBs
b29wIGV4aXQgY29uZGl0aW9uIHdhcyBldmFsdWF0ZWQgdHdpY2UsCisgICAgICAgIHJlbW92ZWQg
b25lIG9mIHRoZSBjaGVja3MuCisKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6dG9TdHJpbmcp
OiBwbGFpblRleHQoKSByZXN1bHQgdHlwZSBub3cgbWF0Y2hlcyB3aGF0IHdlIG5lZWQgaGVyZS4K
KworICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOgorICAgICAgICAqIHBh
Z2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgLVtX
ZWJDb3JlRnJhbWVCcmlkZ2UgZGVsZXRlS2V5UHJlc3NlZFdpdGhTbWFydERlbGV0ZTpncmFudWxh
cml0eTpdIGFuZAorICAgICAgICAtW1dlYkNvcmVGcmFtZUJyaWRnZSBmb3J3YXJkRGVsZXRlS2V5
UHJlc3NlZFdpdGhTbWFydERlbGV0ZTpncmFudWxhcml0eTpdLgorCisyMDA3LTExLTA1ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjIGJ1aWxkIGZpeC4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlSGVscGVyKToKKworMjAwNy0xMS0wNSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgY3Jhc2ggaWYgU2FmYXJpVGhlbWUgY2FuJ3QgYmUg
bG9hZGVkCisKKyAgICAgICAgUGxhdGZvcm1TY3JvbGxCYXJTYWZhcmkgYW5kIFJlbmRlclRoZW1l
U2FmYXJpIHdlcmUgbm90IGNoZWNraW5nCisgICAgICAgIHdoZXRoZXIgU2FmYXJpVGhlbWUgd2Fz
IHN1Y2Nlc3NmdWxseSBsb2FkZWQuIEFsbCBvdGhlciB1c2VzIG9mCisgICAgICAgIFNhZmFyaVRo
ZW1lIGFscmVhZHkgY2hlY2sgdGhpcy4KKworICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcm9sbEJhclNhZmFyaS5jcHA6IERvbid0
IHBhaW50IGlmIFNhZmFyaVRoZW1lCisgICAgICAgIGNvdWxkbid0IGJlIGxvYWRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtU2Nyb2xsYmFyOjpwYWludEJ1dHRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVNjcm9sbGJhcjo6cGFpbnRUcmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVNjcm9sbGJhcjo6cGFpbnRUaHVtYik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJp
Ojppc0NvbnRyb2xTdHlsZWQpOiBBbHdheXMgcmV0dXJuIHRydWUgaWYKKyAgICAgICAgd2UgY291
bGRuJ3QgbG9hZCBTYWZhcmlUaGVtZS4gVGhpcyB3YXkgd2Ugc2hvdWxkIG5ldmVyIHRyeSB0byBw
YWludAorICAgICAgICB0aGVtZWQgY29udHJvbHMgKGFuZCB3ZSBhc3NlcnQgYXMgc3VjaCBpbiB0
aGUgcGFpbnQgZnVuY3Rpb25zKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJp
OjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpw
YWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1
dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0Rmll
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJ
bmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4
dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmll
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmll
bGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorCisyMDA3LTEx
LTA1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAg
IEFkZGluZyB0aGUgcmVzdCBvZiB3eCBwb3J0J3MgZ3JhcGhpY3MgaW1wbC4gCisKKyAgICAgICAg
UnViYmVyLXN0YW1wZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93eC9BZmZpbmVUcmFuc2Zvcm1XeC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlU291cmNlV3guY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvUGF0aFd4LmNwcDogQWRkZWQuCisKKzIwMDctMTEtMDUgIEtl
dmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgd3ggcG9y
dCBidWcgZml4ZXMgYW5kIG5ldyBmaWxlcyB0byBnZXQgcGxhdGZvcm0vd3ggYnVpbGRpbmcgb24g
dHJ1bmsuCisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS93eC9DdXJzb3JXeC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
d3gvRmlsZVN5c3RlbVd4LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd3gvRm9udENh
Y2hlV3guY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0ZvbnRQbGF0Zm9ybURhdGFXeC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vd3gvRm9udFd4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
eC9LZXlib2FyZEV2ZW50V3guY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0xvY2FsaXplZFN0
cmluZ3NXeC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3d4L0xvZ2dpbmdXeC5jcHA6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L1Njcm9sbFZpZXdXeC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd3gv
U2hhcmVkVGltZXJXeC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd3gvU3RyaW5nV3guY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL3d4L1RocmVhZGluZ1d4LmNwcDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vd3gvV2lkZ2V0V3guY3BwOgorCisyMDA3LTExLTA1ICBBZGVsZSBQZXRlcnNvbiAg
PGFkZWxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCisKKyAgICAg
ICAgRml4IGZvciA8cmRhcjovL3Byb2JsZW0vNTU3OTk5OT4gQWRkIHBvc3RlciBhdHRyaWJ1dGUg
Zm9yIHZpZGVvIGVsZW1lbnQKKworICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
OiBBZGRlZCBwb3N0ZXIgYXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VMb2Fk
ZXIuY3BwOiAoV2ViQ29yZTo6SFRNTEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6Cisg
ICAgICAgICAgQ2FsbHMgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIGluc3RlYWQgb2YgaGF2aW5n
IHNwZWNpYWwgY2FzZXMgZm9yIHRoZSBkaWZmZXJlbnQga2luZHMgb2YgZWxlbWVudHMuIAorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDogKFdlYkNvcmU6OkVsZW1lbnQ6OmltYWdlU291cmNlQXR0
cmlidXRlTmFtZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6IChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDogKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1vdmllTmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAg
ICAgICAgQ2FsbHMgdXBkYXRlUG9zdGVySW1hZ2Ugd2hlbiB0aGUgbmV0d29yayBzdGF0ZSBpcyBl
bXB0eSBhbmQgd2hlbiB0aGUgZmlyc3QgZnJhbWUgaGFzIGJlZW4gbG9hZGVkLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOiAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZCk6IE1hZGUgdGhpcyBpbmxpbmUuICBIVE1MVmlkZW9FbGVtZW50IG5vdyBh
bHNvIGltcGxlbWVudHMgdGhpcy4KKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5p
ZGw6IEFkZGVkIGNhc2UgZm9yIHBvc3RlciBhdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1M
VmlkZW9FbGVtZW50Lmg6IEFkZGVkIGltYWdlIGxvYWRlciBhbmQgZmxhZyB0byBrZWVwIHRyYWNr
IG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwb3N0ZXIgaW1hZ2Ugc2hvdWxkIGJlIHNob3duLgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KTogSW5pdGlhbGl6ZSBtX2ltYWdlTG9hZGVy
IGFuZCBtX3Nob3VsZFNob3dQb3N0ZXJJbWFnZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOiBDYWxscyBIVE1MRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCBzaW5jZSBIVE1MTWVkaWFFbGVtZW50cyBoYXZlIHJlbmRlcmVyIGJ5IGRlZmF1bHQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6IENy
ZWF0ZSBhIFJlbmRlckltYWdlIG9yIFJlbmRlclZpZGVvIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9y
IG5vdCB0aGUgcG9zdGVyIGltYWdlIHNob3VsZCBiZSBzaG93bi4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OmF0dGFjaCk6IFNldCB1cCBpbWFnZSBsb2FkZXIgYW5kIFJlbmRl
ckltYWdlIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OmRldGFjaCk6IERlbGV0ZSBpbWFnZSBsb2FkZXIgaWYgaXRzIG5vIGxvbmdlciBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
IEFkZGVkIGNhc2UgdG8gcHJvY2VzcyBwb3N0ZXIgYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudDo6cG9zdGVyKTogQWRkZWQgZ2V0dGVyIGZvciBwb3N0ZXIgYXR0
cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0UG9zdGVyKTog
QWRkZWQgc2V0dGVyIGZvciBwb3N0ZXIgYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6dXBkYXRlUG9zdGVySW1hZ2UpOiBBZGRl
ZC4gIFVwZGF0ZXMgbV9zaG91bGRTaG93UG9zdGVySW1hZ2UgYW5kIGlmIGl0cyBjaGFuZ2VkLCBk
ZXRhY2hlcyBhbmQgYXR0YWNoZXMgc28gdGhlIHJlbmRlcmVyIGlzIGNvcnJlY3QuCisKKzIwMDct
MTEtMDUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCA8cmRh
cjovLzU1NjM1NzI+IFNWRyBpbWFnZSBzdXBwb3J0IGlzIHR1cm5lZCBvZmYKKworICAgICAgICBU
dXJuZWQgb24gU1ZHIGltYWdlcyBmb3IgYWxsIHBsYXRmb3Jtcy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IEFk
ZGVkIFNWR0ltYWdlLntjcHAsaH0KKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKTogUmVtb3ZlZCBwbGF0
Zm9ybSBjaGVja3MgZm9yCisgICAgICAgIFNWR0ltYWdlLgorCisyMDA3LTExLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
KworICAgICAgICBRVE1vdmllVmlldyBjYW4gZ2VuZXJhdGUgY2FsbGJhY2tzIGR1cmluZyBwYWlu
dC4gVGhpcyBjYW4gbGVhZCB0byBjcmFzaGVzLgorICAgICAgICAKKyAgICAgICAgRGVsYXkgY2Fs
bGJhY2tzIHNvIHRoZXkgZ2V0IGhhbmRsZWQgYWZ0ZXIgcGFpbnRpbmcgaXMgY29tcGxldGVkLiBO
byB0ZXN0IGNhc2UsCisgICAgICAgIEkgZG9uJ3Qga25vdyBob3cgdG8gcmVsaWFibHkgcmVwcm9k
dWNlIHRoaXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTW92aWVQcml2YXRl
UVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6Ok1vdmllUHJpdmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6On5Nb3ZpZVByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpwYWludCk6CisgICAgICAgICgtW1dlYkNvcmVNb3Zp
ZU9ic2VydmVyIGluaXRXaXRoQ2FsbGJhY2s6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW1dlYkNv
cmVNb3ZpZU9ic2VydmVyIGRpc2Nvbm5lY3RdKToKKyAgICAgICAgKC1bV2ViQ29yZU1vdmllT2Jz
ZXJ2ZXIgbG9hZFN0YXRlQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZU1vdmllT2JzZXJ2
ZXIgcmF0ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVNb3ZpZU9ic2VydmVyIHNpemVD
aGFuZ2VkOl0pOgorICAgICAgICAoLVtXZWJDb3JlTW92aWVPYnNlcnZlciB0aW1lQ2hhbmdlZDpd
KToKKyAgICAgICAgKC1bV2ViQ29yZU1vdmllT2JzZXJ2ZXIgdm9sdW1lQ2hhbmdlZDpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZU1vdmllT2JzZXJ2ZXIgZGlkRW5kOl0pOgorICAgICAgICAoLVtXZWJD
b3JlTW92aWVPYnNlcnZlciBzZXREZWxheUNhbGxiYWNrczpdKToKKworMjAwNy0xMS0wNSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bS4KKworICAgICAgICBBZGQgc29tZSBtaXNzaW5nIFdlYkNvcmUqIHByZWZpeGVzIHRvIE9iakMg
Y2xhc3NlcworCisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZpbGVDaG9vc2VyTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OkZpbGVDaG9vc2VyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2hhcmVkQnVmZmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TaGFyZWRUaW1lck1hYy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVUaW1lKToKKworMjAwNy0xMS0wNSAg
QWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTU3OTc3Mj4gUmVncmVzc2lvbjogQWx0R3IgZG9lcyBub3Qgd29yaworICAgICAgICBXZSBub3cg
c3RvcmUgdGhlIHN5c3RlbSBrZXkgZXZlbnQgaW5mbyBpbiBQbGF0Zm9ya0tleWJvYXJkRXZlbnQo
KS4KKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6aXNTeXN0ZW1LZXkpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9LZXlFdmVudFdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCk6CisKKzIwMDctMTEtMDIgIFRyaXN0YW4gTydUaWVybmV5ICA8dHJpc3Rh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIFNldCBXaW5k
b3dGZWF0dXJlcy5oIGFzIGEgUHJpdmF0ZSBoZWFkZXIuCisgICAgICAgIAorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgUmV2aXNlZCB0byB1c2UgYSBzaW5nbGUgY3JlYXRlV2luZG93
IGZ1bmN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgdHdvIGNyZWF0ZVdpbmRvdyBmdW5jdGlvbnMg
YW5kIG9uZSBjcmVhdGVNb2RhbERpYWxvZyBmdW5jdGlvbi4KKyAgICAgICAgVGhlIGxvZ2ljIGZv
ciB0aGlzIGlzIG5vdyBhZGRyZXNzZWQgaW4gV2ViS2l0IGluIGFuIGVmZm9ydAorICAgICAgICB0
byBtYWtlIHRoaXMgZWFzaWVyIHRvIGZvbGxvdy4KKyAgICAgICAgCisgICAgICAgICogcGFnZS9D
aHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjcmVhdGVXaW5kb3cpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVuTmV3V2luZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHSW1h
Z2VFbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q2hyb21lQ2xpZW50
OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICBSZXZpc2VkIHRvIHRha2UgbmV3IGFkZGl0aW9uYWwg
d2luZG93RmVhdHVyZXMgcGFyYW1ldGVyLgorCisyMDA3LTExLTA0ICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisg
ICAgICAgIAorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgzNQorCisgICAgICAgIFNtYWxsIGFkYXB0YXRpb25zIHRvIG5ldyBLSlM6Okxpc3QgY2xhc3Mu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcDoKKyAgICAgICAgKEtKUzo6
V2luZG93RnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjpTY2hlZHVsZWRBY3Rp
b246OlNjaGVkdWxlZEFjdGlvbik6CisKKzIwMDctMTEtMDUgIEFkYW0gUm9iZW4gIDxhcm9iZW5A
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBhc3NpbmcgYSBiYXNlIGNsYXNzIHBvaW50ZXIg
dG8gQ09NUHRyOjpjb3B5UmVmVG8KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vQ09NUHRyLmg6CisKKzIwMDctMTEtMDUgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKwor
ICAgICAgICAtIGZpeCBBU1NFUlRJT04gRkFJTEVEOiAhSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEtl
eVRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBrZXkpIHdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgaXMgYWxs
LXdoaXRlc3BhY2UKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9jbGFzcy1hbGwtd2hpdGVzcGFj
ZS5odG1sCisKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IENoZWNrIGlmIHRoZXJl
IGlzIGFueQorICAgICAgICBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW4gdGhlIGNsYXNzIGF0
dHJpYnV0ZS4KKworMjAwNy0xMS0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtCisKKyAgICAgICAgQWRkIHRyYW5zYWN0aW9uIGJs
b2NraW5nIHRvIHRoZSBEYXRhYmFzZUF1dGhvcml6ZXIgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBu
ZXcgdmVyc2lvbgorICAgICAgICBvZiB0aGUgc3FsIHN0b3JhZ2UgQVBJCisKKyAgICAgICAgKiBz
dG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZUF1dGhvcml6ZXI6OmFsbG93VHJhbnNhY3Rpb24pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2VBdXRob3JpemVyLmg6CisKKzIwMDctMTEtMDUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCisKKyAgICAgICAgSGF2ZSBnZXRN
SU1FVHlwZUZvckV4dGVuc2lvbiByZXR1cm4gYSBudWxsIHN0cmluZyB3aGVuIG5vIE1JTUUgdHlw
ZSBpcyBrbm93bgorICAgICAgICBmb3IgdGhlIGV4dGVuc2lvbiByYXRoZXIgdGhhbiByZXR1cm5p
bmcgInRleHQvcGxhaW4iLiAgVGhpcyBwcmV2ZW50cyBwbHVnaW4gZGF0YQorICAgICAgICBiZWlu
ZyBkdW1wZWQgaW50byBvYmplY3QgZWxlbWVudHMgd2hlbiBwbHVnaW5zIGFyZSBkaXNhYmxlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5R3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKToK
KworMjAwNy0xMS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1
YmJlci1zdGFtcGVkIGJ5IEFkYW0gUm9iZW4uCisKKyAgICAgICAgUmVuYW1lIFNlY3VyaXR5T3Jp
Z2luOjphbGxvd3NBY2Nlc3NGcm9tIHRvIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MgdG8gCisg
ICAgICAgIGNsZWFyIHVwIGFtYmlndWl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc193
aW5kb3cuY3BwOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmlzU2FmZVNjcmlwdCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW46OmNhbkFjY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4u
aDoKKworMjAwNy0xMS0wNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbS4KKworICAgICAgICBCdWcgMTU4MzQ6IFRoZXJlIGFy
ZSBtYW55IHN1YnRsZSBidWdzIGluIHRoZSBTdHlsZXMgcGFuZSBvZiB0aGUgV2ViIEluc3BlY3Rv
cgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNAor
CisgICAgICAgIC0gQnJva2UgdXAgRG9jdW1lbnRQYW5lbCBhbmQgYWRkZWQgdGhyZWUgU2lkZWJh
clBhbmUgc3ViLWNsYXNzZXMuCisgICAgICAgIC0gRml4ZWQgbWFueSBTdHlsZSBwYW5lIGJ1Z3Ms
IGluY2x1ZGluZzoKKyAgICAgICAgICAqIFBvb3IgaGFuZGxpbmcgb2YgZHVwbGljYXRlIHByb3Bl
cnRpZXMgaW4gdGhlIHNhbWUgcnVsZS4gU29tZSBvZiB0aGlzIGNhbid0IGJlCisgICAgICAgICAg
ICBmaXhlZCBzaW5jZSB3ZSBjYW4ndCBvbmx5IGdldCB0aGUgIndpbm5pbmciIHZhbHVlIGZvciBk
dXBsaWNhdGUgcHJvcGVydGllcy4KKyAgICAgICAgICAgIFNvIHdlIHNob3VsZCBvbmx5IHNob3cg
b25lIGVudHJ5IHBlciB1bmlxdWUgcHJvcGVydHkgbmFtZS4KKyAgICAgICAgICAqIENvbXB1dGVk
IHN0eWxlIGRvZXMgbm90IHNob3cgZm9udCBzaG9ydGhhbmQgc3ViLXByb3BlcnRpZXMgaWYgJ2Zv
bnQnIHdhcyB1c2VkLgorICAgICAgICAgICogUHJvcGVydHkgcHJpb3JpdHkgd2FzIGJyb2tlbiwg
dGhlIHdyb25nIHByb3BlcnRpZXMgd2VyZSBjcm9zc2VkIG91dC4KKyAgICAgICAgICAqIFRoZSAn
Ym9yZGVyJyBzaG9ydGhhbmQgc2hvd3MgbnVsbCBmb3IgdGhlIHNob3J0aGFuZCB2YWx1ZS4KKyAg
ICAgICAgICAqIFNob3J0aGFuZHMgZGlkbid0IHNob3cgdGhlaXIgcHJpb3JpdHkgKGUuZy4gIWlt
cG9ydGFudCkuCisgICAgICAgICAgKiBIU0wgYW5kIEhUTUwgaGV4IGNvbG9ycyBkaWRuJ3QgaGF2
ZSBwcmV2aWV3IHN3YXRjaCBibG9ja3MuCisgICAgICAgICAgKiBDb2RlIHJlZmFjdG9yaW5nLCBt
YWtpbmcgaXQgZWFzaWVyIHRvIHJldXNlIGZvciBjb25zb2xlLmxvZyBsYXRlci4KKworICAgICAg
ICAqIHBhZ2UvaW5zcGVjdG9yL0RvY3VtZW50UGFuZWwuanM6IE1vdmUgc2lkZWJhciBwYW5lIGNv
ZGUgdG8gdGhyZWUgc2VwZXJhdGUKKyAgICAgICAgICBjbGFzc2VzIGluIG5ldyBmaWxlcy4KKyAg
ICAgICAgKiBwYWdlL2luc3BlY3Rvci9NZXRyaWNzU2lkZWJhclBhbmUuanM6IEFkZGVkLgorICAg
ICAgICAqIHBhZ2UvaW5zcGVjdG9yL1BhbmVsLmpzOiBSZW1vdmUgYW4gSW5zcGVjdG9yQ29udHJv
bGxlci5sb2coKSBjYWxsLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL1Byb3BlcnRpZXNTZWN0
aW9uLmpzOiBBZGQgdGhlIHNlY3Rpb24gdG8gdGhlIFRyZWVPdXRsaW5lLgorICAgICAgICAgIFNv
IFRyZWVFbGVtZW50cyBjYW4gYWNjZXNzIHByb3BlcnRpZXMgb24gdGhlaXIgc2VjdGlvbi4KKyAg
ICAgICAgKiBwYWdlL2luc3BlY3Rvci9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanM6IEFkZGVkLgor
ICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL1NpZGViYXJQYW5lLmpzOiBSZW1vdmUgdGhlIGV4cGxp
Y2l0IGFzaWdubWVudCBvZiB0aGUKKyAgICAgICAgICBvbmV4cGFuZCBhbmQgb25jb2xsYXBzZSB0
byBudWxsLiBUaGVzZSB3ZXJlIGhpZGluZyBwcm90b3R5cGVzLgorICAgICAgICAqIHBhZ2UvaW5z
cGVjdG9yL1N0eWxlc1NpZGViYXJQYW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL2luc3Bl
Y3Rvci9pbnNwZWN0b3IuaHRtbDogSW5jbHVkZSB0aGUgbmV3IHNjcmlwdCBmaWxlcy4KKyAgICAg
ICAgKiBwYWdlL2luc3BlY3Rvci90cmVlb3V0bGluZS5qczogSWYgYSBudWxsIHJlcHJlc2VudGVk
T2JqZWN0IGlzIHBhc3NlZAorICAgICAgICAgIGluIGp1c3QgdXNlIGEgZW1wdHkgb2JqZWN0Lgor
CisyMDA3LTExLTA0ICBEYXZpZCBELiBLaWx6ZXIgIDxkZGtpbHplckB3ZWJraXQub3JnPgorCisg
ICAgICAgIEZpeCBidWlsZCB3aGVuIHNwYWNlcyBhcHBlYXIgaW4gdGhlIFdlYktpdCBzb3VyY2Ug
cGF0aC4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbTogVXNlIHNhZmVyIG9wZW4oKSBtZXRob2Qgd2hpY2gg
bGlzdHMKKyAgICAgICAgYXJndW1lbnRzIGluZGl2aWR1YWxseSBhbmQgcHJldmVudHMgdGhlIG5l
ZWQgdG8gd29yayBhcm91bmQgc3BhY2VzCisgICAgICAgIGluIHRoZSBwYXRoLgorCisyMDA3LTEx
LTA0ICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEZpeCBhIGNyYXNoIHdoZW4gbm8gY2xpcGJv
YXJkIHRleHQgaXMgYXZhaWxhYmxlCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorCisy
MDA3LTExLTAzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAgLSBXZWJDb3JlIHBhcnQgb2YgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjEKKyAgICAgICAgICByZW1vdmUgdW51c2Vk
IFBDUkUgZmVhdHVyZXMgZm9yIHNwZWVkCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDogKFdl
YkNvcmU6OkZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KToKKyAgICAgICAgKiBwYWdl
L21hYy9GcmFtZU1hYy5tbTogKFdlYkNvcmU6OkZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVt
ZW50KToKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiAiW1s6ZGlnaXQ6XV0iIHN5bnRheC4gVGhpcyBo
YXNuJ3Qgd29ya2VkIGZvciBzb21lIHRpbWUuCisgICAgICAgIFVzZSAiXGQiIGluc3RlYWQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9SZWd1bGFyRXhwcmVzc2lvbi5oOiBSZW1vdmUgdGhlIHVudXNl
ZCBjYXAgZnVuY3Rpb24uIFdlIGNhbgorICAgICAgICBhZGQgaXQgYmFjayBsYXRlciBpZiB3ZSBm
aW5kIHdlIG5lZWQgaXQuCisgICAgICAgICogcGxhdGZvcm0vUmVndWxhckV4cHJlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVndWxhckV4cHJlc3Npb246OlByaXZhdGU6OmNvbXBpbGUp
OiBVcGRhdGUgZm9yIEphdmFTY3JpcHRDb3JlCisgICAgICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiBl
bnRyeSBwb2ludCBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVndWxhckV4cHJlc3Npb246
OlByaXZhdGU6On5Qcml2YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZWd1bGFyRXhw
cmVzc2lvbjo6bWF0Y2gpOiBSZW1vdmUgdGhlIGNvZGUgdG8gc2V0IFBDUkVfTk9UQk9MLgorICAg
ICAgICBUaGlzIG1lYW5zIHRoYXQgcmVndWxhciBleHByZXNzaW9ucyB3aXRoIG1ldGFjaGFyYWN0
ZXNyIGxpa2UgXiBpbiB0aGVtCisgICAgICAgIHdvbid0IHdvcmsgYW55IG1vcmUgd2l0aCBub24t
d2hvbGUtc3RyaW5nIHNlYXJjaGVzLCBidXQgd2UgZG9uJ3QgdXNlCisgICAgICAgIGFueSByZWd1
bGFyIGV4cHJlc3Npb25zIGxpa2UgdGhhdC4KKworMjAwNy0xMS0wMyAgS2V2aW4gT2xsaXZpZXIg
IDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBVcGRhdGUgdGhlIGxpbmsgc3R1
YnMgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgYnVpbGQsCisgICAgICAgIGFuZCBmaXggY29kaW5nIHN0
eWxlIGlzc3Vlcy4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS93eC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOgorICAgICAgICAobG9hZFJlc291
cmNlSW50b0FycmF5KToKKyAgICAgICAgKGZpbmROZXh0U2VudGVuY2VGcm9tSW5kZXgpOgorICAg
ICAgICAoZmluZFNlbnRlbmNlQm91bmRhcnkpOgorICAgICAgICAoRnJhbWU6OmRhc2hib2FyZFJl
Z2lvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Omhpc3RvcnlDb250YWlucyk6CisgICAg
ICAgIChDYWNoZWRQYWdlOjpjbG9zZSk6CisgICAgICAgIChFZGl0b3I6OnNob3dTdHlsZXNQYW5l
bCk6CisgICAgICAgIChFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSk6
CisgICAgICAgIChFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKworMjAwNy0xMS0wMyAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICB3eCA8LT4g
V2ViS2l0IGNvbnZlcnNpb25zIGZvciBJbnRQb2ludCwgSW50UmVjdCBhbmQgRmxvYXRSZWN0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd3gvRmxvYXRSZWN0V3guY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93eC9JbnRQb2ludFd4LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW50UmVjdFd4LmNwcDogQWRkZWQuCisKKzIwMDctMTEtMDMgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgd3ggPC0+IFdlYktpdCBkYXRh
IHR5cGUgY29udmVyc2lvbnMgZm9yIFBlbiBhbmQgQ29sb3IuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvQ29sb3JXeC5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L1Blbld4LmNwcDogQWRkZWQuCisKKzIwMDctMTEt
MDMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBP
bGl2ZXIuCisKKyAgICAgICAgUmVtb3ZlIGR1bW15IHZhcmlhYmxlIGZyb20gQ2xhc3NJbmZvIHJl
ZHVjaW5nIHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3QgYnkgMSB3b3JkLgorICAgICAgICBUaGUgdmFy
aWFibGUgaGFkIGJlZW4ga2VwdCBhcm91bmQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5LCBidXQg
c2luY2Ugbm90aGluZworICAgICAgICBlbHNlIGlzIHRoZXJlIGlzIG5vIHBvaW50IGluIGNvbnRp
bnVpbmcgdG8ga2VlcCBpdCBhcm91bmQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUV4
Y2VwdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1
dEVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL2tqc19jc3MuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19ldmVudHMu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19uYXZpZ2F0b3IuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorCisyMDA3LTExLTAzICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIEJ1aWxkIGZpeGVzIHRvIGdldCB3eCBpbXBs
cy4gYnVpbGRpbmcgb24gdHJ1bmsuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgor
CisgICAgICAgICogcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6Y29udGFpbnNGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
YXNGaWxlbmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0RyYWdJbWFnZVd4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNjYWxlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9N
aW1lVHlwZVJlZ2lzdHJ5V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L01vdXNl
RXZlbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRm
b3JtTW91c2VFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvTW91c2VXaGVlbEV2ZW50V3gu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9X
aWRnZXRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEN1cnNvcik6CisKKzIw
MDctMTEtMDMgIERhdmlkIEQuIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgU29ydCBmaWxlcyguLi4pOyBzZWN0aW9ucyBvZiBYY29kZSBwcm9qZWN0IGZpbGVzLgorCisg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IERhcmluLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9OUE5fSW52b2tl
L05QTl9JbnZva2UueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAwNy0xMS0wMyAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBDb2Rpbmcg
c3R5bGUgZml4ZXMgZm9yIHBsYXRmb3JtL3d4IGZpbGVzLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE1hcmsgUm93ZS4KKworICAgICAgICAqIHBsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93eC9HbHlwaE1hcFd4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
eC9TY3JlZW5XeC5jcHA6CisKKzIwMDctMTEtMDMgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KKworICAgICAgICBJbXBsZW1lbnQg
cGxhdGZvcm0gc2Nyb2xsYmFyIHN0YXRpYyB3aWR0aC9oZWlnaHQgZ2V0dGVycworCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2Nyb2xsQmFyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtU2Nyb2xsQmFyR3RrLmNwcDoKKyAgICAgICAgKHNjcm9sbGJhclNpemUpOgor
ICAgICAgICAoUGxhdGZvcm1TY3JvbGxiYXI6Omhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpOgor
CisyMDA3LTExLTAzICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBNYXJrIFJvd2UuCisKKyAgICAgICAgQ2FzdCBmdW5jdGlvbiBwb2ludGVycyB0byBn
cG9pbnRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcm9sbEJhckd0ay5j
cHA6CisgICAgICAgIChQbGF0Zm9ybVNjcm9sbGJhcjo6flBsYXRmb3JtU2Nyb2xsYmFyKToKKwor
MjAwNy0xMS0wMyAgQWxwIFRva2VyICA8YWxwQGF0b2tlci5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBSb2Jlbi4KKworICAgICAgICBSZW5kZXJUaGVtZUd0ayBpbXBsZW1lbnRhdGlv
biBiYXNlZCBvbiBNb3ppbGxhJ3MgR1RLKyBzdHlsZSBjb2RlCisKKyAgICAgICAgVGhlcmUgaXMg
c3RpbGwgd29yayBuZWVkZWQgdG8gY29tcGxldGUgdGhpcyBmZWF0dXJlLgorCisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjpSZW5kZXJUaGVtZUd0ayk6CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0c0ZvY3VzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpzdXBwb3J0c0ZvY3VzUmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Y29udHJvbFN1cHBvcnRzVGludHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmJhc2VsaW5lUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6YWRqdXN0TW96U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TW96
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNb3pXaWRnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0QnV0dG9uUGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRUb2dnbGVTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpzZXRDaGVja2JveFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50Q2hlY2tib3gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnNldFJhZGlvU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRSYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVHdGs6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1
c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFp
bnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVz
dFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluYWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWN0aXZlTGlzdEJveFNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0
azo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lR3RrOjphY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjppbmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVH
dGs6OmNhcmV0QmxpbmtGcmVxdWVuY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVH
dGs6OnN5c3RlbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z3RrU3R5bGVTZXRDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrQ29udGFpbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpndGtFbnRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUd0azo6Z3RrVHJlZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jOiBB
ZGRlZC4KKyAgICAgICAgKG1vel9ndGtfZW5hYmxlX3N0eWxlX3Byb3BzKToKKyAgICAgICAgKGVu
c3VyZV93aW5kb3dfd2lkZ2V0KToKKyAgICAgICAgKHNldHVwX3dpZGdldF9wcm90b3R5cGUpOgor
ICAgICAgICAoZW5zdXJlX2J1dHRvbl93aWRnZXQpOgorICAgICAgICAoZW5zdXJlX2NoZWNrYm94
X3dpZGdldCk6CisgICAgICAgIChlbnN1cmVfcmFkaW9idXR0b25fd2lkZ2V0KToKKyAgICAgICAg
KGVuc3VyZV9zY3JvbGxiYXJfd2lkZ2V0KToKKyAgICAgICAgKGVuc3VyZV9zcGluX3dpZGdldCk6
CisgICAgICAgIChlbnN1cmVfc2NhbGVfd2lkZ2V0KToKKyAgICAgICAgKGVuc3VyZV9lbnRyeV93
aWRnZXQpOgorICAgICAgICAoZW5zdXJlX29wdGlvbl9tZW51X3dpZGdldCk6CisgICAgICAgIChl
bnN1cmVfYXJyb3dfd2lkZ2V0KToKKyAgICAgICAgKGVuc3VyZV9oYW5kbGVib3hfd2lkZ2V0KToK
KyAgICAgICAgKGVuc3VyZV90b29sYmFyX3dpZGdldCk6CisgICAgICAgIChlbnN1cmVfdG9vbHRp
cF93aWRnZXQpOgorICAgICAgICAoZW5zdXJlX3RhYl93aWRnZXQpOgorICAgICAgICAoZW5zdXJl
X3Byb2dyZXNzX3dpZGdldCk6CisgICAgICAgIChlbnN1cmVfZnJhbWVfd2lkZ2V0KToKKyAgICAg
ICAgKGVuc3VyZV9tZW51X2Jhcl93aWRnZXQpOgorICAgICAgICAoZW5zdXJlX21lbnVfYmFyX2l0
ZW1fd2lkZ2V0KToKKyAgICAgICAgKGVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCk6CisgICAgICAg
IChlbnN1cmVfbWVudV9pdGVtX3dpZGdldCk6CisgICAgICAgIChlbnN1cmVfY2hlY2tfbWVudV9p
dGVtX3dpZGdldCk6CisgICAgICAgIChDb252ZXJ0R3RrU3RhdGUpOgorICAgICAgICAoVFNPZmZz
ZXRTdHlsZUdDQXJyYXkpOgorICAgICAgICAoVFNPZmZzZXRTdHlsZUdDcyk6CisgICAgICAgICht
b3pfZ3RrX2J1dHRvbl9wYWludCk6CisgICAgICAgIChtb3pfZ3RrX2luaXQpOgorICAgICAgICAo
bW96X2d0a19jaGVja2JveF9nZXRfbWV0cmljcyk6CisgICAgICAgIChtb3pfZ3RrX3JhZGlvX2dl
dF9tZXRyaWNzKToKKyAgICAgICAgKG1vel9ndGtfY2hlY2tib3hfZ2V0X2ZvY3VzKToKKyAgICAg
ICAgKG1vel9ndGtfcmFkaW9fZ2V0X2ZvY3VzKToKKyAgICAgICAgKG1vel9ndGtfYnV0dG9uX2dl
dF9mb2N1cyk6CisgICAgICAgIChtb3pfZ3RrX29wdGlvbl9tZW51X2dldF9tZXRyaWNzKToKKyAg
ICAgICAgKG1vel9ndGtfdG9nZ2xlX3BhaW50KToKKyAgICAgICAgKGNhbGN1bGF0ZV9hcnJvd19k
aW1lbnNpb25zKToKKyAgICAgICAgKG1vel9ndGtfc2Nyb2xsYmFyX2J1dHRvbl9wYWludCk6Cisg
ICAgICAgIChtb3pfZ3RrX3Njcm9sbGJhcl90cm91Z2hfcGFpbnQpOgorICAgICAgICAobW96X2d0
a19zY3JvbGxiYXJfdGh1bWJfcGFpbnQpOgorICAgICAgICAobW96X2d0a19zcGluX3BhaW50KToK
KyAgICAgICAgKG1vel9ndGtfc2NhbGVfcGFpbnQpOgorICAgICAgICAobW96X2d0a19zY2FsZV90
aHVtYl9wYWludCk6CisgICAgICAgIChtb3pfZ3RrX2dyaXBwZXJfcGFpbnQpOgorICAgICAgICAo
bW96X2d0a19lbnRyeV9wYWludCk6CisgICAgICAgIChtb3pfZ3RrX29wdGlvbl9tZW51X3BhaW50
KToKKyAgICAgICAgKG1vel9ndGtfZHJvcGRvd25fYXJyb3dfcGFpbnQpOgorICAgICAgICAobW96
X2d0a19jb250YWluZXJfcGFpbnQpOgorICAgICAgICAobW96X2d0a190b2dnbGVfbGFiZWxfcGFp
bnQpOgorICAgICAgICAobW96X2d0a190b29sYmFyX3BhaW50KToKKyAgICAgICAgKG1vel9ndGtf
dG9vbHRpcF9wYWludCk6CisgICAgICAgIChtb3pfZ3RrX2ZyYW1lX3BhaW50KToKKyAgICAgICAg
KG1vel9ndGtfcHJvZ3Jlc3NiYXJfcGFpbnQpOgorICAgICAgICAobW96X2d0a19wcm9ncmVzc19j
aHVua19wYWludCk6CisgICAgICAgIChtb3pfZ3RrX3RhYl9wYWludCk6CisgICAgICAgIChtb3pf
Z3RrX3RhYnBhbmVsc19wYWludCk6CisgICAgICAgIChtb3pfZ3RrX21lbnVfYmFyX3BhaW50KToK
KyAgICAgICAgKG1vel9ndGtfbWVudV9wb3B1cF9wYWludCk6CisgICAgICAgIChtb3pfZ3RrX21l
bnVfaXRlbV9wYWludCk6CisgICAgICAgIChtb3pfZ3RrX2NoZWNrX21lbnVfaXRlbV9wYWludCk6
CisgICAgICAgIChtb3pfZ3RrX3dpbmRvd19wYWludCk6CisgICAgICAgIChtb3pfZ3RrX2dldF93
aWRnZXRfYm9yZGVyKToKKyAgICAgICAgKG1vel9ndGtfZ2V0X2Ryb3Bkb3duX2Fycm93X3NpemUp
OgorICAgICAgICAobW96X2d0a19nZXRfc2NhbGV0aHVtYl9tZXRyaWNzKToKKyAgICAgICAgKG1v
el9ndGtfZ2V0X3Njcm9sbGJhcl9tZXRyaWNzKToKKyAgICAgICAgKG1vel9ndGtfd2lkZ2V0X3Bh
aW50KToKKyAgICAgICAgKG1vel9ndGtfZ2V0X3Njcm9sbGJhcl93aWRnZXQpOgorICAgICAgICAo
bW96X2d0a19zaHV0ZG93bik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaDog
QWRkZWQuCisKKzIwMDctMTEtMDMgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KKworICAgICAgICBEbyBub3QgYWxsb3cgc2Nyb2xs
YmFycyB0byBoYW5kbGUgd2hlZWwgZXZlbnRzCisgICAgICAgIAorICAgICAgICBXZSBidWJibGUg
dGhlIHdoZWVsIGV2ZW50IHVwIHNvIHRoZSBwYXJlbnQgY2FuIGhhbmRsZSBpdCBpbnN0ZWFkLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2Nyb2xsQmFyR3RrLmNwcDoKKyAgICAg
ICAgKGd0a1Njcm9sbEV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoUGxhdGZvcm1TY3JvbGxiYXI6
OlBsYXRmb3JtU2Nyb2xsYmFyKToKKyAgICAgICAgKFBsYXRmb3JtU2Nyb2xsYmFyOjp+UGxhdGZv
cm1TY3JvbGxiYXIpOgorCisyMDA3LTExLTAzICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCisKKyAgICAgICAgRnJhbWUgc2Nyb2xs
aW5nIGFuZCBpbnZhbGlkYXRpb24gZml4ZXMKKworICAgICAgICBNYWtlIHVwd2FyZCBzY3JvbGwg
ZXZlbnRzIGhhdmUgYSBwb3NpdGl2ZSBkZWx0YSB0byBtYXRjaCBvdGhlciBwb3J0cy4KKworICAg
ICAgICBGaXggdGhlIGludmFsaWRhdGlvbiByZWN0IG9mZnNldCBmb3IgZnJhbWVzIHNvIHRoYXQg
c2Nyb2xsaW5nIHdvcmtzIHByb3Blcmx5LgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgbmVn
YXRpdmUgc2l6ZXMgdG8gd2lkZ2V0cyB0byBhdm9pZCBHVEsrIHdhcm5pbmdzLgorCisgICAgICAg
IEFsbG93IHRhYmJpbmcgdG8gYWxsIHdpZGdldHMgYW5kIGxpbmtzLgorCisgICAgICAgIEZpeCBl
dmVudCByZXR1cm5zLCBpbXByb3ZpbmcgdGhlIGZvY3VzIHNpdHVhdGlvbiBhbmQgY29ycmVjdGlu
ZyBzY3JvbGwgd2hlZWwKKyAgICAgICAgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWdlL2d0ay9F
dmVudEhhbmRsZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0YWJz
VG9BbGxDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaGVl
bEV2ZW50VG9XaWRnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXdTY3JvbGxiYXI6Omdlb21ldHJ5Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVDb250ZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxiYXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVu
dCk6CisKKzIwMDctMTEtMDMgIERhdmlkIEQuIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTEdQTCdlZCBmaWxlcyBjb250YWluIGluY29ycmVjdCBGU0YgYWRkcmVzcwor
ICAgICAgICA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4ODU+CisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR1RyYW5zZm9ybUxpc3RDdXN0b20uY3BwOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdFeGNlcHRpb24uaWRsOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVmlld1NwZWMuY3BwOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Gb250UGxhdGZvcm1EYXRhTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0UGF0aC5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdD
aGFyYWN0ZXJMYXlvdXRJbmZvLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHQ2hhcmFjdGVy
TGF5b3V0SW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oOgorCisyMDA3LTExLTAyICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtLgorICAgICAgICAKKyAgICAgICAgQWRkIHZpZGVvIHdpZHRoL2hlaWdodCBET00gYW5kIGNv
bnRlbnQgYXR0cmlidXRlcyBmcm9tIGxhdGVzdCBIVE1MNSBkcmFmdC4KKworICAgICAgICBUZXN0
OiBtZWRpYS92aWRlby13aWR0aC1oZWlnaHQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6Ondp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRIZWlnaHQpOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGw6CisKKzIw
MDctMTEtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE1hY2llai4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IFJlbW92ZSBh
IGZldyBleHBsaWNpdCBmaWxlbmFtZXMgZnJvbSBzb21lIHJ1bGVzIGJ5IHVzaW5nCisgICAgICAg
IG1ha2UgdmFyaWFibGVzIGEgbGl0dGxlIG1vcmUuCisgICAgICAgICogV2ViQ29yZS5MUDY0LmV4
cDogRml4IHR5cG8sIGdyYW1tYXIuCisKKzIwMDctMTEtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KKworICAgICAgICAtIHVz
ZSB0aGUgbmV3IEhhc2hNYXA6OnRha2UgZnVuY3Rpb24gd2hlcmUgYXBwcm9wcmlhdGUKKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcDoKKyAgICAgICAgKEtKUzo6YWRkV3Jh
cHBlcik6IE1hZGUgYW4gaW5saW5lIHJhdGhlciB0aGFuIGEgbWFjcm87IGlubGluZXMgZ29vZCwg
bWFjcm9zIGJhZC4KKyAgICAgICAgKEtKUzo6cmVtb3ZlV3JhcHBlcik6IERpdHRvLgorICAgICAg
ICAoS0pTOjpyZW1vdmVXcmFwcGVycyk6IERpdHRvLgorICAgICAgICAoS0pTOjpTY3JpcHRJbnRl
cnByZXRlcjo6cHV0RE9NT2JqZWN0KTogVXNlIHRoZSBpbmxpbmUgaW5zdGVhZCBvZiB0aGUgbWFj
cm8uCisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01PYmplY3QpOiBE
aXR0by4gVGhpcyBpbnZvbHZlcyB1c2luZyB0YWtlIGluc3RlYWQKKyAgICAgICAgb2YgcmVtb3Zl
IC0tIGluIHRoZW9yeSBldmVyIHNvIHNsaWdodGx5IGxlc3MgZWZmaWNpZW50LCBidXQgSSB0aGlu
ayBpdCdzIGZpbmUuCisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01O
b2RlRm9yRG9jdW1lbnQpOiBEaXR0by4KKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6
OnB1dERPTU5vZGVGb3JEb2N1bWVudCk6IFVzZSB0aGUgaW5saW5lIGluc3RlYWQgb2YgdGhlIG1h
Y3JvLgorICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0QWxsRE9NTm9kZXNG
b3JEb2N1bWVudCk6IFVzZSB0YWtlIGluc3RlYWQgb2YgZmluZC9yZW1vdmUuCisgICAgICAgIChL
SlM6OlNjcmlwdEludGVycHJldGVyOjp1cGRhdGVET01Ob2RlRG9jdW1lbnQpOiBVc2UgdGhlIGlu
bGluZXMgaW5zdGVhZCBvZiB0aGUgbWFjcm9zLgorCisgICAgICAgICogYmluZGluZ3MvanMva2pz
X3dpbmRvdy5jcHA6IChLSlM6OldpbmRvdzo6Y2xlYXJUaW1lb3V0KTogVXNlIHRha2UgaW5zdGVh
ZCBvZiBmaW5kL3JlbW92ZS4KKyAgICAgICAgKiBicmlkZ2UvbWFjL0FYT2JqZWN0Q2FjaGVNYWMu
bW06IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOiAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxl
clByaXZhdGU6OmNsZWFyKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp+UmVuZGVyQmxvY2spOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXREZXNpcmVkQ29sdW1uQ291bnRB
bmRXaWR0aCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDog
RGl0dG8uKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmRldGFjaEVsbGlwc2lzQm94KTogRGl0dG8u
CisKKzIwMDctMTEtMDIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluLgorCisgICAgICAgIEVuYWJsZSB2aWRlbyBjb21wb3NpdGlv
bi4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01vdmllUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQ
cml2YXRlOjpjcmVhdGVRVE1vdmllVmlldyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5tbToKKworMjAwNy0xMS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWl0ei4KKworICAgICAgICAtIGZpeCBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwNgorICAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NTYxNjI2PiBBU1NFUlQoZWxlbWVudC0+aXNSYWRpb0J1dHRvbigpKSBmaXJlcyBk
ZXN0cm95aW5nIGZvcm0gZWxlbWVudHMKKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3JlbW92
ZS1yYWRpby1idXR0b24tYXNzZXJ0Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEdlbmVyaWNG
b3JtRWxlbWVudC5jcHA6IChXZWJDb3JlOjpIVE1MR2VuZXJpY0Zvcm1FbGVtZW50OjpyZW1vdmVG
cm9tRm9ybSk6CisgICAgICAgIEFkZGVkIHByb3RlY3RlZCBmdW5jdGlvbiB0byBiZSB1c2VkIGJ5
IGRlcml2ZWQgY2xhc3NlcyB0aGF0IG5lZWQgdG8gZG8gdGhlIHNhbWUgc29ydAorICAgICAgICBv
ZiByZW1vdmFsIGZyb20gZm9ybSB0aGF0J3MgYXV0b21hdGljYWxseSBkb25lIGJ5IHRoZSBiYXNl
IGNsYXNzIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KKyAgICAgICAgKiBodG1sL0hUTUxHZW5l
cmljRm9ybUVsZW1lbnQuaDogQWRkZWQgcmVtb3ZlRnJvbUZvcm0uCisKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOiAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6fkhUTUxJ
bnB1dEVsZW1lbnQpOgorICAgICAgICBDYWxsIHJlbW92ZUZyb21Gb3JtIGhlcmUgc28gdGhlIGVs
ZW1lbnQgaXMgcmVtb3ZlZCBiZWZvcmUgd2UgZGVzdHJveSB0aGUgSFRNTElucHV0RWxlbWVudAor
ICAgICAgICBwYXJ0IG9mIHRoaXMgb2JqZWN0LiBCeSB0aGUgdGltZSB3ZSBnZXQgdG8gdGhlIGJh
c2UgY2xhc3MncyBkZXN0cnVjdG9yIGl0J3MgdG9vIGxhdGUuCisgICAgICAgIFRoZSBwcm9ibGVt
IGlzIHNwZWNpZmljIHRvIHJhZGlvIGJ1dHRvbnMgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBh
Ym91dCBvdGhlciBjbGFzc2VzCisgICAgICAgIGRlcml2ZWQgZnJvbSBIVE1MR2VuZXJpY0Zvcm1F
bGVtZW50LgorCisyMDA3LTExLTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBNaXR6LgorCisgICAgICAgIC0gc3BlY3VsYXRpdmUgZml4IGZv
ciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwNQorICAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NTEwNzc5PiBjcmFzaGVzIGluIGlzTG9hZGluZ011bHRpcGFydENv
bnRlbnQKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6IChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIEluc3Rl
YWQgb2YgYXNzZXJ0aW5nIHRoZSBmcmFtZSBsb2FkZXIgaXMgbm9uLTAsIHJldHVybiBmYWxzZSBp
ZiBpdCBpcyAwLgorCisyMDA3LTExLTAyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBNaXR6LgorCisgICAgICAgIC0gZml4IDxyZGFyOi8vcHJv
YmxlbS81NTMwMTg1PiBXZWJLaXQgZG9lcyBub3Qgc2hvdyA8b2JqZWN0PiBmYWxsYmFjayBjb250
ZW50IHdoZW4gYm90aAorICAgICAgICAgIFVSTCBhbmQgTUlNRSB0eXBlIGlzIG9taXR0ZWQKKwor
ICAgICAgICBBbHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgKHRoYXQgaGFkIGluY29y
cmVjdCByZXN1bHRzKS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6IChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6IFJldHVybiBmYWxzZSB0byBpbmRpY2F0
ZQorICAgICAgICBmYWlsdXJlIHdoZW4gYm90aCBVUkwgYW5kIE1JTUUgdHlwZSBhcmUgZW1wdHku
IFRoZSBvbGQgY29kZSB3b3VsZCBub3QgYXR0ZW1wdCBhIGxvYWQsIGJ1dAorICAgICAgICBpdCB3
b3VsZCBpbmRpY2F0ZSBzdWNjZXNzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhcnRP
YmplY3QuY3BwOiAoV2ViQ29yZTo6UmVuZGVyUGFydE9iamVjdDo6dXBkYXRlV2lkZ2V0KTogUmVt
b3ZlCisgICAgICAgIG5vbi1oZWxwZnVsIGVhcmx5IGV4aXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRo
ZXJlIGlzIG5vIFVSTCBhbmQgbm8gdHlwZS4gUmV0dXJuaW5nIGVhcmx5CisgICAgICAgIHByZXZl
bnRzIHRoZSBmYWxsYmFjayBjb2RlIGZyb20gcnVubmluZy4KKworMjAwNy0xMS0wMiAgQWxwIFRv
a2VyICA8YWxwQGF0b2tlci5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCisKKyAg
ICAgICAgSW5jbHVkZSBDYWlybyBoZWFkZXJzIHByb3Blcmx5CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmlu
ZVRyYW5zZm9ybUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRm9udFBsYXRmb3Jt
RGF0YUd0ay5jcHA6CisKKzIwMDctMTEtMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkuCisKKyAgICAgICAgTWFrZSBzdXJlIHdl
IHNlbmQgdGhlIGNvcnJlY3QgZXZlbnRzIGZvciBDYXBzbG9jaywgU2hpZnQsIEN0cmwsIEFsdCBh
bmQgdGhlIFdpbmRvd3Mga2V5ICAgICAgICAKKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9LZXlF
dmVudFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yV2luZG93c0tl
eUNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9y
bUtleWJvYXJkRXZlbnQpOgorCisyMDA3LTExLTAxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCisgICAg
ICAgIAorICAgICAgICBJbiBwcmVwYXJhdGlvbiBmb3IgbWFraW5nIExpc3QgYSBzaW1wbGUgc3Rh
Y2stYWxsb2NhdGVkIFZlY3RvcjoKKworICAgICAgICBSZW1vdmVkIGFsbCBpbnN0YW5jZXMgb2Yg
TGlzdCBjb3B5aW5nLCBhc3NpZ25tZW50LCBhbmQvb3Igc3RvcmFnZS4KKyAgICAgICAgCisgICAg
ICAgIExheW91dCB0ZXN0cyBhbmQgSlMgdGVzdHMgcGFzcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL2tqc193aW5kb3cuY3BwOgorICAgICAgICAoS0pTOjpXaW5kb3dGdW5jOjpjYWxsQXNGdW5j
dGlvbik6IFN0b3JlcyBhIFZlY3RvciBvZiBwcm90ZWN0ZWQgCisgICAgICAgIEpTVmFsdWUqJ3Mg
aW5zdGVhZCBvZiBhIExpc3Qgbm93LiBDb252ZXJ0cyB0byBMaXN0IG9uIHRoZSBmbHkgd2hlbiAK
KyAgICAgICAgY2FsbGluZyB0aGUgdGltZXIgZnVuY3Rpb24uIFRoaXMgaXMgc2xpZ2h0bHkgbGVz
cyBlZmZpY2llbnQsIGJ1dCB0aGUgCisgICAgICAgIGNvbW1vbiBjYXNlIGlzIDAtMiBhcmd1bWVu
dHMsIHNvIGl0J3Mgbm8gYmlnZ2llLgorCisgICAgICAgIChIVE1MIGlCZW5jaCBzaG93cyBubyBy
ZWdyZXNzaW9uLiBQTFQgZG9lcyBub3QgdXNlIEpTIHRpbWVycy4pCisgICAgICAgIAorICAgICAg
ICAoS0pTOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOiBVc2VzIHRoZSBtb3JlIGVmZmljaWVu
dCBhbmQgbm9uLWNvcHlpbmcKKyAgICAgICAgTGlzdDo6c2xpY2Ugbm93LgorICAgICAgICAoS0pT
OjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6IGRpdHRvCisKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKGdldExpc3RGcm9tTlNB
cnJheSk6IFRha2VzIGEgTGlzdCBvdXQgcGFyYW1ldGVyIG5vdywgdG8gYXZvaWQgY29weWluZy4K
KworMjAwNy0xMS0wMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmLgorCisgICAgICAgIENvcnJlY3QgZXZlbnQgYmVoYXZpb3VyIG9u
IGNlcnRhaW4gY29udHJvbCBrZXlzCisKKyAgICAgICAgTWFrZSBzdXJlIHdlIHNlbmQgdGhlIGNv
cnJlY3Qga2V5RG93biBhbmQga2V5VXAgZXZlbnRzIGZvciB0aGUKKyAgICAgICAgY29udHJvbCBr
ZXlzIENhcHNMb2NrLCBTaGlmdCwgQ3RybCwgQWx0LCBhbmQgTWV0YS9Db21tYW5kLCBhbmQKKyAg
ICAgICAgdXNlcyBXaW5kb3dzIGtleSBjb2RlcyBmb3IgdGhlIGV2ZW50IGtleUNvZGUuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9LZXlFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0tleUV2
ZW50TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRlbnRpZmllckZvcktleUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6aXNLZXlVcEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRGcm9tRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6dW5tb2RpZmllZFRleHRGcm9tRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vd3gvS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorCisyMDA3LTExLTAxICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTYW0uCisKKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuY3NzOiBVc2UgdGhl
IHdoaXRlIGRpc2Nsb3N1cmUgdHJpYW5nbGVzCisgICAgICAgICAgd2hlbiBhIHBhcmVudCBET00g
ZWxlbWVudCBpcyBzZXBlY3RlZC4KKworMjAwNy0xMS0wMSAgSnVzdGluIEdhcmNpYSAgPGp1c3Rp
bi5nYXJjaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50Lgor
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTk1MDU2PiBIdWdlIHBsYWluIHRleHQgcGFzdGVz
IGFyZSBzbG93LCB0aW1lIHNwZW50IGluIEFwcGx5U3R5bGVDb21tYW5kOjpkb0FwcGx5CisKKyAg
ICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTogTm8gbmVlZCB0byBtYXRj
aCBzdHlsZSB3aGVuIHBhc3RpbmcKKyAgICAgICAgaW50byBhIHBsYWludGV4dC1vbmx5IHJlZ2lv
biwgc2luY2Ugd2hlbiB3ZSBidWlsZCB0aGUgZnJhZ21lbnQgdG8gaW5zZXJ0IGZyb20KKyAgICAg
ICAgcGxhaW4gdGV4dCwgd2UgZG9uJ3QgcHV0IGFueSBzdHlsZSBpbmZvcm1hdGlvbiBvbiBpdCwg
c28gaXQgd2lsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgIG1hdGNoIHN0eWxlIHdpdGggbm8gaW50
ZXJ2ZW50aW9uLgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQpOiBQbGFjZSBwYXJhZ3JhcGhzIGludG8gY2xvbmVz
IG9mIHRoZQorICAgICAgICBibG9jayBiZWluZyBpbnNlcnRlZCBpbnRvLCBpbnN0ZWFkIG9mIGRl
ZmF1bHQgcGFyYWdyYXBoIGVsZW1lbnRzLAorICAgICAgICBzbyB0aGF0IHdoZW4gaW5zZXJ0ZWQg
Y29udGVudCB3aWxsIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBwYXJhZ3JhcGggc3R5bGUuCisgICAg
ICAgIFRoaXMgd2FzIGJyb2tlbiBiZWZvcmUsIGJ1dCBJIGhhdmVuJ3QgYWRkZWQgYSBsYXlvdXQg
dGVzdCB5ZXQgYmVjYXVzZQorICAgICAgICB0aGVyZSBjdXJyZW50bHkgaXNuJ3QgYSB3YXkgdG8g
Z2V0IG9ubHkgcGxhaW4gdGV4dCBvbnRvIHRoZSBwYXN0ZWJvYXJkCisgICAgICAgIGluIGEgbGF5
b3V0IHRlc3QuCisKKzIwMDctMTEtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLiAKKworICAgICAgICBBZGQgYSByZWxlYXNl
UmVmIG1ldGhvZCB0byBDT01QdHIgd2hpY2ggbWF0Y2hlcyB0aGUgYmVoYXZpb3IKKyAgICAgICAg
b2YgdGhlIG1ldGhvZCBieSB0aGUgc2FtZSBuYW1lIGluIFBhc3NSZWZQdHIuICBUaGlzIGlzIGlu
CisgICAgICAgIHByZXBhcmF0aW9uIG9mIGFkZGluZyBhdXRvZ2VuZXJhdGVkIENPTSBET00gYmlu
ZGluZ3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ09NUHRyLmg6CisgICAgICAgIChDT01Q
dHI6OnJlbGVhc2VSZWYpOgorCisyMDA3LTExLTAxICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIHd4IGltcGwuIGZvciBEcmFnQ29udHJvbGxlciBh
bmQgRXZlbnRIYW5kbGVyIGludGVyZmFjZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBS
b2Jlbi4KKworICAgICAgICAqIHBhZ2Uvd3g6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvd3gvRHJh
Z0NvbnRyb2xsZXJXeC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmlzQ29weUtleURvd24pOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRy
YWdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJ
bWFnZVNpemUpOgorICAgICAgICAqIHBhZ2Uvd3gvRXZlbnRIYW5kbGVyV3guY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3Vi
ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZl
bnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNl
UmVsZWFzZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OnBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisKKzIwMDctMTEtMDEgIEtl
dmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgQWRkaW5n
IGZpbGVzIGZvciB3eCBpbXBsLiBvZiBlZGl0aW5nIGludGVyZmFjZXMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKworICAgICAgICAqIGVkaXRpbmcvd3g6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvd3gvRWRpdG9yV3guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisKKzIwMDctMTEtMDEgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisg
ICAgICAgIE1ha2UgaW1wbGljaXQgY29udmVyc2lvbnMgZnJvbSBMUENTVFJzIGFuZCBCU1RScyB0
byBXZWJDb3JlIHN0cmluZworICAgICAgICB0eXBlcyBwb3NzaWJsZSBpbiBwcmVwYXJhdGlvbiBv
ZiBhZGRpbmcgYXV0b2dlbmVyYXRlZCBDT00gRE9NIGJpbmRpbmdzLgorCisgICAgICAgICogcGxh
dGZvcm0vQXRvbWljU3RyaW5nLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6
OmFkZCk6CisgICAgICAgICogcGxhdGZvcm0vQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vUGxh
dGZvcm1TdHJpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCU3RyaW5nOjpCU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
QlN0cmluZy5oOgorCisyMDA3LTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMKKworICAgICAgICBSZW5hbWVkIGEgZmxh
ZyBpbnNpZGUgb2YgU1FMaXRlVHJhbnNhY3Rpb24gYW5kIGFkZGVkIGFuIGFjY2Vzc29yIChmb3Ig
ZnV0dXJlIHdvcmspCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OlNRTGl0ZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjp+U1FMaXRlVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnJvbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0
aW9uOjppblByb2dyZXNzKToKKworMjAwNy0xMS0wMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFsbCBkdXBsaWNhdGUgeGNvcHkgY29tbWFuZHMgZnJv
bSBXZWJDb3JlJ3MgcG9zdC1idWlsZCBzdGVwCisKKyAgICAgICAgQWxzbyBhZGQgdGhlIC9kIG9w
dGlvbiB0byB0aGUgY29weSBvZiBwbGF0Zm9ybS9zcWwuCisKKyAgICAgICAgUnViYmVyc3RhbXBl
ZCBieSBTYW0uCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKwor
MjAwNy0xMS0wMSAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWFjaWVqLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgYW5pbWF0
aW9uIG9mIHRoZSAtd2Via2l0LWJvcmRlci1yYWR1aXMgcHJvcGVydGllcy4KKworICAgICAgICAq
IHBhZ2UvQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1
bmMpOiBBZGRlZCBmb3IgSW50U2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0
aW9uOjphbmltYXRlKTogQWRkZWQgY2FzZXMgZm9yIGJvcmRlciByYWRpdXMgcHJvcGVydGllcy4K
KworMjAwNy0xMS0wMSAgQWxwIFRva2VyICA8YWxwQGF0b2tlci5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWl0eiBQZXR0ZWwuCisKKyAgICAgICAgRml4IGFuIHVuYmFsYW5jZWQgc2F2ZS9y
ZXN0b3JlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisKKzIwMDctMTEtMDEgIERhdmlk
IEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUg
YW5pbWF0aW9uIG9mIHRoZSB2aXNpYmlsaXR5IHByb3BlcnR5LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IG9saXZlciwgYXJvYmVuCisKKyAgICAgICAgKiBwYWdlL0FuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
cGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKToKKworMjAwNy0xMS0wMSAgS2V2aW4gTWNDdWxsb3Vn
aCAgPGttY2N1bGxvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtLgor
CisgICAgICAgIC0gTWFkZSBDT01QdHIgYmUgYWJsZSB0byBiZSB1c2VkIGJ5IGNlcnRhaW4gb3Ro
ZXIgdGVtcGxhdGVzLAorICAgICAgICBzcGVjaWZpY2FsbHkgSGFzaFNldC4KKworICAgICAgICAq
IHBsYXRmb3JtL3dpbi9DT01QdHIuaDoKKyAgICAgICAgKFdURjo6KToKKworMjAwNy0xMS0wMSAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
dmUgSHlhdHQuCisKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwMTUKKyAgICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQyMDMwOD4gTW9zdCBv
ZiB3d3cuYW9sLmNvbSByZWRyYXdzIHVubmVjZXNzYXJpbHkgd2hlbiBoZWFkbGluZS9waG90byBz
ZWN0aW9uIGNoYW5nZXMKKworICAgICAgICBUZXN0OiBmYXN0L3JlcGFpbnQvb3ZlcmZsb3ctY2xp
cC1zdWJ0cmVlLWxheW91dC5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBhZGRy
ZXNzIHRoZSBiaWdnZXIgaXNzdWUgb2YgZG9pbmcgYSBmdWxsIHJlbGF5b3V0CisgICAgICAgIG9m
IGlubGluZSBmbG93cyBjb250YWluaW5nIGZsb2F0cywgYnV0IGl0IGFkZHJlc3NlcyB0aGUgcHJv
YmxlbSBvbgorICAgICAgICBhb2wuY29tLCB3aGVyZSB0aGUgY2hhbmdlcyB0aGF0IHRyaWdnZXIg
bGF5b3V0IGFyZSBjb25maW5lZCB0byBhbgorICAgICAgICBvdmVyZmxvdyBhcmVhIGluc2lkZSB0
aGUgZmxvYXQuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUpOiBJZiB0aGUgbmV3IGFu
ZCBvbGQKKyAgICAgICAgbGF5b3V0IHJvb3RzIGFyZSBkaWZmZXJlbnQgYnV0IG9uZSBkZXNjZW5k
cyBmcm9tIHRoZSBvdGhlciwgbWFrZSAob3IKKyAgICAgICAga2VlcCkgdGhlIGFuY2VzdG9yIGFz
IHRoZSBsYXlvdXQgcm9vdC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om9iamVjdElzUmVsYXlvdXRCb3VuZGFyeSk6IE1hZGUgYm94ZXMg
d2l0aCBvdmVyZmxvdworICAgICAgICBjbGlwcGluZyBhbmQgbm9uLWF1dG8gd2lkdGggYW5kIGhl
aWdodCByZWxheW91dCBib3VuZGFyaWVzLgorCisyMDA3LTExLTAxICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCisK
KyAgICAgICAgRml4ZWQgbGluZSBlbmRpbmdzIHRoYXQgZ290IGNvbmZ1c2VkIGluIHRoaXMgZmls
ZSBzb21laG93LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmlzQXR0YWNobWVudCk6
CisKKzIwMDctMTEtMDEgIFBldGVyIEthc3RpbmcgIDx6ZXJvZHB4QGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc4CisgICAgICAgIE1hbGZvcm1lZCBHSUZzIHNob3Vs
ZCBub3QgcmVzdWx0IGluIG1lbW9yeSBjb3JydXB0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lGSW1hZ2VS
ZWFkZXI6Om91dHB1dF9yb3cpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnJlYWQpOgorCisy
MDA3LTEwLTMxICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
YSBjcmFzaCB3aGVuIHBhcnNpbmcgYSBjdWJpYy1iZXppZXIgZnVuY3Rpb24KKworICAgICAgICBS
ZXZpZXdlZCBieSBIeWF0dC4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9wYXJzZS10aW1pbmct
ZnVuY3Rpb24tY3Jhc2guaHRtbAorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZSk6IERvbid0IHdhbGsgb2ZmIHRoZSBl
bmQKKyAgICAgICAgb2YgdGhlIFZhbHVlTGlzdC4KKworMjAwNy0xMC0zMSAgRGF2aWQgSHlhdHQg
IDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGEgbWVyZ2UgZXJyb3IgZnJvbSB3aGVu
IEkgYXBwbGllZCBteSBwYXRjaCB0byBUb1QuICBBIGNvdXBsZSBvZiBsaW5lcyBzaG91bGQgYmUg
cGFydCBvZiBhbiBpZi4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMpOgorCisyMDA3
LTEwLTMxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtLgorCisgICAgICAgIEFkZCBuZXcgU1FMIGNhbGxiYWNrIGludGVyZmFj
ZXMgYW5kIEpTIGltcGxlbWVudGF0aW9ucyBvZiB0aGVtLgorICAgICAgICAKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxi
YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFN0YXRlbWVudENh
bGxiYWNrOjpKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
OjpKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmg6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxi
YWNrOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjazo6SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2Fs
bGJhY2suaDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9KU0N1c3RvbVNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9KU0N1c3RvbVNRTFRyYW5z
YWN0aW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9KU0N1c3RvbVNRTFRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1NRTFN0
YXRlbWVudENhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMU3RhdGVtZW50
Q2FsbGJhY2s6On5TUUxTdGF0ZW1lbnRDYWxsYmFjayk6CisgICAgICAgICogc3RvcmFnZS9TUUxT
dGF0ZW1lbnRDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2s6On5TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKToKKyAgICAgICAgKiBz
dG9yYWdlL1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBz
dG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJh
bnNhY3Rpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2Fs
bGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
Ojp+U1FMVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2s6On5TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAq
IHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbDogQWRkZWQuCisKKzIwMDct
MTAtMzEgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXZlIEhhcnJpc29uLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
NTY5NzQxPiBQYXN0aW5nIGNvbnRlbnQgd2l0aCBhIGxpbmUgYnJlYWsgaW50byBhIGxpc3QgY2Fu
IHJlbW92ZSB0aGUgbGlzdAorCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdFbXB0eUxpc3RJdGVtKTogQSBzaW5nbGUgbGlzdCBp
dGVtIGNhbiBjb250YWluIG11bHRpcGxlIAorICAgICAgICBwYXJhZ3JhcGhzLCBzbyBpZiB0aGUg
aW5jb21pbmcgVmlzaWJsZVBvc2l0aW9uIGlzIGluIGFuIGVtcHR5IHBhcmFncmFwaCBpbiBhIAor
ICAgICAgICBsaXN0IGl0ZW0sIHRoYXQgbGlzdCBpdGVtIGlzbid0IG5lY2Vzc2FyaWx5IGVtcHR5
LgorCisyMDA3LTEwLTMxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXNhYmxlIHN0eWxlIHNoYXJpbmcgZm9yIGFuaW1hdGluZyBzdHlsZXMuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgbWl0enBldHRlbAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdp
dGhFbGVtZW50KToKKworMjAwNy0xMC0zMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIC0gZml4IGlu
dGVybWVkaWF0ZSBsZW5ndGggY2FsY3VsYXRpb24KKworICAgICAgICAqIHJlbmRlcmluZy9MZW5n
dGguaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6YmxlbmQpOgorCisyMDA3LTEwLTMxICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4uCisKKyAgICAgICAgQWRkIG5ldyBTUUxFcnJvciBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogc3RvcmFnZS9TUUxFcnJvci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNRTEVycm9yOjpTUUxFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxF
cnJvcjo6Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxFcnJvcjo6bWVzc2FnZSk6CisgICAg
ICAgICogc3RvcmFnZS9TUUxFcnJvci5pZGw6IEFkZGVkLgorCisyMDA3LTEwLTMxICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgdGhlIGluaXRpYWwgdmFs
dWUgb2YgdHJhbnNpdGlvbi1wcm9wZXJ0eSB0byBhbGwuICBDaGFuZ2UgdGhlIGluaXRpYWwgdmFs
dWUgb2YKKyAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbiB0byAwLgorCisgICAgICAgIFJldmll
d2VkIGJ5IGFudHRpCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNpdGlvbkR1cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNpdGlvblByb3BlcnR5KToK
KworMjAwNy0xMC0zMSAgQWxwIFRva2VyICA8YWxwQGF0b2tlci5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWFyayBSb3dlLgorCisgICAgICAgIFRoZSBuZXcgQ29sb3IgbXVzdCBiZSBtYXJr
ZWQgdmFsaWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3Bw
OgorCisyMDA3LTEwLTMxICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqOworCisgICAgICAgIEJ1aWxkIGZpeCBmb3Igbm9uLVF0
IGJ1aWxkcy4KKworICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MVG9rZW5pemVyOjpYTUxUb2tlbml6ZXIpOgorCisyMDA3LTEwLTMxICBTaW1vbiBI
YXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4K
KworICAgICAgICBGaXggZGVwZW5kZW5jeSBwYXRoIHRvIGhlYWRlciBmaWxlcyBvZiB0aGUgcHVi
bGljIEFQSSBvZiB0aGUgUXQgcG9ydC4KKworICAgICAgICAqIFdlYkNvcmUucHJvOgorCisyMDA3
LTEwLTMxICBIb2xnZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICAqIFFYbWxTdHJlYW1OYW1lc3BhY2VEZWNsYXJh
dGlvbiBkb2Vzbid0IGhhdmUgdGhlIGNvbnN0cnVjdG9yIHdlCisgICAgICAgIHdhbnQgdG8gdXNl
IGZvciBRdDQuMy4gUmVlbmFibGUgdGhlIG9sZCBjb2RlIHBhdGggd2hpY2ggaXMgbGlrZWx5Cisg
ICAgICAgIHRvIGJlIGRlYWQgYXMgSSBoYXZlIG5vdCBjaGVja2VkIGlmIG1fcHJlZml4VG9OYW1l
c3BhY2VNYXAgaXMgYWN0dWFsbHkKKyAgICAgICAgdXNlZC4KKyAgICAgICAgKiBHdWFyZCB0aGUg
ZW50aXR5IHJlc29sdmVyIHdpdGggdGhlIFFUX1ZFUlNJT04gYXMgd2VsbC4KKyAgICAgICAgKiBQ
YXJ0aWFsbHkgcmV2ZXJ0cyAzNjk1MDYyNzlhYmRhYTg2M2UxNWVmZWQ2NDljYTE5ZTA2MmYyYzMw
IGFuZAorICAgICAgICBkMmI1NGQwZmMxYjA3YTI0ODBmNGY3YTE0MTdhYmQ3YTYzNmIwMTA3IGZv
ciBRdDQuMy4KKworICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MVG9rZW5pemVyOjpYTUxUb2tlbml6ZXIpOgorICAgICAgICAqIGRvbS9YTUxUb2tl
bml6ZXIuaDoKKworMjAwNy0xMC0zMSAgSG9sZ2VyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29t
Pi4KKworICAgICAgICAqIFFNaW1lRGF0YTo6cmVtb3ZlRGF0YSB3aWxsIGJlIG5ldyBpbiBRdDQu
NCwgZG9uJ3QgdXNlIGl0IGZvciBRdDQuMyAKKyAgICAgICAgKiBQcm92aWRlIGEgYmFkIGZhbGxi
YWNrIGltcGxlbWVudGF0aW9uIHRvIGZpbHRlciB0aGUgZm9ybWF0IGxpc3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRRdDo6Y2xlYXJEYXRhKToKKworMjAwNy0xMC0zMSAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0
ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBhZGQgYW4g
ZW50aXRpeSByZXNvbHZlciB0byBRWG1sU3RyZWFtLgorICAgICAgICBGaXhlcyBmYXN0L3BhcnNl
ci9lbnRpdGllcy1pbi1hdHRyaWJ1dGVzLnhodG1sLgorCisgICAgICAgICogZG9tL1hNTFRva2Vu
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbnRpdHlSZXNvbHZlcjo6cmVzb2x2ZVVuZGVj
bGFyZWRFbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjpYTUxUb2tlbml6
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjp+WE1MVG9rZW5pemVyKToKKwor
MjAwNy0xMC0zMSAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBGaXhlcyBpbiB0aGUgWE1MIHRva2VuaXplciB3
aGVuIHVzaW5nIFFYbWxTdHJlYW0uCisgICAgICAgIAorICAgICAgICBVc2UgbmV3IGZ1bmN0aW9u
YWxpdHkgb2YgUVhtbFN0cmVhbSBpbiBRdCA0LjQgdG8gc2ltcGxpZnkKKyAgICAgICAgdGhlIGNv
ZGUgKGJ1dCBrZWVwIHRoZSBvbGQgY29kZSBmb3Igbm93IHRvIHN0aWxsIHN1cHBvcnQgUXQgNC4z
KS4KKyAgICAgICAgCisgICAgICAgIEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgbmFtZXNwYWNlIGhh
bmRsaW5nIHdoZW4gcGFyc2luZyBpbnRvCisgICAgICAgIGEgZG9jdW1lbnQgZnJhZ21lbnQuCisK
KyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRv
a2VuaXplcjo6WE1MVG9rZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjpzdGFydEVsZW1lbnROcyk6
CisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5oOgorCisyMDA3LTEwLTMxICBMYXJzIEtub2xs
ICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisg
ICAgICAgIGFkZCBzdXBwb3J0IGZvciBkcmFnZ2luZyBpbWFnZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZFF0OjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkUXQ6OnNldERyYWdJbWFnZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkUXQ6OmNyZWF0ZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oOgorCisyMDA3LTEwLTMx
ICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uLgorCisgICAgICAgIGZpeCBtb3N0IG9mIHRoZSBpc3N1ZXMgSSBmb3VuZCB3aXRoIENs
aXBib2FyZCBhbmQgRG5ELgorCisgICAgICAgICogZWRpdGluZy9xdC9FZGl0b3JRdC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkUXQ6OkNsaXBib2FyZFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0
Ojp+Q2xpcGJvYXJkUXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmNsZWFyRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6Y2xlYXJBbGxEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZFF0OjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojp0eXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6c2V0RHJhZ0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpzZXREcmFnSW1hZ2VFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZFF0OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OndyaXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZFF0Ojp3cml0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojpo
YXNEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6
OmFzVVJMKToKKworMjAwNy0xMC0zMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCisg
ICAgICAgIEZpeCB0aGUgR3RrIGFuZCBRdCBidWlsZHMgYnkgc3R1YmJpbmcgb3V0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMb2NrU3RhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvS2V5RXZlbnRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUGxh
dGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSk6CisKKzIwMDctMTAtMzEgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cy4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc2
MgorICAgICAgICBYU0xTdHlsZXNoZWV0IGxvYWRzIHN1YnJlc291cmNlcyBmcm9tIGEgd3Jvbmcg
VVJMCisKKyAgICAgICAgQ292ZXJlZCBieSBjb3JyZWN0ZWQgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHls
ZVNoZWV0OjpwYXJzZVN0cmluZyk6IFBhc3Mgc3R5bGVzaGVldCBVUkwsIG5vdAorICAgICAgICB0
aGUgZG9jdW1lbnQgb25lLgorCisyMDA3LTEwLTMxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KKworICAgICAgICBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgxOAorICAgICAgICBTdHJpbmc6
OmFwcGVuZCBkb2VzIDIgZnVsbCBjb3BpZXMgaW5zdGVhZCBvZiAxIChvciB6ZXJvISkKKworICAg
ICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgdGh1cyBubyB0ZXN0LgorCisgICAgICAg
ICogcGxhdGZvcm0vU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6YXBwZW5k
KTogUmV3cm90ZSB0byBjb3B5IG9uY2UuIEFsc28gcmVtb3ZlZCBhbiBhbmNpZW50CisgICAgICAg
IEZJWE1FIHRoYXQgZG9lc24ndCBzZWVtIHRvIG1ha2UgYW55IHNlbnNlLiBOb3RlIHRoYXQgYXBw
ZW5kKCkgYmVoYXZpb3IgZG9lc24ndCAKKyAgICAgICAgbWF0Y2ggZG9jdW1lbnRlZCBTdHJpbmcg
YmVoYXZpb3IgKCJtb2RpZmljYXRpb25zIHRvIG9uZSBpbnN0YW5jZSB3aWxsCisgICAgICAgIGFs
c28gbW9kaWZ5IGFsbCBvdGhlcnMiKSwgYnV0IHRoZXJlIGFyZSBhIGxvdCBvZiBtZXRob2RzIHRo
YXQgZG9uJ3QuCisKKzIwMDctMTAtMzEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgor
CisgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4CisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajogQWRkIFtKU11Qcm9ncmVzc0V2ZW50LntjcHAsaH0gZmlsZXMuCisKKzIw
MDctMTAtMzAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdpbmRv
d3MgYnVpbGQgZml4ZXMKKworICAgICAgICBJJ20gbm90IGNvbXBsZXRlbHkgc3VyZSB3aHkgdGhl
c2UgY29uc3QgaXNzdWVzIHdlcmVuJ3QgY2F1Z2h0IGJ5IEdDQywKKyAgICAgICAgYnV0IE1TVkMg
d2FzIGNlcnRhaW5seSBub3QgaGFwcHkgd2l0aCB0aGVtLgorCisgICAgICAgICogZWRpdGluZy9J
bmRlbnRPdXRkZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVudEJsb2Nr
cXVvdGUpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0eWxlRnJvbU1hdGNoZWRSdWxlc0FuZElubGluZURlY2wpOgorCisyMDA3LTEwLTMwICBEYXZp
ZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5
IHdhcyBkZWZhdWx0aW5nIHRvIGFsbCB3aGVuIGl0IHNob3VsZCBkZWZhdWx0IHRvIG5vbmUuICAK
KworICAgICAgICBJdCB3YXMgdGFraW5nIGEgc3RyaW5nIHR5cGUuICBJIGZpZ3VyZWQgb3V0IGhv
dyB0byBtYWtlIGl0IHRha2UgYW4gaWRlbnQgaW5zdGVhZCwgc28geW91IGNhbiB3cml0ZToKKwor
ICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5CisKKyAgICAgICAgaW5zdGVhZCBv
ZgorCisgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICJvcGFjaXR5IgorCisgICAgICAgIFRy
YW5zaXRpb24gbGF5ZXJzIGFsc28gd2VyZW4ndCBwcm9wZXJseSByZXBlYXRpbmcgcGF0dGVybnMg
dGhlIHdheSB0aGV5IHdlcmUgc3VwcG9zZWQgdG8uICBJIGZpeGVkIHRoYXQuCisKKyAgICAgICAg
RmluYWxseSwgSSBmaXhlZCBhIGJ1ZyBpbiB0aGUgY29kZSB0byBmaXggdXAgdHJhbnNpdGlvbiBs
YXllcnMgd2hlcmUgc29tZXRoaW5nIHdhcyBtaXNwbGFjZWQgdGhhdCBzaG91bGQgaGF2ZSBiZWVu
IGluc2lkZSBhIG51bGwgY2hlY2suCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgYXJvYmVuCisKKyAg
ICAgICAgKiBjc3MvQ1NTSGVscGVyLmg6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblByb3BlcnR5KToKKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgICogcGFnZS9BbmltYXRp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjph
bmltYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0
aWFsVHJhbnNpdGlvblByb3BlcnR5KToKKworMjAwNy0xMC0zMCAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYuCisKKyAgICAgICAg
TGVhayBmaXgKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Nb3ZpZVByaXZhdGVR
VEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkVHlw
ZXMpOgorCisyMDA3LTEwLTMwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhhbmllIExld2lzLgorCisgICAgICAgIC0gZml4IDxyZGFy
Oi8vcHJvYmxlbS81NTQ3MjM3PiBSRUdSRVNTSU9OICgzMDQtVG9UKTogUmVwcm8gZm9udC1yZWxh
dGVkIGNyYXNoIGluIGZvbnRkYXRhd2luLmNwcCBMaW5lIDkzIChtYW55IHNpdGVzKQorCisgICAg
ICAgICogcGxhdGZvcm0vd2luL0ZvbnREYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREYXRhOjpwbGF0Zm9ybUluaXQpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGZvbnQgaGFz
IG5vCisgICAgICAgIGdseXBocyBvbiBwYWdlIHplcm8uCisKKzIwMDctMTAtMzAgIERhdmlkIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc3VyZSBDU1MgdHJhbnNmb3Jt
cyBjYW4gYmUgYW5pbWF0ZWQgdXNpbmcgdGhlIENTUyB0cmFuc2l0aW9uIHByb3BlcnR5LgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhbiBhbmQgQW50dGkKKworICAgICAgICAqIGNzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5
UHJvcGVydHkpOgorICAgICAgICAqIHBhZ2UvQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmlt
YXRpb246OmFuaW1hdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9MZW5ndGguaDoKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6YmxlbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVRyYW5zZm9ybURhdGE6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZExlbmd0aHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJvdGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2tld1RyYW5zZm9ybU9w
ZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b246OmJsZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1PcGVyYXRpb25zOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU9w
ZXJhdGlvbnM6Om9wZXJhdG9yW10pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0
aW9uczo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0cmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybSk6CisKKzIwMDctMTAtMzAg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEFub3RoZXIgUXQv
R1RLIGJ1aWxkIGZpeC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeS5jcHA6CisKKzIwMDctMTAtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgorCisgICAgICAgIEF0dGVtcHQgdG8gZml4IFF0L0dUSyBidWlsZC4KKworICAgICAg
ICAqIFdlYkNvcmUucHJvOgorCisyMDA3LTEwLTMwICBKdXN0aW4gR2FyY2lhICA8anVzdGluLmdh
cmNpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NDk5Mjk+IENyYXNoVHJhY2VyOiBbVVNFUl0gMzUgY3Jh
c2hlcyBhdCBXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjppbnNlcnREYXRhCisgICAgICAgIAorICAg
ICAgICBXZSB3ZXJlIHRyeWluZyB0byBpbnNlcnQgYSB0YWIgaW50byBhIGJyLCBhZnRlciB0aGUg
YnIgaW5jb3JyZWN0bHkgZW5kZWQgdXAgaW5zaWRlCisgICAgICAgIGEgdGFiIHNwYW4uCisgICAg
ICAgIAorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6IAorICAg
ICAgICAoV2ViQ29yZTo6aXNEZWxldGFibGVFbGVtZW50KTogQ2hhbmdlZCB0byB0YWtlIGluIGEg
Y29uc3QgTm9kZSogaW5zdGVhZCBvZiBhIE5vZGUqLgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1RhYmxlUm93KTogRGl0
dG8uCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc0luZGVudEJsb2NrcXVvdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmlzTGlzdE9ySW5kZW50QmxvY2txdW90ZSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJl
YWtDb21tYW5kOjpzaG91bGRVc2VCcmVha0VsZW1lbnQpOiBBZGRlZCwgbW92ZWQgY29kZSBmcm9t
CisgICAgICAgIGRvQXBwbHkgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVh
a0NvbW1hbmQ6OmRvQXBwbHkpOiAKKyAgICAgICAgRG9uJ3QgdXBzdHJlYW0oKSB0aGUgaW5zZXJ0
aW9uIHBvc2l0aW9uLiAgdXBzdHJlYW0oKWluZyBpdCB3aWxsIG9ubHkgaGF2ZSBhbiBlZmZlY3QK
KyAgICAgICAgd2hlbiB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uIGlzIHRoZSBmaXJzdCBpbiBpdHMg
cGFyYWdyYXBoIChzaW5jZSB3ZSBjYW5vbmljYWxpemUKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9u
cyB0byB0aGUgdXBzdHJlYW0oKSBjYW5kaWRhdGUpLiAgSW4gdGhpcyBzdGFydCBvZiBwYXJhZ3Jh
cGggY2FzZSwgCisgICAgICAgIHVwc3RyZWFtKCkgY2FuIG1vdmUgb3V0c2lkZSBpbmxpbmUgZWxl
bWVudHMgbGlrZSB0YWIgc3BhbnMgb3IgZWxlbWVudHMgdGhhdCBtaWdodAorICAgICAgICBoYXZl
IGEgZGlmZmVyZW50IHdoaXRlc3BhY2UgbW9kZSAoYWRkZWQgdHdvIHRlc3QgY2FzZXMgdG8gY292
ZXIgdGhlc2UpLgorICAgICAgICBNb3ZlZCBjb2RlIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGluc2Vy
dCBhIGJyIG9yIGEgJ1xuJyB0byBpdHMgb3duIG1ldGhvZC4KKyAgICAgICAgUmVtb3ZlZCBzcGVj
aWFsIGNhc2UgY29kZSBmb3IgaW5zZXJ0aW5nIGF0IGEgcG9zaXRpb24gaW5zaWRlIGEgdGFiIHNw
YW4uICBXZSBpbnN0ZWFkCisgICAgICAgIGFkanVzdCB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uIGJl
Zm9yZSBpbnNlcnRpb24gaWYgaXQgaXMgaW5zaWRlIGEgdGFiIHNwYW4gYW5kCisgICAgICAgIGhh
bmRsZSBpbnNlcnRpb24gaW4gdGhlIGFwcHJvcHJpYXRlIGlmLWJsb2NrLiAgVGhpcyBmaXhlcyBh
IGJ1ZyB3aGVyZSB3ZSB3b3VsZCAKKyAgICAgICAgb25seSBpbnNlcnQgb25lIGxpbmUgYnJlYWsg
d2hlbiB0d28gd2VyZSBuZWVkZWQgKGFkZGVkIGEgdGVzdGNhc2UpLgorICAgICAgICBSZW1vdmVk
IHNwZWNpYWwgY2FzZSBjb2RlIGZvciBpbnNlcnRpbmcgYmVmb3JlIGFuZCBhZnRlciB0YWJsZXMg
YW5kIGhvcml6b250YWwKKyAgICAgICAgcnVsZXMuICBXZSBoYW5kbGUgdGhlc2UgaW5zZXJ0aW9u
cyBpbiB0aGUgYXBwcm9wcmlhdGUgaWYtYmxvY2suCisgICAgICAgICogZWRpdGluZy9JbnNlcnRM
aW5lQnJlYWtDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc01haWxQYXN0ZUFzUXVvdGF0aW9uTm9kZSk6
IENoYW5nZSB0byB0YWtlIGluIGEgY29uc3QgTm9kZSouCisgICAgICAgICogZWRpdGluZy9odG1s
ZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0NvbnRlbnRFZGl0YWJsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6aXNCbG9jayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
ZW5jbG9zaW5nTm9kZU9mVHlwZSk6IENoYW5nZWQgdG8gdGFrZSBhIGZ1bmN0aW9uIHBvaW50ZXIg
dG8gYSBmdW5jdGlvbgorICAgICAgICB0aGF0IHRha2VzIGluIGEgY29uc3QgTm9kZSouCisgICAg
ICAgIChXZWJDb3JlOjppc1RhYlNwYW5UZXh0Tm9kZSk6IENoZWNrIHRvIHNlZSB0aGF0IHRoZSBu
b2RlIGFjdHVhbGx5IGEgdGV4dCBub2RlLAorICAgICAgICBhbmQgbm90LCBzYXksIGEgYnIuCisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRnJvbU1hdGNoZWRSdWxlc0FuZElubGluZURl
Y2wpOiBDaGFuZ2VkIHRvIHRha2UgaW4gYSBjb25zdCBOb2RlKi4KKyAgICAgICAgKFdlYkNvcmU6
OmVsZW1lbnRIYXNUZXh0RGVjb3JhdGlvblByb3BlcnR5KTogRGl0dG8uCisKKzIwMDctMTAtMzAg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBtaXNzaW5n
IGZpbGVzLgorCisgICAgICAgICogaHRtbC9Wb2lkQ2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFZvaWRDYWxsYmFjazo6Vm9pZENhbGxiYWNrKToKKyAgICAgICAgKFZvaWRDYWxsYmFjazo6
flZvaWRDYWxsYmFjayk6CisgICAgICAgIChWb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKFZvaWRDYWxsYmFjazo6ZXhlY3V0ZSk6CisgICAgICAgIChWb2lkQ2FsbGJhY2s6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6dG9Wb2lkQ2FsbGJhY2spOgorICAgICAgICAq
IGh0bWwvVm9pZENhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvVm9pZENhbGxiYWNr
LmlkbDogQWRkZWQuCisKKzIwMDctMTAtMzAgIERhdmlkIEtpbHplciAgPGRka2lsemVyQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgR2VuZXJhdGVkIGZpbGVzIG1pc3NpbmcgZnJvbSBXZWJDb3JlJ3Mg
WGNvZGUgcHJvamVjdCBmaWxlCisgICAgICAgIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTQwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KKworICAgICAg
ICBBZGRlZCB0aGUgZm9sbG93aW5nIGZpbGVzIHRvIHRoZSBYY29kZSBwcm9qZWN0IGZpbGUgKG5v
dGUgdGhhdAorICAgICAgICBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlVGFibGUuY3BwIGlzIHVzZWQg
YXMgYSBoZWFkZXIgZmlsZSk6CisKKyAgICAgICAgLSBET01DU1NTdHlsZVNoZWV0UHJpdmF0ZS5o
CisgICAgICAgIC0gRE9NRXZlbnRQcml2YXRlLmgKKyAgICAgICAgLSBET01IVE1MQ29sbGVjdGlv
blByaXZhdGUuaAorICAgICAgICAtIERPTUhUTUxFbWJlZEVsZW1lbnRQcml2YXRlLmgKKyAgICAg
ICAgLSBET01IVE1MSUZyYW1lRWxlbWVudFByaXZhdGUuaAorICAgICAgICAtIERPTUhUTUxPYmpl
Y3RFbGVtZW50UHJpdmF0ZS5oCisgICAgICAgIC0gRE9NSFRNTFNlbGVjdEVsZW1lbnRQcml2YXRl
LmgKKyAgICAgICAgLSBET01UZXh0RXZlbnRJbnRlcm5hbC5oCisgICAgICAgIC0gSlNIVE1MSW5w
dXRFbGVtZW50QmFzZVRhYmxlLmNwcAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTog
UmVtb3ZlZCBET01TVkdFeGNlcHRpb24uaCBhbmQgSlNTVkdBbmltYXRlZFBvaW50cy5oCisgICAg
ICAgIHNpbmNlIHRoZWlyIGdlbmVyYXRlZCBjb2RlIHdhcyBub3QgdXNlZC4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIG1pc3NpbmcgaGVhZGVyIGZp
bGVzLgorCisyMDA3LTEwLTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBBZGVsZS4KKworICAgICAgICBJbml0aWFsIG1lZGlh
ICg8dmlkZW8+IGFuZCA8YXVkaW8+KSBzdXBwb3J0IGZyb20gZmVhdHVyZSBicmFuY2ggYW5kIAor
ICAgICAgICBRVEtpdCBiYXNlZCBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gbWF0Y2ggY3VycmVudCBkcmFm
dCBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2Nv
bmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUu
YmFzZS5leHA6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQXVkaW9FbGVtZW50Q29uc3Ry
dWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEF1ZGlvRWxlbWVudENv
bnN0cnVjdG9yOjpKU0hUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvcjo6aW1wbGVtZW50c0NvbnN0cnVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZh
Y3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNIVE1MV3JhcHBlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHA6CisgICAgICAgIChLSlM6OldpbmRvdzo6
Z2V0VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX3dpbmRvdy5oOgor
ICAgICAgICAoS0pTOjpXaW5kb3c6Oik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2lsbFNhdmVUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRSZXN0
b3JlRnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWdpc3RlckZvckNh
Y2hlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1bnJlZ2lzdGVyRm9y
Q2FjaGVDYWxsYmFja3MpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEJvb2xlYW5BdHRy
aWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp3aWxsU2F2ZVRvQ2FjaGUpOgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudDo6aXNQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnQu
aDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaFBy
b2dyZXNzRXZlbnQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldE5vZGUuaDoKKyAgICAgICAg
KiBkb20vUHJvZ3Jlc3NFdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jl
c3NFdmVudDo6UHJvZ3Jlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0V2ZW50
Ojppbml0UHJvZ3Jlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0V2ZW50Ojpp
bml0UHJvZ3Jlc3NFdmVudE5TKToKKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzRXZlbnQ6Omxlbmd0aENvbXB1dGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NFdmVudDo6bG9hZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlByb2dyZXNzRXZlbnQ6OnRvdGFsKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzRXZl
bnQ6OmlzUHJvZ3Jlc3NFdmVudCk6CisgICAgICAgICogZG9tL1Byb2dyZXNzRXZlbnQuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpIVE1MQXVkaW9FbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXVkaW9FbGVtZW50Ojp0YWdQcmlvcml0eSk6CisgICAgICAgICogaHRtbC9IVE1MQXVk
aW9FbGVtZW50LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppbmxpbmVUYWdMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdWRpb0NvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnZpZGVvQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c291
cmNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnVuY3Rpb25NYXApOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50Ojp+SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpzZXRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmNoZWNrRFREKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6aW5pdEFuZERpc3BhdGNoUHJvZ3Jlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50QXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6c2Vy
aWFsaXplVGltZU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRpbWVPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0VGltZU9mZnNldEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRUaW1lT2Zmc2V0QXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNyYyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50OjpzZXRTcmMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFNyYyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpuZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6YnVmZmVyaW5nUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1v
dmllTmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojptb3ZpZVJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2Vlayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpy
ZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Q3VycmVudFRpbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmRlZmF1bHRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0RGVmYXVsdFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1JhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1
dG9wbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldEF1dG9wbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9vcENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldExvb3BDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRTdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Omxvb3BTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRMb29wU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
bG9vcEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRMb29wRW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRMb29wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldEN1cnJlbnRMb29wKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRWb2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bXV0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGlja01lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNoZWNrSWZTZWVrTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1vdmllVm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojptb3ZpZURpZEVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojptb3ZpZUN1ZVBvaW50UmVhY2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRDdWVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVDdWVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpidWZmZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwbGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vla2Fi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZWZmZWN0aXZlU3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZWZmZWN0aXZlRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVmZmVjdGl2ZUxvb3BTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVMb29wRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFjdGl2ZWx5UGxheWluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTYXZlVG9DYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRSZXN0b3JlRnJvbUNhY2hlKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojptb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojppc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Oik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpDYWxsYmFja0VudHJ5OjpDYWxsYmFja0Vu
dHJ5KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU291cmNlRWxlbWVudDo6SFRNTFNvdXJjZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNvdXJjZUVsZW1lbnQ6On5IVE1MU291cmNlRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU291cmNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OnNyYyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U291cmNlRWxlbWVudDo6c2V0U3JjKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVt
ZW50OjptZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxlbWVudDo6c2V0TWVk
aWEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OnR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OnNldFR5cGUpOgorICAgICAgICAqIGh0bWwv
SFRNTFNvdXJjZUVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNl
RWxlbWVudDo6ZW5kVGFnUmVxdWlyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJj
ZUVsZW1lbnQ6OnRhZ1ByaW9yaXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50
LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAgICog
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQ6OnZpZGVvV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6dmlkZW9IZWlnaHQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnRhZ1ByaW9yaXR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmlzVmlkZW8pOgorICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvTWVkaWFF
cnJvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRXJyb3I6Oik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVycm9yOjpNZWRpYUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRXJyb3I6OmNvZGUpOgorICAgICAgICAqIGh0bWwvTWVkaWFFcnJvci5pZGw6IEFkZGVkLgor
ICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5jcHA6IEFkZGVkLgorICAgICAgICAoVGltZVJhbmdl
czo6VGltZVJhbmdlcyk6CisgICAgICAgIChUaW1lUmFuZ2VzOjpzdGFydCk6CisgICAgICAgIChU
aW1lUmFuZ2VzOjplbmQpOgorICAgICAgICAoVGltZVJhbmdlczo6YWRkKToKKyAgICAgICAgKFRp
bWVSYW5nZXM6OmNvbnRhaW4pOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OlRpbWVSYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZVJhbmdlczo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6
OlJhbmdlOjpSYW5nZSk6CisgICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmlkbDogQWRkZWQuCisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGlzZVN1cHBvcnRlZE1vdmll
TUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpc2VNSU1FVHlwZVJlZ2lzdHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTW92aWVN
SU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0
ZWRNb3ZpZU1JTUVUeXBlcyk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vdmllLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb3ZpZTo6TW92aWUpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWU6On5Nb3Zp
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpN
b3ZpZTo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6cGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb3ZpZTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWU6OmR1
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpjdXJyZW50VGltZSk6CisgICAgICAg
IChXZWJDb3JlOjpNb3ZpZTo6c2Vlayk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6cGF1c2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpzZWVraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdmllOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6aGFzVmlkZW8p
OgorICAgICAgICAoV2ViQ29yZTo6TW92aWU6Om5ldHdvcmtTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb3ZpZTo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6dm9sdW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpzZXRWb2x1bWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TW92aWU6OnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWU6OnNldFJhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TW92aWU6Om11dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpz
ZXRNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6ZGF0YVJhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TW92aWU6OnNldEVuZFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWU6OmFk
ZEN1ZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpyZW1vdmVDdWVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6Y2xlYXJDdWVQb2ludHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TW92aWU6Om1heFRpbWVCdWZmZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6bWF4
VGltZVNlZWthYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpieXRlc0xvYWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6dG90YWxCeXRlc0tub3duKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdmllOjp0b3RhbEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpzZXRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjp2aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdmllOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpwYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW92aWU6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW92
aWU6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjp2b2x1bWVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllOjpkaWRFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TW92aWU6OmN1ZVBvaW50UmVhY2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTW92aWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb3ZpZUNsaWVudDo6fk1vdmll
Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllQ2xpZW50Ojptb3ZpZU5ldHdvcmtTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVDbGllbnQ6Om1vdmllUmVhZHlTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVDbGllbnQ6Om1vdmllVm9sdW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZUNsaWVudDo6bW92aWVEaWRFbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW92aWVDbGllbnQ6Om1vdmllQ3VlUG9pbnRSZWFjaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vdmllOjpwYXJlbnRXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW92
aWU6OnNldFBhcmVudFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6cmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3ZpZTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTW92aWVQcml2YXRlUVRLaXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01vdmllUHJpdmF0ZVFUS2l0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
dmllUHJpdmF0ZTo6TW92aWVQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0
ZTo6fk1vdmllUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OmNyZWF0
ZVFUTW92aWUpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpjcmVhdGVRVE1vdmll
Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OmNyZWF0ZVFUVGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TW92aWVQcml2YXRlOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6cGF1
c2UpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpkdXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdmllUHJpdmF0ZTo6c2Vlayk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OnNl
dEVuZFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjphZGRDdWVQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OnJlbW92ZUN1ZVBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6Y2xlYXJDdWVQb2ludHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW92aWVQcml2YXRlOjpzdGFydEN1ZVBvaW50VGltZXJJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OmNhbmNlbFNlZWspOgorICAgICAgICAoV2ViQ29yZTo6
TW92aWVQcml2YXRlOjpzZWVrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVBy
aXZhdGU6OmN1ZVBvaW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZh
dGU6OnBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OnNlZWtpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb3ZpZVByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmll
UHJpdmF0ZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6c2V0
TXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpzZXRSYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6ZGF0YVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW92aWVQcml2YXRlOjpuZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2
YXRlOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6bWF4VGlt
ZUJ1ZmZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6bWF4VGltZVNlZWth
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6bWF4VGltZUxvYWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OmJ5dGVzTG9hZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdmllUHJpdmF0ZTo6dG90YWxCeXRlc0tub3duKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdmllUHJpdmF0ZTo6dG90YWxCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZh
dGU6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjp1cGRhdGVT
dGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpsb2FkU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJpdmF0ZTo6cmF0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb3ZpZVByaXZhdGU6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmllUHJp
dmF0ZTo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OmRp
ZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpNb3ZpZVByaXZhdGU6OnNldFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdmllUHJpdmF0ZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW92aWVQcml2YXRlOjpn
ZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgICgtW1dlYkNvcmVNb3ZpZU9ic2VydmVyIGxvYWRT
dGF0ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVNb3ZpZU9ic2VydmVyIHJhdGVDaGFu
Z2VkOl0pOgorICAgICAgICAoLVtXZWJDb3JlTW92aWVPYnNlcnZlciBzaXplQ2hhbmdlZDpdKToK
KyAgICAgICAgKC1bV2ViQ29yZU1vdmllT2JzZXJ2ZXIgdGltZUNoYW5nZWQ6XSk6CisgICAgICAg
ICgtW1dlYkNvcmVNb3ZpZU9ic2VydmVyIHZvbHVtZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dl
YkNvcmVNb3ZpZU9ic2VydmVyIGRpZEVuZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZU1vdmllT2Jz
ZXJ2ZXIgc2V0Q2FsbGJhY2s6V2ViQ29yZTo6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlkZW86OlJlbmRlclZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjp+
UmVuZGVyVmlkZW8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86Om1vdmllKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjp2aWRlb1NpemVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWRlbzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjp1cGRhdGVGcm9t
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6dXBkYXRlTW92aWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OmlzV2lkdGhTcGVjaWZpZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OmlzSGVpZ2h0U3BlY2lmaWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZGVvOjpjYWxjUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWRlbzo6Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZGVvOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWRlbzo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZGVvOjpjYWxjUHJlZldpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVv
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OnJlbmRlck5hbWUpOgor
CisyMDA3LTEwLTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKworICAgICAgICBBZGQgSW50ZXJmYWNlIGFuZCBDbGFzcyBV
VUlEcyB0byB0aGUgSURMcyBpbiBwcmVwYXJhdGlvbiBvZiBhZGRpbmcKKyAgICAgICAgYXV0b2dl
bmVyYXRpb24gb2YgdGhlIENPTSBET00gYmluZGluZ3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0lETFBhcnNlci5wbTogUmVsYXggcGFyc2luZyBydWxlcyB0byBhbGxvdyBuZXdsaW5l
cyBhcyB3aGl0ZXNwYWNlLgorICAgICAgICAqIGNzcy9DU1NDaGFyc2V0UnVsZS5pZGw6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU0ltcG9ydFJ1
bGUuaWRsOgorICAgICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuaWRsOgorICAgICAgICAqIGNzcy9D
U1NQYWdlUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbDoKKyAg
ICAgICAgKiBjc3MvQ1NTUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1J1bGVMaXN0LmlkbDoK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGw6CisgICAgICAgICogY3NzL0NT
U1N0eWxlUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaWRsOgorICAgICAg
ICAqIGNzcy9DU1NVbmtub3duUnVsZS5pZGw6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmlkbDoK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvQ291bnRlci5p
ZGw6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5pZGw6CisgICAgICAgICogY3NzL1JHQkNvbG9y
LmlkbDoKKyAgICAgICAgKiBjc3MvUmVjdC5pZGw6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXQu
aWRsOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0TGlzdC5pZGw6CisgICAgICAgICogZG9tL0F0
dHIuaWRsOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaWRsOgorICAgICAgICAqIGRvbS9D
aGFyYWN0ZXJEYXRhLmlkbDoKKyAgICAgICAgKiBkb20vQ29tbWVudC5pZGw6CisgICAgICAgICog
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1l
bnRUeXBlLmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0Vu
dGl0eS5pZGw6CisgICAgICAgICogZG9tL0VudGl0eVJlZmVyZW5jZS5pZGw6CisgICAgICAgICog
ZG9tL0V2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5pZGw6CisgICAgICAg
ICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFwLmlkbDoK
KyAgICAgICAgKiBkb20vTm9kZS5pZGw6CisgICAgICAgICogZG9tL05vZGVMaXN0LmlkbDoKKyAg
ICAgICAgKiBkb20vTm90YXRpb24uaWRsOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaWRsOgorICAgICAgICAqIGRvbS9UZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZh
c0dyYWRpZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZhc1BhdHRlcm4uaWRsOgorICAgICAg
ICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MQlJFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxCYXNlRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxCbG9ja3F1b3RlRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQu
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24u
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTERMaXN0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MRGlyZWN0b3J5RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRGl2RWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxGb250RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxIUkVsZW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvSFRNTEhlYWRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxI
ZWFkaW5nRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MSHRtbEVsZW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxJc0luZGV4RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MTElFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuaWRsOgor
ICAgICAgICAqIGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TExpbmtFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNYXBFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
TWVudUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNb2RFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPTGlz
dEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsOgorICAg
ICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aWRsOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTFBhcmFtRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MUHJlRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MUXVvdGVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBo
dG1sL0hUTUxTY3JpcHRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaWRsOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlQ2VsbEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5p
ZGw6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZVJvd0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6Cisg
ICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxV
TGlzdEVsZW1lbnQuaWRsOgorCisyMDA3LTEwLTMwICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFw
cGxlLmNvbT4KKworICAgICAgICBSUyBieSBEYXJpbi4KKworICAgICAgICAqIHBhZ2UvQW5pbWF0
aW9uQ29udHJvbGxlci5jcHA6IChXZWJDb3JlOjpibGVuZEZ1bmMpOiBVc2UgbHJvdW5kIGluc3Rl
YWQgb2Ygcm91bmQuCisKKzIwMDctMTAtMjkgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCisKKyAgICAgICAg
LSBBbGxvdyBzaG93aW5nIGFuZCBjbG9zaW5nIHRoZSBpbnNwZWN0b3IgcHJvZ3JhbWF0aWNhbGx5
LgorICAgICAgICAtIEFkZCBzaG93Q29uc29sZSgpIGFuZCBzaG93VGltZWxpbmUoKSBtZXRob2Rz
LiAKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6IEFkZCBleHBvcnRzIGZvciBXZWJLaXQu
CisgICAgICAgICogcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGxTaW1wbGVGdW5jdGlvbik6IFJlbmFtZWQgZnJvbSBjYWxsQ2xlYXJGdW5jdGlvbigp
LgorICAgICAgICAoV2ViQ29yZTo6dW5sb2FkaW5nKTogUmVuYW1lZCB0byBjbG9zZSgpLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0KTogTW92ZWQg
c2hvd2luZyBjb2RlIHRvIHNob3coKS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnNldFdpbmRvd1Zpc2libGUpOiBTaG93IHRoZSB0aW1lbGluZSBvciBjb25zb2xlIGlm
IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3cpOiBD
b2RlIGZhY3RvcmVkIG91dCBvZiBpbnNwZWN0KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpzaG93Q29uc29sZSk6IENhbGwgc2hvdygpIGFuZCB0aGUgSlMgc2hvd0Nv
bnNvbGUoKS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dUaW1l
bGluZSk6IENhbGwgc2hvdygpIGFuZCB0aGUgSlMgc2hvd1RpbWVsaW5lKCkuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpjbGVhclNjcmlwdFJlc291cmNlcyk6IENhbGwgdGhlIG5ldyBj
YWxsU2ltcGxlRnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpjbGVhckRhdGFiYXNlU2NyaXB0UmVzb3VyY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpjbGVhclNjcmlwdENvbnNvbGVNZXNzYWdlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJOZXR3b3JrVGlt
ZWxpbmUpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaDogQWRk
IGFuZCByZW5hbWUgbWV0aG9kcy4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3Iu
anM6IEFkZCBzaG93Q29uc29sZSgpIGFuZCBzaG93VGltZWxpbmUoKS4KKworMjAwNy0xMC0zMCAg
QWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtLgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIHBhZ2UvQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHA6IChXZWJDb3JlOjpibGVuZEZ1bmMpOgorCisyMDA3LTEwLTMwICBBZGVsZSBQ
ZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
KworICAgICAgICBXZWJDb3JlIHBhcnQgb2YgZml4IGZvciBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDU3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTEwMzYyNT4g
UkVHUkVTU0lPTjogQ2FwcyBsb2NrIGljb24gc2hvdWxkIHNob3cgaW4gcGFzc3dvcmQgZmllbGRz
CisKKyAgICAgICAgVGVzdDogbWFudWFsLXRlc3RzL3Bhc3N3b3JkLWNhcHMtbG9jay5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOiBBZGRlZCBzeW1ib2wgZm9yIGNhcHNMb2NrU3Rh
dGVNYXlIYXZlQ2hhbmdlZC4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOiAoV2ViQ29yZTo6
RnJhbWU6OnNldElzQWN0aXZlKTogQ2FsbHMgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkLgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDogKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKTogQWRkZWQuIFRlbGxzIHRoZSBmb2N1c2VkIG5v
ZGUncyByZW5kZXJlciB0aGF0IHRoZSBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQuCisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
S2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbTog
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMb2NrU3RhdGUpOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOiAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSk6IEFkZGVkLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6cGFpbnQpOiBBZGRlZC4gIElmIG1fc2hvdWxkRHJhd0Nh
cHNMb2NrSW5kaWNhdG9yIGlzIHRydWUsIHBhaW50cyB0aGUgY2FwcyBsb2NrIGluZGljYXRvciBh
ZnRlciB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
Ojpmb3J3YXJkRXZlbnQpOiBXaGVuIHRoZSBjb250cm9sIGdldHMgYW5kIGxvc2VzIGZvY3VzLCB1
cGRhdGUgdGhlIGNhcHMgbG9jayBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sOjpjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQpOiBBZGRlZC4gVXBkYXRlcyBtX3No
b3VsZERyYXdDYXBzTG9ja0luZGljYXRvciwgd2hpY2ggaXMgdHJ1ZSBpZiB0aGUgZmllbGQgaXMg
YSBwYXNzd29yZCBmaWVsZCwgCisgICAgICAgICBhbmQgdGhlIGZyYW1lIGlzIGFjdGl2ZSwgYW5k
IHRoZSBlbGVtZW50IGlzIGZvY3VzZWQsIGFuZCB0aGUgY2FwcyBsb2NrIGlzIG9uLiAgQ2F1c2Vz
IGEgcmVwYWludCB3aGVuIG1fc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yIGNoYW5nZXMgc3Rh
dGUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6IEFkZGVkIG1fc2hv
dWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaDogKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2Vk
KTogQWRkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDogKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjpwYWludENhcHNMb2NrSW5kaWNhdG9yKTogQWRkZWQuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tOiAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0
b3IpOiBBZGRlZC4gIENhbGxzIHdrRHJhd0NhcHNMb2NrSW5kaWNhdG9yLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6IChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRDYXBzTG9ja0luZGljYXRvcik6IEFkZGVkLiAgQ2FsbHMgcGFpbnRUaGVtZVBhcnQg
Zm9yIHRoZSBDYXBzTG9ja1BhcnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmg6CisKKzIwMDctMTAtMzAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisg
ICAgICAgIExhbmQgc3VwcG9ydCBmb3IgaW1wbGljaXQgYW5pbWF0aW9uIGluIENTUy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBtaXR6LCBkYXJpbgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVGltaW5nRnVuY3Rpb25WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uUHJv
cGVydHkpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcFRyYW5zaXRpb25EdXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBUcmFuc2l0aW9uUmVwZWF0Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwVHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcFRyYW5zaXRp
b25Qcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWU6OkNTU1RpbWluZ0Z1bmN0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6eDEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6eTEpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6eDIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6eTIpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0UmVuZGVyU3R5bGUpOgorICAgICAgICAqIHBhZ2UvQW5p
bWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJ2ZURhdGE6OkN1cnZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJ2ZURhdGE6OnNhbXBsZUN1cnZlWCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZURhdGE6OnNhbXBsZUN1cnZlWSk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJ2ZURhdGE6OnNhbXBsZUN1cnZlRGVyaXZhdGl2ZVgpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VydmVEYXRhOjpzb2x2ZUN1cnZlWCk6CisgICAgICAgIChXZWJDb3JlOjpzb2x2ZUVwc2lsb24p
OgorICAgICAgICAoV2ViQ29yZTo6c29sdmVDdWJpY0JlemllckZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpmaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGVJbXBsaWNpdEFuaW1hdGlvbjo6fkNvbXBvc2l0ZUltcGxpY2l0QW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUltcGxpY2l0QW5pbWF0aW9uOjpoYXNBbmlt
YXRpb25Gb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6
SW1wbGljaXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246
On5JbXBsaWNpdEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlv
bjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnByb2dyZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpJbXBs
aWNpdEFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVJbXBs
aWNpdEFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVJbXBs
aWNpdEFuaW1hdGlvbjo6YW5pbWF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUlt
cGxpY2l0QW5pbWF0aW9uOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6aGFzSW1wbGljaXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6fkFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjp1cGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjo6bV9kYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6On5BbmltYXRpb25Db250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEltcGxpY2l0QW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVJ
bXBsaWNpdEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxl
cjo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJv
bGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9BbmltYXRpb25Db250cm9s
bGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVByaXZhdGU6OkZyYW1lUHJpdmF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6ZGVzdHJveSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEFuaW1hdGFibGVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpUaW1pbmdGdW5jdGlvbjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaW1pbmdGdW5jdGlvbjo6eDEpOgorICAgICAgICAoV2ViQ29yZTo6VGlt
aW5nRnVuY3Rpb246OnkxKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjp4Mik6
CisgICAgICAgIChXZWJDb3JlOjpUaW1pbmdGdW5jdGlvbjo6eTIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGltaW5nRnVuY3Rpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNpdGlvbjo6
dHJhbnNpdGlvblByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zaXRpb246OnNldFRy
YW5zaXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlh
bFRyYW5zaXRpb25Qcm9wZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmRlc3Ryb3kpOgorCisyMDA3LTEw
LTI5ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBIeWF0dC4KKworICAgICAgICBGaXggZm9yIDxyZGFyOi8vcHJvYmxlbS81Mzk5NjE0PiBhbmNo
b3IgdGFnIGlzIG5vdCByZW5kZXJlZCB3aXRob3V0IAorICAgICAgICB0ZXh0IGNvbnRlbnQsIHdv
cmtzIGluIEZpcmVmb3ggd2l0aCBDU1MgYmFja2dyb3VuZC1pbWFnZSAoMTMyMzcpCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbGxvd3MgZW1wdHkgaW5saW5lcyB0aGF0IGhhdmUgYm94IGRlY29yYXRp
b25zIG9yIHdpZHRoIAorICAgICAgICBmcm9tIGJvcmRlci9wYWRkaW5nL21hcmdpbiB0byBoYXZl
IGxpbmUgYm94ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvYmlkaS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppbmxpbmVGbG93QWxsb3dzTGluZUJveCk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRo
YXQgCisgICAgICAgIGRlZmluZXMgd2hlbiB3ZSBhbGxvdyBhbiBpbmxpbmUgZmxvdyB0byBoYXZl
IGEgbGluZSBib3guCisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3gpOiBDYWxsIGlu
bGluZUZsb3dBbGxvd3NMaW5lQm94LgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU2tpcFdoaXRl
c3BhY2VBZnRlclN0YXJ0T2JqZWN0KTogTmV3IGZ1bmN0aW9uIHRvIAorICAgICAgICBtZXJnZSBz
b21lIHNoYXJlZCBjb2RlIGJldHdlZW4gbGlzdCBtYXJrZXJzIGFuZCBlbXB0eSBpbmxpbmUgZmxv
d3MgCisgICAgICAgIHRoYXQgZmFsbCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmVCcmVhayk6IE1ha2UgZmxvd3Mg
bW9yZSBsaWtlIAorICAgICAgICBsaXN0IG1hcmtlcnMuCisKKyAgICAgICAgT25lIGludGVyZXN0
aW5nIHNpZGUgZWZmZWN0IG9mIHRoaXMgYnVnIGFwcGVhcmVkIGluIG91ciB4aHRtbC9zdmcgCisg
ICAgICAgIHRlc3RzIHRoYXQgZ2VuZXJhdGUgcGFyc2VyIGVycm9yIHRhZ3MuIFRoZSB0YWcgd2Ug
Z2VuZXJhdGUgd2FzIAorICAgICAgICBhY3R1YWxseSBhbiBlbXB0eSBpbmxpbmUgd2l0aCBib3gg
ZGVjb3JhdGlvbnMuIFRoaXMgcGF0Y2ggY2F1c2VzIAorICAgICAgICB0aG9zZSBpbmxpbmVzIHRv
IGRyYXcgbm93LCBhbmQgdGhlIHBhcnNlciBlcnJvcnMgbG9va2VkIHN0cmFuZ2UuIFNvIAorICAg
ICAgICBJIGNoYW5nZWQgaXQgc28gdGhhdCB0aGUgcGFyc2VyZXJyb3IgdGFnIGlzIGRpc3BsYXk6
YmxvY2suIFRoaXMgCisgICAgICAgIG1hdGNoZXMgRmlyZWZveCwgYW5kIEkgdGhpbmsgd2FzIHRo
ZSBvcmlnaW5hbCBpbnRlbnQgb2YgdGhlIHRhZyAKKyAgICAgICAgc2luY2UgdGhhdCBjYXVzZXMg
aXRzIHJlZCBiYWNrZ3JvdW5kIGFuZCBib3JkZXIgdG8gc2hvdyB1cC4KKyAgICAgICAgKiBkb20v
WE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJy
b3JIZWFkZXIpOgorCisyMDA3LTEwLTI5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KKworICAgICAgICAtIGZpeCBjcmFz
aGluZyB0ZXN0cyBmYXN0L2ZyYW1lcy9pbmxpbmUtb2JqZWN0LWluc2lkZS1mcmFtZXNldC5odG1s
IGFuZAorICAgICAgICAgIGZhc3QvZm9ybXMvZm9ybS1oaWRlcy10YWJsZS5odG1sCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6ZGVzdHJveSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmRlc3Ryb3kpOgorCisyMDA3LTEwLTI5ICBEYW4g
QmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBS
b2Jlbi4KKworICAgICAgICAtIGZpeCBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTc1MAorICAgICAgICAgIFJFR1JFU1NJT04ocjI3MTczKTogV2ViIEluc3BlY3RvciBm
cmVlemVzIGJlbmVhdGggSW1hZ2U6OmRyYXdQYXR0ZXJuKCkKKworICAgICAgICBUZXN0OiBmYXN0
L2JhY2tncm91bmRzL3NpemUvemVyby5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6
IEFkZGVkIGFuIEFTU0VSVCBhbmQgYW4gZWFybHkgcmV0dXJuCisgICAgICAgIHRvIGd1YXJkIGFn
YWluc3Qgc2luZ3VsYXIgcGF0dGVybiB0cmFuc2Zvcm1zLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjbHVhdGVCYWNrZ3JvdW5kU2l6ZSk6
IENoYW5nZWQgdG8gZW5zdXJlIGEgbWluaW11bSB0aWxlCisgICAgICAgIHNpemUgb2YgMXgxLgor
CisyMDA3LTEwLTI5ICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAgQWRkIEdUSysgY29udmVuaWVuY2UgY29udmVyc2lv
bnMgZm9yIHZhcmlvdXMgcHJpbWl0aXZlcworCisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRQb2ludC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ludFBvaW50R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRQb2lu
dDo6SW50UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UG9pbnQ6Om9wZXJhdG9yIEdka1Bv
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW50UmVjdEd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdDo6SW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRSZWN0OjpvcGVyYXRvciBHZGtSZWN0YW5nbGUpOgorCisyMDA3LTEwLTI5ICBKb24g
SG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzLgorCisgICAgICAgIFNwZWN1bGF0aXZlIGZpeCBmb3IgPHJkYXI6Ly81NTM4NDg5PiBT
YWZhcmkgMy4wLjQgc2VlZCBoYW5ncyBhdAorICAgICAgICBodHRwOi8vdGdtb25saW5lLmZ1dHVy
ZWdhbWVyLml0LyAod29ya3MgZmluZSBvbiBTYWZhcmkgMi4wLjQgYW5kIFNhZmFyaQorICAgICAg
ICBCZXRhIGZvciBNYWMpCisgICAgICAgIAorICAgICAgICBJIGNhbm5vdCByZXByb2R1Y2UgdGhp
cyBoYW5nLCBidXQgaXQgaXMgbGlrZWx5IGR1ZSB0byBvdXIgbm90IGxpbWl0aW5nCisgICAgICAg
IFdNX1VTRVIrMSBtZXNzYWdlcyBvciBJbnZhbGlkYXRlUmVjdCBjYWxscyBmb3IgYSBwbHVnaW4g
d2l0aCBpbml0aWFsbHktCisgICAgICAgIHVua25vd24gTUlNRSB0eXBlLiBUaGUgZW1iZWQgdGFn
IG9uIHRoZSBwYWdlIGlzIG1pc3NpbmcgYSB0eXBlCisgICAgICAgIGF0dHJpYnV0ZSwgc28gYXMg
ZmFsbGJhY2ssIHdlIGNob29zZSB0byBsb2FkIHRoZSBGbGFzaCBwbHVnaW4gYmFzZWQgb24KKyAg
ICAgICAgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mICJzd2YuIiBIb3dldmVyLCB3ZSBkbyBub3QgcmVj
b3JkIHRoaXMgZGV0ZXJtaW5lZAorICAgICAgICBNSU1FIHR5cGUsIGFuZCBzbyBvdXIgcXVpcmtz
IGNhbm5vdCBiZSBlc3RhYmxpc2hlZC4KKyAgICAgICAgCisgICAgICAgIENoYW5nZWQgZmluZFBs
dWdpbigpIHNvIHRoYXQsIGlmIGl0IGZhaWxzIHRvIGZpbmQgYSBwbHVnaW4gZm9yIHRoZQorICAg
ICAgICBnaXZlbiBNSU1FIHR5cGUsIGl0IHdpbGwgbG9va3VwIHRoZSBNSU1FIHR5cGUgZm9yIHRo
ZSBmaWxlIGV4dGVuc2lvbiAtCisgICAgICAgIG92ZXJ3cml0aW5nIGl0cyBwYXNzZWQgTUlNRSB0
eXBlIHBhcmFtZXRlciAtIGFuZCBzZWFyY2ggZm9yIGEgcGx1Z2luCisgICAgICAgIGZvciB0aGF0
IE1JTUUgdHlwZS4KKworICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlV2luOjpwbHVnaW5Gb3JNSU1FVHlw
ZSk6IEFkZGVkIGFuIGVhcmx5IHJldHVybgorICAgICAgICBpZiB0aGUgTUlNRSB0eXBlIGlzIGVt
cHR5CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZVdpbjo6TUlNRVR5cGVGb3JFeHRl
bnNpb24pOiBBZGRlZCB0byByZXBsYWNlCisgICAgICAgIHBsdWdpbkZvckV4dGVuc2lvbi4gUmV0
dXJucyBhIFN0cmluZyB3aXRoIHRoZSBNSU1FIHR5cGUgZm9yIHRoZSBmaWxlCisgICAgICAgIGV4
dGVuc2lvbi4gQWxzbywgY2hhbmdlZCB0byB1c2UgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJlcwor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2VXaW46OmZpbmRQbHVnaW4pOiBJZiB3ZSBm
YWlsIHRvIGZpbmQgYSBwbHVnaW4KKyAgICAgICAgZm9yIHRoZSBnaXZlbiBleHRlbnNpb24sIG92
ZXJ3cml0ZSB0aGUgaW5jb21pbmcgTUlNRSB0eXBlIHBhcmFtZXRlcgorICAgICAgICB3aXRoIHRo
ZSBNSU1FIHR5cGUgZm9yIHRoZSBmaWxlIGV4dGVuc2lvbiwgYW5kIHNlYXJjaCBmb3IgYSBwbHVn
aW4gZm9yCisgICAgICAgIHRoYXQgTUlNRSB0eXBlLiBBbHNvLCBjaGFuZ2VkIHRoZSB3YXkgdGhh
dCB0aGUgZXh0ZW5zaW9uIGlzIGRldGVybWluZWQKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRh
dGFiYXNlV2luOjpjcmVhdGVQbHVnaW5WaWV3KTogUGFzcyBhIG11dGFibGUgU3RyaW5nCisgICAg
ICAgIHRvIGZpbmRQbHVnaW4oKSBzbyB0aGF0IGl0IGNhbiBiZSB1cGRhdGVkIGlmIG5lY2Vzc2Fy
eQorICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmg6IENoYW5nZWQgZmlu
ZFBsdWdpbigpIHRvIHRha2UgYSBub24tCisgICAgICAgIGNvbnN0IFN0cmluZywgcmVtb3ZlZCBk
ZWZpbml0aW9uIG9mIHBsdWdpbkZvckV4dGVuc2lvbiwgYWRkZWQKKyAgICAgICAgZGVmaW5pdGlv
biBmb3IgTUlNRVR5cGVGb3JFeHRlbnNpb24KKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5Q
YWNrYWdlV2luLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlV2luOjpmZXRj
aEluZm8pOiBTdG9yZSB0aGUgTUlNRSB0eXBlIGluCisgICAgICAgIGxvd2VyY2FzZSBmb3IgZWFz
aWVyIGNvbXBhcmVzCisKKzIwMDctMTAtMjkgIEFuZHJldyBXZWxsaW5ndG9uICA8cHJvdG9uQHdp
cmV0YXBwZWQubmV0PgorCisgICAgICAgIE5vdCByZXZpZXdlZCAtIGJ1aWxkIGZpeAorCisgICAg
ICAgIEZpeCBNYWMgQnVpbGQuCisgICAgICAgIAorICAgICAgICBXZWJLaXQvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3Nvci5jcHA6Nzk6IHdhcm5pbmc6ICdsZXZlbCcgbWF5IGJlIHVzZWQgdW5pbml0
aWFsaXplZAorICAgICAgICBpbiB0aGlzIGZ1bmN0aW9uCisKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9y
RnVuYyk6CisKKzIwMDctMTAtMjkgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjUKKyAgICAgICAgW0dUS10gV2ViQ29yZS5wcm8gaGVh
ZGVyIGRlcGVuZGVuY2llcyBhcmUgaW5jb3JyZWN0CisKKyAgICAgICAgRml4IGhlYWRlciBkZXBl
bmRlbmNpZXMgaW4gdGhlIGJ1aWxkIHN5c3RlbQorCisgICAgICAgIElOQ0xVREVQQVRIIGFuZCBE
RVBFTkRQQVRIIGFyZSBub3cgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFdlYkNvcmUucHJvOgor
CisyMDA3LTEwLTI5ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBC
dWlsZCBmaXguCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjptYXBUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pOgorCisyMDA3LTEwLTI5ICBEYXZpZCBIeWF0
dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBMYW5kIHRoZSBiYWNrIGVuZCBmb3IgQ1NT
IGFuaW1hdGVkIHByb3BlcnR5IHRyYW5zaXRpb25zLiAgSSBhbSBsYW5kaW5nIHRoaXMgaW4gc3Rh
Z2VzLCBzbyB0aGUgQW5pbWF0aW9uQ29udHJvbGxlcgorICAgICAgICBjbGFzcyBpcyBkZWxpYmVy
YXRlbHkgbGVmdCBlbXB0eS4KKworICAgICAgICBSZXZpZXdlZCBieSBkYXJpbi9hcm9iZW4KKwor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL0NTU1Rp
bWluZ0Z1bmN0aW9uVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1
ZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUaW1pbmdG
dW5jdGlvblZhbHVlOjpmaXJzdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OnNlY29uZFBvaW50KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbjoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUGFnZTo6cmVzdG9yZSk6CisgICAgICAgICogcGFnZS9BbmltYXRpb25Db250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpB
bmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xs
ZXI6On5BbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNv
bnRyb2xsZXI6OmNhbmNlbFRyYW5zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bkNvbnRyb2xsZXI6OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1h
dGlvbkNvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvbkNvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvQW5p
bWF0aW9uQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjphbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lOjpjbGVhclRpbWVycyk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVQcml2YXRlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldFN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6ZGVzdHJveSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFuaW1hdGlvbkNv
bnRyb2xsZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNpdGlv
bjo6VHJhbnNpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2l0aW9uOjp+VHJhbnNpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2l0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6VHJhbnNpdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2l0aW9uOjpmaWxsVW5zZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6flN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjp0
cmFuc2l0aW9uRGF0YUVxdWl2YWxlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmRpZmYpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpCYWNr
Z3JvdW5kTGF5ZXI6Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6VGltaW5nRnVuY3Rpb246OlRp
bWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zaXRpb246Om5leHQpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNpdGlvbjo6aXNUcmFuc2l0aW9uRHVyYXRpb25TZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNpdGlvbjo6aXNUcmFuc2l0aW9uUmVwZWF0Q291bnRTZXQpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhbnNpdGlvbjo6aXNUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb25TZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNpdGlvbjo6aXNUcmFuc2l0aW9uUHJvcGVydHlTZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNpdGlvbjo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2l0aW9uOjpjbGVhclRyYW5zaXRpb25EdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2l0aW9uOjpjbGVhclRyYW5zaXRpb25SZXBlYXRDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2l0aW9uOjpjbGVhclRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2l0aW9uOjpjbGVhclRyYW5zaXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2l0aW9uOjp0cmFuc2l0aW9uRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNpdGlvbjo6dHJhbnNpdGlvblJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zaXRpb246OnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2l0aW9uOjp0cmFuc2l0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNpdGlvbjo6c2V0VHJhbnNpdGlvbkR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
aXRpb246OnNldFRyYW5zaXRpb25SZXBlYXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2l0aW9uOjpzZXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNpdGlvbjo6c2V0VHJhbnNpdGlvblByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zaXRpb246OnNldE5leHQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNpdGlvbjo6b3BlcmF0
b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsZWFyVHJhbnNpdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaGVyaXRUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zaXRpb25EdXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zaXRpb25SZXBlYXRDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zaXRpb25UaW1pbmdGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zaXRpb25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmRlc3Ryb3kpOgorCisyMDA3LTEwLTI5ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
KworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQwCisg
ICAgICAgIFhTTFQgZG9lcyBub3QgcmVwb3J0IGVycm9ycyB0byB0aGUgdXNlcgorCisgICAgICAg
IE1hZGUgcGFyc2VFcnJvckZ1bmMgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIG9mIFhTTFRQcm9j
ZXNzb3IgdG8gYmUgcmV1c2FibGUgZnJvbSBYU0xTdHlsZXNoZWV0LgorICAgICAgICBTd2l0Y2hl
ZCB0byB4bWxTZXRTdHJ1Y3R1cmVkRXJyb3JGdW5jIHRvIGdldCBhbiBlcnJvciBzdHJ1Y3R1cmUg
aW5zdGVhZCBvZiBwcmUtZm9ybWF0dGVkIGNvbnNvbGUKKyAgICAgICAgb3V0cHV0LiBHb3Qgcmlk
IG9mIERlcHJlY2F0ZWRTdHJpbmcgaW4gWFNMVFByb2Nlc3Nvci4KKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlYU0xUcmFuc2Zv
cm0pOgorICAgICAgICAqIHhtbC9YU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpwYXJzZUVycm9yRnVuYyk6
CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dFhTTFRMb2FkQ2FsbEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzYXZlUmVzdWx0VG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjp4c2x0UGFyYW1BcnJheUZyb21QYXJhbWV0ZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6
ZnJlZVhzbHRQYXJhbUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNy
ZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVu
dEZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6eHNsdFN0eWxlc2hlZXRQb2ludGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnhtbERvY1B0ckZyb21Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlc3VsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OnRyYW5z
Zm9ybVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OnRyYW5zZm9y
bVRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3Jt
VG9GcmFnbWVudCk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTTFRQcm9jZXNzb3I6OnNldFhTTFN0eWxlc2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6WFNMVFByb2Nlc3Nvcjo6aW1wb3J0U3R5bGVzaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpY
U0xUUHJvY2Vzc29yOjp4c2xTdHlsZXNoZWV0KToKKworMjAwNy0xMC0yOSAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4u
CisKKyAgICAgICAgLSBmaXggPHJkYXI6Ly9wcm9ibGVtLzU0MjQ0NTU+IFJFR1JFU1NJT04gKHIy
MTE2OC1yMjExOTMsIFRpZ2VyIG9ubHkpOiBTYWZhcmkgc2Nyb2xsYmFyIGlzIGNsaXBwZWQgYXQg
dG9wIHdoZW4gbG9hZGluZyBwYXJ0aWN1bGFyIFJTUyBwYWdlCisKKyAgICAgICAgVGVzdDogZmFz
dC9yZXBhaW50L2xheW91dC1zdGF0ZS1vbmx5LXBvc2l0aW9uZWQuaHRtbAorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMpOiBQb3AgbGF5b3V0IHN0YXRlCisgICAgICAg
IGJlZm9yZSB1cGRhdGluZyBzY3JvbGwgaW5mbywgd2hpY2ggcG9zc2libHkgcmVwYWludHMgdXMu
CisKKzIwMDctMTAtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjE3NzAxKTogRmF2aWNvbnMgc2hvdWxkIGJlIHZpZXdhYmxlIGFz
IGltYWdlIGRvY3VtZW50cworICAgICAgICA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU2NDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCisKKyAgICAgICAg
T24gVGlnZXIgYW5kIExlb3BhcmQsIHRoZSBpbWFnZS94LWljb24gTUlNRSB0eXBlIGlzIG5vdCBy
ZXR1cm5lZCBmcm9tCisgICAgICAgIENHSW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCks
IHNvIG9wZW5pbmcgYSBVUkwgdG8gYSBmYXZpY29uIGNhdXNlZAorICAgICAgICB0aGUgaWNvbiB0
byBiZSBkb3dubG9hZGVkIGluc3RlYWQgYmVpbmcgZGlzcGxheWVkIGluIGFuIGltYWdlIGRvY3Vt
ZW50LgorCisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL2Zhdmljb24tYXMtaW1hZ2UuaHRtbAor
CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXNlU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOiBNYW51YWxseSBhZGQgaW1h
Z2UveC1pY29uIHRvCisgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzIGFuZCBzdXBwb3J0
ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLiAgQWxzbyBmaXhlZAorICAgICAgICBjb21tZW50IGFi
b3V0IHRoZSBpbWFnZS9ibXAgTUlNRSB0eXBlIHNpbmNlIGl0IGFwcGxpZXMgdG8gYm90aCBUaWdl
ciBhbmQKKyAgICAgICAgTGVvcGFyZC4KKworMjAwNy0xMC0yOSAgTWFjaWVqIFN0YWNob3dpYWsg
IDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsuCisKKyAgICAgICAg
LSBmaXhlZCBhc3NlcnRpb24gZmFpbHVyZXMgZGV0ZWN0ZWQgYnkgdGhlIG5ldyBhc3NlcnRpb25z
CisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVJHQkNvbG9yLm1tOgorICAgICAgICAoLVtE
T01SR0JDb2xvciBkZWFsbG9jXSk6IENsZWFyIF9pbnRlcm5hbCBiZWZvcmUgY2FsbGluZyBbc3Vw
ZXIgZGVhbGxvY10KKyAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBhIHBvaW50ZXIgYW5kIHNob3Vs
ZG4ndCBiZSBpbiB0aGUgbm9ybWFsIHdyYXBwZXIgY2FjaGUuCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRJbWFnZU1hcCk6IERvbid0
IGFjY2VzcyBoYXNobWFwIGlmIG5hbWUgaXMgbnVsbC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZW1vdmVJbWFnZU1hcCk6IGRpdHRvCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOiBEb24ndCBjbGFpbSB3ZSBoYXZlIGEgY2xhc3MKKyAgICAgICAgd2hlbiB0aGUgY2xhc3Mg
YXR0cmlidXRlIGlzIGVtcHR5LgorICAgICAgICAqIHBsYXRmb3JtL1RleHRDb2RlY0lDVS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnYmtDYWxsYmFja0VzY2FwZSk6IERvbid0IGxvb2sgdXAgMCBj
b2RlIHBvaW50cy4KKworMjAwNy0xMC0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCisKKyAgICAgICAgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzQKKyAgICAgICAgTWFkZSBIVE1MT3B0
aW9uRWxlbWVudC5pbmRleCByZWFkLW9ubHksIG1hdGNoaW5nIElFIGFuZCBET00gc3RhbmRhcmQu
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vSFRNTE9wdGlvbkVsZW1lbnQvc2V0LW9wdGlvbi1p
bmRleC10ZXh0Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaWRsOiBN
YXJrZWQgaW5kZXggYXMgcmVhZG9ubHkuCisKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50Lmg6CisgICAgICAgIFJl
bW92ZWQgc2V0SW5kZXgoKS4KKworMjAwNy0xMC0yOCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgZGFyaW4uCisKKyAgICAgICAgRml4IGxlYWtz
IG9uIFRPVCBhbmQgcHJldmVudCBQYXRoIGNvZGUgZnJvbSBsb2dnaW5nIHRvIGNvbnNvbGUgc28g
ZnJlcXVlbnRseQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR1Jlc291cmNl
RmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0
YTo6U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGE6On5TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2NnL0NnU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzdHJva2VCb3VuZGluZ0JveCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3ZnL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3ZnL21hYy9TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYy5oOgor
CisyMDA3LTEwLTI4ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWFjaWVqLgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBpc05hTiBhbmQgaXNJ
bmYgd2l0aCBpc25hbiBhbmQgaXNpbmYuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPcHRp
b25zQ29sbGVjdGlvbjo6c2V0TGVuZ3RoKToKKworMjAwNy0xMC0yOCAgTWFjaWVqIFN0YWNob3dp
YWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsuCisKKyAgICAg
ICAgLSBmaXhlZCBSRUdSRVNTSU9OKHIyNzE3Nik6IFJlcHJvZHVjaWJsZSBjcmFzaCB3aGlsZSB0
cnlpbmcgdG8gb3JkZXIgZGlubmVyIG1ha2VzIGJkYXNoIHNhZAorICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTczMQorCisgICAgICAgICogYmluZGluZ3Mv
anMva2pzX3dpbmRvdy5jcHA6CisgICAgICAgIChLSlM6OldpbmRvdzo6aW5zdGFsbFRpbWVvdXQp
OiBBdm9pZCBwdXR0aW5nIGluIG9yIGFjY2Vzc2luZyBlbXB0eSBvciBkZWxldGVkIGtleXMuCisg
ICAgICAgIChLSlM6OldpbmRvdzo6Y2xlYXJUaW1lb3V0KTogZGl0dG8KKyAgICAgICAgKiBtYW51
YWwtdGVzdHMvYmFkLWNsZWFyVGltZW91dC1jcmFzaC5odG1sOiBBZGRlZC4gQXV0b21hdGVkIHRl
c3Qgbm90IHBvc3NpYmxlLgorCisyMDA3LTEwLTI4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIHd4IHBvcnQgZGVmaW5lcyBmb3IgZ3JhcGhpY3Mg
YW5kIG5ldHdvcmsgbGF5ZXJzLgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UG9pbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1Blbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaDoKKworCisyMDA3LTEwLTI4ICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMjQKKyAgICAgICAgW0NVUkxdIFN1cHBv
cnQgZGF0YSBVUkxzCisKKyAgICAgICAgQWRkIGRhdGEgVVJMIHN1cHBvcnQgKGJvdGggQmFzZTY0
IGFuZCBwZXJjZW50LWVuY29kZWQgZm9ybWF0cykuCisKKyAgICAgICAgSW5zcGlyZWQgYnkgY29k
ZSBmcm9tIHRoZSBRdCBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vQmFzZTY0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJhc2U2NERlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vQmFzZTY0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0U2No
ZWR1bGVkSm9icyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURhdGFVcmwpOgorCisyMDA3LTEw
LTI4ICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIFJvYmVuLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NzAxCisgICAgICAgIFRoZSBjdXJsIGh0dHAgYmFja2VuZCBkb2VzIG5vdCBkZWFsIHBy
b3Blcmx5IHdpdGggcmVkaXJlY3RzCisKKyAgICAgICAgSW1wbGVtZW50IGh0dHAgcmVkaXJlY3Qg
c3VwcG9ydC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGVhZGVyQ2FsbGJhY2spOgorCisyMDA3
LTEwLTI4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAg
ICAgIERlZmluZSB0eXBlcyBhbmQgYWNjZXNzb3JzIG5lZWRlZCBmb3Igd3ggaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgcGxhdGZvcm0gY2xhc3Nlcy4gQWxzbywgdHVybiBvZmYgRGlzYWxsb3dD
VHlwZXMuaCBiZWNhdXNlCisgICAgICAgIGRpc2FsbG93ZWQgbWV0aG9kcyBhcHBlYXIgaW4gd3gg
aGVhZGVycy4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAgICAgICog
Y29uZmlnLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vQ3Vyc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmlu
Zy5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
RHJhZ0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vRm9udERhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnREYXRhOjpnZXRXeEZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL0dseXBoQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6Z2x5cGhBdCk6CisgICAgICAg
IChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWR2YW5jZUF0KToKKyAgICAgICAgKFdlYkNvcmU6Okds
eXBoQnVmZmVyOjphZGQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50Ojppc1d4Q2hhckV2
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtU3RyaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmNwcDoKKworMjAwNy0xMC0yOCAgTWFyayBSb3dl
ICA8bXJvd2VAYXBwbGUuY29tPgorCisgICAgICAgIFdlIGRvbid0IGluY2x1ZGUgImNvbmZpZy5o
IiBpbiBoZWFkZXJzLgorCisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3d4L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKworMjAwNy0xMC0yOCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvbWFjL1NWR1Jl
c291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjLmg6CisgICAgICAgIFdlIGRvbid0IGluY2x1ZGUg
ImNvbmZpZy5oIiBpbiBoZWFkZXJzLiBIb3BlIHRoaXMgZGVzbid0IGJyZWFrCisgICAgICAgIHRo
ZSBub24tU1ZHIGJ1aWxkIGFnYWluLgorCisyMDA3LTEwLTI4ICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKworICAgICAgICBCdWlsZCBmaXggZm9yIG5vbi1TVkcgYnVpbGQsIG5vIHJl
dmlldy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9tYWMvU1ZHUmVzb3VyY2VG
aWx0ZXJQbGF0Zm9ybURhdGFNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcv
bWFjL1NWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjLm1tOgorCisyMDA3LTEwLTI4ICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2
ZXIuCisKKyAgICAgICAgUHVzaCBTVkdSZXNvdXJjZUZpbHRlciBwbGF0Zm9ybSBzcGVjaWZpYyBk
YXRhIGRvd24gaW50byBtX3BsYXRmb3JtRGF0YQorICAgICAgICBpbiBwcmVwYXJhdGlvbiBmb3Ig
aW1wbGVtZW50aW5nIGEgbm9uLW1hYyBmaWx0ZXIgc29sdXRpb24uCisgICAgICAgIAorICAgICAg
ICBBbHNvIHVwZGF0ZSBhIHZlcnkgb2xkIGVtYWlsIGFkZHJlc3MgaW4gY29weXJpZ2h0IGhlYWRl
cnMKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRQb2ludDNEOjpGbG9hdFBvaW50M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdS
ZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6
U1ZHUmVzb3VyY2VGaWx0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdS
ZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OnBs
YXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6ZWZmZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2NnL1NWR1Jlc291cmNlRmlsdGVy
Q2cubW06CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6Y3JlYXRlUGxhdGZv
cm1EYXRhKTpsCisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZp
bHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0Rpc3RhbnRMaWdo
dFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZF
QmxlbmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZF
QmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdGRUNv
bG9yTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9T
VkdGRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRl
cnMvU1ZHRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3ZnL2ZpbHRlcnMvU1ZHRkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdGRUNvbXBvc2l0ZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRy
aXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRlcnMv
U1ZHRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcv
ZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3ZnL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdGRUZsb29kLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdGRUZsb29kLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdGRU9mZnNldC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRlcnMvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRl
cnMvU1ZHRkVUaWxlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRlcnMv
U1ZHRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmls
dGVycy9TVkdGRVR1cmJ1bGVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcv
ZmlsdGVycy9TVkdGaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3N2Zy9maWx0ZXJzL1NWR0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N2Zy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9zdmcvZmlsdGVycy9TVkdMaWdodFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3N2Zy9maWx0ZXJzL1NWR1BvaW50TGlnaHRTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9TVkdTcG90TGlnaHRTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9jZy9TVkdGRUJsZW5kQ2cubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kOjpnZXRDSUZpbHRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRlcnMvY2cvU1ZHRkVDb2xvck1hdHJpeENnLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeDo6Z2V0Q0lGaWx0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL2NnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJD
Zy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXI6OmdldENJRmls
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9jZy9TVkdGRUNv
bXBvc2l0ZUNnLm1tOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGU6OmdldENJRmls
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVycy9jZy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0NnLm1tOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRp
bmc6OmdldENJRmlsdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvZmlsdGVy
cy9jZy9TVkdGRURpc3BsYWNlbWVudE1hcENnLm1tOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
aXNwbGFjZW1lbnRNYXA6OmdldENJRmlsdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvZmlsdGVycy9jZy9TVkdGRUZsb29kQ2cubW06CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUZsb29kOjpnZXRDSUZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2Zp
bHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
dmcvZmlsdGVycy9jZy9TVkdGRUltYWdlQ2cubW06CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUlt
YWdlOjpnZXRDSUZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL2ZpbHRl
cnMvY2cvU1ZHRkVNZXJnZUNnLm1tOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZTo6Z2V0
Q0lGaWx0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9maWx0ZXJzL2NnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0NnLm1tOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nOjpnZXRDSUZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Zn
L21hYzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL21hYy9TVkdSZXNv
dXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9zdmcvbWFjL1NWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjOjpT
VkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYzo6flNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1E
YXRhTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRh
TWFjOjpnZXRDSUZpbHRlclN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmFscGhhSW1hZ2VGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1h
Yzo6aW1hZ2VGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyUGxh
dGZvcm1EYXRhTWFjOjpzZXRJbWFnZUZvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWM6OnNldE91dHB1dEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjOjppbnB1dEltYWdlKToKKwor
MjAwNy0xMC0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxNworICAgICAgICBQbHVnaW4gY29tcGxhaW5zIHRoYXQg
eHBjb21fY29yZS5kbGwgbWlzc2luZworCisgICAgICAgICogcGx1Z2lucy93aW4vUGx1Z2luRGF0
YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2VXaW46OmlzUGx1
Z2luQmxhY2tsaXN0ZWQpOiBCbGFja2xpc3QgbnBtb3pheC5kbGwuCisKKzIwMDctMTAtMjggIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0uCisKKyAgICAgICAgUGFzcyB0aGUgRG9jdW1lbnQncyBkb21haW4gdG8gSW5zcGVjdG9y
Q29udHJvbGxlcjpkaWRPcGVuRGF0YWJhc2UuIFRoaXMgbWF0Y2hlcworICAgICAgICB3aGF0IHRo
ZSBJbnNwZWN0b3Igc2hvd3MgZm9yIG90aGVyIHJlc291cmNlcy4KKworICAgICAgICAqIHN0b3Jh
Z2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om9wZW5EYXRhYmFz
ZSk6CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogUmVtb3ZlIEtVUkwuaCwgbm8gbG9uZ2Vy
IG5lZWRlZC4KKworMjAwNy0xMC0yOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbS4KKworICAgICAgICBCdWcgMTU3Mjg6IFNl
bGVjdGVkIFJlc291cmNlIGJhY2tncm91bmQgaW1hZ2UgZ3JhZGllbnQgaGFzIGJhbmRpbmcKKyAg
ICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjgKKworICAg
ICAgICAtIFJlZHVjZWQgaW1hZ2VzIHRvIDFweCB3aWRlIHRoYXQgYXJlIHRpbGVkIGhvcml6b250
YWxseSBpbiBDU1MuCisgICAgICAgIC0gQ29ycmVjdGVkIHRoZSAtd2Via2l0LWJhY2tncm91bmQt
c2l6ZSB1c2FnZSB0byBzcGVjaWZ5IGF1dG8gZm9yIHRoZSB3aWR0aC4KKworICAgICAgICAqIHBh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9hdHRhY2hlZFNoYWRvdy5wbmc6CisgICAgICAgICogcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL2JvdHRvbVNoYWRvdy5wbmc6CisgICAgICAgICogcGFnZS9pbnNwZWN0
b3IvSW1hZ2VzL2RhcmtTaGFkb3cucG5nOgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9ncmFkaWVudC5wbmc6CisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dyYWRpZW50
SGlnaGxpZ2h0LnBuZzoKKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9JbWFnZXMvZ3JhZGllbnRI
aWdobGlnaHRCb3R0b20ucG5nOgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zaWRl
YmFyU2VsZWN0aW9uLnBuZzoKKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9JbWFnZXMvc2lkZWJh
clNlbGVjdGlvbkJsdXJyZWQucG5nOgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0ltYWdlcy9z
aWRlYmFyU2VsZWN0aW9uQmx1cnJlZFRhbGwucG5nOgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9y
L0ltYWdlcy9zaWRlYmFyU2VsZWN0aW9uR3JheS5wbmc6CisgICAgICAgICogcGFnZS9pbnNwZWN0
b3IvSW1hZ2VzL3NpZGViYXJTZWxlY3Rpb25HcmF5VGFsbC5wbmc6CisgICAgICAgICogcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3NpZGViYXJTZWxlY3Rpb25UYWxsLnBuZzoKKyAgICAgICAgKiBwYWdl
L2luc3BlY3Rvci9pbnNwZWN0b3IuY3NzOgorCisyMDA3LTEwLTI3ICBUaW1vdGh5IEhhdGNoZXIg
IDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtLgorCisgICAg
ICAgIEJ1ZyAxNTcyNzogUmVzaXppbmcgdGhlIHJlc291cmNlIHNpZGViYXIgZG9lc24ndCBzY2Fs
ZSB0aGUgZm9udCBwcmV2aWV3IG9yIG5ldHdvcmsgdGltZWxpbmUKKyAgICAgICAgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjcKKworICAgICAgICBBZGQgb25lIHdp
bmRvdyByZXNpemUgbGlzdGVuZXIgYW5kIGNhbGwgdGhlIG5ldyByZXNpemUgZnVuY3Rpb24gb24g
dGhlIGN1cnJlbnRQYW5lbC4KKyAgICAgICAgQWxzbyBjYWxsIHRoZSBjdXJyZW50UGFuZWwncyBy
ZXNpemUgZnVuY3Rpb24gd2hlbiByZXNpemluZyB0aGUgc2lkZWJhci4KKworICAgICAgICAqIHBh
Z2UvaW5zcGVjdG9yL0RvY3VtZW50UGFuZWwuanM6IEltcGxlbWVudCByZXNpemUgYW5kIGNhbGwg
dXBkYXRlVHJlZVNlbGVjdGlvbigpIHdoZW4KKyAgICAgICAgICB0aGUgcGFuZWwgaXMgc2hvd24g
YW5kIHdoZW4gcmVzaXppbmcgdGhlIERPTSBzaWRlYmFyLgorICAgICAgICAqIHBhZ2UvaW5zcGVj
dG9yL0ZvbnRQYW5lbC5qczogSW1wbGVtZW50IHJlc2l6ZS4KKyAgICAgICAgKiBwYWdlL2luc3Bl
Y3Rvci9OZXR3b3JrUGFuZWwuanM6IERpdHRvLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2lu
c3BlY3Rvci5qczogQWRkIGEgd2luZG93IHJlc2l6ZSBsaXN0ZW5lci4KKworMjAwNy0xMC0yNyAg
TWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlci4KKyAgICAgICAgCisgICAgICAgIC0gdXBkYXRlIGZvciBIYXNoVGFibGUgY2hhbmdl
cworCisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAg
ICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0Fu
aW1hdGVkVGVtcGxhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Gb250Q2FjaGUuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL1N0cmluZ0hhc2guaDoKKyAgICAgICAgKFdURjo6KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZUhhc2guaDoKKyAgICAgICAgKFdURjo6KToKKyAgICAgICAgKiBwbHVn
aW5zL3dpbi9QbHVnaW5QYWNrYWdlV2luLmg6CisKKzIwMDctMTAtMjggIEFscCBUb2tlciAgPGFs
cEBhdG9rZXIuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCisKKyAgICAg
ICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDYKKyAgICAgICAg
W0dUS10gY2FyZXRCbGlua0ZyZXF1ZW5jeSBpcyBoYXJkLWNvZGVkIGluIEZyYW1lLmNwcAorCisg
ICAgICAgIEFic3RyYWN0IGNhcmV0QmxpbmtGcmVxdWVuY3kgdG8gUmVuZGVyVGhlbWUuCisKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWxlY3Rp
b25MYXlvdXRDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmNhcmV0U2hvdWxkQmxpbmsp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmNhcmV0QmxpbmtGcmVxdWVuY3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZS5oOgorCisyMDA3LTEwLTI3ICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtLgorCisgICAgICAg
IERvbid0IHByaW50IHRoZSBsaW5lIG51bWJlciBpbiB0aGUgSW5zcGVjdG9yIENvbnNvbGUgaWYg
aXQgaXMgWmVyby4KKworICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGVQYW5lbC5qczoK
KworMjAwNy0xMC0yNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCisKKyAgICAgICAgRml4IGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTUzCisgICAgICAgIEltcGxlbWVudCB3aW5kb3cuY29uc29s
ZSBpbiBXZWJDb3JlCisKKyAgICAgICAgLSBBZGRzIGEgd2luZG93LmNvbnNvbGUgb2JqZWN0IHRo
YXQgaGFzIDQgbWV0aG9kcyAobG9nLCBpbmZvLCB3YXJuLCBhbmQgZXJyb3IpCisgICAgICAgICAg
dGhhdCBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBDaHJvbWUuICBUaGlzIG1vdmVzIGZ1bmN0aW9uYWxp
dHkgdGhhdCB3YXMgaW4gdGhlCisgICAgICAgICAgYXBwIGRvd24gaW50byBXZWJDb3JlLgorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06IEFkZCBleHRlbmRlZCBhdHRyaWJ1dGUKKyAgICAgICAgdG8gbWFy
ayBhdHRyaWJ1dGVzIGFzIFtSZXBsYWNhYmxlXSB3aGljaCBpbmRpY2F0ZXMgdGhleSBjYW4gCisg
ICAgICAgIG92ZXJyaWRkZW4gd2hlbiBzZXQuCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjphZGRNZXNzYWdlVG9Db25zb2xlKTogQWxsb3cgYWxs
IG1lc3NhZ2VzIHRvIGdvCisgICAgICAgIHVwIHRvIHRoZSBDaHJvbWVDbGllbnQuCisgICAgICAg
ICogcGFnZS9Db25zb2xlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpD
b25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRpc2Nvbm5lY3RGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDb25z
b2xlOjppbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmxvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjp3YXJuKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDogQWRkZWQu
CisgICAgICAgICogcGFnZS9Db25zb2xlLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OmNvbnNvbGUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCisyMDA3LTEwLTI3ICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBhcm9iZW4uCisg
ICAgICAgIAorICAgICAgICBSZW1vdmUgbGVnYWN5IGNyZWF0ZUZpbHRlckVmZmVjdCBmdW5jdGlv
biAoY2F1c2luZyBleHRyYSBmaWx0ZXIgdGVzdHMgdG8gZmFpbCBvbiB3aW5kb3dzKQorCisgICAg
ICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgdGh1cyBubyB0ZXN0cy4KKworICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJs
ZW5kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUZsb29k
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGVy
RWZmZWN0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
TWVyZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OmZpbHRlckVmZmVjdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KToK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9jZy9TVkdSZXNvdXJjZUZpbHRlckNnLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvY2cvU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VGaWx0ZXJRdC5jcHA6
CisKKzIwMDctMTAtMjcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAtIGZpeCBhIGNyYXNoIHdoZW4g
b3BlbmluZyBaZW5vc3Mgc2VydmVyIGhpc3RvcnkgdmlldworICAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NTMwNjU3PgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGFibGUvY29sZ3JvdXAtcmVsYXRp
dmUuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6IEFkZGVkIGEgaGFzTGF5ZXIoKSBj
aGVjayBiZWZvcmUKKyAgICAgICAgYWNjZXNzaW5nIGxheWVyKCkuCisKKzIwMDctMTAtMjcgIEp1
bGllbiAgPGp1bGllbi5jaGFmZnJhaXhAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFsZXhleS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzE0MQorICAgICAgICBYTUxIdHRwUmVxdWVzdCBzaG91bGQgc2V0IHJlYWR5U3RhdGUgdG8g
MCBhZnRlciBhYm9ydCgpCisgICAgICAgIAorICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWFib3J0LXJlYWR5U3RhdGUuaHRtbAorCisgICAgICAg
ICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjphYm9ydCk6CisK
KzIwMDctMTAtMjcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXZlIEh5YXR0LgorCisgICAgICAgIC0gZml4IHJvdGF0ZWQgYm9yZGVyIGlt
YWdlcyBieSB1c2luZyBhIHRlbXBvcmFyeSBzdWJpbWFnZSBjb250YWluaW5nCisgICAgICAgICAg
b25seSB0aGUgcGFydCB3ZSB3YW50IHRvIHRpbGUKKworICAgICAgICBUZXN0OiBmYXN0L2JvcmRl
cnMvYm9yZGVyLWltYWdlLXJvdGF0ZS10cmFuc2Zvcm0uaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJh
d1BhdHRlcm5DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4p
OgorCisyMDA3LTEwLTI3ICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B1bnBsdWdnYWJs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxwLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzIyCisgICAgICAgIFtHVEtdIFJlZmFjdG9y
IGd0ay9SZW5kZXJUaGVtZUd0ayBhbmQgaW1wbGVtZW50IGEgZmV3IG1vcmUgbWV0aG9kcworCisg
ICAgICAgIFJlZmFjdG9yL2VuaGFuY2UgR1RLIFJlbmRlclRoZW1lCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVHdGs6OnN1cHBvcnRzRm9jdXMpOiBhZGRlZCBUZXh0QXJlYSwgTWVudWxpc3QsIFJhZGlvLCBh
bmQgQ2hlY2tib3ggQXBwZWFyYW5jZXMKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpzdXBwb3J0c0ZvY3VzUmluZyk6IGNhbGwgc3VwcG9ydHNGb2N1cygpIHRvIGNoZWNrIGlmIGZv
Y3VzIG9uIGFwcGVhcmFuY2UgaXMgc3VwcG9ydGVkCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUd0azo6Y29udHJvbFN1cHBvcnRzVGludHMpOiBjb3BpZWQgZnJvbSBRdCBhbmQgU2FmYXJp
IHBvcnRzCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YmFzZWxpbmVQb3NpdGlv
bik6IGNvcGllZCBmcm9tIFF0IGFuZCBTYWZhcmkgcG9ydHMKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lR3RrOjpwYWludENoZWNrYm94KTogbW92ZWQgcGFpbnRpbmcgaW4gcGFpbnRCdXR0
b24KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFJhZGlvKTogbW92ZWQg
cGFpbnRpbmcgaW4gcGFpbnRCdXR0b24KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpwYWludEJ1dHRvbik6IHBhaW50IHRoZSBkaWZmZXJlbnQgYnV0dG9ucyBoZXJlLCBjaGVja2lu
ZyBmb3IgdGhlIHJpZ2h0IGFwcGVhcmFuY2UgYmVmb3JlIGRvaW5nIHNvCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZW51TGlzdCk6IHVzZSAwIGluc3RlYWQgb2YgTlVM
THMKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RUZXh0RmllbGRTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z2V0VGhlbWVEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjpzdXBwb3J0c0NvbnRyb2xUaW50cyk6CisKIDIwMDctMTAtMjcgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCAxOTlmNGI4Li45MGFmMTY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0No
YW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDA4
LTA5LTA0ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorICAgICAgICBDaHJvbWVDbGllbnQ6OmNyZWF0
ZVdpbmRvdyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCisgICAgICAgIAorICAg
ICAgICBDb2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFuZCBNYXJjbyBCYXJpc2lvbmUKKyAgICAg
ICAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+IGluIHRoaXMgY2hhbmdlIHNldC4K
KworICAgICAgICBJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRlcmZhY2VzIG5l
ZWRlZCB0byBoYXZlIG5ldworICAgICAgICB3aW5kb3cgY3JlYXRpb24gZnVuY3Rpb25pbmcgYW5k
IGV4cG9zZWQgdG8gY2xpZW50IGNvZGUuIFdlCisgICAgICAgIGltcGxlbWVudGVkIGEgbWlycm9y
IEdPYmplY3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9iamVjdCBwcm92aWRlZAorICAgICAgICBi
eSBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNl
dFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dG9vbGJh
cnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJW
aXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUpOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJp
dmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dm
ZWF0dXJlcy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJp
dmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6CisgICAgICAgIChf
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtp
dF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0
eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KToKKyAgICAg
ICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2Zl
YXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwpOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4KKwogMjAwOC0w
OS0wMyAgQWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZv
bGxvd2luZyByMzYwNzMuIEluY2x1ZGUgY29uZmlnLmggd2hlcmUgbmVjZXNzYXJ5LgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDJlNTZjMWQu
LmIzY2UyNGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHAKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQ2hyaXN0aWFu
IER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3Vz
dGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjAsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudEd0ay5oIgogCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgpAQCAtMjcsNiArMjksNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtp
dG5ldHdvcmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKQEAgLTUyLDcg
KzU1LDcgQEAgRmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgaWYgKCFt
X3dlYlZpZXcpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKICAgICBHdGtXaWRnZXQqIHdp
bmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0g
ICAgaWYgKHdpbmRvdykgeworICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpIHsK
ICAgICAgICAgZ2ludCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgIGd0a193aW5k
b3dfZ2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmxlZnQsICZ0b3ApOwogICAgICAg
ICBndGtfd2luZG93X2dldF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgJndpZHRoLCAmaGVpZ2h0
KTsKQEAgLTYxLDkgKzY0LDIwIEBAIEZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3Qo
KQogICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFdp
bmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRv
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgaW50cmVj
dCA9IEludFJlY3QocmVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRv
d0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3
KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAg
ICAgICAgICAgICAgICJ4IiwgaW50cmVjdC54KCksCisgICAgICAgICAgICAgICAgICJ5IiwgaW50
cmVjdC55KCksCisgICAgICAgICAgICAgICAgICJ3aWR0aCIsIGludHJlY3Qud2lkdGgoKSwKKyAg
ICAgICAgICAgICAgICAgImhlaWdodCIsIGludHJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAg
ICAgIE5VTEwpOwogfQogCiBGbG9hdFJlY3QgQ2hyb21lQ2xpZW50OjpwYWdlUmVjdCgpCkBAIC05
MiwyOSArMTA2LDM1IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKICAgICBpZiAoIW1f
d2ViVmlldykKICAgICAgICAgcmV0dXJuOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dp
ZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2luZG93
KQorICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpCiAgICAgICAgIGd0a193aW5k
b3dfc2V0X2ZvY3VzKEdUS19XSU5ET1cod2luZG93KSwgTlVMTCk7CiB9CiAKLVBhZ2UqIENocm9t
ZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNv
bnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVx
dWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcykKIHsKLSAgICBpZiAoZmVh
dHVyZXMuZGlhbG9nKSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IDA7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJWaWV3
LCAiY3JlYXRlLXdlYi12aWV3Iiwga2l0KGZyYW1lKSwgJndlYlZpZXcpOworCisgICAgaWYgKCF3
ZWJWaWV3KQogICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBUT0RP
OiBGcmFtZUxvYWRSZXF1ZXN0IGlzIG5vdCB1c2VkICovCi0gICAgICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG1fd2ViVmlldyktPmNyZWF0ZV93
ZWJfdmlldyhtX3dlYlZpZXcpOwotICAgICAgICBpZiAoIXdlYlZpZXcpCi0gICAgICAgICAgICBy
ZXR1cm4gMDsKLQotICAgICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBX
RUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgICAgIHJldHVybiBwcml2
YXRlRGF0YS0+Y29yZVBhZ2U7Ci0gICAgfQorCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21f
Y29yZV9mZWF0dXJlcyhjb3JlRmVhdHVyZXMpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfd2lu
ZG93X2ZlYXR1cmVzKHdlYlZpZXcsIHdlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICBnX29iamVjdF91
bnJlZihHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcykpOworCisgICAgaWYgKCFmcmFtZUxvYWRS
ZXF1ZXN0LmlzRW1wdHkoKSkKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X29wZW4od2ViVmlldywg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKworICAgIHJldHVybiBjb3JlKHdlYlZpZXcpOwogfQogCiB2b2lkIENocm9tZUNs
aWVudDo6c2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmll
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgd2Via2l0X3dlYl92aWV3X3Nob3cobV93ZWJWaWV3
KTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OmNhblJ1bk1vZGFsKCkKQEAgLTEyOCw1MiArMTQ4
LDk2IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpydW5Nb2RhbCgpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZShib29sKQordm9p
ZCBDaHJvbWVDbGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0
X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0
X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ0b29sYmFyLXZpc2libGUiLCB2aXNp
YmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSgpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dl
YlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1
cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dl
dChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ0b29sYmFyLXZpc2libGUiLCAmdmlzaWJs
ZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50Ojpz
ZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0U3RhdHVzYmFy
VmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
IW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJzdGF0dXNiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENo
cm9tZUNsaWVudDo6c3RhdHVzYmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jv
b2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJzdGF0dXNiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4g
dmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJv
b2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJl
cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAg
ICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic2Nyb2xsYmFyLXZp
c2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnNjcm9sbGJh
cnNWaXNpYmxlKCkgewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdib29sZWFuIHZpc2libGU7CisKKyAg
ICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic2Nyb2xsYmFyLXZp
c2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQg
Q2hyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlzaWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6
OnNldE1lbnViYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dp
bmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdl
YldpbmRvd0ZlYXR1cmVzKSwgIm1lbnViYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQog
CiBib29sIENocm9tZUNsaWVudDo6bWVudWJhclZpc2libGUoKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOwor
ICAgIGdib29sZWFuIHZpc2libGU7CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2lu
ZG93RmVhdHVyZXMpLCAibWVudWJhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAgIHJl
dHVybiB2aXNpYmxlOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKGJvb2wp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvLyBJZ25vcmVkIGZvciBub3cKIH0KIAog
dm9pZCBDaHJvbWVDbGllbnQ6OmNsb3NlV2luZG93U29vbigpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGVjYTI4NTMuLmU3
MTBkOTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcu
aCIKKyNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgogI2luY2x1ZGUgIndlYmtpdHdl
YmZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCkBAIC0yNTgsNyArMjU5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1F
OiBJIHRoaW5rIFF0IHZlcnNpb24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3
aGVuIHdlCiAgICAgLy8gaGF2ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVl
ZCB0byBkbyB0aGUgc2FtZQotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1
bmN0aW9uKShQb2xpY3lJZ25vcmUpOworICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBv
bGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlv
biBwb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQpA
QCAtNTYxLDcgKzU2Miw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmly
c3RMYXlvdXQoKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZp
ZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgd2Via2l0X3dlYl92aWV3X3Nob3cod2ViVmlldyk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTcz
NCw4ICs3MzYsMTYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29u
c3QKIAogRnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgV2ViS2l0V2ViVmlldyog
d2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyog
bmV3V2ViVmlldyA9IDA7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImNy
ZWF0ZS13ZWItdmlldyIsIG1fZnJhbWUsICZuZXdXZWJWaWV3KTsKKworICAgIGlmICghbmV3V2Vi
VmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
dmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUobmV3V2ViVmlldyk7CisgICAg
cmV0dXJuIGNvcmUocHJpdmF0ZURhdGEtPm1haW5GcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VF
cnJvciYpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IDEwYzIxNGYuLjI5ZDNkZjQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5o
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2Zl
YXR1cmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYmhpc3RvcnlpdGVtLmg+CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRk
ZWZpbmVzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggMzg2YzNl
MS4uZGFjMmRkMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5o
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtNTUsNiArNTUsOSBA
QCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNz
OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3ND
bGFzczsKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
Q2xhc3MgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3
Q2xhc3MgV2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5k
ZXggM2VmYTAyYS4uZDhkYjI4YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogCiAjaW5jbHVkZSAiQmFj
a0ZvcndhcmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJXaW5kb3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC02Nyw2ICs2OSw3
IEBAIGV4dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAg
ICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3Mq
IHdlYlNldHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93
RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKICAgICAgICAg
V2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKQEAgLTExMCw2ICsx
MTMsOSBAQCBleHRlcm4gIkMiIHsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKICAgICB3ZWJr
aXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qKTsKIAorICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgorICAgIHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMgKGNvbnN0IFdlYkNvcmU6OldpbmRv
d0ZlYXR1cmVzJiBmZWF0dXJlcyk7CisKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJr
aXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdF
QktJVF9BUEkgR1NMaXN0KgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlMDZk
Y2JmLi4yMGE5NmU1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNCw2ICs0
LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgWGFuIExvcGV6IDx4YW5AZ25vbWUub3JnPgog
ICogIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogIENv
cHlyaWdodCAoQykgMjAwOCBKYW4gQWxvbnpvIDxqbWFsb256b0B1bnBsdWdnYWJsZS5jb20+Cisg
KiAgQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9y
Zz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCkBAIC03MCw2ICs3MSw4IEBAIGV4dGVybiAiQyIgewog
ZW51bSB7CiAgICAgLyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JFUVVFU1RF
RCwKKyAgICBDUkVBVEVfV0VCX1ZJRVcsCisgICAgU0hPV19XRUJfVklFVywKICAgICBXSU5ET1df
T0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09NTUlUVEVELApA
QCAtOTksNiArMTAyLDcgQEAgZW51bSB7CiAgICAgUFJPUF9QQVNURV9UQVJHRVRfTElTVCwKICAg
ICBQUk9QX0VESVRBQkxFLAogICAgIFBST1BfU0VUVElOR1MsCisgICAgUFJPUF9XSU5ET1dfRkVB
VFVSRVMsCiAgICAgUFJPUF9UUkFOU1BBUkVOVCwKICAgICBQUk9QX1pPT01fTEVWRUwsCiAgICAg
UFJPUF9GVUxMX0NPTlRFTlRfWk9PTQpAQCAtMjM2LDYgKzI0MCw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lk
LCBHVmFsdWUqCiAgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICBnX3ZhbHVlX3NldF9v
YmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldykpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICBnX3Zh
bHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVz
KHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgog
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Ry
YW5zcGFyZW50KHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNjEsNiArMjY4LDkgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BfaWQsIGNvbnN0IEcKICAgICBjYXNlIFBST1BfU0VUVElOR1M6CiAgICAgICAg
IHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3Mod2ViVmlldywgV0VCS0lUX1dFQl9TRVRUSU5H
UyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9XSU5ET1dfRkVBVFVSRVM6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93
X2ZlYXR1cmVzKHdlYlZpZXcsIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdfdmFsdWVfZ2V0
X29iamVjdCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFS
RU5UOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3RyYW5zcGFyZW50KHdlYlZpZXcsIGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC01NjAsMTIgKzU3
MCwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2ZvcmFsbChHdGtD
b250YWluZXIqIGNvbnRhaW5lciwgZ2Jvb2xlYW4sCiAgICAgICAgICgqY2FsbGJhY2spKCpjdXJy
ZW50LCBjYWxsYmFja0RhdGEpOwogfQogCi1zdGF0aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dl
Yl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQorc3RhdGljIFdlYktp
dFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0V2ViRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG93X3dl
Yl92aWV3KFdlYktpdFdlYlZpZXcqKQoreworICAgIHJldHVybiBGQUxTRTsKK30KKwogc3RhdGlj
IFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9u
X3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXRO
ZXR3b3JrUmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTcyNCw2ICs3Mzgs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0
KQogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmJhY2tGb3J3YXJkTGlzdCk7CiAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdzLCAoZ3BvaW50
ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmlldyk7CiAgICAgZ19vYmpl
Y3RfdW5yZWYocHJpdi0+d2ViU2V0dGluZ3MpOworICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndl
YldpbmRvd0ZlYXR1cmVzKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUpOwog
ICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmltQ29udGV4dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0
X3VucmVmKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QpOwpAQCAtNzMzLDYgKzc0OCwxOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0
X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1
LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQoreworICBnYm9v
bGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKKyAgZ3BvaW50ZXIgbmV3V2ViVmlldyA9IGdf
dmFsdWVfZ2V0X29iamVjdChoYW5kbGVyUmV0dXJuKTsKKyAgZ192YWx1ZV9zZXRfb2JqZWN0KHJl
dHVybkFjY3UsIG5ld1dlYlZpZXcpOworCisgIGlmIChuZXdXZWJWaWV3KQorICAgICAgY29udGlu
dWVFbWlzc2lvbiA9IEZBTFNFOworCisgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOworfQorCiBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJ
bnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBo
YW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKIHsKICAgZ2Jvb2xlYW4gY29udGludWVFbWlz
c2lvbiA9IFRSVUU7CkBAIC03NzUsNiArODAyLDY3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAq
IFNpZ25hbHMKICAgICAgKi8KIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0
ZS13ZWItdmlldzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lCisgICAg
ICogQHJldHVybjogYSBuZXdseSBhbGxvY2F0ZWQgI1dlYktpdFdlYlZpZXcgb3IgJU5VTEwKKyAg
ICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGlz
IHJlcXVlc3RlZC4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBoYW5kbGVkIHRoZSBzaWduYWwg
aGFuZGxlciBzaG91bGQgcmV0dXJuIHRoZQorICAgICAqIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdl
YlZpZXcuCisgICAgICoKKyAgICAgKiBUaGUgbmV3ICNXZWJLaXRXZWJWaWV3IHNob3VsZCBub3Qg
YmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyCisgICAgICogdW50aWwgdGhlIDo6c2hvdy13ZWItdmll
dyBzaWduYWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaGFuZGxlcnMg
c2hvdWxkIG5vdCB0cnkgdG8gZGVhbCB3aXRoIHRoZSByZWZlcmVuY2UKKyAgICAgKiBjb3VudCBm
b3IgdGhlIG5ldyAjV2ViS2l0V2ViVmlldy4gVGhlIHdpZGdldCB0byB3aGljaCB0aGUKKyAgICAg
KiB3aWRnZXQgaXMgYWRkZWQgd2lsbCBoYW5kbGUgdGhhdC4KKyAgICAgKgorICAgICAqIFNpbmNl
IDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ1JFQVRFX1dFQl9W
SUVXXSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShH
X1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRlX3dlYl92aWV3KSwKKyAgICAgICAg
ICAgIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAg
TlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNULAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcgLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX0ZSQU1FKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNob3ctd2ViLXZp
ZXc6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZAorICAgICAqIEByZXR1cm46ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJv
bSBiZWluZyBpbnZva2VkIGZvcgorICAgICAqIHRoZSBldmVudCwgJUZBTFNFIHRvIHByb3BhZ2F0
ZSB0aGUgZXZlbnQgZnVydGhlcgorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciA6OmNyZWF0
ZS13ZWItdmlldyB3aGVuIHRoZSBuZXcgI1dlYktpdFdlYlZpZXcKKyAgICAgKiBzaG91bGQgYmUg
ZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBXaGVuIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KiBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgd2luZG93IHNob3VsZCBsb29rLCBp
bmNsdWRpbmcKKyAgICAgKiBzaXplLCBwb3NpdGlvbiwgd2hldGhlciB0aGUgbG9jYXRpb24sIHN0
YXR1cyBhbmQgc2Nyb2xsIGJhcnMKKyAgICAgKiBzaG91bGQgYmUgZGlzcGxheWVkLCBpcyBhbHJl
YWR5IHNldCBvbiB0aGUKKyAgICAgKiAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgb2JqZWN0IGNv
bnRhaW5lZCBieSB0aGUgI1dlYktpdFdlYlZpZXcuCisgICAgICoKKyAgICAgKiBOb3RpY2UgdGhh
dCBzb21lIG9mIHRoYXQgaW5mb3JtYXRpb24gbWF5IGNoYW5nZSBkdXJpbmcgdGhlIGxpZmUKKyAg
ICAgKiB0aW1lIG9mIHRoZSB3aW5kb3csIHNvIHlvdSBtYXkgd2FudCB0byBjb25uZWN0IHRvIHRo
ZSA6Om5vdGlmeQorICAgICAqIHNpZ25hbCBvZiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
IG9iamVjdCB0byBoYW5kbGUgdGhvc2UuCisgICAgICoKKyAgICAgKiBJZiB0aGVyZSBpc24ndCBh
bnkgaGFuZGxlciBmb3IgdGhpcyBzaWduYWwgb3IgaWYgdGhleSByZXR1cm4KKyAgICAgKiAlRkFM
U0UsIHRoZW4gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIGNhbGwgZ3RrX3dpZGdldF9zaG93KCkg
b24KKyAgICAgKiB0aGUgdG9wbGV2ZWwgd2luZG93IGNvbnRhaW5pbmcgQHdlYl92aWV3LCBhbmQg
b24gQHdlYl92aWV3LgorICAgICAqCisgICAgICogU2luY2UgMS4wLjIKKyAgICAgKi8KKyAgICB3
ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tTSE9XX1dFQl9WSUVXXSA9IGdfc2lnbmFsX25ldygic2hv
dy13ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QpLAorICAgICAg
ICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xhc3MsIHNob3dfd2ViX3ZpZXcp
LAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAg
ICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisg
ICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2ln
bmFsc1tOQVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVx
dWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAg
ICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FD
VElPTiksCkBAIC0xMTEwLDYgKzExOTgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBpbXBs
ZW1lbnRhdGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICovCiAgICAgd2ViVmlld0NsYXNz
LT5jcmVhdGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7
CisgICAgd2ViVmlld0NsYXNzLT5zaG93X3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxf
c2hvd193ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0g
d2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0Ns
YXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3df
b2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93
ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTIwOSw2ICsxMjk4LDIwIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmll
d0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViVmlldzp3aW5kb3ctZmVhdHVyZXM6CisgICAg
KgorICAgICogQW4gYXNzb2NpYXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZS4K
KyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVTLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2luZG93
LWZlYXR1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIldpbmRvdyBGZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbiBhc3NvY2lhdGVkIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzIGluc3RhbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9FRElUQUJMRSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlZGl0YWJsZSIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWRpdGFi
bGUiLApAQCAtMTQ0MCw2ICsxNTQzLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2lu
aXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3Nl
dHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1j
aGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxM
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19D
QUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAg
ICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25l
dygpOwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTE0NDks
NiArMTU1NCwyNiBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAgICBy
ZXR1cm4gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIH0KIAordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2hv
dyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IEZBTFNF
OworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0hP
V19XRUJfVklFV10sIDAsICZpc0hhbmRsZWQpOworICAgIGlmIChpc0hhbmRsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIC8qIEZJWE1FOiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBzaG93IHRo
ZSB0b3BsZXZlbCB3aW5kb3csIGJ1dAorICAgICAqIFdlYktpdCBibG93cyB1cCBhdCBTY3JvbGxW
aWV3Ojp1cGRhdGUgaWYgd2UgZG9uJ3Qgc2hvdyB0aGUKKyAgICAgKiB0b3BsZXZlbCB3aW5kb3c7
CisgICAgICovCisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxl
dmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHRv
cGxldmVsKSkKKyAgICAgICAgZ3RrX3dpZGdldF9zaG93KHRvcGxldmVsKTsKKyAgICBndGtfd2lk
Z2V0X3Nob3coR1RLX1dJREdFVCh3ZWJWaWV3KSk7Cit9CisKKwogdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlNldHRpbmdz
KiB3ZWJTZXR0aW5ncykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CkBAIC0xNDczLDYgKzE1OTgsNTIgQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAog
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZpZXc6
IGEgI1dlYktpdFdlYlZpZXcKKyAqIEB3aW5kb3dfZmVhdHVyZXM6IGEgI1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzCisgKgorICogVGhpcyB3aWxsIHNldCBob3cgdGhlIHdpbmRvdyBjb250YWluaW5n
IHRoZSAjV2ViS2l0V2ViVmlldyBzaG91bGQKKyAqIGxvb2sgYW5kIGJlaGF2ZS4gQXBwbGljYXRp
b25zIG1heSB3YW50IHRvIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQKKyAqIGFwcGx5IHRoZSBz
ZXR0aW5ncyBpdCBjYXJyaWVzIHRvIHRoZSB3aW5kb3cgaG9sZGluZyB0aGUgcmVsZXZhbnQKKyAq
ICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFNpbmNlOiAxLjAuMgorICovCit2b2lkIHdlYmtpdF93
ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcykKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyh3ZWJXaW5kb3dGZWF0dXJlcykpOworICAg
IAorICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAg
IGlmKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKHByaXYtPndlYldpbmRvd0ZlYXR1
cmVzLCB3ZWJXaW5kb3dGZWF0dXJlcykpCisgICAgICByZXR1cm47CisKKyAgICBnX29iamVjdF91
bnJlZihwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgZ19vYmplY3RfcmVmKHdlYldpbmRv
d0ZlYXR1cmVzKTsKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYldpbmRvd0ZlYXR1
cmVzOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzCisg
KiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIFJldHVybnMgdGhlIGluc3RhbmNl
IG9mICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBoZWxkIGJ5IHRoZSBnaXZlbgorICogI1dlYktp
dFdlYlZpZXcuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzCisgKgorICogU2luY2U6IDEuMC4yCisgKi8KK1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnBy
aXY7CisgICAgcmV0dXJuIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzOworfQorCisvKioKICAqIHdl
YmtpdF93ZWJfdmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0OgogICogQHdlYlZp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqIEBmbGFnOiB0byB0ZWxsIHRoZSB2aWV3IHRvIG1haW50
YWluIGEgYmFjayBvciBmb3J3YXJkIGxpc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRl
eCBlYmQxYWExLi5kNzBkNTlhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC02Mywx
MSArNjMsMTEgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgLyoKICAgICAg
KiBkZWZhdWx0IGhhbmRsZXIvdmlydHVhbCBtZXRob2RzCi0gICAgICogRElTQ1VTUzogY3JlYXRl
X3dlYl92aWV3IG5lZWRzIGEgcmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2UgdGhpcyBhIHNpZ25h
bCB3aXRoIGRlZmF1bHQgaGFuZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJlcXVpcmUgc29tZW9u
ZSBkb2luZyBhIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAgICAqIFdlYlVJRGVs
ZWdhdGUgaGFzIG5vdGhpbmcgZm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5RGVsZWdhdGUgYXMg
d2VsbC4uLgogICAgICAqLwotICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAgICAqICgqIGNyZWF0
ZV93ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisgICAgV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICogKCogY3JlYXRlX3dlYl92aWV3KSAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViRnJhbWUgICAgICAgKndlYl9mcmFt
ZSk7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBzaG93X3dlYl92aWV3KSAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiAgICAgLyoKICAgICAgKiBUT0RP
OiBGSVhNRTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJf
UHJvdG9jb2wgaW5zdGVhZApAQCAtMjQxLDEyICsyNDEsMjIgQEAgV0VCS0lUX0FQSSBHdGtUYXJn
ZXRMaXN0ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfcGFzdGVfdGFyZ2V0X2xpc3QgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfdmlld19zaG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmll
d19zZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAq
d2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0V2ViU2V0dGluZ3MgICAgKnNldHRpbmdzKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRX
ZWJTZXR0aW5ncyAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVy
ZXMpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl92
aWV3X2dldF93aW5kb3dfZmVhdHVyZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJfdmlldyk7CisKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRf
dHJhbnNwYXJlbnQgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3Zp
ZXcpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0
dXJlcy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3N2UwMQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcApAQCAt
MCwwICsxLDQxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEgPGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldp
bmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKKyNp
bmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisKK2V4dGVybiAiQyIgeworCitlbnVtIHsKKyAgICBQ
Uk9QXzAsCisKKyAgICBQUk9QX1gsCisgICAgUFJPUF9ZLAorICAgIFBST1BfV0lEVEgsCisgICAg
UFJPUF9IRUlHSFQsCisgICAgUFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9TVEFUVVNC
QVJfVklTSUJMRSwKKyAgICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAgIFBST1BfTUVOVUJB
Ul9WSVNJQkxFLAorICAgIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICBQUk9QX0ZVTExT
Q1JFRU4sCit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzLCB3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlcywgR19UWVBFX09CSkVDVCkKKworc3RydWN0IF9XZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUgeworICAgIGdpbnQgeDsKKyAgICBnaW50IHk7CisgICAg
Z2ludCB3aWR0aDsKKyAgICBnaW50IGhlaWdodDsKKworICAgIGdib29sZWFuIHRvb2xiYXJfdmlz
aWJsZTsKKyAgICBnYm9vbGVhbiBzdGF0dXNiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzY3Jv
bGxiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBtZW51YmFyX3Zpc2libGU7CisgICAgZ2Jvb2xl
YW4gbG9jYXRpb25iYXJfdmlzaWJsZTsKKworICAgIGdib29sZWFuIGZ1bGxzY3JlZW47Cit9Owor
CisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKG9iaikgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19G
RUFUVVJFUywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKSkKKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3Bl
YyogcHNwZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2NsYXNzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyoga2xhc3MpCit7Cisg
ICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwor
ICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
ZmluYWxpemU7CisgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eTsKKworICAgIEdQ
YXJhbUZsYWdzIGZsYWdzID0gKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9DT05TVFJVQ1QpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlczp4OgorICAgICoKKyAgICAqIFRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5k
b3cgb24gdGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfWCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAieCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
eCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0aW5nIHgg
cG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp5OgorICAgICoKKyAgICAqIFRoZSBzdGFydGlu
ZyB5IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBT
aW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVGhlIHN0YXJ0aW5nIHkgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2Ny
ZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp3aWR0
aDoKKyAgICAqCisgICAgKiBUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgor
ICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9XSURUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
d2lkdGgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpZHRoIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd2lkdGggb2YgdGhlIHdpbmRv
dyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlczpoZWlnaHQ6CisgICAgKgorICAgICogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93IG9u
IHRoZSBzY3JlZW4uCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0hFSUdIVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGVpZ2h0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJIZWlnaHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBo
ZWlnaHQgb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAg
KiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp0b29sYmFyLXZpc2libGU6CisgICAgKgorICAgICog
Q29udHJvbHMgd2hldGhlciB0aGUgdG9vbGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdp
bmRvdy4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfVE9PTEJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidG9vbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJUb29sYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2xiYXIgc2hvdWxkIGJl
IHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpzdGF0dXNiYXItdmlz
aWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXNiYXIgc2hvdWxk
IGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1NUQVRVU0JBUl9WSVNJ
QkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzYmFyLXZp
c2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c2JhciBW
aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3
aGV0aGVyIHRoZSBzdGF0dXNiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlczpzY3JvbGxiYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9s
cyB3aGV0aGVyIHRoZSBzY3JvbGxiYXJzIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93
LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUF9TQ1JPTExCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInNjcm9sbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJTY3JvbGxiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgc2Nyb2xsYmFycyBzaG91
bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOm1lbnViYXIt
dmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBtZW51YmFyIHNob3Vs
ZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgor
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9NRU5VQkFSX1ZJU0lC
TEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9v
bGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW51YmFyLXZpc2li
bGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lbnViYXIgVmlzaWJs
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhl
ciB0aGUgbWVudWJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOmxvY2F0aW9uYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hl
dGhlciB0aGUgbG9jYXRpb25iYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisg
ICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJMb2NhdGlvbmJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBsb2NhdGlvbmJhciBz
aG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmZ1bGxz
Y3JlZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3Bs
YXllZCBmdWxsc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9GVUxMU0NSRUVOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB3aW5kb3cgd2lsbCBiZSBkaXNwbGF5ZWQg
ZnVsbHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICBn
X3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVy
ZXNfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcykKK3sK
KyAgICB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2ID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVS
RVNfR0VUX1BSSVZBVEUod2ViX3dpbmRvd19mZWF0dXJlcyk7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25z
dCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRV
UkVTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0g
d2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAg
Y2FzZSBQUk9QX1g6CisgICAgICAgIHByaXYtPnggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgcHJpdi0+eSA9IGdfdmFs
dWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoK
KyAgICAgICAgcHJpdi0+d2lkdGggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfSEVJR0hUOgorICAgICAgICBwcml2LT5oZWlnaHQgPSBnX3Zh
bHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9PTEJB
Ul9WSVNJQkxFOgorICAgICAgICBwcml2LT50b29sYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9i
b29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9W
SVNJQkxFOgorICAgICAgICBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJ
U0lCTEU6CisgICAgICAgIHByaXYtPnNjcm9sbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lC
TEU6CisgICAgICAgIHByaXYtPm1lbnViYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTE9DQVRJT05CQVJfVklTSUJM
RToKKyAgICAgICAgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlVMTFNDUkVFTjoKKyAg
ICAgICAgcHJpdi0+ZnVsbHNjcmVlbiA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3df
ZmVhdHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAgIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVyZXMtPnBy
aXY7CisKKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAg
Z192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT54KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+eSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50
KHZhbHVlLCBwcml2LT53aWR0aCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IRUlH
SFQ6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+aGVpZ2h0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+dG9vbGJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9TQ1JPTExCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgcHJpdi0+c2Nyb2xsYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfTUVOVUJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCBwcml2LT5tZW51YmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9GVUxMU0NSRUVOOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBwcml2LT5mdWxsc2NyZWVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNw
ZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzIGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11c3QKKyAqIGJlIG1hbnVh
bGx5IGF0dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqCisgKiBTaW5jZSAxLjAuMgorICoqLworV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpCit7
CisgICAgcmV0dXJuIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBOVUxMKSk7Cit9CisKKy8vIGZvciBpbnRlcm5h
bCB1c2Ugb25seQorV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2Zl
YXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVy
ZXMmIGZlYXR1cmVzKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3ZWJXaW5kb3dG
ZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOworCisgICAgaWYoZmVh
dHVyZXMueFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1
cmVzKSwgIngiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLngpLCBOVUxMKTsKKworICAgIGlm
KGZlYXR1cmVzLnlTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dG
ZWF0dXJlcyksICJ5Iiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy55KSwgTlVMTCk7CisKKyAg
ICBpZihmZWF0dXJlcy53aWR0aFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdl
YldpbmRvd0ZlYXR1cmVzKSwgIndpZHRoIiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy53aWR0
aCksIE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMuaGVpZ2h0U2V0KQorICAgICAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAiaGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8
aW50PihmZWF0dXJlcy5oZWlnaHQpLCBOVUxMKTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVD
VCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAgICJ0b29sYmFyLXZpc2libGUi
LCBmZWF0dXJlcy50b29sQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInN0YXR1c2Jhci12
aXNpYmxlIiwgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInNj
cm9sbGJhci12aXNpYmxlIiwgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUsCisgICAgICAgICAg
ICAgICAgICJtZW51YmFyLXZpc2libGUiLCBmZWF0dXJlcy5tZW51QmFyVmlzaWJsZSwKKyAgICAg
ICAgICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCBmZWF0dXJlcy5sb2NhdGlvbkJhclZp
c2libGUsCisgICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiwgZmVhdHVyZXMuZnVsbHNjcmVl
biwKKyAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICByZXR1cm4gd2ViV2luZG93RmVhdHVy
ZXM7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWw6CisgKiBA
ZmVhdHVyZXMxOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQorICogQGZlYXR1
cmVzMjogYW5vdGhlciAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqCisgKiBE
ZWNpZGVzIGlmIGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIGVxdWFscyBhbm90
aGVyLCBhcworICogaW4gaGFzIHRoZSBzYW1lIHZhbHVlcy4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBpZiB0aGUgaW5zdGFuY2VzIGhhdmUgdGhlIHNhbWUgdmFsdWVzLCAlRkFMU0UKKyAqIG90aGVy
d2lzZQorICoKKyAqIFNpbmNlIDEuMC4yCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19lcXVhbChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMxLCBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMyKQoreworICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzUHJpdmF0ZSogcHJpdjEgPSBmZWF0dXJlczEtPnByaXY7CisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXNQcml2YXRlKiBwcml2MiA9IGZlYXR1cmVzMi0+cHJpdjsKKyAgICAKKyAgICBp
ZigocHJpdjEtPnggPT0gcHJpdjItPngpICYmCisgICAgICAgKHByaXYxLT55ID09IHByaXYyLT55
KSAmJgorICAgICAgIChwcml2MS0+d2lkdGggPT0gcHJpdjItPndpZHRoKSAmJgorICAgICAgIChw
cml2MS0+aGVpZ2h0ID09IHByaXYyLT5oZWlnaHQpICYmCisgICAgICAgKHByaXYxLT50b29sYmFy
X3Zpc2libGUgPT0gcHJpdjItPnRvb2xiYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJpdjEtPnNj
cm9sbGJhcl92aXNpYmxlID09IHByaXYyLT5zY3JvbGxiYXJfdmlzaWJsZSkgJiYKKyAgICAgICAo
cHJpdjEtPm1lbnViYXJfdmlzaWJsZSA9PSBwcml2Mi0+bWVudWJhcl92aXNpYmxlKSAmJgorICAg
ICAgIChwcml2MS0+bG9jYXRpb25iYXJfdmlzaWJsZSA9PSBwcml2Mi0+bG9jYXRpb25iYXJfdmlz
aWJsZSkgJiYKKyAgICAgICAocHJpdjEtPmZ1bGxzY3JlZW4gPT0gcHJpdjItPmZ1bGxzY3JlZW4p
KQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKworfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uODczMDA3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5v
cmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKyNkZWZpbmUgX19X
RUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisK
KyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUyAgICAgICAgICAgICh3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJ
TkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9X
SU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorI2RlZmluZSBX
RUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJF
UykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1df
RkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7CisgICAgR09iamVj
dCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUq
IHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MgeworICAg
IEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUg
ZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9
OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlw
ZSAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyoKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyAgICAgICAgICAgICAgICAgKHZvaWQp
OworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVh
bCAgICAgICAgICAgICAgIChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIGZlYXR1cmVzMik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX1dF
QktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0hfXyAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23181</attachid>
            <date>2008-09-04 15:02:16 -0700</date>
            <delta_ts>2008-09-04 15:02:16 -0700</delta_ts>
            <desc>a test page</desc>
            <filename>teste.html</filename>
            <type>text/html</type>
            <size>540</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPgo8aGVh
ZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9aXNvLTg4NTktMTUiPgo8dGl0bGU+VGVzdGU8L3RpdGxlPgoKPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGVzdGUuY3NzIj4KCjwvaGVhZD4KCjxib2R5
PgoKPGEgaWQ9Imxlcm8iIGhyZWY9InRlc3RlMi5odG1sIiB0YXJnZXQ9Il9ibGFuayI+bmV3IHdp
bmRvdzwvYT4KPGEgaHJlZj0iamF2YXNjcmlwdDogdm9pZCgwKSIgCiAgIG9uY2xpY2s9IndpbmRv
dy5vcGVuKCd0ZXN0ZTIuaHRtbCcsICd3aW5kb3duYW1lMScsICd3aWR0aD0yMDAsaGVpZ2h0PTc3
LHJlc2l6YWJsZT1ubycpOyByZXR1cm4gZmFsc2U7IgogICA+bmV3IHdpbmRvdyB3aXRoIGphdmFz
Y3JpcHQ8L2E+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23182</attachid>
            <date>2008-09-04 15:02:43 -0700</date>
            <delta_ts>2008-09-04 15:02:43 -0700</delta_ts>
            <desc>the second test page</desc>
            <filename>teste2.html</filename>
            <type>text/html</type>
            <size>413</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPgo8aGVh
ZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9aXNvLTg4NTktMTUiPgo8dGl0bGU+VGVzdGU8L3RpdGxlPgoKPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGVzdGUuY3NzIj4KCjwvaGVhZD4KCjxib2R5
PgoKPGEgaHJlZj0iamF2YXNjcmlwdDogdm9pZCgwKSIgCiAgIG9uY2xpY2s9IndpbmRvdy5yZXNp
emVUbyg2MDAsNjAwKTsiCiAgID5yZXNpemUgd2luZG93IHdpdGggamF2YXNjcmlwdDwvYT4KCjwv
Ym9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23183</attachid>
            <date>2008-09-04 15:03:37 -0700</date>
            <delta_ts>2008-09-04 15:03:37 -0700</delta_ts>
            <desc>GtkLauncher test patch</desc>
            <filename>launcher-new-window.diff</filename>
            <type>text/plain</type>
            <size>1817</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xz
L0d0a0xhdW5jaGVyL21haW4uYwppbmRleCA4ZWQyNjkwLi5mYjQ3ZWNhIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCkBAIC0zNSw2ICszNSwzMiBAQCBzdGF0aWMgZ2NoYXIqIG1haW5fdGl0bGU7CiBz
dGF0aWMgZ2ludCBsb2FkX3Byb2dyZXNzOwogc3RhdGljIGd1aW50IHN0YXR1c19jb250ZXh0X2lk
OwogCitzdGF0aWMgZ2Jvb2xlYW4KK3Nob3dfd2ViX3ZpZXdfY2IgKFdlYktpdFdlYlZpZXcqIHdl
Yl92aWV3KQoreworICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2
ZWwoR1RLX1dJREdFVCh3ZWJfdmlldykpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93
KTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIFdlYktpdFdlYlZpZXcqCitjcmVhdGVf
d2ViX3ZpZXdfY2IgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRXZWJGcmFtZSogd2Vi
X2ZyYW1lKQoreworICAgIEd0a1dpZGdldCogbmV3X3dpbmRvdzsKKyAgICBHdGtXaWRnZXQqIHNj
cm9sbGVkX3dpbmRvdzsKKyAgICBHdGtXaWRnZXQqIG5ld193ZWJfdmlldyA9IHdlYmtpdF93ZWJf
dmlld19uZXcoKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChuZXdfd2ViX3Zp
ZXcpLCAic2hvdy13ZWItdmlldyIsIEdfQ0FMTEJBQ0sgKHNob3dfd2ViX3ZpZXdfY2IpLCBOVUxM
KTsKKworICAgIG5ld193aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVM
KTsKKyAgICBzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBO
VUxMKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coc2Nyb2xsZWRfd2luZG93KTsKKyAgICBndGtfY29u
dGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG5ld193aW5kb3cpLCBzY3JvbGxlZF93aW5kb3cpOwor
ICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoc2Nyb2xsZWRfd2luZG93KSwgbmV3
X3dlYl92aWV3KTsKKworICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVcobmV3X3dlYl92aWV3KTsK
K30KKwogc3RhdGljIHZvaWQKIGFjdGl2YXRlX3VyaV9lbnRyeV9jYiAoR3RrV2lkZ2V0KiBlbnRy
eSwgZ3BvaW50ZXIgZGF0YSkKIHsKQEAgLTExNSw2ICsxNDEsNyBAQCBjcmVhdGVfYnJvd3NlciAo
KQogICAgIHdlYl92aWV3ID0gV0VCS0lUX1dFQl9WSUVXICh3ZWJraXRfd2ViX3ZpZXdfbmV3ICgp
KTsKICAgICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAoc2Nyb2xsZWRfd2luZG93
KSwgR1RLX1dJREdFVCAod2ViX3ZpZXcpKTsKIAorICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JK
RUNUICh3ZWJfdmlldyksICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLIChjcmVhdGVfd2Vi
X3ZpZXdfY2IpLCBOVUxMKTsKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3Zp
ZXcpLCAidGl0bGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKHRpdGxlX2NoYW5nZV9jYiksIHdlYl92
aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAibG9hZC1w
cm9ncmVzcy1jaGFuZ2VkIiwgR19DQUxMQkFDSyAocHJvZ3Jlc3NfY2hhbmdlX2NiKSwgd2ViX3Zp
ZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyksICJsb2FkLWNv
bW1pdHRlZCIsIEdfQ0FMTEJBQ0sgKGxvYWRfY29tbWl0X2NiKSwgd2ViX3ZpZXcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23184</attachid>
            <date>2008-09-04 15:09:19 -0700</date>
            <delta_ts>2008-09-10 11:43:29 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>46481</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNTk3M2E4Li42ZGM3YmEw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDktMDQgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDA4LTA5LTA0ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBlMjc0Mjg5Li5iZjdl
M2JlIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAt
MzE0LDYgKzMxNCw3IEBAIHdlYmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCiAKIHdlYmtpdGd0a19idWlsdF9zb3VyY2VzICs9IFwKQEAgLTM0
NSw3ICszNDYsOCBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5
aXRlbS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCi0J
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKwlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuY3BwCiAKIHdlYmtpdGd0a19jcHBmbGFncyArPSBcCiAJLURCVUlMRElOR19XRUJLSVQg
XApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAxOTlmNGI4Li45MGFmMTY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDA4LTA5LTA0
ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorICAgICAgICBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRv
dyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCisgICAgICAgIAorICAgICAgICBD
b2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFuZCBNYXJjbyBCYXJpc2lvbmUKKyAgICAgICAgPG1h
cmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+IGluIHRoaXMgY2hhbmdlIHNldC4KKworICAg
ICAgICBJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRlcmZhY2VzIG5lZWRlZCB0
byBoYXZlIG5ldworICAgICAgICB3aW5kb3cgY3JlYXRpb24gZnVuY3Rpb25pbmcgYW5kIGV4cG9z
ZWQgdG8gY2xpZW50IGNvZGUuIFdlCisgICAgICAgIGltcGxlbWVudGVkIGEgbWlycm9yIEdPYmpl
Y3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9iamVjdCBwcm92aWRlZAorICAgICAgICBieSBXZWJD
b3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFRvb2xi
YXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICog
d2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5o
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJl
cy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0
V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0
KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eSk6Cisg
ICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KToKKyAgICAgICAgKF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4KKwogMjAwOC0wOS0wMyAg
QWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvbGxvd2lu
ZyByMzYwNzMuIEluY2x1ZGUgY29uZmlnLmggd2hlcmUgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDJlNTZjMWQuLmIzY2Uy
NGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBl
dGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQ2hyaXN0aWFuIER5d2Fu
IDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBO
b3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjAs
NiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0
ay5oIgogCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpA
QCAtMjcsNiArMjksNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdG5ldHdv
cmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKQEAgLTUyLDcgKzU1LDcg
QEAgRmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgaWYgKCFtX3dlYlZp
ZXcpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYg
KHdpbmRvdykgeworICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpIHsKICAgICAg
ICAgZ2ludCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0
X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmxlZnQsICZ0b3ApOwogICAgICAgICBndGtf
d2luZG93X2dldF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgJndpZHRoLCAmaGVpZ2h0KTsKQEAg
LTYxLDkgKzY0LDIwIEBAIEZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3QoKQogICAg
IHJldHVybiBGbG9hdFJlY3QoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiByKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYg
KCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgaW50cmVjdCA9IElu
dFJlY3QocmVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1
cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKwor
ICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAgICAgICAg
ICAgICAgICJ4IiwgaW50cmVjdC54KCksCisgICAgICAgICAgICAgICAgICJ5IiwgaW50cmVjdC55
KCksCisgICAgICAgICAgICAgICAgICJ3aWR0aCIsIGludHJlY3Qud2lkdGgoKSwKKyAgICAgICAg
ICAgICAgICAgImhlaWdodCIsIGludHJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgIE5V
TEwpOwogfQogCiBGbG9hdFJlY3QgQ2hyb21lQ2xpZW50OjpwYWdlUmVjdCgpCkBAIC05MiwyOSAr
MTA2LDM1IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKICAgICBpZiAoIW1fd2ViVmll
dykKICAgICAgICAgcmV0dXJuOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9n
ZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2luZG93KQorICAg
IGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpCiAgICAgICAgIGd0a193aW5kb3dfc2V0
X2ZvY3VzKEdUS19XSU5ET1cod2luZG93KSwgTlVMTCk7CiB9CiAKLVBhZ2UqIENocm9tZUNsaWVu
dDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdp
bmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93
KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwg
Y29uc3QgV2luZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcykKIHsKLSAgICBpZiAoZmVhdHVyZXMu
ZGlhbG9nKSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgV2ViS2l0V2ViVmlldyog
d2ViVmlldyA9IDA7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJWaWV3LCAiY3Jl
YXRlLXdlYi12aWV3Iiwga2l0KGZyYW1lKSwgJndlYlZpZXcpOworCisgICAgaWYgKCF3ZWJWaWV3
KQogICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBUT0RPOiBGcmFt
ZUxvYWRSZXF1ZXN0IGlzIG5vdCB1c2VkICovCi0gICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG1fd2ViVmlldyktPmNyZWF0ZV93ZWJfdmll
dyhtX3dlYlZpZXcpOwotICAgICAgICBpZiAoIXdlYlZpZXcpCi0gICAgICAgICAgICByZXR1cm4g
MDsKLQotICAgICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRf
V0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgICAgIHJldHVybiBwcml2YXRlRGF0
YS0+Y29yZVBhZ2U7Ci0gICAgfQorCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldp
bmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9m
ZWF0dXJlcyhjb3JlRmVhdHVyZXMpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2Zl
YXR1cmVzKHdlYlZpZXcsIHdlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICBnX29iamVjdF91bnJlZihH
X09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcykpOworCisgICAgaWYgKCFmcmFtZUxvYWRSZXF1ZXN0
LmlzRW1wdHkoKSkKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X29wZW4od2ViVmlldywgZnJhbWVM
b2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKworICAgIHJldHVybiBjb3JlKHdlYlZpZXcpOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6
c2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgd2Via2l0X3dlYl92aWV3X3Nob3cobV93ZWJWaWV3KTsKIH0K
IAogYm9vbCBDaHJvbWVDbGllbnQ6OmNhblJ1bk1vZGFsKCkKQEAgLTEyOCw1MiArMTQ4LDk2IEBA
IHZvaWQgQ2hyb21lQ2xpZW50OjpydW5Nb2RhbCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZShib29sKQordm9pZCBDaHJv
bWVDbGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92
aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChH
X09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ0b29sYmFyLXZpc2libGUiLCB2aXNpYmxlLCBO
VUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3
ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1f
d2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09C
SkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ0b29sYmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVM
TCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTdGF0
dXNiYXJWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVmlzaWJs
ZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2Vi
VmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdl
YldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93
ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyks
ICJzdGF0dXNiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENocm9tZUNs
aWVudDo6c3RhdHVzYmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtp
dF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4g
dmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyks
ICJzdGF0dXNiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJs
ZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpCit2
b2lkIENocm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdl
YmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29i
amVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic2Nyb2xsYmFyLXZpc2libGUi
LCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnNjcm9sbGJhcnNWaXNp
YmxlKCkgewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRv
d19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdib29sZWFuIHZpc2libGU7CisKKyAgICBnX29i
amVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic2Nyb2xsYmFyLXZpc2libGUi
LCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hyb21l
Q2xpZW50OjpzZXRNZW51YmFyVmlzaWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldE1l
bnViYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19m
ZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSwgIm1lbnViYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29s
IENocm9tZUNsaWVudDo6bWVudWJhclZpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdi
b29sZWFuIHZpc2libGU7CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVh
dHVyZXMpLCAibWVudWJhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAgIHJldHVybiB2
aXNpYmxlOwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKGJvb2wpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvLyBJZ25vcmVkIGZvciBub3cKIH0KIAogdm9pZCBD
aHJvbWVDbGllbnQ6OmNsb3NlV2luZG93U29vbigpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGVjYTI4NTMuLmU3MTBkOTMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNp
bmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmZyYW1l
LmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCkBAIC0yNTgsNyArMjU5LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdGkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBJIHRo
aW5rIFF0IHZlcnNpb24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3aGVuIHdl
CiAgICAgLy8gaGF2ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVlZCB0byBk
byB0aGUgc2FtZQotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9u
KShQb2xpY3lJZ25vcmUpOworICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS0+KnBvbGljeUZ1
bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xp
Y3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQpAQCAtNTYx
LDcgKzU2Miw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlyc3RMYXlv
dXQoKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9t
RnJhbWUobV9mcmFtZSk7CisgICAgd2Via2l0X3dlYl92aWV3X3Nob3cod2ViVmlldyk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTczNCw4ICs3
MzYsMTYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKIAog
RnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogbmV3V2Vi
VmlldyA9IDA7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImNyZWF0ZS13
ZWItdmlldyIsIG1fZnJhbWUsICZuZXdXZWJWaWV3KTsKKworICAgIGlmICghbmV3V2ViVmlldykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURh
dGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUobmV3V2ViVmlldyk7CisgICAgcmV0dXJu
IGNvcmUocHJpdmF0ZURhdGEtPm1haW5GcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYp
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC5oCmluZGV4IDEwYzIxNGYuLjI5ZDNkZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVz
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmg+CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVz
LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggMzg2YzNlMS4uZGFj
MmRkMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtNTUsNiArNTUsOSBAQCB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNzOwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
V2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggM2Vm
YTAyYS4uZDhkYjI4YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+
CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXaW5k
b3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC02Nyw2ICs2OSw3IEBAIGV4
dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgICAgICBX
ZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNl
dHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVy
ZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKICAgICAgICAgV2ViQ29y
ZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKQEAgLTExMCw2ICsxMTMsOSBA
QCBleHRlcm4gIkMiIHsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKICAgICB3ZWJraXRfd2Vi
X2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsK
IAorICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgorICAgIHdlYmtpdF93ZWJfd2luZG93X2Zl
YXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMgKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzJiBmZWF0dXJlcyk7CisKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJm
cmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdFQktJVF9B
UEkgR1NMaXN0KgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlMDZkY2JmLi4y
MGE5NmU1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAor
KysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNCw2ICs0LDcgQEAK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgWGFuIExvcGV6IDx4YW5AZ25vbWUub3JnPgogICogIENv
cHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogIENvcHlyaWdo
dCAoQykgMjAwOCBKYW4gQWxvbnpvIDxqbWFsb256b0B1bnBsdWdnYWJsZS5jb20+CisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhIEx0ZC4KICAqCkBAIC03MCw2ICs3MSw4IEBAIGV4dGVybiAiQyIgewogZW51bSB7
CiAgICAgLyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JFUVVFU1RFRCwKKyAg
ICBDUkVBVEVfV0VCX1ZJRVcsCisgICAgU0hPV19XRUJfVklFVywKICAgICBXSU5ET1dfT0JKRUNU
X0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09NTUlUVEVELApAQCAtOTks
NiArMTAyLDcgQEAgZW51bSB7CiAgICAgUFJPUF9QQVNURV9UQVJHRVRfTElTVCwKICAgICBQUk9Q
X0VESVRBQkxFLAogICAgIFBST1BfU0VUVElOR1MsCisgICAgUFJPUF9XSU5ET1dfRkVBVFVSRVMs
CiAgICAgUFJPUF9UUkFOU1BBUkVOVCwKICAgICBQUk9QX1pPT01fTEVWRUwsCiAgICAgUFJPUF9G
VUxMX0NPTlRFTlRfWk9PTQpAQCAtMjM2LDYgKzI0MCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFs
dWUqCiAgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3Qo
dmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldykpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKHdlYlZp
ZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgogICAgICAg
ICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFy
ZW50KHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNjEsNiArMjY4LDkgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BfaWQsIGNvbnN0IEcKICAgICBjYXNlIFBST1BfU0VUVElOR1M6CiAgICAgICAgIHdlYmtp
dF93ZWJfdmlld19zZXRfc2V0dGluZ3Mod2ViVmlldywgV0VCS0lUX1dFQl9TRVRUSU5HUyhnX3Zh
bHVlX2dldF9vYmplY3QodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9X
SU5ET1dfRkVBVFVSRVM6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1
cmVzKHdlYlZpZXcsIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdfdmFsdWVfZ2V0X29iamVj
dCh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgog
ICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3RyYW5zcGFyZW50KHdlYlZpZXcsIGdfdmFsdWVf
Z2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC01NjAsMTIgKzU3MCwxNiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2ZvcmFsbChHdGtDb250YWlu
ZXIqIGNvbnRhaW5lciwgZ2Jvb2xlYW4sCiAgICAgICAgICgqY2FsbGJhY2spKCpjdXJyZW50LCBj
YWxsYmFja0RhdGEpOwogfQogCi1zdGF0aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3
X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQorc3RhdGljIFdlYktpdFdlYlZp
ZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0V2ViRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7
CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG93X3dlYl92aWV3
KFdlYktpdFdlYlZpZXcqKQoreworICAgIHJldHVybiBGQUxTRTsKK30KKwogc3RhdGljIFdlYktp
dE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVl
c3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3Jr
UmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTcyNCw2ICs3MzgsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAg
IGdfb2JqZWN0X3VucmVmKHByaXYtPmJhY2tGb3J3YXJkTGlzdCk7CiAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdzLCAoZ3BvaW50ZXIpd2Vi
a2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmlldyk7CiAgICAgZ19vYmplY3RfdW5y
ZWYocHJpdi0+d2ViU2V0dGluZ3MpOworICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRv
d0ZlYXR1cmVzKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUpOwogICAgIGdf
b2JqZWN0X3VucmVmKHByaXYtPmltQ29udGV4dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVm
KHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QpOwpAQCAtNzMzLDYgKzc0OCwxOCBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwog
fQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0X2hhbmRs
ZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25z
dCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQoreworICBnYm9vbGVhbiBj
b250aW51ZUVtaXNzaW9uID0gVFJVRTsKKyAgZ3BvaW50ZXIgbmV3V2ViVmlldyA9IGdfdmFsdWVf
Z2V0X29iamVjdChoYW5kbGVyUmV0dXJuKTsKKyAgZ192YWx1ZV9zZXRfb2JqZWN0KHJldHVybkFj
Y3UsIG5ld1dlYlZpZXcpOworCisgIGlmIChuZXdXZWJWaWV3KQorICAgICAgY29udGludWVFbWlz
c2lvbiA9IEZBTFNFOworCisgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOworfQorCiBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0
aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVy
UmV0dXJuLCBncG9pbnRlciBkdW1teSkKIHsKICAgZ2Jvb2xlYW4gY29udGludWVFbWlzc2lvbiA9
IFRSVUU7CkBAIC03NzUsNiArODAyLDY3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAqIFNpZ25h
bHMKICAgICAgKi8KIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0ZS13ZWIt
dmlldzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBp
cyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lCisgICAgICogQHJl
dHVybjogYSBuZXdseSBhbGxvY2F0ZWQgI1dlYktpdFdlYlZpZXcgb3IgJU5VTEwKKyAgICAgKgor
ICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGlzIHJlcXVl
c3RlZC4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBoYW5kbGVkIHRoZSBzaWduYWwgaGFuZGxl
ciBzaG91bGQgcmV0dXJuIHRoZQorICAgICAqIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcu
CisgICAgICoKKyAgICAgKiBUaGUgbmV3ICNXZWJLaXRXZWJWaWV3IHNob3VsZCBub3QgYmUgZGlz
cGxheWVkIHRvIHRoZSB1c2VyCisgICAgICogdW50aWwgdGhlIDo6c2hvdy13ZWItdmlldyBzaWdu
YWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaGFuZGxlcnMgc2hvdWxk
IG5vdCB0cnkgdG8gZGVhbCB3aXRoIHRoZSByZWZlcmVuY2UKKyAgICAgKiBjb3VudCBmb3IgdGhl
IG5ldyAjV2ViS2l0V2ViVmlldy4gVGhlIHdpZGdldCB0byB3aGljaCB0aGUKKyAgICAgKiB3aWRn
ZXQgaXMgYWRkZWQgd2lsbCBoYW5kbGUgdGhhdC4KKyAgICAgKgorICAgICAqIFNpbmNlIDEuMC4y
CisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ1JFQVRFX1dFQl9WSUVXXSA9
IGdfc2lnbmFsX25ldygiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05B
TF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZT
RVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRlX3dlYl92aWV3KSwKKyAgICAgICAgICAgIHdl
YmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwK
KyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNULAorICAgICAgICAgICAg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcgLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZS
QU1FKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNob3ctd2ViLXZpZXc6Cisg
ICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZAorICAgICAqIEByZXR1cm46ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWlu
ZyBpbnZva2VkIGZvcgorICAgICAqIHRoZSBldmVudCwgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUg
ZXZlbnQgZnVydGhlcgorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciA6OmNyZWF0ZS13ZWIt
dmlldyB3aGVuIHRoZSBuZXcgI1dlYktpdFdlYlZpZXcKKyAgICAgKiBzaG91bGQgYmUgZGlzcGxh
eWVkIHRvIHRoZSB1c2VyLiBXaGVuIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBhbGwg
dGhlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgd2luZG93IHNob3VsZCBsb29rLCBpbmNsdWRp
bmcKKyAgICAgKiBzaXplLCBwb3NpdGlvbiwgd2hldGhlciB0aGUgbG9jYXRpb24sIHN0YXR1cyBh
bmQgc2Nyb2xsIGJhcnMKKyAgICAgKiBzaG91bGQgYmUgZGlzcGxheWVkLCBpcyBhbHJlYWR5IHNl
dCBvbiB0aGUKKyAgICAgKiAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgb2JqZWN0IGNvbnRhaW5l
ZCBieSB0aGUgI1dlYktpdFdlYlZpZXcuCisgICAgICoKKyAgICAgKiBOb3RpY2UgdGhhdCBzb21l
IG9mIHRoYXQgaW5mb3JtYXRpb24gbWF5IGNoYW5nZSBkdXJpbmcgdGhlIGxpZmUKKyAgICAgKiB0
aW1lIG9mIHRoZSB3aW5kb3csIHNvIHlvdSBtYXkgd2FudCB0byBjb25uZWN0IHRvIHRoZSA6Om5v
dGlmeQorICAgICAqIHNpZ25hbCBvZiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIG9iamVj
dCB0byBoYW5kbGUgdGhvc2UuCisgICAgICoKKyAgICAgKiBJZiB0aGVyZSBpc24ndCBhbnkgaGFu
ZGxlciBmb3IgdGhpcyBzaWduYWwgb3IgaWYgdGhleSByZXR1cm4KKyAgICAgKiAlRkFMU0UsIHRo
ZW4gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIGNhbGwgZ3RrX3dpZGdldF9zaG93KCkgb24KKyAg
ICAgKiB0aGUgdG9wbGV2ZWwgd2luZG93IGNvbnRhaW5pbmcgQHdlYl92aWV3LCBhbmQgb24gQHdl
Yl92aWV3LgorICAgICAqCisgICAgICogU2luY2UgMS4wLjIKKyAgICAgKi8KKyAgICB3ZWJraXRf
d2ViX3ZpZXdfc2lnbmFsc1tTSE9XX1dFQl9WSUVXXSA9IGdfc2lnbmFsX25ldygic2hvdy13ZWIt
dmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAg
ICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QpLAorICAgICAgICAgICAg
R19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xhc3MsIHNob3dfd2ViX3ZpZXcpLAorICAg
ICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAg
TlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAg
ICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tO
QVZJR0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVk
IiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
CkBAIC0xMTEwLDYgKzExOTgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBpbXBsZW1lbnRh
dGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVh
dGVfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAg
d2ViVmlld0NsYXNzLT5zaG93X3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193
ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0
X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53
aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0
X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmll
d19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTIwOSw2ICsxMjk4LDIwIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNz
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAor
ICAgIC8qKgorICAgICogV2ViS2l0V2ViVmlldzp3aW5kb3ctZmVhdHVyZXM6CisgICAgKgorICAg
ICogQW4gYXNzb2NpYXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZS4KKyAgICAq
CisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2luZG93LWZlYXR1
cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIldpbmRvdyBGZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJBbiBhc3NvY2lhdGVkIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzIGluc3RhbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURXUklURSkpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShvYmplY3RDbGFzcywgUFJPUF9FRElUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlZGl0YWJsZSIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWRpdGFibGUiLApA
QCAtMTQ0MCw2ICsxNTQzLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdz
KHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1jaGFuZ2Vk
IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxMKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFD
Syh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAgICBwcml2
LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOwog
fQogCiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTE0NDksNiArMTU1
NCwyNiBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAgICByZXR1cm4g
R1RLX1dJREdFVCh3ZWJWaWV3KTsKIH0KIAordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2hvdyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlzSGFuZGxlZCA9IEZBTFNFOworICAg
IGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0hPV19XRUJf
VklFV10sIDAsICZpc0hhbmRsZWQpOworICAgIGlmIChpc0hhbmRsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8qIEZJWE1FOiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBzaG93IHRoZSB0b3Bs
ZXZlbCB3aW5kb3csIGJ1dAorICAgICAqIFdlYktpdCBibG93cyB1cCBhdCBTY3JvbGxWaWV3Ojp1
cGRhdGUgaWYgd2UgZG9uJ3Qgc2hvdyB0aGUKKyAgICAgKiB0b3BsZXZlbCB3aW5kb3c7CisgICAg
ICovCisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdU
S19XSURHRVQod2ViVmlldykpOworICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHRvcGxldmVs
KSkKKyAgICAgICAgZ3RrX3dpZGdldF9zaG93KHRvcGxldmVsKTsKKyAgICBndGtfd2lkZ2V0X3No
b3coR1RLX1dJREdFVCh3ZWJWaWV3KSk7Cit9CisKKwogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0
X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJT
ZXR0aW5ncykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CkBAIC0xNDczLDYgKzE1OTgsNTIgQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAogLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZpZXc6IGEgI1dl
YktpdFdlYlZpZXcKKyAqIEB3aW5kb3dfZmVhdHVyZXM6IGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzCisgKgorICogVGhpcyB3aWxsIHNldCBob3cgdGhlIHdpbmRvdyBjb250YWluaW5nIHRoZSAj
V2ViS2l0V2ViVmlldyBzaG91bGQKKyAqIGxvb2sgYW5kIGJlaGF2ZS4gQXBwbGljYXRpb25zIG1h
eSB3YW50IHRvIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQKKyAqIGFwcGx5IHRoZSBzZXR0aW5n
cyBpdCBjYXJyaWVzIHRvIHRoZSB3aW5kb3cgaG9sZGluZyB0aGUgcmVsZXZhbnQKKyAqICNXZWJL
aXRXZWJWaWV3LgorICoKKyAqIFNpbmNlOiAxLjAuMgorICovCit2b2lkIHdlYmtpdF93ZWJfdmll
d19zZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyh3ZWJXaW5kb3dGZWF0dXJlcykpOworICAgIAorICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIGlmKHdl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzLCB3
ZWJXaW5kb3dGZWF0dXJlcykpCisgICAgICByZXR1cm47CisKKyAgICBnX29iamVjdF91bnJlZihw
cml2LT53ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgZ19vYmplY3RfcmVmKHdlYldpbmRvd0ZlYXR1
cmVzKTsKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYldpbmRvd0ZlYXR1cmVzOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzCisgKiBAd2Vi
VmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIFJldHVybnMgdGhlIGluc3RhbmNlIG9mICNX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBoZWxkIGJ5IHRoZSBnaXZlbgorICogI1dlYktpdFdlYlZp
ZXcuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzCisg
KgorICogU2luY2U6IDEuMC4yCisgKi8KK1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVM
TCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Cisg
ICAgcmV0dXJuIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzOworfQorCisvKioKICAqIHdlYmtpdF93
ZWJfdmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0OgogICogQHdlYlZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqIEBmbGFnOiB0byB0ZWxsIHRoZSB2aWV3IHRvIG1haW50YWluIGEg
YmFjayBvciBmb3J3YXJkIGxpc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCBlYmQx
YWExLi5kNzBkNTlhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC02MywxMSArNjMs
MTEgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgLyoKICAgICAgKiBkZWZh
dWx0IGhhbmRsZXIvdmlydHVhbCBtZXRob2RzCi0gICAgICogRElTQ1VTUzogY3JlYXRlX3dlYl92
aWV3IG5lZWRzIGEgcmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2UgdGhpcyBhIHNpZ25hbCB3aXRo
IGRlZmF1bHQgaGFuZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJlcXVpcmUgc29tZW9uZSBkb2lu
ZyBhIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAgICAqIFdlYlVJRGVsZWdhdGUg
aGFzIG5vdGhpbmcgZm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5RGVsZWdhdGUgYXMgd2VsbC4u
LgogICAgICAqLwotICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAgICAqICgqIGNyZWF0ZV93ZWJf
dmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisgICAgV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICogKCogY3JlYXRlX3dlYl92aWV3KSAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViRnJhbWUgICAgICAgKndlYl9mcmFtZSk7CisK
KyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBzaG93X3dlYl92aWV3KSAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiAgICAgLyoKICAgICAgKiBUT0RPOiBGSVhN
RTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXJfUHJvdG9j
b2wgaW5zdGVhZApAQCAtMjQxLDEyICsyNDEsMjIgQEAgV0VCS0lUX0FQSSBHdGtUYXJnZXRMaXN0
ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfcGFzdGVfdGFyZ2V0X2xpc3QgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfdmlld19zaG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19zZXRf
c2V0dGluZ3MgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3Zp
ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0V2ViU2V0dGluZ3MgICAgKnNldHRpbmdzKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJTZXR0
aW5ncyAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMpOwor
CitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl92aWV3X2dl
dF93aW5kb3dfZmVhdHVyZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJf
dmlldyk7CisKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHJhbnNw
YXJlbnQgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwog
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5j
cHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3N2UwMQotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcApAQCAtMCwwICsx
LDQxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEg
PGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldpbmRvd0Zl
YXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKKyNpbmNsdWRl
ICJ3ZWJraXRwcml2YXRlLmgiCisKK2V4dGVybiAiQyIgeworCitlbnVtIHsKKyAgICBQUk9QXzAs
CisKKyAgICBQUk9QX1gsCisgICAgUFJPUF9ZLAorICAgIFBST1BfV0lEVEgsCisgICAgUFJPUF9I
RUlHSFQsCisgICAgUFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9TVEFUVVNCQVJfVklT
SUJMRSwKKyAgICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAgIFBST1BfTUVOVUJBUl9WSVNJ
QkxFLAorICAgIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICBQUk9QX0ZVTExTQ1JFRU4s
Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzLCB3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlcywgR19UWVBFX09CSkVDVCkKKworc3RydWN0IF9XZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGUgeworICAgIGdpbnQgeDsKKyAgICBnaW50IHk7CisgICAgZ2ludCB3
aWR0aDsKKyAgICBnaW50IGhlaWdodDsKKworICAgIGdib29sZWFuIHRvb2xiYXJfdmlzaWJsZTsK
KyAgICBnYm9vbGVhbiBzdGF0dXNiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzY3JvbGxiYXJf
dmlzaWJsZTsKKyAgICBnYm9vbGVhbiBtZW51YmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gbG9j
YXRpb25iYXJfdmlzaWJsZTsKKworICAgIGdib29sZWFuIGZ1bGxzY3JlZW47Cit9OworCisjZGVm
aW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJF
UywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKSkKKworc3RhdGljIHZvaWQgd2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNw
ZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2Ns
YXNzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyoga2xhc3MpCit7CisgICAgR09i
amVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIGdv
YmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxp
emU7CisgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfc2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eTsKKworICAgIEdQYXJhbUZs
YWdzIGZsYWdzID0gKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1QpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp4
OgorICAgICoKKyAgICAqIFRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24g
dGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAieCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0aW5nIHggcG9zaXRp
b24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdf
TUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp5OgorICAgICoKKyAgICAqIFRoZSBzdGFydGluZyB5IHBv
c2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTog
MS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVj
dF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVGhlIHN0YXJ0aW5nIHkgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp3aWR0aDoKKyAg
ICAqCisgICAgKiBUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgorICAgICoK
KyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9XSURUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpZHRoIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0
aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
czpoZWlnaHQ6CisgICAgKgorICAgICogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93IG9uIHRoZSBz
Y3JlZW4uCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0hFSUdIVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaGVpZ2h0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJI
ZWlnaHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBoZWlnaHQg
b2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFY
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlczp0b29sYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJv
bHMgd2hldGhlciB0aGUgdG9vbGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4K
KyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfVE9PTEJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidG9vbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUb29sYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2xiYXIgc2hvdWxkIGJlIHZpc2li
bGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpzdGF0dXNiYXItdmlzaWJsZToK
KyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXNiYXIgc2hvdWxkIGJlIHZp
c2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8K
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzYmFyLXZpc2libGUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c2JhciBWaXNpYmxl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVy
IHRoZSBzdGF0dXNiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlczpzY3JvbGxiYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0
aGVyIHRoZSBzY3JvbGxiYXJzIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAg
ICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9TQ1JPTExCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInNjcm9sbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJTY3JvbGxiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgc2Nyb2xsYmFycyBzaG91bGQgYmUg
dmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7
CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOm1lbnViYXItdmlzaWJs
ZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBtZW51YmFyIHNob3VsZCBiZSB2
aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICov
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9NRU5VQkFSX1ZJU0lCTEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW51YmFyLXZpc2libGUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lbnViYXIgVmlzaWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUg
bWVudWJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzOmxvY2F0aW9uYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0
aGUgbG9jYXRpb25iYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgor
ICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJMb2NhdGlvbmJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBsb2NhdGlvbmJhciBzaG91bGQg
YmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
KSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmZ1bGxzY3JlZToK
KyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBm
dWxsc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9GVUxMU0NSRUVOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ29udHJvbHMgd2hldGhlciB3aW5kb3cgd2lsbCBiZSBkaXNwbGF5ZWQgZnVsbHNj
cmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1By
aXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfaW5p
dChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcykKK3sKKyAgICB3
ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2ID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VU
X1BSSVZBVEUod2ViX3dpbmRvd19mZWF0dXJlcyk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19wYXJlbnRfY2xhc3MpLT5maW5h
bGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9i
amVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2ViX3dp
bmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2FzZSBQ
Uk9QX1g6CisgICAgICAgIHByaXYtPnggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgcHJpdi0+eSA9IGdfdmFsdWVfZ2V0
X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAgICAg
ICAgcHJpdi0+d2lkdGggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfSEVJR0hUOgorICAgICAgICBwcml2LT5oZWlnaHQgPSBnX3ZhbHVlX2dl
dF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJ
QkxFOgorICAgICAgICBwcml2LT50b29sYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFu
KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxF
OgorICAgICAgICBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJU0lCTEU6
CisgICAgICAgIHByaXYtPnNjcm9sbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2
YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lCTEU6Cisg
ICAgICAgIHByaXYtPm1lbnViYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRToKKyAg
ICAgICAgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlVMTFNDUkVFTjoKKyAgICAgICAg
cHJpdi0+ZnVsbHNjcmVlbiA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVy
ZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXY7CisK
KyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAgZ192YWx1
ZV9zZXRfaW50KHZhbHVlLCBwcml2LT54KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+eSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVl
LCBwcml2LT53aWR0aCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IRUlHSFQ6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+aGVpZ2h0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRf
Ym9vbGVhbih2YWx1ZSwgcHJpdi0+dG9vbGJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCBwcml2LT5zdGF0dXNiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9TQ1JPTExCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgcHJpdi0+c2Nyb2xsYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfTUVOVUJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCBwcml2LT5tZW51YmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfTE9DQVRJT05CQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgcHJpdi0+bG9jYXRpb25iYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9GVUxMU0NSRUVOOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2
LT5mdWxsc2NyZWVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
IGluc3RhbmNlIHdpdGggZGVmYXVsdCB2YWx1ZXMuIEl0IG11c3QKKyAqIGJlIG1hbnVhbGx5IGF0
dGFjaGVkIHRvIGEgV2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqCisgKiBTaW5jZSAxLjAuMgorICoqLworV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpCit7CisgICAg
cmV0dXJuIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBOVUxMKSk7Cit9CisKKy8vIGZvciBpbnRlcm5hbCB1c2Ug
b25seQorV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3ZWJXaW5kb3dGZWF0dXJl
cyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOworCisgICAgaWYoZmVhdHVyZXMu
eFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwg
IngiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLngpLCBOVUxMKTsKKworICAgIGlmKGZlYXR1
cmVzLnlTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJl
cyksICJ5Iiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy55KSwgTlVMTCk7CisKKyAgICBpZihm
ZWF0dXJlcy53aWR0aFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSwgIndpZHRoIiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy53aWR0aCksIE5V
TEwpOworCisgICAgaWYoZmVhdHVyZXMuaGVpZ2h0U2V0KQorICAgICAgICBnX29iamVjdF9zZXQo
R19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAiaGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8aW50Pihm
ZWF0dXJlcy5oZWlnaHQpLCBOVUxMKTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJX
aW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAgICJ0b29sYmFyLXZpc2libGUiLCBmZWF0
dXJlcy50b29sQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInN0YXR1c2Jhci12aXNpYmxl
IiwgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInNjcm9sbGJh
ci12aXNpYmxlIiwgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUsCisgICAgICAgICAgICAgICAg
ICJtZW51YmFyLXZpc2libGUiLCBmZWF0dXJlcy5tZW51QmFyVmlzaWJsZSwKKyAgICAgICAgICAg
ICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUs
CisgICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiwgZmVhdHVyZXMuZnVsbHNjcmVlbiwKKyAg
ICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICByZXR1cm4gd2ViV2luZG93RmVhdHVyZXM7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWw6CisgKiBAZmVhdHVy
ZXMxOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQorICogQGZlYXR1cmVzMjog
YW5vdGhlciAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqCisgKiBEZWNpZGVz
IGlmIGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIGVxdWFscyBhbm90aGVyLCBh
cworICogaW4gaGFzIHRoZSBzYW1lIHZhbHVlcy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiB0
aGUgaW5zdGFuY2VzIGhhdmUgdGhlIHNhbWUgdmFsdWVzLCAlRkFMU0UKKyAqIG90aGVyd2lzZQor
ICoKKyAqIFNpbmNlIDEuMC4yCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19lcXVhbChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMxLCBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyogZmVhdHVyZXMyKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
UHJpdmF0ZSogcHJpdjEgPSBmZWF0dXJlczEtPnByaXY7CisgICAgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlKiBwcml2MiA9IGZlYXR1cmVzMi0+cHJpdjsKKyAgICAKKyAgICBpZigocHJp
djEtPnggPT0gcHJpdjItPngpICYmCisgICAgICAgKHByaXYxLT55ID09IHByaXYyLT55KSAmJgor
ICAgICAgIChwcml2MS0+d2lkdGggPT0gcHJpdjItPndpZHRoKSAmJgorICAgICAgIChwcml2MS0+
aGVpZ2h0ID09IHByaXYyLT5oZWlnaHQpICYmCisgICAgICAgKHByaXYxLT50b29sYmFyX3Zpc2li
bGUgPT0gcHJpdjItPnRvb2xiYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJpdjEtPnNjcm9sbGJh
cl92aXNpYmxlID09IHByaXYyLT5zY3JvbGxiYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJpdjEt
Pm1lbnViYXJfdmlzaWJsZSA9PSBwcml2Mi0+bWVudWJhcl92aXNpYmxlKSAmJgorICAgICAgIChw
cml2MS0+bG9jYXRpb25iYXJfdmlzaWJsZSA9PSBwcml2Mi0+bG9jYXRpb25iYXJfdmlzaWJsZSkg
JiYKKyAgICAgICAocHJpdjEtPmZ1bGxzY3JlZW4gPT0gcHJpdjItPmZ1bGxzY3JlZW4pKQorICAg
ICAgICByZXR1cm4gVFJVRTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKworfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODczMDA3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+Cisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
Zm5kZWYgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18KKyNkZWZpbmUgX19XRUJLSVRf
V0VCX1dJTkRPV19GRUFUVVJFU19IX18KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZp
bmUgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUyAgICAgICAgICAgICh3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19G
RUFUVVJFUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cykpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNTKGtsYXNzKSAgICAo
R19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1df
RkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRf
SVNfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUykpCisj
ZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9DTEFTUyhvYmopICAoR19UWVBF
X0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVS
RVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7CisgICAgR09iamVjdCBwYXJl
bnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MgeworICAgIEdPYmpl
Y3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5z
aW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQz
KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitX
RUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSAgICAg
ICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyAgICAgICAgICAgICAgICAgKHZvaWQpOworCitX
RUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbCAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXMqIGZlYXR1cmVzMik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX1dFQktJVF9X
RUJfV0lORE9XX0ZFQVRVUkVTX0hfXyAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23324</attachid>
            <date>2008-09-10 11:43:29 -0700</date>
            <delta_ts>2008-09-17 10:22:24 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>46238</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NmY1OTlmLi41ODJjZjQ0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDktMDQgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDA4LTA5LTA0ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBlMjc0Mjg5Li5iZjdl
M2JlIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAt
MzE0LDYgKzMxNCw3IEBAIHdlYmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCiAKIHdlYmtpdGd0a19idWlsdF9zb3VyY2VzICs9IFwKQEAgLTM0
NSw3ICszNDYsOCBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5
aXRlbS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCi0J
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKwlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuY3BwCiAKIHdlYmtpdGd0a19jcHBmbGFncyArPSBcCiAJLURCVUlMRElOR19XRUJLSVQg
XApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCBjY2I0MWE1Li5lODUxNTdmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDA4LTA5LTA0
ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorICAgICAgICBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRv
dyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCisgICAgICAgIAorICAgICAgICBD
b2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFuZCBNYXJjbyBCYXJpc2lvbmUKKyAgICAgICAgPG1h
cmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+IGluIHRoaXMgY2hhbmdlIHNldC4KKworICAg
ICAgICBJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBpbnRlcmZhY2VzIG5lZWRlZCB0
byBoYXZlIG5ldworICAgICAgICB3aW5kb3cgY3JlYXRpb24gZnVuY3Rpb25pbmcgYW5kIGV4cG9z
ZWQgdG8gY2xpZW50IGNvZGUuIFdlCisgICAgICAgIGltcGxlbWVudGVkIGEgbWlycm9yIEdPYmpl
Y3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9iamVjdCBwcm92aWRlZAorICAgICAgICBieSBXZWJD
b3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFRvb2xi
YXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNp
YmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9t
ZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICog
d2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5o
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJl
cy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0
V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0
KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eSk6Cisg
ICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRv
d19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KToKKyAgICAgICAgKF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRlZC4KKwogMjAwOC0wOS0wNyAg
Q2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAyZTU2YzFkLi5iM2NlMjRlIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC0xLDYgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5k
aW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25z
QGdub21lLm9yZz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDYgKzIxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUg
IkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTI3LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCkBAIC01Miw3ICs1NSw3IEBAIEZsb2F0UmVjdCBDaHJv
bWVDbGllbnQ6OndpbmRvd1JlY3QoKQogICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICByZXR1
cm4gRmxvYXRSZWN0KCk7CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90
b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwotICAgIGlmICh3aW5kb3cpIHsKKyAgICBp
ZiAoR1RLX1dJREdFVF9UT1BMRVZFTCh3aW5kb3cpKSB7CiAgICAgICAgIGdpbnQgbGVmdCwgdG9w
LCB3aWR0aCwgaGVpZ2h0OwogICAgICAgICBndGtfd2luZG93X2dldF9wb3NpdGlvbihHVEtfV0lO
RE9XKHdpbmRvdyksICZsZWZ0LCAmdG9wKTsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShH
VEtfV0lORE9XKHdpbmRvdyksICZ3aWR0aCwgJmhlaWdodCk7CkBAIC02MSw5ICs2NCwyMCBAQCBG
bG9hdFJlY3QgQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICByZXR1cm4gRmxvYXRSZWN0
KCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcikKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBJbnRSZWN0IGludHJlY3QgPSBJbnRSZWN0KHJlY3QpOworICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJf
dmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQo
R19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLAorICAgICAgICAgICAgICAgICAieCIsIGludHJl
Y3QueCgpLAorICAgICAgICAgICAgICAgICAieSIsIGludHJlY3QueSgpLAorICAgICAgICAgICAg
ICAgICAid2lkdGgiLCBpbnRyZWN0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICJoZWlnaHQi
LCBpbnRyZWN0LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICBOVUxMKTsKIH0KIAogRmxvYXRS
ZWN0IENocm9tZUNsaWVudDo6cGFnZVJlY3QoKQpAQCAtOTIsMjkgKzEwNiwzNSBAQCB2b2lkIENo
cm9tZUNsaWVudDo6dW5mb2N1cygpCiAgICAgaWYgKCFtX3dlYlZpZXcpCiAgICAgICAgIHJldHVy
bjsKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19X
SURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKHdpbmRvdykKKyAgICBpZiAoR1RLX1dJREdFVF9U
T1BMRVZFTCh3aW5kb3cpKQogICAgICAgICBndGtfd2luZG93X3NldF9mb2N1cyhHVEtfV0lORE9X
KHdpbmRvdyksIE5VTEwpOwogfQogCi1QYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVh
dHVyZXMpCitQYWdlKiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1
cmVzJiBjb3JlRmVhdHVyZXMpCiB7Ci0gICAgaWYgKGZlYXR1cmVzLmRpYWxvZykgewotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAwOworCisg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgImNyZWF0ZS13ZWItdmlldyIsIGtp
dChmcmFtZSksICZ3ZWJWaWV3KTsKKworICAgIGlmICghd2ViVmlldykKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogVE9ETzogRnJhbWVMb2FkUmVxdWVzdCBpcyBu
b3QgdXNlZCAqLwotICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXX0dFVF9DTEFTUyhtX3dlYlZpZXcpLT5jcmVhdGVfd2ViX3ZpZXcobV93ZWJWaWV3KTsKLSAg
ICAgICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVEYXRhID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklW
QVRFKHdlYlZpZXcpOwotICAgICAgICByZXR1cm4gcHJpdmF0ZURhdGEtPmNvcmVQYWdlOwotICAg
IH0KKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29yZUZlYXR1
cmVzKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3LCB3
ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qod2ViV2luZG93
RmVhdHVyZXMpKTsKKworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5KCkpCisgICAg
ICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKHdlYlZpZXcsIGZyYW1lTG9hZFJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4g
Y29yZSh3ZWJWaWV3KTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNob3coKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHdlYmtpdF93ZWJfdmlld19zaG93KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xp
ZW50OjpjYW5SdW5Nb2RhbCgpCkBAIC0xMjgsNTIgKzE0OCw5NiBAQCB2b2lkIENocm9tZUNsaWVu
dDo6cnVuTW9kYWwoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xp
ZW50OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRUb29s
YmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
aWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2Zl
YXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93
RmVhdHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wg
Q2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdi
b29sZWFuIHZpc2libGU7CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVh
dHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAgIHJldHVybiB2
aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVmlzaWJsZShib29s
KQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCB2aXNpYmxlKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBn
X29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVzYmFyLXZpc2li
bGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZp
c2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dp
bmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdib29sZWFuIHZpc2libGU7CisKKyAgICBn
X29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVzYmFyLXZpc2li
bGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLXZvaWQgQ2hy
b21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6
OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNU
KHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7
CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSgpIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldp
bmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJW
aWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNU
KHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwp
OworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0TWVudWJh
clZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlzaWJsZShib29s
IHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRv
d0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3
KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJtZW51
YmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6Om1l
bnViYXJWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3
X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOwor
CisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgIm1lbnViYXIt
dmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAogdm9p
ZCBDaHJvbWVDbGllbnQ6OnNldFJlc2l6YWJsZShib29sKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgLy8gSWdub3JlZCBmb3Igbm93CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpjbG9z
ZVdpbmRvd1Nvb24oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAppbmRleCAwMzc1NDI4Li43NGMwZjRmIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0bmV0
d29ya3JlcXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndl
YmtpdHByaXZhdGUuaCIKIApAQCAtMjU2LDcgKzI1Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVu
Y3RpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2ZXJzaW9uIG1h
cnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQogICAgIC8vIGhhdmUgbXVs
dGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNhbWUKLSAgICAo
Y29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsK
KyAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNl
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKQEAgLTU1OSw3ICs1NjAsOCBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwor
ICAgIHdlYmtpdF93ZWJfdmlld19zaG93KHdlYlZpZXcpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCkBAIC03MzIsOCArNzM0LDE2IEBAIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0CiAKIEZyYW1lKiBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZy
YW1lKG1fZnJhbWUpOworICAgIFdlYktpdFdlYlZpZXcqIG5ld1dlYlZpZXcgPSAwOworCisgICAg
Z19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBtX2ZyYW1l
LCAmbmV3V2ViVmlldyk7CisKKyAgICBpZiAoIW5ld1dlYlZpZXcpCisgICAgICAgIHJldHVybiAw
OworCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXZhdGVEYXRhID0gV0VCS0lUX1dFQl9W
SUVXX0dFVF9QUklWQVRFKG5ld1dlYlZpZXcpOworICAgIHJldHVybiBjb3JlKHByaXZhdGVEYXRh
LT5tYWluRnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFVuYWJs
ZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAppbmRl
eCAxMGMyMTRmLi4yOWQzZGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQu
aAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgor
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3
YXJkbGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0ZGVmaW5lcy5oCmluZGV4IDM4NmMzZTEuLmRhYzJkZDMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRkZWZpbmVzLmgKQEAgLTU1LDYgKzU1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYkZyYW1lQ2xhc3MgV2ViS2l0V2ViRnJhbWVDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJTZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJTZXR0aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzQ2xhc3M7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZp
ZXc7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFz
czsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDNlZmEwMmEuLjg1MTQ0MWIgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJi
YWNrZm9yd2FyZGxpc3QuaD4KIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMzgs
NiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAog
I2luY2x1ZGUgPGdsaWIuaD4KIApAQCAtNjcsNiArNjksNyBAQCBleHRlcm4gIkMiIHsKICAgICBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICAgICAgV2ViQ29yZTo6UGFnZSogY29y
ZVBhZ2U7CiAgICAgICAgIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKKyAgICAgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzOwogCiAgICAgICAgIFdl
YktpdFdlYkZyYW1lKiBtYWluRnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQ7CkBAIC0xMTAsNiArMTEzLDEyIEBAIGV4dGVybiAiQyIgewog
ICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgogICAgIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25l
d193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwogCisgICAgV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMqCisgICAgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21f
Y29yZV9mZWF0dXJlcyAoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKTsK
KworICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyAoV2ViS2l0V2ViVmlldyogd2Vi
X3ZpZXcpOworCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBv
bmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlz
dCoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggZTA2ZGNiZi4uM2E1ZTI0MiAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MDggSmFuIEFsb256byA8am1hbG9uem9AdW5wbHVnZ2FibGUuY29tPgorICogIENvcHlyaWdodCAo
QykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9y
YSBMdGQuCiAgKgpAQCAtNzAsNiArNzEsOCBAQCBleHRlcm4gIkMiIHsKIGVudW0gewogICAgIC8q
IG5vcm1hbCBzaWduYWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAgQ1JFQVRF
X1dFQl9WSUVXLAorICAgIFNIT1dfV0VCX1ZJRVcsCiAgICAgV0lORE9XX09CSkVDVF9DTEVBUkVE
LAogICAgIExPQURfU1RBUlRFRCwKICAgICBMT0FEX0NPTU1JVFRFRCwKQEAgLTk5LDYgKzEwMiw3
IEBAIGVudW0gewogICAgIFBST1BfUEFTVEVfVEFSR0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJM
RSwKICAgICBQUk9QX1NFVFRJTkdTLAorICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTLAogICAgIFBS
T1BfVFJBTlNQQVJFTlQsCiAgICAgUFJPUF9aT09NX0xFVkVMLAogICAgIFBST1BfRlVMTF9DT05U
RU5UX1pPT00KQEAgLTIzNiw2ICsyNDAsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKgogICAg
IGNhc2UgUFJPUF9TRVRUSU5HUzoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0
KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3KSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCh3ZWJW
aWV3KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjYxLDYgKzI2OCw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lk
LCBjb25zdCBHCiAgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3NldHRpbmdzKHdlYlZpZXcsIFdFQktJVF9XRUJfU0VUVElOR1MoZ192YWx1ZV9nZXRf
b2JqZWN0KHZhbHVlKSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZF
QVRVUkVTOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJW
aWV3LCBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUp
KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAg
d2Via2l0X3dlYl92aWV3X3NldF90cmFuc3BhcmVudCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTYwLDEyICs1NzAsMTYgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NvbnRhaW5lcl9mb3JhbGwoR3RrQ29udGFpbmVyKiBjb250
YWluZXIsIGdib29sZWFuLAogICAgICAgICAoKmNhbGxiYWNrKSgqY3VycmVudCwgY2FsbGJhY2tE
YXRhKTsKIH0KIAotc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2Ny
ZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYktpdFdl
YkZyYW1lKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCitz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldyhXZWJLaXRX
ZWJWaWV3KikKK3sKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyBXZWJLaXROYXZpZ2F0
aW9uUmVzcG9uc2Ugd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQoV2Vi
S2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3Qq
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC03MjQsNiArNzM4LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBnX29iamVj
dF91bnJlZihwcml2LT5iYWNrRm9yd2FyZExpc3QpOwogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncywgKGdwb2ludGVyKXdlYmtpdF93ZWJf
dmlld19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
PndlYlNldHRpbmdzKTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJXaW5kb3dGZWF0dXJl
cyk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+bWFpbkZyYW1lKTsKICAgICBnX29iamVjdF91
bnJlZihwcml2LT5pbUNvbnRleHQpOwogICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5j
b3B5X3RhcmdldF9saXN0KTsKQEAgLTczMyw2ICs3NDgsMTggQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAorc3Rh
dGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkKEdTaWdu
YWxJbnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVl
KiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKK3sKKyAgZ2Jvb2xlYW4gY29udGludWVF
bWlzc2lvbiA9IFRSVUU7CisgIGdwb2ludGVyIG5ld1dlYlZpZXcgPSBnX3ZhbHVlX2dldF9vYmpl
Y3QoaGFuZGxlclJldHVybik7CisgIGdfdmFsdWVfc2V0X29iamVjdChyZXR1cm5BY2N1LCBuZXdX
ZWJWaWV3KTsKKworICBpZiAobmV3V2ViVmlldykKKyAgICAgIGNvbnRpbnVlRW1pc3Npb24gPSBG
QUxTRTsKKworICByZXR1cm4gY29udGludWVFbWlzc2lvbjsKK30KKwogc3RhdGljIGdib29sZWFu
IHdlYmtpdF9uYXZpZ2F0aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQq
IGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwg
Z3BvaW50ZXIgZHVtbXkpCiB7CiAgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOwpA
QCAtNzc1LDYgKzgwMiw2NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBTaWduYWxzCiAgICAg
ICovCiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpjcmVhdGUtd2ViLXZpZXc6Cisg
ICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZAorICAgICAqIEBmcmFtZTogdGhlICNXZWJLaXRXZWJGcmFtZQorICAgICAqIEByZXR1cm46IGEg
bmV3bHkgYWxsb2NhdGVkICNXZWJLaXRXZWJWaWV3IG9yICVOVUxMCisgICAgICoKKyAgICAgKiBF
bWl0dGVkIHdoZW4gdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHdpbmRvdyBpcyByZXF1ZXN0ZWQuCisg
ICAgICogSWYgdGhpcyBzaWduYWwgaXMgaGFuZGxlZCB0aGUgc2lnbmFsIGhhbmRsZXIgc2hvdWxk
IHJldHVybiB0aGUKKyAgICAgKiBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3LgorICAgICAq
CisgICAgICogVGhlIG5ldyAjV2ViS2l0V2ViVmlldyBzaG91bGQgbm90IGJlIGRpc3BsYXllZCB0
byB0aGUgdXNlcgorICAgICAqIHVudGlsIHRoZSA6OnNob3ctd2ViLXZpZXcgc2lnbmFsIGlzIGVt
aXR0ZWQuCisgICAgICoKKyAgICAgKiBUaGUgc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBub3QgdHJ5
IHRvIGRlYWwgd2l0aCB0aGUgcmVmZXJlbmNlCisgICAgICogY291bnQgZm9yIHRoZSBuZXcgI1dl
YktpdFdlYlZpZXcuIFRoZSB3aWRnZXQgdG8gd2hpY2ggdGhlCisgICAgICogd2lkZ2V0IGlzIGFk
ZGVkIHdpbGwgaGFuZGxlIHRoYXQuCisgICAgICoKKyAgICAgKiBTaW5jZSAxLjAuMgorICAgICAq
LworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0NSRUFURV9XRUJfVklFV10gPSBnX3NpZ25h
bF9uZXcoImNyZWF0ZS13ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3
ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xB
U1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJL
aXRXZWJWaWV3Q2xhc3MsIGNyZWF0ZV93ZWJfdmlldyksCisgICAgICAgICAgICB3ZWJraXRfY3Jl
YXRlX3dlYl92aWV3X3JlcXVlc3RfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAg
ICAgICB3ZWJraXRfbWFyc2hhbF9PQkpFQ1RfX09CSkVDVCwKKyAgICAgICAgICAgIFdFQktJVF9U
WVBFX1dFQl9WSUVXICwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9GUkFNRSk7CisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpzaG93LXdlYi12aWV3OgorICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KiBAcmV0dXJuOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tl
ZCBmb3IKKyAgICAgKiB0aGUgZXZlbnQsICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1
cnRoZXIKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgYWZ0ZXIgOjpjcmVhdGUtd2ViLXZpZXcgd2hl
biB0aGUgbmV3ICNXZWJLaXRXZWJWaWV3CisgICAgICogc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0
aGUgdXNlci4gV2hlbiB0aGlzIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogYWxsIHRoZSBpbmZv
cm1hdGlvbiBhYm91dCBob3cgdGhlIHdpbmRvdyBzaG91bGQgbG9vaywgaW5jbHVkaW5nCisgICAg
ICogc2l6ZSwgcG9zaXRpb24sIHdoZXRoZXIgdGhlIGxvY2F0aW9uLCBzdGF0dXMgYW5kIHNjcm9s
bCBiYXJzCisgICAgICogc2hvdWxkIGJlIGRpc3BsYXllZCwgaXMgYWxyZWFkeSBzZXQgb24gdGhl
CisgICAgICogI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIG9iamVjdCBjb250YWluZWQgYnkgdGhl
ICNXZWJLaXRXZWJWaWV3LgorICAgICAqCisgICAgICogTm90aWNlIHRoYXQgc29tZSBvZiB0aGF0
IGluZm9ybWF0aW9uIG1heSBjaGFuZ2UgZHVyaW5nIHRoZSBsaWZlCisgICAgICogdGltZSBvZiB0
aGUgd2luZG93LCBzbyB5b3UgbWF5IHdhbnQgdG8gY29ubmVjdCB0byB0aGUgOjpub3RpZnkKKyAg
ICAgKiBzaWduYWwgb2YgdGhlICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBvYmplY3QgdG8gaGFu
ZGxlIHRob3NlLgorICAgICAqCisgICAgICogSWYgdGhlcmUgaXNuJ3QgYW55IGhhbmRsZXIgZm9y
IHRoaXMgc2lnbmFsIG9yIGlmIHRoZXkgcmV0dXJuCisgICAgICogJUZBTFNFLCB0aGVuIHRoZSBk
ZWZhdWx0IGFjdGlvbiBpcyB0byBjYWxsIGd0a193aWRnZXRfc2hvdygpIG9uCisgICAgICogdGhl
IHRvcGxldmVsIHdpbmRvdyBjb250YWluaW5nIEB3ZWJfdmlldywgYW5kIG9uIEB3ZWJfdmlldy4K
KyAgICAgKgorICAgICAqIFNpbmNlIDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3
X3NpZ25hbHNbU0hPV19XRUJfVklFV10gPSBnX3NpZ25hbF9uZXcoInNob3ctd2ViLXZpZXciLAor
ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAg
IChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUKSwKKyAgICAgICAgICAgIEdfU1RSVUNU
X09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBzaG93X3dlYl92aWV3KSwKKyAgICAgICAgICAg
IGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgR19U
WVBFX0JPT0xFQU4sIDApOworCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTkFWSUdBVElP
Tl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIsCiAgICAg
ICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAogICAgICAgICAgICAgKEdT
aWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLApAQCAtMTEx
MCw2ICsxMTk4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9m
IHZpcnR1YWwgbWV0aG9kcwogICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92
aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OworICAgIHdlYlZpZXdD
bGFzcy0+c2hvd193ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nob3dfd2ViX3ZpZXc7
CiAgICAgd2ViVmlld0NsYXNzLT5uYXZpZ2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmll
d19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkOwogICAgIHdlYlZpZXdDbGFzcy0+d2luZG93X29i
amVjdF9jbGVhcmVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVk
OwogICAgIHdlYlZpZXdDbGFzcy0+Y2hvb3NlX2ZpbGUgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9j
aG9vc2VfZmlsZTsKQEAgLTEyMDksNiArMTI5OCwyMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1RZUEVfV0VCX1NFVFRJTkdTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICAvKioK
KyAgICAqIFdlYktpdFdlYlZpZXc6d2luZG93LWZlYXR1cmVzOgorICAgICoKKyAgICAqIEFuIGFz
c29jaWF0ZWQgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UuCisgICAgKgorICAgICog
U2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KG9iamVjdENsYXNzLCBQUk9QX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoIndpbmRvdy1mZWF0dXJlcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJX
aW5kb3cgRmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQW4gYXNzb2NpYXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBp
bnN0YW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0
Q2xhc3MsIFBST1BfRURJVEFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZWRpdGFibGUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVkaXRhYmxlIiwKQEAgLTE0NDAs
NiArMTU0Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiAgICAgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyh3ZWJWaWV3
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJzY3JlZW4tY2hhbmdlZCIsIEdfQ0FM
TEJBQ0sod2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkKSwgTlVMTCk7CiAgICAgZ19zaWdu
YWxfY29ubmVjdChwcml2LT53ZWJTZXR0aW5ncywgIm5vdGlmeSIsIEdfQ0FMTEJBQ0sod2Via2l0
X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSksIHdlYlZpZXcpOworCisgICAgcHJpdi0+d2ViV2lu
ZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKTsKIH0KIAogR3Rr
V2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCkBAIC0xNDQ5LDYgKzE1NTQsMjcgQEAg
R3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCiAgICAgcmV0dXJuIEdUS19XSURH
RVQod2ViVmlldyk7CiB9CiAKKy8vIGZvciBpbnRlcm5hbCB1c2Ugb25seQordm9pZCB3ZWJraXRf
d2ViX3ZpZXdfc2hvdyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlzSGFu
ZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3
X3NpZ25hbHNbU0hPV19XRUJfVklFV10sIDAsICZpc0hhbmRsZWQpOworICAgIGlmIChpc0hhbmRs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8qIEZJWE1FOiBJIGRvbid0IHRoaW5rIHdlIHNo
b3VsZCBzaG93IHRoZSB0b3BsZXZlbCB3aW5kb3csIGJ1dAorICAgICAqIFdlYktpdCBibG93cyB1
cCBhdCBTY3JvbGxWaWV3Ojp1cGRhdGUgaWYgd2UgZG9uJ3Qgc2hvdyB0aGUKKyAgICAgKiB0b3Bs
ZXZlbCB3aW5kb3c7CisgICAgICovCisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGlmIChHVEtfV0lER0VU
X1RPUExFVkVMKHRvcGxldmVsKSkKKyAgICAgICAgZ3RrX3dpZGdldF9zaG93KHRvcGxldmVsKTsK
KyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVCh3ZWJWaWV3KSk7Cit9CisKKwogdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CkBAIC0xNDczLDYgKzE1OTksNTIgQEAgV2ViS2l0V2Vi
U2V0dGluZ3MqIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKIH0KIAogLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcwor
ICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEB3aW5kb3dfZmVhdHVyZXM6IGEgI1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzCisgKgorICogVGhpcyB3aWxsIHNldCBob3cgdGhlIHdpbmRv
dyBjb250YWluaW5nIHRoZSAjV2ViS2l0V2ViVmlldyBzaG91bGQKKyAqIGxvb2sgYW5kIGJlaGF2
ZS4gQXBwbGljYXRpb25zIG1heSB3YW50IHRvIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQKKyAq
IGFwcGx5IHRoZSBzZXR0aW5ncyBpdCBjYXJyaWVzIHRvIHRoZSB3aW5kb3cgaG9sZGluZyB0aGUg
cmVsZXZhbnQKKyAqICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFNpbmNlOiAxLjAuMgorICovCit2
b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcykKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyh3ZWJXaW5kb3dGZWF0
dXJlcykpOworICAgIAorICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+
cHJpdjsKKworICAgIGlmKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKHByaXYtPndl
YldpbmRvd0ZlYXR1cmVzLCB3ZWJXaW5kb3dGZWF0dXJlcykpCisgICAgICByZXR1cm47CisKKyAg
ICBnX29iamVjdF91bnJlZihwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgZ19vYmplY3Rf
cmVmKHdlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdl
YldpbmRvd0ZlYXR1cmVzOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93
X2ZlYXR1cmVzCisgKiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIFJldHVybnMg
dGhlIGluc3RhbmNlIG9mICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBoZWxkIGJ5IHRoZSBnaXZl
bgorICogI1dlYktpdFdlYlZpZXcuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdl
YldpbmRvd0ZlYXR1cmVzCisgKgorICogU2luY2U6IDEuMC4yCisgKi8KK1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzOworfQor
CisvKioKICAqIHdlYmtpdF93ZWJfdmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0
OgogICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqIEBmbGFnOiB0byB0ZWxsIHRoZSB2
aWV3IHRvIG1haW50YWluIGEgYmFjayBvciBmb3J3YXJkIGxpc3QKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuaAppbmRleCBlYmQxYWExLi5lY2ZlZGU5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oCkBAIC02MywxMSArNjMsMTEgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAg
ICAgLyoKICAgICAgKiBkZWZhdWx0IGhhbmRsZXIvdmlydHVhbCBtZXRob2RzCi0gICAgICogRElT
Q1VTUzogY3JlYXRlX3dlYl92aWV3IG5lZWRzIGEgcmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2Ug
dGhpcyBhIHNpZ25hbCB3aXRoIGRlZmF1bHQgaGFuZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJl
cXVpcmUgc29tZW9uZSBkb2luZyBhIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAg
ICAqIFdlYlVJRGVsZWdhdGUgaGFzIG5vdGhpbmcgZm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5
RGVsZWdhdGUgYXMgd2VsbC4uLgogICAgICAqLwotICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAqICgqIGNyZWF0ZV93ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7
CisgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICAgICogKCogY3JlYXRlX3dlYl92aWV3KSAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViRnJhbWUgICAg
ICAgKndlYl9mcmFtZSk7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBzaG93
X3dlYl92aWV3KSAgICAgICAgICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiAgICAgLyoK
ICAgICAgKiBUT0RPOiBGSVhNRTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBvbGljeURlY2lz
aW9uTGlzdGVuZXJfUHJvdG9jb2wgaW5zdGVhZApAQCAtMjQ3LDYgKzI0NywxMyBAQCB3ZWJraXRf
d2ViX3ZpZXdfc2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgKndlYl92aWV3LAogV0VCS0lUX0FQSSBXZWJLaXRXZWJTZXR0aW5ncyAqCiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0
X3dpbmRvd19mZWF0dXJlcyAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMpOworCitXRUJLSVRfQVBJIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CisKIFdFQktJ
VF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHJhbnNwYXJlbnQgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAgYi9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjQ3N2UwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcApAQCAtMCwwICsxLDQxOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5j
bHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2YXRl
LmgiCisKK2V4dGVybiAiQyIgeworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1gs
CisgICAgUFJPUF9ZLAorICAgIFBST1BfV0lEVEgsCisgICAgUFJPUF9IRUlHSFQsCisgICAgUFJP
UF9UT09MQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9TVEFUVVNCQVJfVklTSUJMRSwKKyAgICBQUk9Q
X1NDUk9MTEJBUl9WSVNJQkxFLAorICAgIFBST1BfTUVOVUJBUl9WSVNJQkxFLAorICAgIFBST1Bf
TE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICBQUk9QX0ZVTExTQ1JFRU4sCit9OworCitHX0RFRklO
RV9UWVBFKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzLCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
cywgR19UWVBFX09CSkVDVCkKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZh
dGUgeworICAgIGdpbnQgeDsKKyAgICBnaW50IHk7CisgICAgZ2ludCB3aWR0aDsKKyAgICBnaW50
IGhlaWdodDsKKworICAgIGdib29sZWFuIHRvb2xiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBz
dGF0dXNiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzY3JvbGxiYXJfdmlzaWJsZTsKKyAgICBn
Ym9vbGVhbiBtZW51YmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gbG9jYXRpb25iYXJfdmlzaWJs
ZTsKKworICAgIGdib29sZWFuIGZ1bGxzY3JlZW47Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJf
V0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXNQcml2YXRlKSkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2NsYXNzX2luaXQoV2ViS2l0
V2ViV2luZG93RmVhdHVyZXNDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2Jq
ZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIGdvYmplY3RfY2xhc3MtPmZp
bmFsaXplID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemU7CisgICAgZ29iamVj
dF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3By
b3BlcnR5OworICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eTsKKworICAgIEdQYXJhbUZsYWdzIGZsYWdzID0gKEdQ
YXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QpOwor
CisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp4OgorICAgICoKKyAgICAq
IFRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAg
ICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0aW5nIHggcG9zaXRpb24gb2YgdGhlIHdpbmRv
dyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlczp5OgorICAgICoKKyAgICAqIFRoZSBzdGFydGluZyB5IHBvc2l0aW9uIG9mIHRoZSB3
aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfWSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0aW5n
IHkgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoq
CisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp3aWR0aDoKKyAgICAqCisgICAgKiBUaGUg
d2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAx
LjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0
X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSURUSCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIldpZHRoIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpoZWlnaHQ6CisgICAg
KgorICAgICogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisgICAgKgor
ICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0hFSUdIVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZWlnaHQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdyBv
biB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlczp0b29sYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0aGUg
dG9vbGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAgKiBT
aW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
VE9PTEJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dG9vbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJU
b29sYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRyb2xzIHdoZXRoZXIgdGhlIHRvb2xiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5k
b3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpzdGF0dXNiYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBD
b250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXNiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3
aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzYmFyLXZpc2libGUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c2JhciBWaXNpYmxlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXNiYXIg
c2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpzY3Jv
bGxiYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBzY3JvbGxi
YXJzIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAgICoKKyAgICAqIFNpbmNl
OiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TQ1JP
TExCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNj
cm9sbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJT
Y3JvbGxiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Q29udHJvbHMgd2hldGhlciB0aGUgc2Nyb2xsYmFycyBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhl
IHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAg
ICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOm1lbnViYXItdmlzaWJsZToKKyAgICAqCisgICAg
KiBDb250cm9scyB3aGV0aGVyIHRoZSBtZW51YmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUg
d2luZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9NRU5VQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJtZW51YmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIk1lbnViYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgbWVudWJhciBzaG91bGQg
YmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
KSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmxvY2F0aW9uYmFy
LXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgbG9jYXRpb25iYXIg
c2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEu
MC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3Rf
Y2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0xPQ0FUSU9O
QkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2Nh
dGlvbmJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJM
b2NhdGlvbmJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDb250cm9scyB3aGV0aGVyIHRoZSBsb2NhdGlvbmJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3Ig
dGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioK
KyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmZ1bGxzY3JlZToKKyAgICAqCisgICAgKiBD
b250cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2NyZWVuLgorICAg
ICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJPUF9GVUxMU0NSRUVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJv
bHMgd2hldGhlciB3aW5kb3cgd2lsbCBiZSBkaXNwbGF5ZWQgZnVsbHNjcmVlbi4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZh
dGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUpKTsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfaW5pdChXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcykKK3sKKyAgICB3ZWJfd2luZG93X2ZlYXR1
cmVzLT5wcml2ID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX1BSSVZBVEUod2ViX3dp
bmRvd19mZWF0dXJlcyk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRv
d19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iamVjdCk7CisgICAgV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2ViX3dpbmRvd19mZWF0dXJlcy0+
cHJpdjsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1g6CisgICAgICAg
IHByaXYtPnggPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfWToKKyAgICAgICAgcHJpdi0+eSA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSURUSDoKKyAgICAgICAgcHJpdi0+d2lkdGgg
PSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
SEVJR0hUOgorICAgICAgICBwcml2LT5oZWlnaHQgPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJQkxFOgorICAgICAgICBw
cml2LT50b29sYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFOgorICAgICAgICBwcml2
LT5zdGF0dXNiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYt
PnNjcm9sbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPm1l
bnViYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+bG9j
YXRpb25iYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRlVMTFNDUkVFTjoKKyAgICAgICAgcHJpdi0+ZnVsbHNjcmVl
biA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVyZXMgPSBXRUJLSVRfV0VC
X1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJp
dmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXY7CisKKyAgICBzd2l0Y2ggKHBy
b3BfaWQpIHsKKyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVl
LCBwcml2LT54KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1k6CisgICAgICAgIGdf
dmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+eSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9XSURUSDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT53aWR0aCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IRUlHSFQ6CisgICAgICAgIGdfdmFsdWVf
c2V0X2ludCh2YWx1ZSwgcHJpdi0+aGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
cHJpdi0+dG9vbGJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NU
QVRVU0JBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2
LT5zdGF0dXNiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQ1JP
TExCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+
c2Nyb2xsYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVOVUJB
Ul9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5tZW51
YmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTE9DQVRJT05CQVJf
VklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+bG9jYXRp
b25iYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GVUxMU0NSRUVO
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5mdWxsc2NyZWVuKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3OgorICoK
KyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIHdpdGgg
ZGVmYXVsdCB2YWx1ZXMuIEl0IG11c3QKKyAqIGJlIG1hbnVhbGx5IGF0dGFjaGVkIHRvIGEgV2Vi
Vmlldy4KKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5z
dGFuY2UKKyAqCisgKiBTaW5jZSAxLjAuMgorICoqLworV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpCit7CisgICAgcmV0dXJuIFdFQktJVF9X
RUJfV0lORE9XX0ZFQVRVUkVTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZF
QVRVUkVTLCBOVUxMKSk7Cit9CisKKy8vIGZvciBpbnRlcm5hbCB1c2Ugb25seQorV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVf
ZmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQoreworICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX25ldygpOworCisgICAgaWYoZmVhdHVyZXMueFNldCkKKyAgICAgICAg
Z19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgIngiLCBzdGF0aWNfY2Fz
dDxpbnQ+KGZlYXR1cmVzLngpLCBOVUxMKTsKKworICAgIGlmKGZlYXR1cmVzLnlTZXQpCisgICAg
ICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ5Iiwgc3RhdGlj
X2Nhc3Q8aW50PihmZWF0dXJlcy55KSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy53aWR0aFNl
dCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgIndp
ZHRoIiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy53aWR0aCksIE5VTEwpOworCisgICAgaWYo
ZmVhdHVyZXMuaGVpZ2h0U2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2lu
ZG93RmVhdHVyZXMpLCAiaGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy5oZWlnaHQp
LCBOVUxMKTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyks
CisgICAgICAgICAgICAgICAgICJ0b29sYmFyLXZpc2libGUiLCBmZWF0dXJlcy50b29sQmFyVmlz
aWJsZSwKKyAgICAgICAgICAgICAgICAgInN0YXR1c2Jhci12aXNpYmxlIiwgZmVhdHVyZXMuc3Rh
dHVzQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgInNjcm9sbGJhci12aXNpYmxlIiwgZmVh
dHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUsCisgICAgICAgICAgICAgICAgICJtZW51YmFyLXZpc2li
bGUiLCBmZWF0dXJlcy5tZW51QmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgImxvY2F0aW9u
YmFyLXZpc2libGUiLCBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUsCisgICAgICAgICAgICAg
ICAgICJmdWxsc2NyZWVuIiwgZmVhdHVyZXMuZnVsbHNjcmVlbiwKKyAgICAgICAgICAgICAgICAg
TlVMTCk7CisKKyAgICByZXR1cm4gd2ViV2luZG93RmVhdHVyZXM7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWw6CisgKiBAZmVhdHVyZXMxOiBhICNXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQorICogQGZlYXR1cmVzMjogYW5vdGhlciAjV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqCisgKiBEZWNpZGVzIGlmIGEgI1dlYktpdFdl
YldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIGVxdWFscyBhbm90aGVyLCBhcworICogaW4gaGFzIHRo
ZSBzYW1lIHZhbHVlcy4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgaW5zdGFuY2VzIGhh
dmUgdGhlIHNhbWUgdmFsdWVzLCAlRkFMU0UKKyAqIG90aGVyd2lzZQorICoKKyAqIFNpbmNlIDEu
MC4yCisgKiovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbChXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMxLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyog
ZmVhdHVyZXMyKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjEg
PSBmZWF0dXJlczEtPnByaXY7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBw
cml2MiA9IGZlYXR1cmVzMi0+cHJpdjsKKyAgICAKKyAgICBpZigocHJpdjEtPnggPT0gcHJpdjIt
PngpICYmCisgICAgICAgKHByaXYxLT55ID09IHByaXYyLT55KSAmJgorICAgICAgIChwcml2MS0+
d2lkdGggPT0gcHJpdjItPndpZHRoKSAmJgorICAgICAgIChwcml2MS0+aGVpZ2h0ID09IHByaXYy
LT5oZWlnaHQpICYmCisgICAgICAgKHByaXYxLT50b29sYmFyX3Zpc2libGUgPT0gcHJpdjItPnRv
b2xiYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJpdjEtPnNjcm9sbGJhcl92aXNpYmxlID09IHBy
aXYyLT5zY3JvbGxiYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJpdjEtPm1lbnViYXJfdmlzaWJs
ZSA9PSBwcml2Mi0+bWVudWJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+bG9jYXRpb25i
YXJfdmlzaWJsZSA9PSBwcml2Mi0+bG9jYXRpb25iYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJp
djEtPmZ1bGxzY3JlZW4gPT0gcHJpdjItPmZ1bGxzY3JlZW4pKQorICAgICAgICByZXR1cm4gVFJV
RTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYndpbmRvd2ZlYXR1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODczMDA3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19XRUJLSVRf
V0VCX1dJTkRPV19GRUFUVVJFU19IX18KKyNkZWZpbmUgX19XRUJLSVRfV0VCX1dJTkRPV19GRUFU
VVJFU19IX18KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
V0VCX1dJTkRPV19GRUFUVVJFUyAgICAgICAgICAgICh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJl
c19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmopICAg
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9X
RUJfV0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcykpCisjZGVmaW5lIFdF
QktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NM
QVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1dJTkRPV19G
RUFUVVJFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9X
SU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xh
c3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUykpCisjZGVmaW5lIFdFQktJVF9X
RUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9D
TEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTsKKworc3RydWN0IF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisK
KyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3Qg
X1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRf
Y2xhc3M7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBl
Cit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSAgICAgICAgICAgICh2b2lkKTsK
KworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJfd2luZG93
X2ZlYXR1cmVzX25ldyAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIGdib29s
ZWFuCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbCAgICAgICAgICAgICAgIChXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVz
Mik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX1dFQktJVF9XRUJfV0lORE9XX0ZFQVRV
UkVTX0hfXyAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23501</attachid>
            <date>2008-09-17 10:22:24 -0700</date>
            <delta_ts>2008-10-23 12:03:09 -0700</delta_ts>
            <desc>update proposed patch</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>46488</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NmY1OTlmLi41ODJjZjQ0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDktMDQgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDA4LTA5LTA0ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29s
bGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBlMjc0Mjg5Li5iZjdl
M2JlIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAt
MzE0LDYgKzMxNCw3IEBAIHdlYmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCiAKIHdlYmtpdGd0a19idWlsdF9zb3VyY2VzICs9IFwKQEAgLTM0
NSw3ICszNDYsOCBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5
aXRlbS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCi0J
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKwlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuY3BwCiAKIHdlYmtpdGd0a19jcHBmbGFncyArPSBcCiAJLURCVUlMRElOR19XRUJLSVQg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAppbmRleCBkMmM5NDg2Li5jNGNl
NzkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcApAQCAtMzE5LDExICsz
MTksNiBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IEludFJlY3QmIHVw
ZGF0ZVJlY3QsIGJvb2wgbm93KQogCiB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZSgpCiB7Ci0gICAg
LyogRklYTUU6IHRoaXMgaXMganVzdCBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHRvIGF2b2lkIGNy
YXNoZXMuICovCi0gICAgLyogQVNTRVJUKGNvbnRhaW5pbmdXaW5kb3coKSk7ICovCi0gICAgaWYg
KCFjb250YWluaW5nV2luZG93KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghY29udGFp
bmluZ1dpbmRvdygpIHx8ICFHVEtfV0lER0VUX1JFQUxJWkVEKGNvbnRhaW5pbmdXaW5kb3coKSkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0NmQ0ZDI3Li40ZDVjMjEyIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUyIEBACisyMDA4LTA5LTE3ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorICAgICAgICBDaHJvbWVD
bGllbnQ6OmNyZWF0ZVdpbmRvdyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCisg
ICAgICAgIAorICAgICAgICBDb2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFuZCBNYXJjbyBCYXJp
c2lvbmUKKyAgICAgICAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+IGluIHRoaXMg
Y2hhbmdlIHNldC4KKworICAgICAgICBJbXBsZW1lbnRlZCBhbGwgdGhlIENocm9tZUNsaWVudCBp
bnRlcmZhY2VzIG5lZWRlZCB0byBoYXZlIG5ldworICAgICAgICB3aW5kb3cgY3JlYXRpb24gZnVu
Y3Rpb25pbmcgYW5kIGV4cG9zZWQgdG8gY2xpZW50IGNvZGUuIFdlCisgICAgICAgIGltcGxlbWVu
dGVkIGEgbWlycm9yIEdPYmplY3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9iamVjdCBwcm92aWRl
ZAorICAgICAgICBieSBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dS
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojpz
ZXRTdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdGF0
dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzZXRTY3JvbGxi
YXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJWaXNpYmxl
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdCk6
CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dp
bmRvd19mZWF0dXJlc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1By
aXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToKKyAgICAgICAgKF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRl
Ojp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
bmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgorICAgICAgICAoX1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
ZXF1YWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oOiBBZGRl
ZC4KKwogMjAwOC0wOS0xNiAgQWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+CiAKICAgICAgICAg
U3VnZ2VzdGVkIGJ5IERhdmUgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMmU1NmMxZC4uYjNjZTI0ZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlv
LmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bn
bm9tZS5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMCw2ICsyMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRlICJG
cmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0yNyw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJ3
ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0bmV0d29ya3JlcXVlc3QuaCIKICNpbmNs
dWRlICJ3ZWJraXRwcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtNTIsNyArNTUsNyBAQCBGbG9hdFJlY3QgQ2hyb21l
Q2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICBpZiAoIW1fd2ViVmlldykKICAgICAgICAgcmV0dXJu
IEZsb2F0UmVjdCgpOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2luZG93KSB7CisgICAgaWYg
KEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSkgewogICAgICAgICBnaW50IGxlZnQsIHRvcCwg
d2lkdGgsIGhlaWdodDsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfcG9zaXRpb24oR1RLX1dJTkRP
Vyh3aW5kb3cpLCAmbGVmdCwgJnRvcCk7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3NpemUoR1RL
X1dJTkRPVyh3aW5kb3cpLCAmd2lkdGgsICZoZWlnaHQpOwpAQCAtNjEsOSArNjQsMjAgQEAgRmxv
YXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHIpCit2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgSW50UmVjdCBpbnRyZWN0ID0gSW50UmVjdChyZWN0KTsKKyAgICBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgIngiLCBpbnRyZWN0
LngoKSwKKyAgICAgICAgICAgICAgICAgInkiLCBpbnRyZWN0LnkoKSwKKyAgICAgICAgICAgICAg
ICAgIndpZHRoIiwgaW50cmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAiaGVpZ2h0Iiwg
aW50cmVjdC5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgTlVMTCk7CiB9CiAKIEZsb2F0UmVj
dCBDaHJvbWVDbGllbnQ6OnBhZ2VSZWN0KCkKQEAgLTkyLDI5ICsxMDYsMzUgQEAgdm9pZCBDaHJv
bWVDbGllbnQ6OnVuZm9jdXMoKQogICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICByZXR1cm47
CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lE
R0VUKG1fd2ViVmlldykpOwotICAgIGlmICh3aW5kb3cpCisgICAgaWYgKEdUS19XSURHRVRfVE9Q
TEVWRUwod2luZG93KSkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RLX1dJTkRPVyh3
aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJh
bWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1
cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJl
cyYgY29yZUZlYXR1cmVzKQogewotICAgIGlmIChmZWF0dXJlcy5kaWFsb2cpIHsKLSAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gMDsKKworICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBraXQo
ZnJhbWUpLCAmd2ViVmlldyk7CisKKyAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybiAw
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFRPRE86IEZyYW1lTG9hZFJlcXVlc3QgaXMgbm90
IHVzZWQgKi8KLSAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklF
V19HRVRfQ0xBU1MobV93ZWJWaWV3KS0+Y3JlYXRlX3dlYl92aWV3KG1fd2ViVmlldyk7Ci0gICAg
ICAgIGlmICghd2ViVmlldykKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFU
RSh3ZWJWaWV3KTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKLSAgICB9
CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzKGNvcmVGZWF0dXJl
cyk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMod2ViVmlldywgd2Vi
V2luZG93RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRvd0Zl
YXR1cmVzKSk7CisKKyAgICBpZiAoIWZyYW1lTG9hZFJlcXVlc3QuaXNFbXB0eSgpKQorICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJWaWV3LCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIGNv
cmUod2ViVmlldyk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpzaG93KCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyhtX3dlYlZpZXcpOwogfQogCiBib29sIENocm9tZUNsaWVu
dDo6Y2FuUnVuTW9kYWwoKQpAQCAtMTI4LDUyICsxNDgsOTYgQEAgdm9pZCBDaHJvbWVDbGllbnQ6
OnJ1bk1vZGFsKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVu
dDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0VG9vbGJh
cnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlm
ICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0
dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0Zl
YXR1cmVzKSwgInRvb2xiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwogfQogCiBib29sIENo
cm9tZUNsaWVudDo6dG9vbGJhcnNWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0g
d2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9v
bGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1
cmVzKSwgInRvb2xiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlz
aWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkK
K3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1
cm47CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19v
YmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxl
IiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzdGF0dXNiYXJWaXNp
YmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5k
b3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19v
YmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInN0YXR1c2Jhci12aXNpYmxl
IiwgJnZpc2libGUsIE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9t
ZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50Ojpz
ZXRTY3JvbGxiYXJzVmlzaWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93
aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3
ZWJXaW5kb3dGZWF0dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsIHZpc2libGUsIE5VTEwpOwog
fQogCiBib29sIENocm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUoKSB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5k
b3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmll
dyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3
ZWJXaW5kb3dGZWF0dXJlcyksICJzY3JvbGxiYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsK
KyAgICByZXR1cm4gdmlzaWJsZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldE1lbnViYXJW
aXNpYmxlKGJvb2wpCit2b2lkIENocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUoYm9vbCB2
aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dG
ZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7
CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAibWVudWJh
ci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjptZW51
YmFyVmlzaWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisgICAgZ2Jvb2xlYW4gdmlzaWJsZTsKKwor
ICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJtZW51YmFyLXZp
c2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAKIHZvaWQg
Q2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUoYm9vbCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIC8vIElnbm9yZWQgZm9yIG5vdwogfQogCiB2b2lkIENocm9tZUNsaWVudDo6Y2xvc2VX
aW5kb3dTb29uKCkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKaW5kZXggMDM3NTQyOC4uNzRjMGY0ZiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdG5ldHdv
cmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJr
aXRwcml2YXRlLmgiCiAKQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBtYXJz
aGFscyB0aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11bHRp
LXRocmVhZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCi0gICAgKGNv
cmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7Cisg
ICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVzZSk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCkBAIC01NTksNyArNTYwLDggQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCiAKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2hvdyh3ZWJWaWV3KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtNzMyLDggKzczNCwxNiBAQCBib29sIEZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAogCiBGcmFtZSogRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFt
ZShtX2ZyYW1lKTsKKyAgICBXZWJLaXRXZWJWaWV3KiBuZXdXZWJWaWV3ID0gMDsKKworICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwg
Jm5ld1dlYlZpZXcpOworCisgICAgaWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURShuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gY29yZShwcml2YXRlRGF0YS0+
bWFpbkZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVU
b0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdC5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXgg
MTBjMjE0Zi4uMjlkM2RmNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgK
KysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2Fy
ZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRlZmluZXMuaAppbmRleCAzODZjM2UxLi5kYWMyZGQzIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZGVmaW5lcy5oCkBAIC01NSw2ICs1NSw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJGcmFtZUNsYXNzIFdlYktpdFdlYkZyYW1lQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
U2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMgV2ViS2l0V2ViV2luZG93RmVhdHVyZXM7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc0NsYXNzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3
OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyBXZWJLaXRXZWJWaWV3Q2xhc3M7
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCAzZWZhMDJhLi44NTE0NDFiIDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJhbWUuaD4K
ICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFj
a2ZvcndhcmRsaXN0Lmg+CiAKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKQEAgLTM4LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAKICNp
bmNsdWRlIDxnbGliLmg+CiAKQEAgLTY3LDYgKzY5LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQ
YWdlOwogICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3M7CisgICAgICAgIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlczsKIAogICAgICAgICBXZWJL
aXRXZWJGcmFtZSogbWFpbkZyYW1lOwogICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50OwpAQCAtMTEwLDYgKzExMywxMiBAQCBleHRlcm4gIkMiIHsKICAg
ICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKICAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdf
d2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAorICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKgorICAgIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2Nv
cmVfZmVhdHVyZXMgKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcyk7CisK
KyAgICB2b2lkCisgICAgd2Via2l0X3dlYl92aWV3X3Nob3cgKFdlYktpdFdlYlZpZXcqIHdlYl92
aWV3KTsKKwogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25j
ZSB0aGVpciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2VkLgogCiAgICAgV0VCS0lUX0FQSSBHU0xpc3Qq
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDAwZWUxODQuLmNlZmJlZWEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHly
aWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IEphbiBBbG9uem8gPGptYWxvbnpvQHVucGx1Z2dhYmxlLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICogIENvcHlyaWdo
dCAoQykgMjAwOCBOdWFudGkgTHRkLgogICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEg
THRkLgogICoKQEAgLTcxLDYgKzcyLDggQEAgZXh0ZXJuICJDIiB7CiBlbnVtIHsKICAgICAvKiBu
b3JtYWwgc2lnbmFscyAqLwogICAgIE5BVklHQVRJT05fUkVRVUVTVEVELAorICAgIENSRUFURV9X
RUJfVklFVywKKyAgICBTSE9XX1dFQl9WSUVXLAogICAgIFdJTkRPV19PQkpFQ1RfQ0xFQVJFRCwK
ICAgICBMT0FEX1NUQVJURUQsCiAgICAgTE9BRF9DT01NSVRURUQsCkBAIC0xMDAsNiArMTAzLDcg
QEAgZW51bSB7CiAgICAgUFJPUF9QQVNURV9UQVJHRVRfTElTVCwKICAgICBQUk9QX0VESVRBQkxF
LAogICAgIFBST1BfU0VUVElOR1MsCisgICAgUFJPUF9XSU5ET1dfRkVBVFVSRVMsCiAgICAgUFJP
UF9UUkFOU1BBUkVOVCwKICAgICBQUk9QX1pPT01fTEVWRUwsCiAgICAgUFJPUF9GVUxMX0NPTlRF
TlRfWk9PTQpAQCAtMjM3LDYgKzI0MSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19n
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqCiAgICAg
Y2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3Qo
dmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKHdlYlZpZXcpKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgogICAgICAgICBnX3ZhbHVl
X3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50KHdlYlZp
ZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNjIsNiArMjY5LDkgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQs
IGNvbnN0IEcKICAgICBjYXNlIFBST1BfU0VUVElOR1M6CiAgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfc2V0dGluZ3Mod2ViVmlldywgV0VCS0lUX1dFQl9TRVRUSU5HUyhnX3ZhbHVlX2dldF9v
YmplY3QodmFsdWUpKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XSU5ET1dfRkVB
VFVSRVM6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzKHdlYlZp
ZXcsIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkp
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgogICAgICAgICB3
ZWJraXRfd2ViX3ZpZXdfc2V0X3RyYW5zcGFyZW50KHdlYlZpZXcsIGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC01NjEsMTIgKzU3MSwxNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2ZvcmFsbChHdGtDb250YWluZXIqIGNvbnRh
aW5lciwgZ2Jvb2xlYW4sCiAgICAgICAgICgqY2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0Rh
dGEpOwogfQogCi1zdGF0aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3Jl
YXRlX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQorc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtp
dF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2Vi
RnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG93X3dlYl92aWV3KFdlYktpdFdl
YlZpZXcqKQoreworICAgIHJldHVybiBGQUxTRTsKK30KKwogc3RhdGljIFdlYktpdE5hdmlnYXRp
b25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCop
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTcyNSw2ICs3MzksNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIGdfb2JqZWN0
X3VucmVmKHByaXYtPmJhY2tGb3J3YXJkTGlzdCk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9ieV9mdW5jKHByaXYtPndlYlNldHRpbmdzLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92
aWV3X3NldHRpbmdzX25vdGlmeSwgd2ViVmlldyk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+
d2ViU2V0dGluZ3MpOworICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0ZlYXR1cmVz
KTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUpOwogICAgIGdfb2JqZWN0X3Vu
cmVmKHByaXYtPmltQ29udGV4dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHByaXYtPmNv
cHlfdGFyZ2V0X2xpc3QpOwpAQCAtNzM0LDYgKzc0OSwxOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQoR1NpZ25h
bEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUq
IGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQoreworICBnYm9vbGVhbiBjb250aW51ZUVt
aXNzaW9uID0gVFJVRTsKKyAgZ3BvaW50ZXIgbmV3V2ViVmlldyA9IGdfdmFsdWVfZ2V0X29iamVj
dChoYW5kbGVyUmV0dXJuKTsKKyAgZ192YWx1ZV9zZXRfb2JqZWN0KHJldHVybkFjY3UsIG5ld1dl
YlZpZXcpOworCisgIGlmIChuZXdXZWJWaWV3KQorICAgICAgY29udGludWVFbWlzc2lvbiA9IEZB
TFNFOworCisgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X25hdmlnYXRpb25fcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCog
aWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBn
cG9pbnRlciBkdW1teSkKIHsKICAgZ2Jvb2xlYW4gY29udGludWVFbWlzc2lvbiA9IFRSVUU7CkBA
IC03NzYsNiArODAzLDY3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAqIFNpZ25hbHMKICAgICAg
Ki8KIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0ZS13ZWItdmlldzoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICogQGZyYW1lOiB0aGUgI1dlYktpdFdlYkZyYW1lCisgICAgICogQHJldHVybjogYSBu
ZXdseSBhbGxvY2F0ZWQgI1dlYktpdFdlYlZpZXcgb3IgJU5VTEwKKyAgICAgKgorICAgICAqIEVt
aXR0ZWQgd2hlbiB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGlzIHJlcXVlc3RlZC4KKyAg
ICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBoYW5kbGVkIHRoZSBzaWduYWwgaGFuZGxlciBzaG91bGQg
cmV0dXJuIHRoZQorICAgICAqIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcuCisgICAgICoK
KyAgICAgKiBUaGUgbmV3ICNXZWJLaXRXZWJWaWV3IHNob3VsZCBub3QgYmUgZGlzcGxheWVkIHRv
IHRoZSB1c2VyCisgICAgICogdW50aWwgdGhlIDo6c2hvdy13ZWItdmlldyBzaWduYWwgaXMgZW1p
dHRlZC4KKyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIG5vdCB0cnkg
dG8gZGVhbCB3aXRoIHRoZSByZWZlcmVuY2UKKyAgICAgKiBjb3VudCBmb3IgdGhlIG5ldyAjV2Vi
S2l0V2ViVmlldy4gVGhlIHdpZGdldCB0byB3aGljaCB0aGUKKyAgICAgKiB3aWRnZXQgaXMgYWRk
ZWQgd2lsbCBoYW5kbGUgdGhhdC4KKyAgICAgKgorICAgICAqIFNpbmNlIDEuMC4yCisgICAgICov
CisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbQ1JFQVRFX1dFQl9WSUVXXSA9IGdfc2lnbmFs
X25ldygiY3JlYXRlLXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdl
YlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFT
VCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktp
dFdlYlZpZXdDbGFzcywgY3JlYXRlX3dlYl92aWV3KSwKKyAgICAgICAgICAgIHdlYmtpdF9jcmVh
dGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAg
ICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNULAorICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcgLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FKTsKKwor
ICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnNob3ctd2ViLXZpZXc6CisgICAgICogQHdl
Yl92aWV3OiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAq
IEByZXR1cm46ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2Vk
IGZvcgorICAgICAqIHRoZSBldmVudCwgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVy
dGhlcgorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciA6OmNyZWF0ZS13ZWItdmlldyB3aGVu
IHRoZSBuZXcgI1dlYktpdFdlYlZpZXcKKyAgICAgKiBzaG91bGQgYmUgZGlzcGxheWVkIHRvIHRo
ZSB1c2VyLiBXaGVuIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBhbGwgdGhlIGluZm9y
bWF0aW9uIGFib3V0IGhvdyB0aGUgd2luZG93IHNob3VsZCBsb29rLCBpbmNsdWRpbmcKKyAgICAg
KiBzaXplLCBwb3NpdGlvbiwgd2hldGhlciB0aGUgbG9jYXRpb24sIHN0YXR1cyBhbmQgc2Nyb2xs
IGJhcnMKKyAgICAgKiBzaG91bGQgYmUgZGlzcGxheWVkLCBpcyBhbHJlYWR5IHNldCBvbiB0aGUK
KyAgICAgKiAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgb2JqZWN0IGNvbnRhaW5lZCBieSB0aGUg
I1dlYktpdFdlYlZpZXcuCisgICAgICoKKyAgICAgKiBOb3RpY2UgdGhhdCBzb21lIG9mIHRoYXQg
aW5mb3JtYXRpb24gbWF5IGNoYW5nZSBkdXJpbmcgdGhlIGxpZmUKKyAgICAgKiB0aW1lIG9mIHRo
ZSB3aW5kb3csIHNvIHlvdSBtYXkgd2FudCB0byBjb25uZWN0IHRvIHRoZSA6Om5vdGlmeQorICAg
ICAqIHNpZ25hbCBvZiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIG9iamVjdCB0byBoYW5k
bGUgdGhvc2UuCisgICAgICoKKyAgICAgKiBJZiB0aGVyZSBpc24ndCBhbnkgaGFuZGxlciBmb3Ig
dGhpcyBzaWduYWwgb3IgaWYgdGhleSByZXR1cm4KKyAgICAgKiAlRkFMU0UsIHRoZW4gdGhlIGRl
ZmF1bHQgYWN0aW9uIGlzIHRvIGNhbGwgZ3RrX3dpZGdldF9zaG93KCkgb24KKyAgICAgKiB0aGUg
dG9wbGV2ZWwgd2luZG93IGNvbnRhaW5pbmcgQHdlYl92aWV3LCBhbmQgb24gQHdlYl92aWV3Lgor
ICAgICAqCisgICAgICogU2luY2UgMS4wLjIKKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdf
c2lnbmFsc1tTSE9XX1dFQl9WSUVXXSA9IGdfc2lnbmFsX25ldygic2hvdy13ZWItdmlldyIsCisg
ICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAg
KEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QpLAorICAgICAgICAgICAgR19TVFJVQ1Rf
T0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xhc3MsIHNob3dfd2ViX3ZpZXcpLAorICAgICAgICAgICAg
Z19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMCk7CisKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9O
X1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwKICAgICAg
ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAgICAoR1Np
Z25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCkBAIC0xMTEx
LDYgKzExOTksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2Yg
dmlydHVhbCBtZXRob2RzCiAgICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3Zp
ZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0Ns
YXNzLT5zaG93X3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsK
ICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3
X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2Jq
ZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7
CiAgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2No
b29zZV9maWxlOwpAQCAtMTIxMCw2ICsxMjk5LDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
VFlQRV9XRUJfU0VUVElOR1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIC8qKgor
ICAgICogV2ViS2l0V2ViVmlldzp3aW5kb3ctZmVhdHVyZXM6CisgICAgKgorICAgICogQW4gYXNz
b2NpYXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZS4KKyAgICAqCisgICAgKiBT
aW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
b2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2luZG93LWZlYXR1cmVzIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldp
bmRvdyBGZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJBbiBhc3NvY2lhdGVkIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGlu
c3RhbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURXUklURSkpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RD
bGFzcywgUFJPUF9FRElUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19ib29sZWFuKCJlZGl0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWRpdGFibGUiLApAQCAtMTQ0MSw2
ICsxNTQ0LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZpZXcp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1jaGFuZ2VkIiwgR19DQUxM
QkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxMKTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRf
d2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAgICBwcml2LT53ZWJXaW5k
b3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOwogfQogCiBHdGtX
aWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTE0NTAsNiArMTU1NSwyMCBAQCBH
dGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAgICByZXR1cm4gR1RLX1dJREdF
VCh3ZWJWaWV3KTsKIH0KIAorLy8gZm9yIGludGVybmFsIHVzZSBvbmx5Cit2b2lkIHdlYmtpdF93
ZWJfdmlld19zaG93KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworCisgICAgZ2Jvb2xlYW4gaXNIYW5k
bGVkID0gRkFMU0U7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdf
c2lnbmFsc1tTSE9XX1dFQl9WSUVXXSwgMCwgJmlzSGFuZGxlZCk7CisgICAgaWYgKGlzSGFuZGxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQod2Vi
VmlldykpOworfQorCisKIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCiB7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwpAQCAtMTQ3NCw2
ICsxNTkzLDUyIEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3
X3NldF93aW5kb3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBA
d2luZG93X2ZlYXR1cmVzOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFRoaXMg
d2lsbCBzZXQgaG93IHRoZSB3aW5kb3cgY29udGFpbmluZyB0aGUgI1dlYktpdFdlYlZpZXcgc2hv
dWxkCisgKiBsb29rIGFuZCBiZWhhdmUuIEFwcGxpY2F0aW9ucyBtYXkgd2FudCB0byBtb25pdG9y
IHRoaXMgcHJvcGVydHkgYW5kCisgKiBhcHBseSB0aGUgc2V0dGluZ3MgaXQgY2FycmllcyB0byB0
aGUgd2luZG93IGhvbGRpbmcgdGhlIHJlbGV2YW50CisgKiAjV2ViS2l0V2ViVmlldy4KKyAqCisg
KiBTaW5jZTogMS4wLjIKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0
dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Vi
V2luZG93RmVhdHVyZXMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9XSU5ET1df
RkVBVFVSRVMod2ViV2luZG93RmVhdHVyZXMpKTsKKyAgICAKKyAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBpZih3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19lcXVhbChwcml2LT53ZWJXaW5kb3dGZWF0dXJlcywgd2ViV2luZG93RmVhdHVyZXMp
KQorICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVh
dHVyZXMpOworICAgIGdfb2JqZWN0X3JlZih3ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgcHJpdi0+
d2ViV2luZG93RmVhdHVyZXMgPSB3ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKKyAqCisgKiBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiAjV2ViS2l0V2ViV2luZG93RmVh
dHVyZXMgaGVsZCBieSB0aGUgZ2l2ZW4KKyAqICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJldHVy
biB2YWx1ZTogdGhlICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFNpbmNlOiAxLjAu
MgorICovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl92aWV3X2dldF93aW5k
b3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT53
ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21haW50
YWluc19iYWNrX2ZvcndhcmRfbGlzdDoKICAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CiAg
KiBAZmxhZzogdG8gdGVsbCB0aGUgdmlldyB0byBtYWludGFpbiBhIGJhY2sgb3IgZm9yd2FyZCBs
aXN0CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggZWJkMWFhMS4uZWNmZWRlOSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtNjMsMTEgKzYzLDExIEBAIHN0cnVjdCBfV2Vi
S2l0V2ViVmlld0NsYXNzIHsKIAogICAgIC8qCiAgICAgICogZGVmYXVsdCBoYW5kbGVyL3ZpcnR1
YWwgbWV0aG9kcwotICAgICAqIERJU0NVU1M6IGNyZWF0ZV93ZWJfdmlldyBuZWVkcyBhIHJlcXVl
c3QgYW5kIHNob3VsZCB3ZSBtYWtlIHRoaXMgYSBzaWduYWwgd2l0aCBkZWZhdWx0IGhhbmRsZXI/
IHRoaXMgd291bGQKLSAgICAgKiByZXF1aXJlIHNvbWVvbmUgZG9pbmcgYSBnX3NpZ25hbF9zdG9w
X2VtaXNzaW9uX2J5X25hbWUKLSAgICAgKiBXZWJVSURlbGVnYXRlIGhhcyBub3RoaW5nIGZvciBj
cmVhdGVfZnJhbWUsIFdlYlBvbGljeURlbGVnYXRlIGFzIHdlbGwuLi4KICAgICAgKi8KLSAgICBX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgKiAoKiBjcmVhdGVfd2ViX3ZpZXcpICAgICAgICAoV2Vi
S2l0V2ViVmlldyogd2ViX3ZpZXcpOworICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAgICAqICgq
IGNyZWF0ZV93ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFdlYkZyYW1lICAgICAgICp3ZWJfZnJhbWUpOworCisgICAgZ2Jvb2xlYW4gICAg
ICAgICAgICAgICAgICAgKCogc2hvd193ZWJfdmlldykgICAgICAgICAgKFdlYktpdFdlYlZpZXcq
IHdlYl92aWV3KTsKIAogICAgIC8qCiAgICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhp
bmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKQEAgLTI0
Nyw2ICsyNDcsMTMgQEAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKIFdFQktJVF9BUEkgV2ViS2l0
V2ViU2V0dGluZ3MgKgogd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyAqd2luZG93X2ZlYXR1
cmVzKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJf
dmlld19nZXRfd2luZG93X2ZlYXR1cmVzICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92
aWV3KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzdlMDEKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKQEAg
LTAsMCArMSw0MTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3Jvbmhh
IFNpbHZhIDxnbnNAZ25vbWUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJX
aW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCisj
aW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCitleHRlcm4gIkMiIHsKKworZW51bSB7CisgICAg
UFJPUF8wLAorCisgICAgUFJPUF9YLAorICAgIFBST1BfWSwKKyAgICBQUk9QX1dJRFRILAorICAg
IFBST1BfSEVJR0hULAorICAgIFBST1BfVE9PTEJBUl9WSVNJQkxFLAorICAgIFBST1BfU1RBVFVT
QkFSX1ZJU0lCTEUsCisgICAgUFJPUF9TQ1JPTExCQVJfVklTSUJMRSwKKyAgICBQUk9QX01FTlVC
QVJfVklTSUJMRSwKKyAgICBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9GVUxM
U0NSRUVOLAorfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcywgd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXMsIEdfVFlQRV9PQkpFQ1QpCisKK3N0cnVjdCBfV2ViS2l0
V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIHsKKyAgICBnaW50IHg7CisgICAgZ2ludCB5OworICAg
IGdpbnQgd2lkdGg7CisgICAgZ2ludCBoZWlnaHQ7CisKKyAgICBnYm9vbGVhbiB0b29sYmFyX3Zp
c2libGU7CisgICAgZ2Jvb2xlYW4gc3RhdHVzYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gc2Ny
b2xsYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gbWVudWJhcl92aXNpYmxlOworICAgIGdib29s
ZWFuIGxvY2F0aW9uYmFyX3Zpc2libGU7CisKKyAgICBnYm9vbGVhbiBmdWxsc2NyZWVuOworfTsK
KworI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19HRVRfUFJJVkFURShvYmopIChH
X1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9XSU5ET1df
RkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSkpCisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19jbGFzc19pbml0KFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MqIGtsYXNzKQorewor
ICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsK
KyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X2ZpbmFsaXplOworICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHk7CisKKyAgICBH
UGFyYW1GbGFncyBmbGFncyA9IChHUGFyYW1GbGFncykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8
IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVh
dHVyZXM6eDoKKyAgICAqCisgICAgKiBUaGUgc3RhcnRpbmcgeCBwb3NpdGlvbiBvZiB0aGUgd2lu
ZG93IG9uIHRoZSBzY3JlZW4uCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIngiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IngiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzdGFydGluZyB4
IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgor
ICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6eToKKyAgICAqCisgICAgKiBUaGUgc3RhcnRp
bmcgeSBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisgICAgKgorICAgICog
U2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRoZSBzdGFydGluZyB5IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNj
cmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6d2lk
dGg6CisgICAgKgorICAgICogVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4K
KyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfV0lEVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IndpZHRoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaWR0aCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHdpZHRoIG9mIHRoZSB3aW5k
b3cgb24gdGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93
RmVhdHVyZXM6aGVpZ2h0OgorICAgICoKKyAgICAqIFRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdyBv
biB0aGUgc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9IRUlHSFQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImhlaWdodCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiSGVpZ2h0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUg
aGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAg
ICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6dG9vbGJhci12aXNpYmxlOgorICAgICoKKyAgICAq
IENvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2xiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3
aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX1RPT0xCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRvb2xiYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiVG9vbGJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSB0b29sYmFyIHNob3VsZCBi
ZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6c3RhdHVzYmFyLXZp
c2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgc3RhdHVzYmFyIHNob3Vs
ZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgor
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TVEFUVVNCQVJfVklT
SUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1c2Jhci12
aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdGF0dXNiYXIg
VmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMg
d2hldGhlciB0aGUgc3RhdHVzYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0
V2ViV2luZG93RmVhdHVyZXM6c2Nyb2xsYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJv
bHMgd2hldGhlciB0aGUgc2Nyb2xsYmFycyBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRv
dy4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfU0NST0xMQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJzY3JvbGxiYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIHNjcm9sbGJhcnMgc2hv
dWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczptZW51YmFy
LXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgbWVudWJhciBzaG91
bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTUVOVUJBUl9WSVNJ
QkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVudWJhci12aXNp
YmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZW51YmFyIFZpc2li
bGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRo
ZXIgdGhlIG1lbnViYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlczpsb2NhdGlvbmJhci12aXNpYmxlOgorICAgICoKKyAgICAqIENvbnRyb2xzIHdo
ZXRoZXIgdGhlIGxvY2F0aW9uYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93Lgor
ICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAibG9jYXRpb25iYXItdmlzaWJsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTG9jYXRpb25iYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgbG9jYXRpb25iYXIg
c2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpmdWxs
c2NyZWU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB3aW5kb3cgd2lsbCBiZSBkaXNw
bGF5ZWQgZnVsbHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRlVMTFNDUkVFTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlzcGxheWVk
IGZ1bGxzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworCisgICAg
Z190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVyZXMpCit7
CisgICAgd2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdiA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRV
UkVTX0dFVF9QUklWQVRFKHdlYl93aW5kb3dfZmVhdHVyZXMpOworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7Cisg
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfcGFyZW50X2NsYXNz
KS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29u
c3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFU
VVJFUyhvYmplY3QpOworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9
IHdlYl93aW5kb3dfZmVhdHVyZXMtPnByaXY7CisKKyAgICBzd2l0Y2gocHJvcF9pZCkgeworICAg
IGNhc2UgUFJPUF9YOgorICAgICAgICBwcml2LT54ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1k6CisgICAgICAgIHByaXYtPnkgPSBnX3Zh
bHVlX2dldF9pbnQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lEVEg6
CisgICAgICAgIHByaXYtPndpZHRoID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0hFSUdIVDoKKyAgICAgICAgcHJpdi0+aGVpZ2h0ID0gZ192
YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RPT0xC
QVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+dG9vbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TVEFUVVNCQVJf
VklTSUJMRToKKyAgICAgICAgcHJpdi0+c3RhdHVzYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9i
b29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9W
SVNJQkxFOgorICAgICAgICBwcml2LT5zY3JvbGxiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVOVUJBUl9WSVNJ
QkxFOgorICAgICAgICBwcml2LT5tZW51YmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFu
KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lC
TEU6CisgICAgICAgIHByaXYtPmxvY2F0aW9uYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExTQ1JFRU46Cisg
ICAgICAgIHByaXYtPmZ1bGxzY3JlZW4gPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93
X2ZlYXR1cmVzID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqZWN0KTsKKyAgICBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYgPSB3ZWJfd2luZG93X2ZlYXR1cmVzLT5w
cml2OworCisgICAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1g6CisgICAgICAg
IGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+eCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9ZOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPnkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lEVEg6CisgICAgICAgIGdfdmFsdWVfc2V0X2lu
dCh2YWx1ZSwgcHJpdi0+d2lkdGgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSEVJ
R0hUOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPmhlaWdodCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9UT09MQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnRvb2xiYXJfdmlzaWJsZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9TVEFUVVNCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+c3RhdHVzYmFyX3Zpc2libGUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfU0NST0xMQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4odmFsdWUsIHByaXYtPnNjcm9sbGJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX01FTlVCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgcHJpdi0+bWVudWJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHByaXYtPmxvY2F0aW9uYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRlVMTFNDUkVFTjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgcHJpdi0+ZnVsbHNjcmVlbik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBz
cGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51
YWxseSBhdHRhY2hlZCB0byBhIFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlCisgKgorICogU2luY2UgMS4wLjIKKyAqKi8KK1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKQor
eworICAgIHJldHVybiBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgTlVMTCkpOworfQorCisvLyBmb3IgaW50ZXJu
YWwgdXNlIG9ubHkKK1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzJiBmZWF0dXJlcykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyAqd2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKTsKKworICAgIGlmKGZl
YXR1cmVzLnhTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJ4Iiwgc3RhdGljX2Nhc3Q8aW50PihmZWF0dXJlcy54KSwgTlVMTCk7CisKKyAgICBp
ZihmZWF0dXJlcy55U2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93
RmVhdHVyZXMpLCAieSIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMueSksIE5VTEwpOworCisg
ICAgaWYoZmVhdHVyZXMud2lkdGhTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3
ZWJXaW5kb3dGZWF0dXJlcyksICJ3aWR0aCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMud2lk
dGgpLCBOVUxMKTsKKworICAgIGlmKGZlYXR1cmVzLmhlaWdodFNldCkKKyAgICAgICAgZ19vYmpl
Y3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgImhlaWdodCIsIHN0YXRpY19jYXN0
PGludD4oZmVhdHVyZXMuaGVpZ2h0KSwgTlVMTCk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpF
Q1Qod2ViV2luZG93RmVhdHVyZXMpLAorICAgICAgICAgICAgICAgICAidG9vbGJhci12aXNpYmxl
IiwgZmVhdHVyZXMudG9vbEJhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJzdGF0dXNiYXIt
dmlzaWJsZSIsIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJz
Y3JvbGxiYXItdmlzaWJsZSIsIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlLAorICAgICAgICAg
ICAgICAgICAibWVudWJhci12aXNpYmxlIiwgZmVhdHVyZXMubWVudUJhclZpc2libGUsCisgICAg
ICAgICAgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwgZmVhdHVyZXMubG9jYXRpb25CYXJW
aXNpYmxlLAorICAgICAgICAgICAgICAgICAiZnVsbHNjcmVlbiIsIGZlYXR1cmVzLmZ1bGxzY3Jl
ZW4sCisgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgcmV0dXJuIHdlYldpbmRvd0ZlYXR1
cmVzOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsOgorICog
QGZlYXR1cmVzMTogYSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqIEBmZWF0
dXJlczI6IGFub3RoZXIgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlCisgKgorICog
RGVjaWRlcyBpZiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZSBlcXVhbHMgYW5v
dGhlciwgYXMKKyAqIGluIGhhcyB0aGUgc2FtZSB2YWx1ZXMuCisgKgorICogUmV0dXJuczogJVRS
VUUgaWYgdGhlIGluc3RhbmNlcyBoYXZlIHRoZSBzYW1lIHZhbHVlcywgJUZBTFNFCisgKiBvdGhl
cndpc2UKKyAqCisgKiBTaW5jZSAxLjAuMgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfZXF1YWwoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMSwgV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMikKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlc1ByaXZhdGUqIHByaXYxID0gZmVhdHVyZXMxLT5wcml2OworICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjIgPSBmZWF0dXJlczItPnByaXY7CisgICAgCisgICAg
aWYoKHByaXYxLT54ID09IHByaXYyLT54KSAmJgorICAgICAgIChwcml2MS0+eSA9PSBwcml2Mi0+
eSkgJiYKKyAgICAgICAocHJpdjEtPndpZHRoID09IHByaXYyLT53aWR0aCkgJiYKKyAgICAgICAo
cHJpdjEtPmhlaWdodCA9PSBwcml2Mi0+aGVpZ2h0KSAmJgorICAgICAgIChwcml2MS0+dG9vbGJh
cl92aXNpYmxlID09IHByaXYyLT50b29sYmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5z
Y3JvbGxiYXJfdmlzaWJsZSA9PSBwcml2Mi0+c2Nyb2xsYmFyX3Zpc2libGUpICYmCisgICAgICAg
KHByaXYxLT5tZW51YmFyX3Zpc2libGUgPT0gcHJpdjItPm1lbnViYXJfdmlzaWJsZSkgJiYKKyAg
ICAgICAocHJpdjEtPmxvY2F0aW9uYmFyX3Zpc2libGUgPT0gcHJpdjItPmxvY2F0aW9uYmFyX3Zp
c2libGUpICYmCisgICAgICAgKHByaXYxLT5mdWxsc2NyZWVuID09IHByaXYyLT5mdWxsc2NyZWVu
KSkKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgcmV0dXJuIEZBTFNFOworfQorCisKK30KZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MzAwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUu
b3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfSF9fCisjZGVmaW5lIF9f
V0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfSF9fCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMgICAgICAgICAgICAod2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9X
SU5ET1dfRkVBVFVSRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT
VCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19DTEFTUyhrbGFz
cykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJf
V0lORE9XX0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUykpCisj
ZGVmaW5lIFdFQktJVF9JU19XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNTKGtsYXNzKSAoR19UWVBF
X0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVS
RVMpKQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19HRVRfQ0xBU1Mob2JqKSAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfV0lORE9X
X0ZFQVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
c1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgeworICAgIEdPYmpl
Y3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRl
KiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzIHsKKyAg
ICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJl
IGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOwor
fTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3R5
cGUgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqCit3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcgICAgICAgICAgICAgICAgICh2b2lk
KTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1
YWwgICAgICAgICAgICAgICAoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKiBmZWF0dXJlczIpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19X
RUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19IX18gKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24607</attachid>
            <date>2008-10-23 12:03:09 -0700</date>
            <delta_ts>2008-10-23 15:04:36 -0700</delta_ts>
            <desc>patch applying cleanly as of now</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>46010</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAzNzgxNykKKysrIEdOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiAr
MzEwLDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJmcmFtZS5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIFwK
IAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oIFwKKwlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmgKIAogd2Via2l0Z3RrX2J1aWx0X3NvdXJjZXMgKz0gXApAQCAtMzQxLDcgKzM0
Miw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNw
cCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKLQlXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5j
cHAKIAogd2Via2l0Z3RrX2NwcGZsYWdzICs9IFwKIAktREJVSUxESU5HX1dFQktJVCBcCkluZGV4
OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCShyZXZp
c2lvbiAzNzgxNykKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
NyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgogICogQ29weXJpZ2h0IChD
KSAyMDA4IE51YW50aSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3Jvbmhh
IFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNiArMjIs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0ay5oIgog
CisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMjgs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdG5ldHdvcmtyZXF1
ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKQEAgLTUzLDcgKzU2LDcgQEAgRmxv
YXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgaWYgKCFtX3dlYlZpZXcpCiAg
ICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKHdpbmRv
dykgeworICAgIGlmIChHVEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpIHsKICAgICAgICAgZ2lu
dCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3Bvc2l0
aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmxlZnQsICZ0b3ApOwogICAgICAgICBndGtfd2luZG93
X2dldF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgJndpZHRoLCAmaGVpZ2h0KTsKQEAgLTYyLDkg
KzY1LDIwIEBAIEZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3QoKQogICAgIHJldHVy
biBGbG9hdFJlY3QoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29u
c3QgRmxvYXRSZWN0JiByKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dl
YlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgaW50cmVjdCA9IEludFJlY3Qo
cmVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0g
d2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKworICAgIGdf
b2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksCisgICAgICAgICAgICAgICAg
ICJ4IiwgaW50cmVjdC54KCksCisgICAgICAgICAgICAgICAgICJ5IiwgaW50cmVjdC55KCksCisg
ICAgICAgICAgICAgICAgICJ3aWR0aCIsIGludHJlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAg
ICAgImhlaWdodCIsIGludHJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgIE5VTEwpOwog
fQogCiBGbG9hdFJlY3QgQ2hyb21lQ2xpZW50OjpwYWdlUmVjdCgpCkBAIC05MywyOSArMTA3LDM1
IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKICAgICBpZiAoIW1fd2ViVmlldykKICAg
ICAgICAgcmV0dXJuOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2luZG93KQorICAgIGlmIChH
VEtfV0lER0VUX1RPUExFVkVMKHdpbmRvdykpCiAgICAgICAgIGd0a193aW5kb3dfc2V0X2ZvY3Vz
KEdUS19XSU5ET1cod2luZG93KSwgTlVMTCk7CiB9CiAKLVBhZ2UqIENocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0Zl
YXR1cmVzJiBmZWF0dXJlcykKK1BhZ2UqIENocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1l
KiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3Qg
V2luZG93RmVhdHVyZXMmIGNvcmVGZWF0dXJlcykKIHsKLSAgICBpZiAoZmVhdHVyZXMuZGlhbG9n
KSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IDA7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJWaWV3LCAiY3JlYXRlLXdl
Yi12aWV3Iiwga2l0KGZyYW1lKSwgJndlYlZpZXcpOworCisgICAgaWYgKCF3ZWJWaWV3KQogICAg
ICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBUT0RPOiBGcmFtZUxvYWRS
ZXF1ZXN0IGlzIG5vdCB1c2VkICovCi0gICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBX
RUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG1fd2ViVmlldyktPmNyZWF0ZV93ZWJfdmlldyhtX3dl
YlZpZXcpOwotICAgICAgICBpZiAoIXdlYlZpZXcpCi0gICAgICAgICAgICByZXR1cm4gMDsKIAot
ICAgICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJ
RVdfR0VUX1BSSVZBVEUod2ViVmlldyk7Ci0gICAgICAgIHJldHVybiBwcml2YXRlRGF0YS0+Y29y
ZVBhZ2U7Ci0gICAgfQorICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0
dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMo
Y29yZUZlYXR1cmVzKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3
ZWJWaWV3LCB3ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qo
d2ViV2luZG93RmVhdHVyZXMpKTsKKworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5
KCkpCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKHdlYlZpZXcsIGZyYW1lTG9hZFJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAg
ICByZXR1cm4gY29yZSh3ZWJWaWV3KTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNob3coKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIHdlYmtpdF93ZWJfdmlld19zaG93KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wg
Q2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkBAIC0xMjksNTIgKzE0OSw5NiBAQCB2b2lkIENo
cm9tZUNsaWVudDo6cnVuTW9kYWwoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
Q2hyb21lQ2xpZW50OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50
OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
d2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qo
d2ViV2luZG93RmVhdHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9
CiAKIGJvb2wgQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcp
OworICAgIGdib29sZWFuIHZpc2libGU7CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2Vi
V2luZG93RmVhdHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAg
IHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVmlz
aWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCB2
aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dG
ZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7
CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVz
YmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnN0
YXR1c2JhclZpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdib29sZWFuIHZpc2libGU7
CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVz
YmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAK
LXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKQordm9pZCBDaHJv
bWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgdmlzaWJs
ZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSgpIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2Vi
VmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgJnZpc2li
bGUsIE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6
c2V0TWVudWJhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlz
aWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1f
d2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMo
bV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJl
cyksICJtZW51YmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVD
bGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0
X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2
aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwg
Im1lbnViYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsK
IH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNldFJlc2l6YWJsZShib29sKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgLy8gSWdub3JlZCBmb3Igbm93CiB9CiAKIHZvaWQgQ2hyb21lQ2xp
ZW50OjpjbG9zZVdpbmRvd1Nvb24oKQpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDM3ODE3KQorKysgV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2lu
Y2x1ZGUgIndlYmtpdG5ldHdvcmtyZXF1ZXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUu
aCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAKQEAgLTI1Nyw3ICsyNTgsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ldwogICAgICAgICBy
ZXR1cm47CiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBtYXJzaGFscyB0aGlzIHRv
IGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11bHRpLXRocmVhZGVkIGRv
d25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCi0gICAgKGNvcmUobV9mcmFtZSkt
PmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgKGNvcmUobV9m
cmFtZSktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVzZSk7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4pCkBAIC01NDIsNyArNTQzLDggQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoU2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfc2hvdyh3ZWJWaWV3KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2Vs
UG9saWN5Q2hlY2soKQpAQCAtNzE1LDggKzcxNywxNiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50
OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAogCiBGcmFtZSogRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoQ3JlYXRlUGFnZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsK
KyAgICBXZWJLaXRXZWJWaWV3KiBuZXdXZWJWaWV3ID0gMDsKKworICAgIGdfc2lnbmFsX2VtaXRf
YnlfbmFtZSh3ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwgJm5ld1dlYlZpZXcp
OworCisgICAgaWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFU
RShuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gY29yZShwcml2YXRlRGF0YS0+bWFpbkZyYW1lKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBv
bGljeShjb25zdCBSZXNvdXJjZUVycm9yJikKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYndpbmRvd2ZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8
Z25zQGdub21lLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2luZG93RmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgorI2luY2x1ZGUg
IndlYmtpdHByaXZhdGUuaCIKKworZXh0ZXJuICJDIiB7CisKK2VudW0geworICAgIFBST1BfMCwK
KworICAgIFBST1BfWCwKKyAgICBQUk9QX1ksCisgICAgUFJPUF9XSURUSCwKKyAgICBQUk9QX0hF
SUdIVCwKKyAgICBQUk9QX1RPT0xCQVJfVklTSUJMRSwKKyAgICBQUk9QX1NUQVRVU0JBUl9WSVNJ
QkxFLAorICAgIFBST1BfU0NST0xMQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9NRU5VQkFSX1ZJU0lC
TEUsCisgICAgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFLAorICAgIFBST1BfRlVMTFNDUkVFTiwK
K307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMsIHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzLCBHX1RZUEVfT0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZSB7CisgICAgZ2ludCB4OworICAgIGdpbnQgeTsKKyAgICBnaW50IHdp
ZHRoOworICAgIGdpbnQgaGVpZ2h0OworCisgICAgZ2Jvb2xlYW4gdG9vbGJhcl92aXNpYmxlOwor
ICAgIGdib29sZWFuIHN0YXR1c2Jhcl92aXNpYmxlOworICAgIGdib29sZWFuIHNjcm9sbGJhcl92
aXNpYmxlOworICAgIGdib29sZWFuIG1lbnViYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBsb2Nh
dGlvbmJhcl92aXNpYmxlOworCisgICAgZ2Jvb2xlYW4gZnVsbHNjcmVlbjsKK307CisKKyNkZWZp
bmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lO
U1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVT
LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUpKQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpOworCitzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
Yyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY2xh
c3NfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ29i
amVjdF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19maW5hbGl6
ZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0g
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5OworCisgICAgR1BhcmFtRmxh
Z3MgZmxhZ3MgPSAoR1BhcmFtRmxhZ3MpKFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFN
X0NPTlNUUlVDVCk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOng6
CisgICAgKgorICAgICogVGhlIHN0YXJ0aW5nIHggcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0
aGUgc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3RhcnRpbmcgeCBwb3NpdGlv
biBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19N
QVhJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzOnk6CisgICAgKgorICAgICogVGhlIHN0YXJ0aW5nIHkgcG9z
aXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNlOiAx
LjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0
X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9ZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJUaGUgc3RhcnRpbmcgeSBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
KSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOndpZHRoOgorICAg
ICoKKyAgICAqIFRoZSB3aWR0aCBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisgICAgKgor
ICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX1dJRFRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lkdGgiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3aWR0aCBvZiB0aGUgd2luZG93IG9uIHRo
ZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
OmhlaWdodDoKKyAgICAqCisgICAgKiBUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24gdGhlIHNj
cmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBST1BfSEVJR0hULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoZWlnaHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhl
aWdodCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGhlaWdodCBv
ZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzOnRvb2xiYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9s
cyB3aGV0aGVyIHRoZSB0b29sYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93Lgor
ICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0b29sYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlRvb2xiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgdG9vbGJhciBzaG91bGQgYmUgdmlzaWJs
ZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAg
ICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOnN0YXR1c2Jhci12aXNpYmxlOgor
ICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHN0YXR1c2JhciBzaG91bGQgYmUgdmlz
aWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXNiYXItdmlzaWJsZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzYmFyIFZpc2libGUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIg
dGhlIHN0YXR1c2JhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOnNjcm9sbGJhci12aXNpYmxlOgorICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRo
ZXIgdGhlIHNjcm9sbGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAg
KgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAic2Nyb2xsYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlNjcm9sbGJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBzY3JvbGxiYXJzIHNob3VsZCBiZSB2
aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsK
KworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6bWVudWJhci12aXNpYmxl
OgorICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIG1lbnViYXIgc2hvdWxkIGJlIHZp
c2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8K
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX01FTlVCQVJfVklTSUJMRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbnViYXItdmlzaWJsZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVudWJhciBWaXNpYmxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBt
ZW51YmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXM6bG9jYXRpb25iYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRo
ZSBsb2NhdGlvbmJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisg
ICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkxvY2F0aW9uYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIGxvY2F0aW9uYmFyIHNob3VsZCBi
ZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6ZnVsbHNjcmVlOgor
ICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlzcGxheWVkIGZ1
bGxzY3JlZW4uCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0ZVTExTQ1JFRU4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJmdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJGdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJDb250cm9scyB3aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2Ny
ZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKworICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJp
dmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0
KFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzKQoreworICAgIHdl
Yl93aW5kb3dfZmVhdHVyZXMtPnByaXYgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19HRVRf
UFJJVkFURSh3ZWJfd2luZG93X2ZlYXR1cmVzKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3BhcmVudF9jbGFzcyktPmZpbmFs
aXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMob2Jq
ZWN0KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYgPSB3ZWJfd2lu
ZG93X2ZlYXR1cmVzLT5wcml2OworCisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBjYXNlIFBS
T1BfWDoKKyAgICAgICAgcHJpdi0+eCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAgICBwcml2LT55ID0gZ192YWx1ZV9nZXRf
aW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJRFRIOgorICAgICAg
ICBwcml2LT53aWR0aCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9IRUlHSFQ6CisgICAgICAgIHByaXYtPmhlaWdodCA9IGdfdmFsdWVfZ2V0
X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9UT09MQkFSX1ZJU0lC
TEU6CisgICAgICAgIHByaXYtPnRvb2xiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6
CisgICAgICAgIHByaXYtPnN0YXR1c2Jhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2
YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQ1JPTExCQVJfVklTSUJMRToK
KyAgICAgICAgcHJpdi0+c2Nyb2xsYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01FTlVCQVJfVklTSUJMRToKKyAg
ICAgICAgcHJpdi0+bWVudWJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFOgorICAg
ICAgICBwcml2LT5sb2NhdGlvbmJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GVUxMU0NSRUVOOgorICAgICAgICBw
cml2LT5mdWxsc2NyZWVuID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJl
cyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXNQcml2YXRlKiBwcml2ID0gd2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKwor
ICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9YOgorICAgICAgICBnX3ZhbHVl
X3NldF9pbnQodmFsdWUsIHByaXYtPngpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
WToKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT55KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1dJRFRIOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUs
IHByaXYtPndpZHRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hFSUdIVDoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfaW50KHZhbHVlLCBwcml2LT5oZWlnaHQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfVE9PTEJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCBwcml2LT50b29sYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHByaXYtPnN0YXR1c2Jhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCBwcml2LT5zY3JvbGxiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9NRU5VQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHByaXYtPm1lbnViYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9MT0NBVElPTkJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBwcml2LT5sb2NhdGlvbmJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0ZVTExTQ1JFRU46CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYt
PmZ1bGxzY3JlZW4pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMg
aW5zdGFuY2Ugd2l0aCBkZWZhdWx0IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0
YWNoZWQgdG8gYSBXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyBpbnN0YW5jZQorICoKKyAqIFNpbmNlIDEuMC4yCisgKiovCitXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCkKK3sKKyAgICBy
ZXR1cm4gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9XSU5ET1dfRkVBVFVSRVMsIE5VTEwpKTsKK30KKworLy8gZm9yIGludGVybmFsIHVzZSBv
bmx5CitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
bmV3X2Zyb21fY29yZV9mZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVh
dHVyZXMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgKndlYldpbmRvd0ZlYXR1cmVz
ID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCk7CisKKyAgICBpZihmZWF0dXJlcy54
U2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAi
eCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMueCksIE5VTEwpOworCisgICAgaWYoZmVhdHVy
ZXMueVNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVz
KSwgInkiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLnkpLCBOVUxMKTsKKworICAgIGlmKGZl
YXR1cmVzLndpZHRoU2V0KQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93
RmVhdHVyZXMpLCAid2lkdGgiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLndpZHRoKSwgTlVM
TCk7CisKKyAgICBpZihmZWF0dXJlcy5oZWlnaHRTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChH
X09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJoZWlnaHQiLCBzdGF0aWNfY2FzdDxpbnQ+KGZl
YXR1cmVzLmhlaWdodCksIE5VTEwpOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldp
bmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgInRvb2xiYXItdmlzaWJsZSIsIGZlYXR1
cmVzLnRvb2xCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAic3RhdHVzYmFyLXZpc2libGUi
LCBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAic2Nyb2xsYmFy
LXZpc2libGUiLCBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAg
Im1lbnViYXItdmlzaWJsZSIsIGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlLAorICAgICAgICAgICAg
ICAgICAibG9jYXRpb25iYXItdmlzaWJsZSIsIGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSwK
KyAgICAgICAgICAgICAgICAgImZ1bGxzY3JlZW4iLCBmZWF0dXJlcy5mdWxsc2NyZWVuLAorICAg
ICAgICAgICAgICAgICBOVUxMKTsKKworICAgIHJldHVybiB3ZWJXaW5kb3dGZWF0dXJlczsKK30K
KworLyoqCisgKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbDoKKyAqIEBmZWF0dXJl
czE6IGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlCisgKiBAZmVhdHVyZXMyOiBh
bm90aGVyICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQorICoKKyAqIERlY2lkZXMg
aWYgYSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UgZXF1YWxzIGFub3RoZXIsIGFz
CisgKiBpbiBoYXMgdGhlIHNhbWUgdmFsdWVzLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRo
ZSBpbnN0YW5jZXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZXMsICVGQUxTRQorICogb3RoZXJ3aXNlCisg
KgorICogU2luY2UgMS4wLjIKKyAqKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2VxdWFsKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKiBmZWF0dXJlczIpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQ
cml2YXRlKiBwcml2MSA9IGZlYXR1cmVzMS0+cHJpdjsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGUqIHByaXYyID0gZmVhdHVyZXMyLT5wcml2OworICAgIAorICAgIGlmKChwcml2
MS0+eCA9PSBwcml2Mi0+eCkgJiYKKyAgICAgICAocHJpdjEtPnkgPT0gcHJpdjItPnkpICYmCisg
ICAgICAgKHByaXYxLT53aWR0aCA9PSBwcml2Mi0+d2lkdGgpICYmCisgICAgICAgKHByaXYxLT5o
ZWlnaHQgPT0gcHJpdjItPmhlaWdodCkgJiYKKyAgICAgICAocHJpdjEtPnRvb2xiYXJfdmlzaWJs
ZSA9PSBwcml2Mi0+dG9vbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+c2Nyb2xsYmFy
X3Zpc2libGUgPT0gcHJpdjItPnNjcm9sbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+
bWVudWJhcl92aXNpYmxlID09IHByaXYyLT5tZW51YmFyX3Zpc2libGUpICYmCisgICAgICAgKHBy
aXYxLT5sb2NhdGlvbmJhcl92aXNpYmxlID09IHByaXYyLT5sb2NhdGlvbmJhcl92aXNpYmxlKSAm
JgorICAgICAgIChwcml2MS0+ZnVsbHNjcmVlbiA9PSBwcml2Mi0+ZnVsbHNjcmVlbikpCisgICAg
ICAgIHJldHVybiBUUlVFOworICAgIHJldHVybiBGQUxTRTsKK30KKworCit9CkluZGV4OiBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMzc4MTcpCisrKyBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgWGFuIExvcGV6IDx4YW5AZ25vbWUub3JnPgogICogIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogIENv
cHlyaWdodCAoQykgMjAwOCBKYW4gQWxvbnpvIDxqbWFsb256b0B1bnBsdWdnYWJsZS5jb20+Cisg
KiAgQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9y
Zz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCkBAIC03Miw2ICs3Myw4IEBAIGV4dGVybiAiQyIgewog
ZW51bSB7CiAgICAgLyogbm9ybWFsIHNpZ25hbHMgKi8KICAgICBOQVZJR0FUSU9OX1JFUVVFU1RF
RCwKKyAgICBDUkVBVEVfV0VCX1ZJRVcsCisgICAgU0hPV19XRUJfVklFVywKICAgICBXSU5ET1df
T0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAgIExPQURfQ09NTUlUVEVELApA
QCAtMTAxLDYgKzEwNCw3IEBAIGVudW0gewogICAgIFBST1BfUEFTVEVfVEFSR0VUX0xJU1QsCiAg
ICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1NFVFRJTkdTLAorICAgIFBST1BfV0lORE9XX0ZF
QVRVUkVTLAogICAgIFBST1BfVFJBTlNQQVJFTlQsCiAgICAgUFJPUF9aT09NX0xFVkVMLAogICAg
IFBST1BfRlVMTF9DT05URU5UX1pPT00KQEAgLTI0MCw2ICsyNDQsOSBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5KEdPYmplY3QqCiAgICAgY2FzZSBQUk9QX1NFVFRJ
TkdTOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19n
ZXRfc2V0dGluZ3Mod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lO
RE9XX0ZFQVRVUkVTOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93
ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50KHdlYlZpZXcpKTsKICAgICAgICAg
YnJlYWs7CkBAIC0yNjUsNiArMjcyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3Nl
dF9wcm9wZXJ0eShHT2JqZWN0KgogICAgIGNhc2UgUFJPUF9TRVRUSU5HUzoKICAgICAgICAgd2Vi
a2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyh3ZWJWaWV3LCBXRUJLSVRfV0VCX1NFVFRJTkdTKGdf
dmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVh
dHVyZXMod2ViVmlldywgV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMoZ192YWx1ZV9nZXRfb2Jq
ZWN0KHZhbHVlKSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVFJBTlNQQVJFTlQ6
CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfdHJhbnNwYXJlbnQod2ViVmlldywgZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTU5OSwxMiArNjA5LDE2
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jb250YWluZXJfZm9yYWxsKEd0a0NvCiAg
ICAgICAgICgqY2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0RhdGEpOwogfQogCi1zdGF0aWMg
V2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdlYktp
dFdlYlZpZXcqKQorc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2Ny
ZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF9zaG93X3dlYl92aWV3KFdlYktpdFdlYlZpZXcqKQoreworICAgIHJl
dHVybiBGQUxTRTsKK30KKwogc3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRf
d2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0
V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKQEAgLTc2Myw2ICs3NzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
ZmluYWxpemUoR09iamVjdCogb2JqZQogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmJhY2tGb3J3
YXJkTGlzdCk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHByaXYt
PndlYlNldHRpbmdzLCAoZ3BvaW50ZXIpd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSwg
d2ViVmlldyk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViU2V0dGluZ3MpOworICAgIGdf
b2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzKTsKICAgICBnX29iamVjdF91bnJl
Zihwcml2LT5tYWluRnJhbWUpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmltQ29udGV4dCk7
CiAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QpOwpAQCAt
NzcyLDYgKzc4NywxOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUoR09i
amVjdCogb2JqZQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2NyZWF0
ZV93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwg
R1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVy
IGR1bW15KQoreworICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKKyAgZ3BvaW50
ZXIgbmV3V2ViVmlldyA9IGdfdmFsdWVfZ2V0X29iamVjdChoYW5kbGVyUmV0dXJuKTsKKyAgZ192
YWx1ZV9zZXRfb2JqZWN0KHJldHVybkFjY3UsIG5ld1dlYlZpZXcpOworCisgIGlmIChuZXdXZWJW
aWV3KQorICAgICAgY29udGludWVFbWlzc2lvbiA9IEZBTFNFOworCisgIHJldHVybiBjb250aW51
ZUVtaXNzaW9uOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X25hdmlnYXRpb25fcmVxdWVz
dF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNj
dSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKIHsKICAgZ2Jv
b2xlYW4gY29udGludWVFbWlzc2lvbiA9IFRSVUU7CkBAIC04MTQsNiArODQxLDY3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpCiAgICAgICogU2ln
bmFscwogICAgICAqLwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6Y3JlYXRlLXdl
Yi12aWV3OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFs
IGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAjV2ViS2l0V2ViRnJhbWUKKyAgICAgKiBA
cmV0dXJuOiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0V2ViVmlldyBvciAlTlVMTAorICAgICAq
CisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB3aW5kb3cgaXMgcmVx
dWVzdGVkLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlzIGhhbmRsZWQgdGhlIHNpZ25hbCBoYW5k
bGVyIHNob3VsZCByZXR1cm4gdGhlCisgICAgICogbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmll
dy4KKyAgICAgKgorICAgICAqIFRoZSBuZXcgI1dlYktpdFdlYlZpZXcgc2hvdWxkIG5vdCBiZSBk
aXNwbGF5ZWQgdG8gdGhlIHVzZXIKKyAgICAgKiB1bnRpbCB0aGUgOjpzaG93LXdlYi12aWV3IHNp
Z25hbCBpcyBlbWl0dGVkLgorICAgICAqCisgICAgICogVGhlIHNpZ25hbCBoYW5kbGVycyBzaG91
bGQgbm90IHRyeSB0byBkZWFsIHdpdGggdGhlIHJlZmVyZW5jZQorICAgICAqIGNvdW50IGZvciB0
aGUgbmV3ICNXZWJLaXRXZWJWaWV3LiBUaGUgd2lkZ2V0IHRvIHdoaWNoIHRoZQorICAgICAqIHdp
ZGdldCBpcyBhZGRlZCB3aWxsIGhhbmRsZSB0aGF0LgorICAgICAqCisgICAgICogU2luY2UgMS4w
LjIKKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDUkVBVEVfV0VCX1ZJRVdd
ID0gZ19zaWduYWxfbmV3KCJjcmVhdGUtd2ViLXZpZXciLAorICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lH
TkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBjcmVhdGVfd2ViX3ZpZXcpLAorICAgICAgICAgICAg
d2Via2l0X2NyZWF0ZV93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQsCisgICAgICAgICAgICBOVUxM
LAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfT0JKRUNUX19PQkpFQ1QsCisgICAgICAgICAg
ICBXRUJLSVRfVFlQRV9XRUJfVklFVyAsIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJf
RlJBTUUpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6c2hvdy13ZWItdmlldzoK
KyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0
dGVkCisgICAgICogQHJldHVybjogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJl
aW5nIGludm9rZWQgZm9yCisgICAgICogdGhlIGV2ZW50LCAlRkFMU0UgdG8gcHJvcGFnYXRlIHRo
ZSBldmVudCBmdXJ0aGVyCisgICAgICoKKyAgICAgKiBFbWl0dGVkIGFmdGVyIDo6Y3JlYXRlLXdl
Yi12aWV3IHdoZW4gdGhlIG5ldyAjV2ViS2l0V2ViVmlldworICAgICAqIHNob3VsZCBiZSBkaXNw
bGF5ZWQgdG8gdGhlIHVzZXIuIFdoZW4gdGhpcyBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIGFs
bCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSB3aW5kb3cgc2hvdWxkIGxvb2ssIGluY2x1
ZGluZworICAgICAqIHNpemUsIHBvc2l0aW9uLCB3aGV0aGVyIHRoZSBsb2NhdGlvbiwgc3RhdHVz
IGFuZCBzY3JvbGwgYmFycworICAgICAqIHNob3VsZCBiZSBkaXNwbGF5ZWQsIGlzIGFscmVhZHkg
c2V0IG9uIHRoZQorICAgICAqICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBvYmplY3QgY29udGFp
bmVkIGJ5IHRoZSAjV2ViS2l0V2ViVmlldy4KKyAgICAgKgorICAgICAqIE5vdGljZSB0aGF0IHNv
bWUgb2YgdGhhdCBpbmZvcm1hdGlvbiBtYXkgY2hhbmdlIGR1cmluZyB0aGUgbGlmZQorICAgICAq
IHRpbWUgb2YgdGhlIHdpbmRvdywgc28geW91IG1heSB3YW50IHRvIGNvbm5lY3QgdG8gdGhlIDo6
bm90aWZ5CisgICAgICogc2lnbmFsIG9mIHRoZSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgb2Jq
ZWN0IHRvIGhhbmRsZSB0aG9zZS4KKyAgICAgKgorICAgICAqIElmIHRoZXJlIGlzbid0IGFueSBo
YW5kbGVyIGZvciB0aGlzIHNpZ25hbCBvciBpZiB0aGV5IHJldHVybgorICAgICAqICVGQUxTRSwg
dGhlbiB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgdG8gY2FsbCBndGtfd2lkZ2V0X3Nob3coKSBvbgor
ICAgICAqIHRoZSB0b3BsZXZlbCB3aW5kb3cgY29udGFpbmluZyBAd2ViX3ZpZXcsIGFuZCBvbiBA
d2ViX3ZpZXcuCisgICAgICoKKyAgICAgKiBTaW5jZSAxLjAuMgorICAgICAqLworICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW1NIT1dfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3KCJzaG93LXdl
Yi12aWV3IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisg
ICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCksCisgICAgICAgICAg
ICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgc2hvd193ZWJfdmlldyksCisg
ICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAg
ICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOLCAwKTsKKwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxz
W05BVklHQVRJT05fUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25ldygibmF2aWdhdGlvbi1yZXF1ZXN0
ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAg
ICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9O
KSwKQEAgLTExNDksNiArMTIzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFdlYktpdFdlYlZpCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0
aG9kcwogICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Via2l0
X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OworICAgIHdlYlZpZXdDbGFzcy0+c2hvd193
ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nob3dfd2ViX3ZpZXc7CiAgICAgd2ViVmll
d0NsYXNzLT5uYXZpZ2F0aW9uX3JlcXVlc3RlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX25hdmln
YXRpb25fcmVxdWVzdGVkOwogICAgIHdlYlZpZXdDbGFzcy0+d2luZG93X29iamVjdF9jbGVhcmVk
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfd2luZG93X29iamVjdF9jbGVhcmVkOwogICAgIHdlYlZp
ZXdDbGFzcy0+Y2hvb3NlX2ZpbGUgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfZmlsZTsK
QEAgLTEyNjUsNiArMTM1NCwyMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViVmlldzp3aW5kb3ctZmVhdHVy
ZXM6CisgICAgKgorICAgICogQW4gYXNzb2NpYXRlZCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBp
bnN0YW5jZS4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVT
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVj
dCgid2luZG93LWZlYXR1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIldpbmRvdyBGZWF0dXJlcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbiBhc3NvY2lhdGVkIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19G
RUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCiAgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9FRElUQUJMRSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlZGl0YWJsZSIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRWRpdGFibGUiLApAQCAtMTQ5Niw2ICsxNTk5LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2UKICAgICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRl
X3NldHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInNjcmVl
bi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBO
VUxMKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5Iiwg
R19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CisK
KyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X25ldygpOwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKQEAgLTE1
MDUsNiArMTYxMCwyMCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKICAg
ICByZXR1cm4gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIH0KIAorLy8gZm9yIGludGVybmFsIHVzZSBv
bmx5Cit2b2lkIHdlYmtpdF93ZWJfdmlld19zaG93KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworCisg
ICAgZ2Jvb2xlYW4gaXNIYW5kbGVkID0gRkFMU0U7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3
LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tTSE9XX1dFQl9WSUVXXSwgMCwgJmlzSGFuZGxlZCk7
CisgICAgaWYgKGlzSGFuZGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3RrX3dpZGdldF9z
aG93KEdUS19XSURHRVQod2ViVmlldykpOworfQorCisKIHZvaWQgd2Via2l0X3dlYl92aWV3X3Nl
dF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJTZXR0aW5ncyogd2Vi
U2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2Vi
VmlldykpOwpAQCAtMTUyOSw2ICsxNjQ4LDUyIEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdlCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X3Nl
dF93aW5kb3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2lu
ZG93X2ZlYXR1cmVzOiBhICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFRoaXMgd2ls
bCBzZXQgaG93IHRoZSB3aW5kb3cgY29udGFpbmluZyB0aGUgI1dlYktpdFdlYlZpZXcgc2hvdWxk
CisgKiBsb29rIGFuZCBiZWhhdmUuIEFwcGxpY2F0aW9ucyBtYXkgd2FudCB0byBtb25pdG9yIHRo
aXMgcHJvcGVydHkgYW5kCisgKiBhcHBseSB0aGUgc2V0dGluZ3MgaXQgY2FycmllcyB0byB0aGUg
d2luZG93IGhvbGRpbmcgdGhlIHJlbGV2YW50CisgKiAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBT
aW5jZTogMS4wLjIKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJl
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2lu
ZG93RmVhdHVyZXMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9XSU5ET1dfRkVB
VFVSRVMod2ViV2luZG93RmVhdHVyZXMpKTsKKyAgICAKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBpZih3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19lcXVhbChwcml2LT53ZWJXaW5kb3dGZWF0dXJlcywgd2ViV2luZG93RmVhdHVyZXMpKQor
ICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVy
ZXMpOworICAgIGdfb2JqZWN0X3JlZih3ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgcHJpdi0+d2Vi
V2luZG93RmVhdHVyZXMgPSB3ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqCisgKiBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiAjV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMgaGVsZCBieSB0aGUgZ2l2ZW4KKyAqICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJldHVybiB2
YWx1ZTogdGhlICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFNpbmNlOiAxLjAuMgor
ICovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3df
ZmVhdHVyZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHJldHVybiBwcml2LT53ZWJX
aW5kb3dGZWF0dXJlczsKK30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21haW50YWlu
c19iYWNrX2ZvcndhcmRfbGlzdDoKICAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBA
ZmxhZzogdG8gdGVsbCB0aGUgdmlldyB0byBtYWludGFpbiBhIGJhY2sgb3IgZm9yd2FyZCBsaXN0
CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX1dFQktJVF9X
RUJfV0lORE9XX0ZFQVRVUkVTX0hfXworI2RlZmluZSBfX1dFQktJVF9XRUJfV0lORE9XX0ZFQVRV
UkVTX0hfXworCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9X
RUJfV0lORE9XX0ZFQVRVUkVTICAgICAgICAgICAgKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKSkKKyNkZWZpbmUgV0VC
S0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfV0lORE9XX0ZF
QVRVUkVTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1dJ
TkRPV19GRUFUVVJFU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFz
cyksICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9XSU5ET1dfRkVBVFVSRVNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXNDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGUgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOworCitzdHJ1Y3QgX1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzIHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKwor
ICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBf
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9j
bGFzczsKKworICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUK
K3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlICAgICAgICAgICAgKHZvaWQpOwor
CitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfbmV3ICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsICAgICAgICAgICAgICAgKFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMy
KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVS
RVNfSF9fICovCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCShyZXZpc2lvbiAzNzgx
NykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsMTIgKzYzLDEyIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKIAogICAgIC8q
CiAgICAgICogZGVmYXVsdCBoYW5kbGVyL3ZpcnR1YWwgbWV0aG9kcwotICAgICAqIERJU0NVU1M6
IGNyZWF0ZV93ZWJfdmlldyBuZWVkcyBhIHJlcXVlc3QgYW5kIHNob3VsZCB3ZSBtYWtlIHRoaXMg
YSBzaWduYWwgd2l0aCBkZWZhdWx0IGhhbmRsZXI/IHRoaXMgd291bGQKLSAgICAgKiByZXF1aXJl
IHNvbWVvbmUgZG9pbmcgYSBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUKLSAgICAgKiBX
ZWJVSURlbGVnYXRlIGhhcyBub3RoaW5nIGZvciBjcmVhdGVfZnJhbWUsIFdlYlBvbGljeURlbGVn
YXRlIGFzIHdlbGwuLi4KICAgICAgKi8KLSAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgKiAo
KiBjcmVhdGVfd2ViX3ZpZXcpICAgICAgICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworICAg
IFdlYktpdFdlYlZpZXcgICAgICAgICAgICAqICgqIGNyZWF0ZV93ZWJfdmlldykgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYkZyYW1lICAgICAgICp3
ZWJfZnJhbWUpOwogCisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCogc2hvd193ZWJf
dmlldykgICAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKwogICAgIC8qCiAgICAg
ICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lvbkxp
c3RlbmVyX1Byb3RvY29sIGluc3RlYWQKICAgICAgKi8KQEAgLTI0Nyw2ICsyNDcsMTMgQEAgd2Vi
a2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFcKIFdFQktJVF9B
UEkgV2ViS2l0V2ViU2V0dGluZ3MgKgogd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyAqd2lu
ZG93X2ZlYXR1cmVzKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKK3dl
YmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgKndlYl92aWV3KTsKIApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAkocmV2aXNp
b24gMzc4MTcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0
dXJlcy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KIAog
I2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAogI2luY2x1ZGUgPGdsaWIuaD4KIApA
QCAtNjcsNiArNjksNyBAQCBleHRlcm4gIkMiIHsKICAgICBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQ
cml2YXRlIHsKICAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2U7CiAgICAgICAgIFdlYktp
dFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKKyAgICAgICAgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzOwogCiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtYWluRnJh
bWU7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7
CkBAIC0xMTAsNiArMTEzLDEyIEBAIGV4dGVybiAiQyIgewogICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtKgogICAgIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSopOwogCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqCisgICAg
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyAoY29uc3Qg
V2ViQ29yZTo6V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKTsKKworICAgIHZvaWQKKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2hvdyAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworCiAgICAgLy8gRklY
TUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVl
biBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGRlZmluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRkZWZpbmVzLmgJKHJldmlzaW9uIDM3ODE3KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJGcmFtZUNsYXNzIFdlYktpdFdlYkZyYW1lCiB0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgV2ViS2l0V2ViV2luZG93RmVhdHVyZXM7Cit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc0NsYXNzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRX
ZWJWaWV3OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyBXZWJLaXRXZWJWaWV3
Q2xhc3M7CiAKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCShyZXZpc2lvbiAzNzgxNykKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+Cisj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2Zvcndh
cmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmg+CkluZGV4
OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gMzc4MTcpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDUyIEBACisyMDA4LTEwLTIzICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxn
bnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMAorICAg
ICAgICBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGlt
cGxlbWVudGVkCisgICAgICAgIAorICAgICAgICBDb2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFu
ZCBNYXJjbyBCYXJpc2lvbmUKKyAgICAgICAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28u
dWs+IGluIHRoaXMgY2hhbmdlIHNldC4KKworICAgICAgICBJbXBsZW1lbnRlZCBhbGwgdGhlIENo
cm9tZUNsaWVudCBpbnRlcmZhY2VzIG5lZWRlZCB0byBoYXZlIG5ldworICAgICAgICB3aW5kb3cg
Y3JlYXRpb24gZnVuY3Rpb25pbmcgYW5kIGV4cG9zZWQgdG8gY2xpZW50IGNvZGUuIFdlCisgICAg
ICAgIGltcGxlbWVudGVkIGEgbWlycm9yIEdPYmplY3QgdG8gdGhlIFdpbmRvd0ZlYXR1cmVzIG9i
amVjdCBwcm92aWRlZAorICAgICAgICBieSBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVX
aW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hy
b21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
OjpzZXRTY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
c2Nyb2xsYmFyc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldE1l
bnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjptZW51YmFyVmlz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aFNob3cpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVh
dGVQYWdlKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHA6IEFkZGVkLgorICAgICAgICAoX1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
Y2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOjp3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplKToK
KyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkpOgor
ICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZh
dGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMpOgor
ICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfZXF1YWwpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0
dXJlcy5oOiBBZGRlZC4KKwogMjAwOC0xMC0yMiAgQWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+
CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBvbGRlciBHVEsrIHZlcnNpb25zIHdoZXJlIEdUS19U
WVBFX1RBUkdFVF9MSVNUIGlzbid0CkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hh
bmdlTG9nCShyZXZpc2lvbiAzNzgxNykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEwIEBACisyMDA4LTEwLTIzICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25v
bWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRoZSBuZXcgV2ViS2l0R3RrIGZpbGVzIHRvIGJlIGJ1aWx0OgorICAgICAgICBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy57Y3BwLGh9CisKIDIwMDgtMTAt
MjIgIEFscCBUb2tlciAgPGFscEBudWFudGkuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCBmb3Ig
Q2Fpcm8gMS4yLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24620</attachid>
            <date>2008-10-23 15:04:36 -0700</date>
            <delta_ts>2008-10-23 17:14:13 -0700</delta_ts>
            <desc>patch after tonight&apos;s review session</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>45955</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzMmFiOGY4Li5lMWY3YzA5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAK
KzIwMDgtMTAtMjMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKwogMjAwOC0xMC0yMiAgQWxwIFRva2Vy
ICA8YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGZvciBDYWlybyAxLjIuCmRp
ZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGQzZTExZDYu
LmZkMjkxOTcgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFt
CkBAIC0zMTAsNiArMzEwLDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oIFwKKwlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKIAogd2Via2l0Z3RrX2J1aWx0X3NvdXJjZXMgKz0gXApA
QCAtMzQxLDcgKzM0Miw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3Bw
IFwKLQlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy5jcHAKIAogd2Via2l0Z3RrX2NwcGZsYWdzICs9IFwKIAktREJVSUxESU5HX1dF
QktJVCBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IDU0OGU5Y2UuLmE1ODY3ZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMDgt
MTAtMjMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMwCisgICAgICAgIENocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93IGFuZCBmcmllbmRzIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgCisgICAg
ICAgIENvZGUgZnJvbSBHdXN0YXZvIE5vcm9uaGEgYW5kIE1hcmNvIEJhcmlzaW9uZQorICAgICAg
ICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4gaW4gdGhpcyBjaGFuZ2Ugc2V0Lgor
CisgICAgICAgIEltcGxlbWVudGVkIGFsbCB0aGUgQ2hyb21lQ2xpZW50IGludGVyZmFjZXMgbmVl
ZGVkIHRvIGhhdmUgbmV3CisgICAgICAgIHdpbmRvdyBjcmVhdGlvbiBmdW5jdGlvbmluZyBhbmQg
ZXhwb3NlZCB0byBjbGllbnQgY29kZS4gV2UKKyAgICAgICAgaW1wbGVtZW50ZWQgYSBtaXJyb3Ig
R09iamVjdCB0byB0aGUgV2luZG93RmVhdHVyZXMgb2JqZWN0IHByb3ZpZGVkCisgICAgICAgIGJ5
IFdlYkNvcmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0
VG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp0b29sYmFy
c1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdyk6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXQtbWFyc2hhbC5saXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2
YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYndpbmRvd2Zl
YXR1cmVzLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2
YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KToKKyAgICAgICAgKF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93
RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcpOgorICAgICAg
ICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93
RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbCk6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg6IEFkZGVkLgorCiAyMDA4LTEw
LTIyICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9y
IG9sZGVyIEdUSysgdmVyc2lvbnMgd2hlcmUgR1RLX1RZUEVfVEFSR0VUX0xJU1QgaXNuJ3QKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAyNTZh
M2EzLi5jMGFjZTE2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQ2hyaXN0aWFu
IER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVh
bnRpIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGdu
c0Bnbm9tZS5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMSw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRl
ICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0yOCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0bmV0d29ya3JlcXVlc3QuaCIKICNp
bmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtNTMsNyArNTYsNyBAQCBGbG9hdFJlY3QgQ2hy
b21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICBpZiAoIW1fd2ViVmlldykKICAgICAgICAgcmV0
dXJuIEZsb2F0UmVjdCgpOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
dG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2luZG93KSB7CisgICAg
aWYgKEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSkgewogICAgICAgICBnaW50IGxlZnQsIHRv
cCwgd2lkdGgsIGhlaWdodDsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfcG9zaXRpb24oR1RLX1dJ
TkRPVyh3aW5kb3cpLCAmbGVmdCwgJnRvcCk7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3NpemUo
R1RLX1dJTkRPVyh3aW5kb3cpLCAmd2lkdGgsICZoZWlnaHQpOwpAQCAtNjIsOSArNjUsMjAgQEAg
RmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgcmV0dXJuIEZsb2F0UmVj
dCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHIpCit2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBpbnRyZWN0ID0gSW50UmVjdChyZWN0KTsKKyAg
ICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgIngiLCBpbnRy
ZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgInkiLCBpbnRyZWN0LnkoKSwKKyAgICAgICAgICAg
ICAgICAgIndpZHRoIiwgaW50cmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAiaGVpZ2h0
IiwgaW50cmVjdC5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgTlVMTCk7CiB9CiAKIEZsb2F0
UmVjdCBDaHJvbWVDbGllbnQ6OnBhZ2VSZWN0KCkKQEAgLTkzLDI5ICsxMDcsMzUgQEAgdm9pZCBD
aHJvbWVDbGllbnQ6OnVuZm9jdXMoKQogICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICByZXR1
cm47CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKG1fd2ViVmlldykpOwotICAgIGlmICh3aW5kb3cpCisgICAgaWYgKEdUS19XSURHRVRf
VE9QTEVWRUwod2luZG93KSkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RLX1dJTkRP
Vyh3aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgY29yZUZlYXR1cmVzKQogewotICAgIGlmIChmZWF0dXJlcy5kaWFsb2cpIHsKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gMDsKKwor
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBr
aXQoZnJhbWUpLCAmd2ViVmlldyk7CisKKyAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVy
biAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFRPRE86IEZyYW1lTG9hZFJlcXVlc3QgaXMg
bm90IHVzZWQgKi8KLSAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFV19HRVRfQ0xBU1MobV93ZWJWaWV3KS0+Y3JlYXRlX3dlYl92aWV3KG1fd2ViVmlldyk7Ci0g
ICAgICAgIGlmICghd2ViVmlldykKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJ
VkFURSh3ZWJWaWV3KTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKLSAg
ICB9CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzKGNvcmVGZWF0
dXJlcyk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMod2ViVmlldywg
d2ViV2luZG93RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSk7CisKKyAgICBpZiAoIWZyYW1lTG9hZFJlcXVlc3QuaXNFbXB0eSgpKQorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJWaWV3LCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJu
IGNvcmUod2ViVmlldyk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpzaG93KCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfbm90aWZ5X3JlYWR5KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wg
Q2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkBAIC0xMjksNTIgKzE0OSw5NiBAQCB2b2lkIENo
cm9tZUNsaWVudDo6cnVuTW9kYWwoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
Q2hyb21lQ2xpZW50OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50
OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
d2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qo
d2ViV2luZG93RmVhdHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9
CiAKIGJvb2wgQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcp
OworICAgIGdib29sZWFuIHZpc2libGU7CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2Vi
V2luZG93RmVhdHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAg
IHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVmlz
aWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCB2
aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dG
ZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7
CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVz
YmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnN0
YXR1c2JhclZpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdib29sZWFuIHZpc2libGU7
CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVz
YmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAK
LXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKQordm9pZCBDaHJv
bWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgdmlzaWJs
ZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSgpIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2Vi
VmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgJnZpc2li
bGUsIE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6
c2V0TWVudWJhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlz
aWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1f
d2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMo
bV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJl
cyksICJtZW51YmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVD
bGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0
X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2
aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwg
Im1lbnViYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsK
IH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNldFJlc2l6YWJsZShib29sKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgLy8gSWdub3JlZCBmb3Igbm93CiB9CiAKIHZvaWQgQ2hyb21lQ2xp
ZW50OjpjbG9zZVdpbmRvd1Nvb24oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA5YjRmZTlkLi5kNjY1MzQ0IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApA
QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAi
d2Via2l0bmV0d29ya3JlcXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2lu
Y2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIApAQCAtMjU3LDcgKzI1OCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1l
UG9saWN5RnVuY3RpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2
ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQogICAgIC8v
IGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNh
bWUKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5
SWdub3JlKTsKKyAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbiko
UG9saWN5VXNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rp
b24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKQEAgLTU0Miw3ICs1NDMs
OCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19ub3RpZnlfcmVhZHkod2ViVmlldyk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTcxNSw4ICs3
MTcsMTYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKIAog
RnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogbmV3V2Vi
VmlldyA9IDA7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImNyZWF0ZS13
ZWItdmlldyIsIG1fZnJhbWUsICZuZXdXZWJWaWV3KTsKKworICAgIGlmICghbmV3V2ViVmlldykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURh
dGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUobmV3V2ViVmlldyk7CisgICAgcmV0dXJu
IGNvcmUocHJpdmF0ZURhdGEtPm1haW5GcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYp
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC5oCmluZGV4IDEwYzIxNGYuLjI5ZDNkZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVz
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmg+CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVz
LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggMzg2YzNlMS4uZGFj
MmRkMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtNTUsNiArNTUsOSBAQCB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNzOwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
V2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggM2Vm
YTAyYS4uMDhhOTA5YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+
CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXaW5k
b3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC02Nyw2ICs2OSw3IEBAIGV4
dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgICAgICBX
ZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNl
dHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVy
ZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKICAgICAgICAgV2ViQ29y
ZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKQEAgLTExMCw2ICsxMTMsMTIg
QEAgZXh0ZXJuICJDIiB7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dl
Yl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7
CiAKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKKyAgICB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzIChjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMpOworCisgICAgdm9pZAorICAgIHdlYmtpdF93ZWJfdmlld19ub3RpZnlf
cmVhZHkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKwogICAgIC8vIEZJWE1FOiBNb3ZlIHRo
ZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVpciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2Vk
LgogCiAgICAgV0VCS0lUX0FQSSBHU0xpc3QqCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CmluZGV4IDNhYzA4YzIuLmQ0MmY5ZmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBn
bm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEphbiBBbG9uem8gPGptYWxvbnpvQHVu
cGx1Z2dhYmxlLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNp
bHZhIDxnbnNAZ25vbWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgog
ICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKQEAgLTcyLDYgKzczLDgg
QEAgZXh0ZXJuICJDIiB7CiBlbnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5B
VklHQVRJT05fUkVRVUVTVEVELAorICAgIENSRUFURV9XRUJfVklFVywKKyAgICBXRUJfVklFV19S
RUFEWSwKICAgICBXSU5ET1dfT0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAg
IExPQURfQ09NTUlUVEVELApAQCAtMTAxLDYgKzEwNCw3IEBAIGVudW0gewogICAgIFBST1BfUEFT
VEVfVEFSR0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1NFVFRJTkdTLAor
ICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTLAogICAgIFBST1BfVFJBTlNQQVJFTlQsCiAgICAgUFJP
UF9aT09NX0xFVkVMLAogICAgIFBST1BfRlVMTF9DT05URU5UX1pPT00KQEAgLTI0MCw2ICsyNDQs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKgogICAgIGNhc2UgUFJPUF9TRVRUSU5HUzoKICAg
ICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFU
VVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjY1LDYgKzI3Miw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHCiAgICAgY2FzZSBQUk9Q
X1NFVFRJTkdTOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKHdlYlZpZXcs
IFdFQktJVF9XRUJfU0VUVElOR1MoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSkpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3LCBXRUJLSVRfV0VCX1dJTkRPV19G
RUFUVVJFUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF90cmFu
c3BhcmVudCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtNTk5LDEyICs2MDksMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Nv
bnRhaW5lcl9mb3JhbGwoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIGdib29sZWFuLAogICAgICAg
ICAoKmNhbGxiYWNrKSgqY3VycmVudCwgY2FsbGJhY2tEYXRhKTsKIH0KIAotc3RhdGljIFdlYktp
dFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJW
aWV3KikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVf
d2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKikKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X3JlYWxfd2ViX3ZpZXdfcmVhZHkoV2ViS2l0V2ViVmlldyopCit7CisgICAgcmV0dXJu
IEZBTFNFOworfQorCiBzdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJf
dmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpAQCAtNzYzLDYgKzc3Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5h
bGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFja0Zvcndh
cmRMaXN0KTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJpdi0+
d2ViU2V0dGluZ3MsIChncG9pbnRlcil3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5LCB3
ZWJWaWV3KTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CisgICAgZ19v
YmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwogICAgIGdfb2JqZWN0X3VucmVm
KHByaXYtPm1haW5GcmFtZSk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsK
ICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90YXJnZXRfbGlzdCk7CkBAIC03
NzIsNiArNzg3LDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfY3Jl
YXRlX3dlYl92aWV3X3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50
LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50
ZXIgZHVtbXkpCit7CisgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICBncG9p
bnRlciBuZXdXZWJWaWV3ID0gZ192YWx1ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOworICBn
X3ZhbHVlX3NldF9vYmplY3QocmV0dXJuQWNjdSwgbmV3V2ViVmlldyk7CisKKyAgaWYgKG5ld1dl
YlZpZXcpCisgICAgICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7CisKKyAgcmV0dXJuIGNvbnRp
bnVlRW1pc3Npb247Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1
ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5B
Y2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQogewogICBn
Ym9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKQEAgLTgxNCw2ICs4NDEsNjcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgICogU2lnbmFscwogICAgICAqLwogCisgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzo6Y3JlYXRlLXdlYi12aWV3OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9i
amVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAj
V2ViS2l0V2ViRnJhbWUKKyAgICAgKiBAcmV0dXJuOiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0
V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjcmVhdGlv
biBvZiBhIG5ldyB3aW5kb3cgaXMgcmVxdWVzdGVkLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlz
IGhhbmRsZWQgdGhlIHNpZ25hbCBoYW5kbGVyIHNob3VsZCByZXR1cm4gdGhlCisgICAgICogbmV3
bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldy4KKyAgICAgKgorICAgICAqIFRoZSBuZXcgI1dlYktp
dFdlYlZpZXcgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIKKyAgICAgKiB1bnRp
bCB0aGUgOjp3ZWItdmlldy1yZWFkeSBzaWduYWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAq
IFRoZSBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIG5vdCB0cnkgdG8gZGVhbCB3aXRoIHRoZSByZWZl
cmVuY2UKKyAgICAgKiBjb3VudCBmb3IgdGhlIG5ldyAjV2ViS2l0V2ViVmlldy4gVGhlIHdpZGdl
dCB0byB3aGljaCB0aGUKKyAgICAgKiB3aWRnZXQgaXMgYWRkZWQgd2lsbCBoYW5kbGUgdGhhdC4K
KyAgICAgKgorICAgICAqIFNpbmNlIDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3
X3NpZ25hbHNbQ1JFQVRFX1dFQl9WSUVXXSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLXdlYi12aWV3
IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
CisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRl
X3dlYl92aWV3KSwKKyAgICAgICAgICAgIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9o
YW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09C
SkVDVF9fT0JKRUNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcgLCAxLAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYlZpZXc6OndlYi12aWV3LXJlYWR5OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBv
biB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmV0dXJuOiAlVFJVRSB0byBz
dG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IKKyAgICAgKiB0aGUgZXZl
bnQsICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIKKyAgICAgKgorICAgICAq
IEVtaXR0ZWQgYWZ0ZXIgOjpjcmVhdGUtd2ViLXZpZXcgd2hlbiB0aGUgbmV3ICNXZWJLaXRXZWJW
aWV3CisgICAgICogc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4gV2hlbiB0aGlzIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICogYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhl
IHdpbmRvdyBzaG91bGQgbG9vaywgaW5jbHVkaW5nCisgICAgICogc2l6ZSwgcG9zaXRpb24sIHdo
ZXRoZXIgdGhlIGxvY2F0aW9uLCBzdGF0dXMgYW5kIHNjcm9sbCBiYXJzCisgICAgICogc2hvdWxk
IGJlIGRpc3BsYXllZCwgaXMgYWxyZWFkeSBzZXQgb24gdGhlCisgICAgICogI1dlYktpdFdlYldp
bmRvd0ZlYXR1cmVzIG9iamVjdCBjb250YWluZWQgYnkgdGhlICNXZWJLaXRXZWJWaWV3LgorICAg
ICAqCisgICAgICogTm90aWNlIHRoYXQgc29tZSBvZiB0aGF0IGluZm9ybWF0aW9uIG1heSBjaGFu
Z2UgZHVyaW5nIHRoZSBsaWZlCisgICAgICogdGltZSBvZiB0aGUgd2luZG93LCBzbyB5b3UgbWF5
IHdhbnQgdG8gY29ubmVjdCB0byB0aGUgOjpub3RpZnkKKyAgICAgKiBzaWduYWwgb2YgdGhlICNX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBvYmplY3QgdG8gaGFuZGxlIHRob3NlLgorICAgICAqCisg
ICAgICogSWYgdGhlcmUgaXNuJ3QgYW55IGhhbmRsZXIgZm9yIHRoaXMgc2lnbmFsIG9yIGlmIHRo
ZXkgcmV0dXJuCisgICAgICogJUZBTFNFLCB0aGVuIHRoZSBkZWZhdWx0IGFjdGlvbiBpcyB0byBj
YWxsIGd0a193aWRnZXRfc2hvdygpIG9uCisgICAgICogdGhlIHRvcGxldmVsIHdpbmRvdyBjb250
YWluaW5nIEB3ZWJfdmlldywgYW5kIG9uIEB3ZWJfdmlldy4KKyAgICAgKgorICAgICAqIFNpbmNl
IDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbV0VCX1ZJRVdfUkVB
RFldID0gZ19zaWduYWxfbmV3KCJ3ZWItdmlldy1yZWFkeSIsCisgICAgICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19T
SUdOQUxfUlVOX0xBU1QpLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJW
aWV3Q2xhc3MsIHdlYl92aWV3X3JlYWR5KSwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxh
dG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOwor
CiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTkFWSUdBVElPTl9SRVFVRVNURURdID0gZ19z
aWduYWxfbmV3KCJuYXZpZ2F0aW9uLXJlcXVlc3RlZCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAogICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdO
QUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLApAQCAtMTE0OSw2ICsxMjM3LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwog
ICAgICAqLwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlX3dlYl92aWV3ID0gd2Via2l0X3dlYl92
aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3OworICAgIHdlYlZpZXdDbGFzcy0+d2ViX3ZpZXdfcmVh
ZHkgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93ZWJfdmlld19yZWFkeTsKICAgICB3ZWJWaWV3Q2xh
c3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlv
bl9yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3
ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0Ns
YXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAt
MTI2NSw2ICsxMzU0LDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU0VUVElO
R1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2Vi
Vmlldzp3aW5kb3ctZmVhdHVyZXM6CisgICAgKgorICAgICogQW4gYXNzb2NpYXRlZCBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZS4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBS
T1BfV0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX29iamVjdCgid2luZG93LWZlYXR1cmVzIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbmRvdyBGZWF0dXJlcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJBbiBhc3NvY2lhdGVkIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCiAg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9FRElU
QUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKCJlZGl0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRWRpdGFibGUiLApAQCAtMTQ5Niw2ICsxNTk5LDggQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAg
ICB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKHdlYlZpZXcpOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2ViVmlldywgInNjcmVlbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRfd2Vi
X3ZpZXdfc2NyZWVuX2NoYW5nZWQpLCBOVUxMKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYt
PndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGlu
Z3Nfbm90aWZ5KSwgd2ViVmlldyk7CisKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOwogfQogCiBHdGtXaWRnZXQqIHdlYmtpdF93
ZWJfdmlld19uZXcodm9pZCkKQEAgLTE1MDUsNiArMTYxMCwxNiBAQCBHdGtXaWRnZXQqIHdlYmtp
dF93ZWJfdmlld19uZXcodm9pZCkKICAgICByZXR1cm4gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIH0K
IAorLy8gZm9yIGludGVybmFsIHVzZSBvbmx5Cit2b2lkIHdlYmtpdF93ZWJfdmlld19ub3RpZnlf
cmVhZHkoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBG
QUxTRTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWduYWxz
W1dFQl9WSUVXX1JFQURZXSwgMCwgJmlzSGFuZGxlZCk7Cit9CisKKwogdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlNldHRp
bmdzKiB3ZWJTZXR0aW5ncykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CkBAIC0xNTI5LDYgKzE2NDQsNTIgQEAgV2ViS2l0V2ViU2V0dGluZ3Mq
IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0K
IAogLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcworICogQHdlYlZp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEB3aW5kb3dfZmVhdHVyZXM6IGEgI1dlYktpdFdlYldp
bmRvd0ZlYXR1cmVzCisgKgorICogVGhpcyB3aWxsIHNldCBob3cgdGhlIHdpbmRvdyBjb250YWlu
aW5nIHRoZSAjV2ViS2l0V2ViVmlldyBzaG91bGQKKyAqIGxvb2sgYW5kIGJlaGF2ZS4gQXBwbGlj
YXRpb25zIG1heSB3YW50IHRvIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQKKyAqIGFwcGx5IHRo
ZSBzZXR0aW5ncyBpdCBjYXJyaWVzIHRvIHRoZSB3aW5kb3cgaG9sZGluZyB0aGUgcmVsZXZhbnQK
KyAqICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFNpbmNlOiAxLjAuMgorICovCit2b2lkIHdlYmtp
dF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcykKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyh3ZWJXaW5kb3dGZWF0dXJlcykpOwor
ICAgIAorICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKwor
ICAgIGlmKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKHByaXYtPndlYldpbmRvd0Zl
YXR1cmVzLCB3ZWJXaW5kb3dGZWF0dXJlcykpCisgICAgICByZXR1cm47CisKKyAgICBnX29iamVj
dF91bnJlZihwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyk7CisgICAgZ19vYmplY3RfcmVmKHdlYldp
bmRvd0ZlYXR1cmVzKTsKKyAgICBwcml2LT53ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYldpbmRvd0Zl
YXR1cmVzOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVz
CisgKiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIFJldHVybnMgdGhlIGluc3Rh
bmNlIG9mICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBoZWxkIGJ5IHRoZSBnaXZlbgorICogI1dl
YktpdFdlYlZpZXcuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzCisgKgorICogU2luY2U6IDEuMC4yCisgKi8KK1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzOworfQorCisvKioKICAq
IHdlYmtpdF93ZWJfdmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0OgogICogQHdl
YlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqIEBmbGFnOiB0byB0ZWxsIHRoZSB2aWV3IHRvIG1h
aW50YWluIGEgYmFjayBvciBmb3J3YXJkIGxpc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApp
bmRleCBlYmQxYWExLi42ODU1YTljIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC02
MywxMSArNjMsMTEgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgLyoKICAg
ICAgKiBkZWZhdWx0IGhhbmRsZXIvdmlydHVhbCBtZXRob2RzCi0gICAgICogRElTQ1VTUzogY3Jl
YXRlX3dlYl92aWV3IG5lZWRzIGEgcmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2UgdGhpcyBhIHNp
Z25hbCB3aXRoIGRlZmF1bHQgaGFuZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJlcXVpcmUgc29t
ZW9uZSBkb2luZyBhIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAgICAqIFdlYlVJ
RGVsZWdhdGUgaGFzIG5vdGhpbmcgZm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5RGVsZWdhdGUg
YXMgd2VsbC4uLgogICAgICAqLwotICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAgICAqICgqIGNy
ZWF0ZV93ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisgICAgV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICogKCogY3JlYXRlX3dlYl92aWV3KSAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViRnJhbWUgICAgICAgKndlYl9m
cmFtZSk7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiB3ZWJfdmlld19yZWFk
eSkgICAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAogICAgIC8qCiAgICAgICog
VE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lvbkxpc3Rl
bmVyX1Byb3RvY29sIGluc3RlYWQKQEAgLTI0Nyw2ICsyNDcsMTMgQEAgd2Via2l0X3dlYl92aWV3
X3NldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3
ZWJfdmlldywKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgogd2Via2l0X3dlYl92aWV3
X2dldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3
ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF93aW5kb3df
ZmVhdHVyZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyoKK3dlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGdi
b29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjU1MTUzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKQEAgLTAsMCArMSw0MjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgIndl
YmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCitl
eHRlcm4gIkMiIHsKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9YLAorICAgIFBS
T1BfWSwKKyAgICBQUk9QX1dJRFRILAorICAgIFBST1BfSEVJR0hULAorICAgIFBST1BfVE9PTEJB
Ul9WSVNJQkxFLAorICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9TQ1JPTExC
QVJfVklTSUJMRSwKKyAgICBQUk9QX01FTlVCQVJfVklTSUJMRSwKKyAgICBQUk9QX0xPQ0FUSU9O
QkFSX1ZJU0lCTEUsCisgICAgUFJPUF9GVUxMU0NSRUVOLAorfTsKKworR19ERUZJTkVfVFlQRShX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcywgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXMsIEdfVFlQ
RV9PQkpFQ1QpCisKK3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlIHsKKyAg
ICBnaW50IHg7CisgICAgZ2ludCB5OworICAgIGdpbnQgd2lkdGg7CisgICAgZ2ludCBoZWlnaHQ7
CisKKyAgICBnYm9vbGVhbiB0b29sYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gc3RhdHVzYmFy
X3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gc2Nyb2xsYmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4g
bWVudWJhcl92aXNpYmxlOworICAgIGdib29sZWFuIGxvY2F0aW9uYmFyX3Zpc2libGU7CisKKyAg
ICBnYm9vbGVhbiBmdWxsc2NyZWVuOworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19G
RUFUVVJFU19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9i
aiksIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzUHJpdmF0ZSkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93
X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNv
bnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9jbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2ZpbmFsaXplOworICAgIGdvYmplY3RfY2xhc3Mt
PnNldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eTsK
KyAgICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlc19nZXRfcHJvcGVydHk7CisKKyAgICBHUGFyYW1GbGFncyBmbGFncyA9IChHUGFyYW1GbGFn
cykoV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKTsKKworICAgIC8q
KgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6eDoKKyAgICAqCisgICAgKiBUaGUgc3Rh
cnRpbmcgeCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisgICAgKgorICAg
ICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX1gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
aW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhl
IHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6
eToKKyAgICAqCisgICAgKiBUaGUgc3RhcnRpbmcgeSBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9u
IHRoZSBzY3JlZW4uCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1ksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzdGFydGluZyB5IHBvc2l0
aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
X01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICog
V2ViS2l0V2ViV2luZG93RmVhdHVyZXM6d2lkdGg6CisgICAgKgorICAgICogVGhlIHdpZHRoIG9m
IHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0lEVEgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJXaWR0aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAg
IC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6aGVpZ2h0OgorICAgICoKKyAgICAq
IFRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgorICAgICoKKyAgICAqIFNp
bmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9I
RUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
aW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGVpZ2h0IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cgb24gdGhlIHNj
cmVlbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWElOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6dG9v
bGJhci12aXNpYmxlOgorICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2xiYXIg
c2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEu
MC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3Rf
Y2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1RPT0xCQVJf
VklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xiYXIt
dmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vbGJhciBW
aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3
aGV0aGVyIHRoZSB0b29sYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXM6c3RhdHVzYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMg
d2hldGhlciB0aGUgc3RhdHVzYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93Lgor
ICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9TVEFUVVNCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN0YXR1c2Jhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJTdGF0dXNiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgc3RhdHVzYmFyIHNob3VsZCBi
ZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6c2Nyb2xsYmFyLXZp
c2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgc2Nyb2xsYmFycyBzaG91
bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIK
KyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU0NST0xMQkFSX1ZJ
U0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
Ym9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JvbGxiYXIt
dmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsYmFy
IFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRyb2xz
IHdoZXRoZXIgdGhlIHNjcm9sbGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlczptZW51YmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJv
bHMgd2hldGhlciB0aGUgbWVudWJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4K
KyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfTUVOVUJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAibWVudWJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJNZW51YmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbnRyb2xzIHdoZXRoZXIgdGhlIG1lbnViYXIgc2hvdWxkIGJlIHZpc2li
bGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpsb2NhdGlvbmJhci12aXNpYmxl
OgorICAgICoKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGxvY2F0aW9uYmFyIHNob3VsZCBi
ZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9MT0NBVElPTkJBUl9WSVNJ
QkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jv
b2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRpb25iYXIt
dmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTG9jYXRpb25i
YXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJv
bHMgd2hldGhlciB0aGUgbG9jYXRpb25iYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5k
b3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpmdWxsc2NyZWVuOgorICAgICoKKyAgICAqIENvbnRyb2xz
IHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlzcGxheWVkIGZ1bGxzY3JlZW4uCisgICAgKgorICAg
ICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX0ZVTExTQ1JFRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
dWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWxsc2Ny
ZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0
aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2NyZWVuLiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CisKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFz
cywgc2l6ZW9mKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSkpOworfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19pbml0KFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzKQoreworICAgIHdlYl93aW5kb3dfZmVhdHVyZXMtPnBy
aXYgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19HRVRfUFJJVkFURSh3ZWJfd2luZG93X2Zl
YXR1cmVzKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmlu
YWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBzcGVjKQoreworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1
cmVzID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYgPSB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2Owor
CisgICAgc3dpdGNoKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfWDoKKyAgICAgICAgcHJpdi0+
eCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9ZOgorICAgICAgICBwcml2LT55ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX1dJRFRIOgorICAgICAgICBwcml2LT53aWR0aCA9IGdfdmFs
dWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IRUlHSFQ6
CisgICAgICAgIHByaXYtPmhlaWdodCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9UT09MQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPnRv
b2xiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYtPnN0YXR1
c2Jhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9TQ1JPTExCQVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+c2Nyb2xs
YmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX01FTlVCQVJfVklTSUJMRToKKyAgICAgICAgcHJpdi0+bWVudWJhcl92
aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxFOgorICAgICAgICBwcml2LT5sb2NhdGlvbmJh
cl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9GVUxMU0NSRUVOOgorICAgICAgICBwcml2LT5mdWxsc2NyZWVuID0gZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQs
IHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9X
X0ZFQVRVUkVTKG9iamVjdCk7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBw
cml2ID0gd2ViX3dpbmRvd19mZWF0dXJlcy0+cHJpdjsKKworICAgIHN3aXRjaCAocHJvcF9pZCkg
eworICAgIGNhc2UgUFJPUF9YOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYt
PngpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfaW50KHZhbHVlLCBwcml2LT55KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJ
RFRIOgorICAgICAgICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPndpZHRoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hFSUdIVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50
KHZhbHVlLCBwcml2LT5oZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVE9P
TEJBUl9WSVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT50
b29sYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU1RBVFVTQkFS
X1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnN0YXR1
c2Jhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9W
SVNJQkxFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5zY3JvbGxi
YXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRU5VQkFSX1ZJU0lC
TEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPm1lbnViYXJfdmlz
aWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9MT0NBVElPTkJBUl9WSVNJQkxF
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5sb2NhdGlvbmJhcl92
aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExTQ1JFRU46CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmZ1bGxzY3JlZW4pOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXc6CisgKgorICogQ3Jl
YXRlcyBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0
IHZhbHVlcy4gSXQgbXVzdAorICogYmUgbWFudWFsbHkgYXR0YWNoZWQgdG8gYSBXZWJWaWV3Lgor
ICoKKyAqIFJldHVybnM6IGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQor
ICoKKyAqIFNpbmNlIDEuMC4yCisgKiovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9XSU5E
T1dfRkVBVFVSRVMoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMs
IE5VTEwpKTsKK30KKworLy8gZm9yIGludGVybmFsIHVzZSBvbmx5CitXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJl
cyhjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMpCit7CisgICAgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMgKndlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfbmV3KCk7CisKKyAgICBpZihmZWF0dXJlcy54U2V0KQorICAgICAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAieCIsIHN0YXRpY19jYXN0PGludD4o
ZmVhdHVyZXMueCksIE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMueVNldCkKKyAgICAgICAgZ19v
YmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInkiLCBzdGF0aWNfY2FzdDxp
bnQ+KGZlYXR1cmVzLnkpLCBOVUxMKTsKKworICAgIGlmKGZlYXR1cmVzLndpZHRoU2V0KQorICAg
ICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAid2lkdGgiLCBz
dGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLndpZHRoKSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJl
cy5oZWlnaHRTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0
dXJlcyksICJoZWlnaHQiLCBzdGF0aWNfY2FzdDxpbnQ+KGZlYXR1cmVzLmhlaWdodCksIE5VTEwp
OworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAg
ICAgICAgICAgICAgInRvb2xiYXItdmlzaWJsZSIsIGZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlLAor
ICAgICAgICAgICAgICAgICAic3RhdHVzYmFyLXZpc2libGUiLCBmZWF0dXJlcy5zdGF0dXNCYXJW
aXNpYmxlLAorICAgICAgICAgICAgICAgICAic2Nyb2xsYmFyLXZpc2libGUiLCBmZWF0dXJlcy5z
Y3JvbGxiYXJzVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgIm1lbnViYXItdmlzaWJsZSIsIGZl
YXR1cmVzLm1lbnVCYXJWaXNpYmxlLAorICAgICAgICAgICAgICAgICAibG9jYXRpb25iYXItdmlz
aWJsZSIsIGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgImZ1
bGxzY3JlZW4iLCBmZWF0dXJlcy5mdWxsc2NyZWVuLAorICAgICAgICAgICAgICAgICBOVUxMKTsK
KworICAgIHJldHVybiB3ZWJXaW5kb3dGZWF0dXJlczsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3dpbmRvd19mZWF0dXJlc19lcXVhbDoKKyAqIEBmZWF0dXJlczE6IGEgI1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzIGluc3RhbmNlCisgKiBAZmVhdHVyZXMyOiBhbm90aGVyICNXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlcyBpbnN0YW5jZQorICoKKyAqIERlY2lkZXMgaWYgYSAjV2ViS2l0V2ViV2luZG93
RmVhdHVyZXMgaW5zdGFuY2UgZXF1YWxzIGFub3RoZXIsIGFzCisgKiBpbiBoYXMgdGhlIHNhbWUg
dmFsdWVzLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBpbnN0YW5jZXMgaGF2ZSB0aGUg
c2FtZSB2YWx1ZXMsICVGQUxTRQorICogb3RoZXJ3aXNlCisgKgorICogU2luY2UgMS4wLjIKKyAq
Ki8KK2dib29sZWFuIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsKFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJl
czIpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2MSA9IGZlYXR1
cmVzMS0+cHJpdjsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHByaXYyID0g
ZmVhdHVyZXMyLT5wcml2OworICAgIAorICAgIGlmKChwcml2MS0+eCA9PSBwcml2Mi0+eCkgJiYK
KyAgICAgICAocHJpdjEtPnkgPT0gcHJpdjItPnkpICYmCisgICAgICAgKHByaXYxLT53aWR0aCA9
PSBwcml2Mi0+d2lkdGgpICYmCisgICAgICAgKHByaXYxLT5oZWlnaHQgPT0gcHJpdjItPmhlaWdo
dCkgJiYKKyAgICAgICAocHJpdjEtPnRvb2xiYXJfdmlzaWJsZSA9PSBwcml2Mi0+dG9vbGJhcl92
aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+c3RhdHVzYmFyX3Zpc2libGUgPT0gcHJpdjItPnN0
YXR1c2Jhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+c2Nyb2xsYmFyX3Zpc2libGUgPT0g
cHJpdjItPnNjcm9sbGJhcl92aXNpYmxlKSAmJgorICAgICAgIChwcml2MS0+bWVudWJhcl92aXNp
YmxlID09IHByaXYyLT5tZW51YmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5sb2NhdGlv
bmJhcl92aXNpYmxlID09IHByaXYyLT5sb2NhdGlvbmJhcl92aXNpYmxlKSAmJgorICAgICAgIChw
cml2MS0+ZnVsbHNjcmVlbiA9PSBwcml2Mi0+ZnVsbHNjcmVlbikpCisgICAgICAgIHJldHVybiBU
UlVFOworICAgIHJldHVybiBGQUxTRTsKK30KKworCit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vid2luZG93ZmVhdHVyZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44NzMwMDdlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
d2luZG93ZmVhdHVyZXMuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX1dFQktJ
VF9XRUJfV0lORE9XX0ZFQVRVUkVTX0hfXworI2RlZmluZSBfX1dFQktJVF9XRUJfV0lORE9XX0ZF
QVRVUkVTX0hfXworCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQ
RV9XRUJfV0lORE9XX0ZFQVRVUkVTICAgICAgICAgICAgKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9XSU5ET1dfRkVBVFVSRVMsIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfV0lORE9X
X0ZFQVRVUkVTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VC
X1dJTkRPV19GRUFUVVJFU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTKSkKKyNkZWZpbmUgV0VCS0lU
X1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXNDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlc1ByaXZhdGUgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlOworCitzdHJ1Y3Qg
X1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsK
KworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVj
dCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVu
dF9jbGFzczsKKworICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5
cGUKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlICAgICAgICAgICAgKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfbmV3ICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsICAgICAgICAgICAgICAgKFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVy
ZXMyKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVB
VFVSRVNfSF9fICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24626</attachid>
            <date>2008-10-23 17:14:13 -0700</date>
            <delta_ts>2008-11-28 16:18:55 -0800</delta_ts>
            <desc>proposed patch with comments from tonight&apos;s review session</desc>
            <filename>new-window.diff</filename>
            <type>text/plain</type>
            <size>45738</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzMmFiOGY4Li5lMWY3YzA5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAK
KzIwMDgtMTAtMjMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGhlIG5l
dyBXZWJLaXRHdGsgZmlsZXMgdG8gYmUgYnVpbHQ6CisgICAgICAgIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLntjcHAsaH0KKwogMjAwOC0xMC0yMiAgQWxwIFRva2Vy
ICA8YWxwQG51YW50aS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGZvciBDYWlybyAxLjIuCmRp
ZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGQzZTExZDYu
LmZkMjkxOTcgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFt
CkBAIC0zMTAsNiArMzEwLDcgQEAgd2Via2l0Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oIFwKKwlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKIAogd2Via2l0Z3RrX2J1aWx0X3NvdXJjZXMgKz0gXApA
QCAtMzQxLDcgKzM0Miw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3Bw
IFwKLQlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorCVdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5k
b3dmZWF0dXJlcy5jcHAKIAogd2Via2l0Z3RrX2NwcGZsYWdzICs9IFwKIAktREJVSUxESU5HX1dF
QktJVCBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IDU0OGU5Y2UuLmE1ODY3ZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMDgt
MTAtMjMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTMwCisgICAgICAgIENocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93IGFuZCBmcmllbmRzIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgCisgICAg
ICAgIENvZGUgZnJvbSBHdXN0YXZvIE5vcm9uaGEgYW5kIE1hcmNvIEJhcmlzaW9uZQorICAgICAg
ICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4gaW4gdGhpcyBjaGFuZ2Ugc2V0Lgor
CisgICAgICAgIEltcGxlbWVudGVkIGFsbCB0aGUgQ2hyb21lQ2xpZW50IGludGVyZmFjZXMgbmVl
ZGVkIHRvIGhhdmUgbmV3CisgICAgICAgIHdpbmRvdyBjcmVhdGlvbiBmdW5jdGlvbmluZyBhbmQg
ZXhwb3NlZCB0byBjbGllbnQgY29kZS4gV2UKKyAgICAgICAgaW1wbGVtZW50ZWQgYSBtaXJyb3Ig
R09iamVjdCB0byB0aGUgV2luZG93RmVhdHVyZXMgb2JqZWN0IHByb3ZpZGVkCisgICAgICAgIGJ5
IFdlYkNvcmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0
VG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp0b29sYmFy
c1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUpOgorICAgICAgICAo
V2ViS2l0OjpDaHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50OjpzZXRSZXNpemFibGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdyk6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXQtbWFyc2hhbC5saXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2
YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYndpbmRvd2Zl
YXR1cmVzLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2
YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KToKKyAgICAgICAgKF9X
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVz
X2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemUpOgorICAgICAgICAoX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU6OndlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93
RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcpOgorICAgICAg
ICAoX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZTo6d2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfbmV3X2Zyb21fY29yZV9mZWF0dXJlcyk6CisgICAgICAgIChfV2ViS2l0V2ViV2luZG93
RmVhdHVyZXNQcml2YXRlOjp3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbCk6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg6IEFkZGVkLgorCiAyMDA4LTEw
LTIyICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9y
IG9sZGVyIEdUSysgdmVyc2lvbnMgd2hlcmUgR1RLX1RZUEVfVEFSR0VUX0xJU1QgaXNuJ3QKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAyNTZh
M2EzLi5jMGFjZTE2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQ2hyaXN0aWFu
IER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVh
bnRpIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGdu
c0Bnbm9tZS5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMSw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRl
ICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0yOCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0bmV0d29ya3JlcXVlc3QuaCIKICNp
bmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtNTMsNyArNTYsNyBAQCBGbG9hdFJlY3QgQ2hy
b21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKICAgICBpZiAoIW1fd2ViVmlldykKICAgICAgICAgcmV0
dXJuIEZsb2F0UmVjdCgpOwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
dG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAod2luZG93KSB7CisgICAg
aWYgKEdUS19XSURHRVRfVE9QTEVWRUwod2luZG93KSkgewogICAgICAgICBnaW50IGxlZnQsIHRv
cCwgd2lkdGgsIGhlaWdodDsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfcG9zaXRpb24oR1RLX1dJ
TkRPVyh3aW5kb3cpLCAmbGVmdCwgJnRvcCk7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3NpemUo
R1RLX1dJTkRPVyh3aW5kb3cpLCAmd2lkdGgsICZoZWlnaHQpOwpAQCAtNjIsOSArNjUsMjAgQEAg
RmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAgICAgcmV0dXJuIEZsb2F0UmVj
dCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHIpCit2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBpbnRyZWN0ID0gSW50UmVjdChyZWN0KTsKKyAg
ICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwKKyAgICAgICAgICAgICAgICAgIngiLCBpbnRy
ZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgInkiLCBpbnRyZWN0LnkoKSwKKyAgICAgICAgICAg
ICAgICAgIndpZHRoIiwgaW50cmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAiaGVpZ2h0
IiwgaW50cmVjdC5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgTlVMTCk7CiB9CiAKIEZsb2F0
UmVjdCBDaHJvbWVDbGllbnQ6OnBhZ2VSZWN0KCkKQEAgLTkzLDI5ICsxMDcsMzUgQEAgdm9pZCBD
aHJvbWVDbGllbnQ6OnVuZm9jdXMoKQogICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICByZXR1
cm47CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKG1fd2ViVmlldykpOwotICAgIGlmICh3aW5kb3cpCisgICAgaWYgKEdUS19XSURHRVRf
VE9QTEVWRUwod2luZG93KSkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RLX1dJTkRP
Vyh3aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYgY29yZUZlYXR1cmVzKQogewotICAgIGlmIChmZWF0dXJlcy5kaWFsb2cpIHsKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gMDsKKwor
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBr
aXQoZnJhbWUpLCAmd2ViVmlldyk7CisKKyAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVy
biAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFRPRE86IEZyYW1lTG9hZFJlcXVlc3QgaXMg
bm90IHVzZWQgKi8KLSAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFV19HRVRfQ0xBU1MobV93ZWJWaWV3KS0+Y3JlYXRlX3dlYl92aWV3KG1fd2ViVmlldyk7Ci0g
ICAgICAgIGlmICghd2ViVmlldykKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJ
VkFURSh3ZWJWaWV3KTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVEYXRhLT5jb3JlUGFnZTsKLSAg
ICB9CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzKGNvcmVGZWF0
dXJlcyk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMod2ViVmlldywg
d2ViV2luZG93RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHdlYldpbmRv
d0ZlYXR1cmVzKSk7CisKKyAgICBpZiAoIWZyYW1lTG9hZFJlcXVlc3QuaXNFbXB0eSgpKQorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJWaWV3LCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJu
IGNvcmUod2ViVmlldyk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpzaG93KCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfbm90aWZ5X3JlYWR5KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wg
Q2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkBAIC0xMjksNTIgKzE0OSw5NiBAQCB2b2lkIENo
cm9tZUNsaWVudDo6cnVuTW9kYWwoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
Q2hyb21lQ2xpZW50OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50
OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdl
YldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
d2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qo
d2ViV2luZG93RmVhdHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgdmlzaWJsZSwgTlVMTCk7CiB9
CiAKIGJvb2wgQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93
RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcp
OworICAgIGdib29sZWFuIHZpc2libGU7CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2Vi
V2luZG93RmVhdHVyZXMpLCAidG9vbGJhci12aXNpYmxlIiwgJnZpc2libGUsIE5VTEwpOworICAg
IHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6c2V0U3RhdHVzYmFyVmlz
aWJsZShib29sKQordm9pZCBDaHJvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCB2
aXNpYmxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dG
ZWF0dXJlcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKG1fd2ViVmlldyk7
CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVz
YmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6OnN0
YXR1c2JhclZpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworICAgIGdib29sZWFuIHZpc2libGU7
CisKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAic3RhdHVz
YmFyLXZpc2libGUiLCAmdmlzaWJsZSwgTlVMTCk7CisgICAgcmV0dXJuIHZpc2libGU7CiB9CiAK
LXZvaWQgQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKQordm9pZCBDaHJv
bWVDbGllbnQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dpbmRvd19mZWF0dXJlcyhtX3dlYlZpZXcpOworCisgICAgZ19vYmplY3Rfc2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgdmlzaWJs
ZSwgTlVMTCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSgpIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2Vi
VmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVy
ZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0
KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwgInNjcm9sbGJhci12aXNpYmxlIiwgJnZpc2li
bGUsIE5VTEwpOworICAgIHJldHVybiB2aXNpYmxlOwogfQogCi12b2lkIENocm9tZUNsaWVudDo6
c2V0TWVudWJhclZpc2libGUoYm9vbCkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlz
aWJsZShib29sIHZpc2libGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1f
d2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMq
IHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMo
bV93ZWJWaWV3KTsKKworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJl
cyksICJtZW51YmFyLXZpc2libGUiLCB2aXNpYmxlLCBOVUxMKTsKIH0KIAogYm9vbCBDaHJvbWVD
bGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzID0gd2Via2l0
X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMobV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiB2
aXNpYmxlOworCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHdlYldpbmRvd0ZlYXR1cmVzKSwg
Im1lbnViYXItdmlzaWJsZSIsICZ2aXNpYmxlLCBOVUxMKTsKKyAgICByZXR1cm4gdmlzaWJsZTsK
IH0KIAogdm9pZCBDaHJvbWVDbGllbnQ6OnNldFJlc2l6YWJsZShib29sKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgLy8gSWdub3JlZCBmb3Igbm93CiB9CiAKIHZvaWQgQ2hyb21lQ2xp
ZW50OjpjbG9zZVdpbmRvd1Nvb24oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA5YjRmZTlkLi5kNjY1MzQ0IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApA
QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAi
d2Via2l0bmV0d29ya3JlcXVlc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2lu
Y2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIApAQCAtMjU3LDcgKzI1OCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1l
UG9saWN5RnVuY3RpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2
ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQogICAgIC8v
IGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNh
bWUKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5
SWdub3JlKTsKKyAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbiko
UG9saWN5VXNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rp
b24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKQEAgLTU0Miw3ICs1NDMs
OCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19ub3RpZnlfcmVhZHkod2ViVmlldyk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTcxNSw4ICs3
MTcsMTYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKIAog
RnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogbmV3V2Vi
VmlldyA9IDA7CisKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImNyZWF0ZS13
ZWItdmlldyIsIG1fZnJhbWUsICZuZXdXZWJWaWV3KTsKKworICAgIGlmICghbmV3V2ViVmlldykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdmF0ZURh
dGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUobmV3V2ViVmlldyk7CisgICAgcmV0dXJu
IGNvcmUocHJpdmF0ZURhdGEtPm1haW5GcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYp
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC5oCmluZGV4IDEwYzIxNGYuLjI5ZDNkZjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVz
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmg+CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVz
LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXggMzg2YzNlMS4uZGFj
MmRkMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtNTUsNiArNTUsOSBAQCB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFtZUNsYXNzOwogdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRpbmdzOwogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0dGluZ3NDbGFzczsK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3Mg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
V2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggM2Vm
YTAyYS4uMDhhOTA5YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+
CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oPgogCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0LmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXaW5k
b3dGZWF0dXJlcy5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC02Nyw2ICs2OSw3IEBAIGV4
dGVybiAiQyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgICAgICBX
ZWJDb3JlOjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNl
dHRpbmdzOworICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVy
ZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKICAgICAgICAgV2ViQ29y
ZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKQEAgLTExMCw2ICsxMTMsMTIg
QEAgZXh0ZXJuICJDIiB7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dl
Yl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7
CiAKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyoKKyAgICB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19uZXdfZnJvbV9jb3JlX2ZlYXR1cmVzIChjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYgZmVhdHVyZXMpOworCisgICAgdm9pZAorICAgIHdlYmtpdF93ZWJfdmlld19ub3RpZnlf
cmVhZHkgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKwogICAgIC8vIEZJWE1FOiBNb3ZlIHRo
ZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVpciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2Vk
LgogCiAgICAgV0VCS0lUX0FQSSBHU0xpc3QqCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CmluZGV4IDNhYzA4YzIuLjE2ZGUxYzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBYYW4gTG9wZXogPHhhbkBn
bm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEphbiBBbG9uem8gPGptYWxvbnpvQHVu
cGx1Z2dhYmxlLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNp
bHZhIDxnbnNAZ25vbWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgog
ICogIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKQEAgLTcyLDYgKzczLDgg
QEAgZXh0ZXJuICJDIiB7CiBlbnVtIHsKICAgICAvKiBub3JtYWwgc2lnbmFscyAqLwogICAgIE5B
VklHQVRJT05fUkVRVUVTVEVELAorICAgIENSRUFURV9XRUJfVklFVywKKyAgICBXRUJfVklFV19S
RUFEWSwKICAgICBXSU5ET1dfT0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9TVEFSVEVELAogICAg
IExPQURfQ09NTUlUVEVELApAQCAtMTAxLDYgKzEwNCw3IEBAIGVudW0gewogICAgIFBST1BfUEFT
VEVfVEFSR0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1NFVFRJTkdTLAor
ICAgIFBST1BfV0lORE9XX0ZFQVRVUkVTLAogICAgIFBST1BfVFJBTlNQQVJFTlQsCiAgICAgUFJP
UF9aT09NX0xFVkVMLAogICAgIFBST1BfRlVMTF9DT05URU5UX1pPT00KQEAgLTI0MCw2ICsyNDQs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKgogICAgIGNhc2UgUFJPUF9TRVRUSU5HUzoKICAg
ICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFU
VVJFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjY1LDYgKzI3Miw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHCiAgICAgY2FzZSBQUk9Q
X1NFVFRJTkdTOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKHdlYlZpZXcs
IFdFQktJVF9XRUJfU0VUVElOR1MoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSkpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZFQVRVUkVTOgorICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcyh3ZWJWaWV3LCBXRUJLSVRfV0VCX1dJTkRPV19G
RUFUVVJFUyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF90cmFu
c3BhcmVudCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtNTk5LDEyICs2MDksMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Nv
bnRhaW5lcl9mb3JhbGwoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIGdib29sZWFuLAogICAgICAg
ICAoKmNhbGxiYWNrKSgqY3VycmVudCwgY2FsbGJhY2tEYXRhKTsKIH0KIAotc3RhdGljIFdlYktp
dFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJW
aWV3KikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVf
d2ViX3ZpZXcoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYkZyYW1lKikKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X3JlYWxfd2ViX3ZpZXdfcmVhZHkoV2ViS2l0V2ViVmlldyopCit7CisgICAgcmV0dXJu
IEZBTFNFOworfQorCiBzdGF0aWMgV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlIHdlYmtpdF93ZWJf
dmlld19yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1ZXN0KikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpAQCAtNzYzLDYgKzc3Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5h
bGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFja0Zvcndh
cmRMaXN0KTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocHJpdi0+
d2ViU2V0dGluZ3MsIChncG9pbnRlcil3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5LCB3
ZWJWaWV3KTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CisgICAgZ19v
YmplY3RfdW5yZWYocHJpdi0+d2ViV2luZG93RmVhdHVyZXMpOwogICAgIGdfb2JqZWN0X3VucmVm
KHByaXYtPm1haW5GcmFtZSk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsK
ICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90YXJnZXRfbGlzdCk7CkBAIC03
NzIsNiArNzg3LDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfY3Jl
YXRlX3dlYl92aWV3X3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50
LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50
ZXIgZHVtbXkpCit7CisgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICBncG9p
bnRlciBuZXdXZWJWaWV3ID0gZ192YWx1ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOworICBn
X3ZhbHVlX3NldF9vYmplY3QocmV0dXJuQWNjdSwgbmV3V2ViVmlldyk7CisKKyAgaWYgKG5ld1dl
YlZpZXcpCisgICAgICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7CisKKyAgcmV0dXJuIGNvbnRp
bnVlRW1pc3Npb247Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1
ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5B
Y2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQogewogICBn
Ym9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKQEAgLTgxNCw2ICs4NDEsNjMgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgICogU2lnbmFscwogICAgICAqLwogCisgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzo6Y3JlYXRlLXdlYi12aWV3OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9i
amVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAZnJhbWU6IHRoZSAj
V2ViS2l0V2ViRnJhbWUKKyAgICAgKiBAcmV0dXJuOiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0
V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBjcmVhdGlv
biBvZiBhIG5ldyB3aW5kb3cgaXMgcmVxdWVzdGVkLgorICAgICAqIElmIHRoaXMgc2lnbmFsIGlz
IGhhbmRsZWQgdGhlIHNpZ25hbCBoYW5kbGVyIHNob3VsZCByZXR1cm4gdGhlCisgICAgICogbmV3
bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldy4KKyAgICAgKgorICAgICAqIFRoZSBuZXcgI1dlYktp
dFdlYlZpZXcgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIKKyAgICAgKiB1bnRp
bCB0aGUgOjp3ZWItdmlldy1yZWFkeSBzaWduYWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAq
IFRoZSBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIG5vdCB0cnkgdG8gZGVhbCB3aXRoIHRoZSByZWZl
cmVuY2UKKyAgICAgKiBjb3VudCBmb3IgdGhlIG5ldyAjV2ViS2l0V2ViVmlldy4gVGhlIHdpZGdl
dCB0byB3aGljaCB0aGUKKyAgICAgKiB3aWRnZXQgaXMgYWRkZWQgd2lsbCBoYW5kbGUgdGhhdC4K
KyAgICAgKgorICAgICAqIFNpbmNlIDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3
X3NpZ25hbHNbQ1JFQVRFX1dFQl9WSUVXXSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLXdlYi12aWV3
IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
CisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRl
X3dlYl92aWV3KSwKKyAgICAgICAgICAgIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9o
YW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09C
SkVDVF9fT0JKRUNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcgLCAxLAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0ZSQU1FKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYlZpZXc6OndlYi12aWV3LXJlYWR5OgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCBv
biB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmV0dXJuOiAlVFJVRSB0byBz
dG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IKKyAgICAgKiB0aGUgZXZl
bnQsICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIKKyAgICAgKgorICAgICAq
IEVtaXR0ZWQgYWZ0ZXIgOjpjcmVhdGUtd2ViLXZpZXcgd2hlbiB0aGUgbmV3ICNXZWJLaXRXZWJW
aWV3CisgICAgICogc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4gV2hlbiB0aGlzIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICogYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhl
IHdpbmRvdyBzaG91bGQgbG9vaywgaW5jbHVkaW5nCisgICAgICogc2l6ZSwgcG9zaXRpb24sIHdo
ZXRoZXIgdGhlIGxvY2F0aW9uLCBzdGF0dXMgYW5kIHNjcm9sbCBiYXJzCisgICAgICogc2hvdWxk
IGJlIGRpc3BsYXllZCwgaXMgYWxyZWFkeSBzZXQgb24gdGhlCisgICAgICogI1dlYktpdFdlYldp
bmRvd0ZlYXR1cmVzIG9iamVjdCBjb250YWluZWQgYnkgdGhlICNXZWJLaXRXZWJWaWV3LgorICAg
ICAqCisgICAgICogTm90aWNlIHRoYXQgc29tZSBvZiB0aGF0IGluZm9ybWF0aW9uIG1heSBjaGFu
Z2UgZHVyaW5nIHRoZSBsaWZlCisgICAgICogdGltZSBvZiB0aGUgd2luZG93LCBzbyB5b3UgbWF5
IHdhbnQgdG8gY29ubmVjdCB0byB0aGUgOjpub3RpZnkKKyAgICAgKiBzaWduYWwgb2YgdGhlICNX
ZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBvYmplY3QgdG8gaGFuZGxlIHRob3NlLgorICAgICAqCisg
ICAgICogU2luY2UgMS4wLjIKKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tX
RUJfVklFV19SRUFEWV0gPSBnX3NpZ25hbF9uZXcoIndlYi12aWV3LXJlYWR5IiwKKyAgICAgICAg
ICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAoR1NpZ25h
bEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCksCisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQg
KFdlYktpdFdlYlZpZXdDbGFzcywgd2ViX3ZpZXdfcmVhZHkpLAorICAgICAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAg
ICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9P
TEVBTiwgMCk7CisKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJR0FUSU9OX1JFUVVF
U1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwKICAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZs
YWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCkBAIC0xMTQ5LDYgKzEy
MzMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2YgdmlydHVh
bCBtZXRob2RzCiAgICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcgPSB3
ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNzLT53
ZWJfdmlld19yZWFkeSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3dlYl92aWV3X3JlYWR5OwogICAg
IHdlYlZpZXdDbGFzcy0+bmF2aWdhdGlvbl9yZXF1ZXN0ZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVh
bF9uYXZpZ2F0aW9uX3JlcXVlc3RlZDsKICAgICB3ZWJWaWV3Q2xhc3MtPndpbmRvd19vYmplY3Rf
Y2xlYXJlZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3dpbmRvd19vYmplY3RfY2xlYXJlZDsKICAg
ICB3ZWJWaWV3Q2xhc3MtPmNob29zZV9maWxlID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3Nl
X2ZpbGU7CkBAIC0xMjY1LDYgKzEzNTAsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBF
X1dFQl9TRVRUSU5HUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAgLyoqCisgICAg
KiBXZWJLaXRXZWJWaWV3OndpbmRvdy1mZWF0dXJlczoKKyAgICAqCisgICAgKiBBbiBhc3NvY2lh
dGVkIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlLgorICAgICoKKyAgICAqIFNpbmNl
OiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmpl
Y3RDbGFzcywgUFJPUF9XSU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJ3aW5kb3ctZmVhdHVyZXMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2luZG93
IEZlYXR1cmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkFuIGFzc29jaWF0ZWQgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFu
Y2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVTLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFKSk7CisKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNz
LCBQUk9QX0VESVRBQkxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oImVkaXRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFZGl0YWJsZSIsCkBAIC0xNDk2LDYgKzE1
OTUsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3Mod2ViVmlldyk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAic2NyZWVuLWNoYW5nZWQiLCBHX0NBTExCQUNL
KHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdlZCksIE5VTEwpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QocHJpdi0+d2ViU2V0dGluZ3MsICJub3RpZnkiLCBHX0NBTExCQUNLKHdlYmtpdF93ZWJf
dmlld19zZXR0aW5nc19ub3RpZnkpLCB3ZWJWaWV3KTsKKworICAgIHByaXYtPndlYldpbmRvd0Zl
YXR1cmVzID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KCk7CiB9CiAKIEd0a1dpZGdl
dCogd2Via2l0X3dlYl92aWV3X25ldyh2b2lkKQpAQCAtMTUwNSw2ICsxNjA2LDE2IEBAIEd0a1dp
ZGdldCogd2Via2l0X3dlYl92aWV3X25ldyh2b2lkKQogICAgIHJldHVybiBHVEtfV0lER0VUKHdl
YlZpZXcpOwogfQogCisvLyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkKK3ZvaWQgd2Via2l0X3dlYl92
aWV3X25vdGlmeV9yZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIGdib29sZWFuIGlz
SGFuZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92
aWV3X3NpZ25hbHNbV0VCX1ZJRVdfUkVBRFldLCAwLCAmaXNIYW5kbGVkKTsKK30KKworCiB2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKQEAgLTE1MjksNiArMTY0MCw1MiBAQCBXZWJLaXRX
ZWJTZXR0aW5ncyogd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfd2luZG93X2ZlYXR1cmVz
CisgKiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHdpbmRvd19mZWF0dXJlczogYSAj
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqCisgKiBUaGlzIHdpbGwgc2V0IGhvdyB0aGUgd2lu
ZG93IGNvbnRhaW5pbmcgdGhlICNXZWJLaXRXZWJWaWV3IHNob3VsZAorICogbG9vayBhbmQgYmVo
YXZlLiBBcHBsaWNhdGlvbnMgbWF5IHdhbnQgdG8gbW9uaXRvciB0aGlzIHByb3BlcnR5IGFuZAor
ICogYXBwbHkgdGhlIHNldHRpbmdzIGl0IGNhcnJpZXMgdG8gdGhlIHdpbmRvdyBob2xkaW5nIHRo
ZSByZWxldmFudAorICogI1dlYktpdFdlYlZpZXcuCisgKgorICogU2luY2U6IDEuMC4yCisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYldpbmRvd0ZlYXR1cmVzKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfV0lORE9XX0ZFQVRVUkVTKHdlYldpbmRvd0Zl
YXR1cmVzKSk7CisgICAgCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
LT5wcml2OworCisgICAgaWYod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwocHJpdi0+
d2ViV2luZG93RmVhdHVyZXMsIHdlYldpbmRvd0ZlYXR1cmVzKSkKKyAgICAgIHJldHVybjsKKwor
ICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndlYldpbmRvd0ZlYXR1cmVzKTsKKyAgICBnX29iamVj
dF9yZWYod2ViV2luZG93RmVhdHVyZXMpOworICAgIHByaXYtPndlYldpbmRvd0ZlYXR1cmVzID0g
d2ViV2luZG93RmVhdHVyZXM7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF93aW5k
b3dfZmVhdHVyZXMKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogUmV0dXJu
cyB0aGUgaW5zdGFuY2Ugb2YgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGhlbGQgYnkgdGhlIGdp
dmVuCisgKiAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSAjV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMKKyAqCisgKiBTaW5jZTogMS4wLjIKKyAqLworV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gd2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+d2ViV2luZG93RmVhdHVyZXM7Cit9
CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X3NldF9tYWludGFpbnNfYmFja19mb3J3YXJkX2xp
c3Q6CiAgKiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmlldwogICogQGZsYWc6IHRvIHRlbGwgdGhl
IHZpZXcgdG8gbWFpbnRhaW4gYSBiYWNrIG9yIGZvcndhcmQgbGlzdApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5oCmluZGV4IGViZDFhYTEuLjY4NTVhOWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmgKQEAgLTYzLDExICs2MywxMSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAK
ICAgICAvKgogICAgICAqIGRlZmF1bHQgaGFuZGxlci92aXJ0dWFsIG1ldGhvZHMKLSAgICAgKiBE
SVNDVVNTOiBjcmVhdGVfd2ViX3ZpZXcgbmVlZHMgYSByZXF1ZXN0IGFuZCBzaG91bGQgd2UgbWFr
ZSB0aGlzIGEgc2lnbmFsIHdpdGggZGVmYXVsdCBoYW5kbGVyPyB0aGlzIHdvdWxkCi0gICAgICog
cmVxdWlyZSBzb21lb25lIGRvaW5nIGEgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lCi0g
ICAgICogV2ViVUlEZWxlZ2F0ZSBoYXMgbm90aGluZyBmb3IgY3JlYXRlX2ZyYW1lLCBXZWJQb2xp
Y3lEZWxlZ2F0ZSBhcyB3ZWxsLi4uCiAgICAgICovCi0gICAgV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICogKCogY3JlYXRlX3dlYl92aWV3KSAgICAgICAgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3
KTsKKyAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgKiAoKiBjcmVhdGVfd2ViX3ZpZXcpICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJGcmFtZSAg
ICAgICAqd2ViX2ZyYW1lKTsKKworICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIHdl
Yl92aWV3X3JlYWR5KSAgICAgICAgICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwogCiAgICAg
LyoKICAgICAgKiBUT0RPOiBGSVhNRTogQ3JlYXRlIHNvbWV0aGluZyBsaWtlIFdlYlBvbGljeURl
Y2lzaW9uTGlzdGVuZXJfUHJvdG9jb2wgaW5zdGVhZApAQCAtMjQ3LDYgKzI0NywxMyBAQCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgKndlYl92aWV3LAogV0VCS0lUX0FQSSBXZWJLaXRXZWJTZXR0aW5ncyAqCiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdf
c2V0X3dpbmRvd19mZWF0dXJlcyAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICp3aW5kb3dfZmVhdHVyZXMpOworCitXRUJLSVRfQVBJ
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVh
dHVyZXMgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CisKIFdF
QktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHJhbnNwYXJlbnQgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNTUxNTM0YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcApAQCAtMCwwICsxLDQyMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5v
cmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisj
aW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2
YXRlLmgiCisKK2V4dGVybiAiQyIgeworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9Q
X1gsCisgICAgUFJPUF9ZLAorICAgIFBST1BfV0lEVEgsCisgICAgUFJPUF9IRUlHSFQsCisgICAg
UFJPUF9UT09MQkFSX1ZJU0lCTEUsCisgICAgUFJPUF9TVEFUVVNCQVJfVklTSUJMRSwKKyAgICBQ
Uk9QX1NDUk9MTEJBUl9WSVNJQkxFLAorICAgIFBST1BfTUVOVUJBUl9WSVNJQkxFLAorICAgIFBS
T1BfTE9DQVRJT05CQVJfVklTSUJMRSwKKyAgICBQUk9QX0ZVTExTQ1JFRU4sCit9OworCitHX0RF
RklORV9UWVBFKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzLCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0
dXJlcywgR19UWVBFX09CSkVDVCkKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1By
aXZhdGUgeworICAgIGdpbnQgeDsKKyAgICBnaW50IHk7CisgICAgZ2ludCB3aWR0aDsKKyAgICBn
aW50IGhlaWdodDsKKworICAgIGdib29sZWFuIHRvb2xiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVh
biBzdGF0dXNiYXJfdmlzaWJsZTsKKyAgICBnYm9vbGVhbiBzY3JvbGxiYXJfdmlzaWJsZTsKKyAg
ICBnYm9vbGVhbiBtZW51YmFyX3Zpc2libGU7CisgICAgZ2Jvb2xlYW4gbG9jYXRpb25iYXJfdmlz
aWJsZTsKKworICAgIGdib29sZWFuIGZ1bGxzY3JlZW47Cit9OworCisjZGVmaW5lIFdFQktJVF9X
RUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
UFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXNQcml2YXRlKSkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3df
ZmVhdHVyZXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKKworc3RhdGljIHZvaWQgd2Via2l0
X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworCitzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2NsYXNzX2luaXQoV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBn
b2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIGdvYmplY3RfY2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZmluYWxpemU7CisgICAgZ29i
amVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0
X3Byb3BlcnR5OworICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJf
d2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eTsKKworICAgIEdQYXJhbUZsYWdzIGZsYWdzID0g
KEdQYXJhbUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Qp
OworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp4OgorICAgICoKKyAg
ICAqIFRoZSBzdGFydGluZyB4IHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4K
KyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0aW5nIHggcG9zaXRpb24gb2YgdGhlIHdp
bmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlczp5OgorICAgICoKKyAgICAqIFRoZSBzdGFydGluZyB5IHBvc2l0aW9uIG9mIHRo
ZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfWSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAieSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN0YXJ0
aW5nIHkgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAg
LyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp3aWR0aDoKKyAgICAqCisgICAgKiBU
aGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgorICAgICoKKyAgICAqIFNpbmNl
OiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSURU
SCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpZHRoIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpoZWlnaHQ6Cisg
ICAgKgorICAgICogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisgICAg
KgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0hFSUdIVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVp
Z2h0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZWlnaHQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBoZWlnaHQgb2YgdGhlIHdpbmRv
dyBvbiB0aGUgc2NyZWVuLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dG
ZWF0dXJlczp0b29sYmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0
aGUgdG9vbGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAqCisgICAg
KiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfVE9PTEJBUl9WSVNJQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidG9vbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJUb29sYmFyIFZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkNvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2xiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3
aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAg
KiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpzdGF0dXNiYXItdmlzaWJsZToKKyAgICAqCisgICAg
KiBDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXNiYXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRo
ZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX1NUQVRVU0JBUl9WSVNJQkxFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzYmFyLXZpc2libGUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c2JhciBWaXNpYmxlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXNi
YXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpz
Y3JvbGxiYXItdmlzaWJsZToKKyAgICAqCisgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBzY3Jv
bGxiYXJzIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgorICAgICoKKyAgICAqIFNp
bmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9T
Q1JPTExCQVJfVklTSUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InNjcm9sbGJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTY3JvbGxiYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29udHJvbHMgd2hldGhlciB0aGUgc2Nyb2xsYmFycyBzaG91bGQgYmUgdmlzaWJsZSBmb3Ig
dGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioK
KyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOm1lbnViYXItdmlzaWJsZToKKyAgICAqCisg
ICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBtZW51YmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0
aGUgd2luZG93LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJPUF9NRU5VQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJtZW51YmFyLXZpc2libGUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1lbnViYXIgVmlzaWJsZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQ29udHJvbHMgd2hldGhlciB0aGUgbWVudWJhciBzaG91
bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmxvY2F0aW9u
YmFyLXZpc2libGU6CisgICAgKgorICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgbG9jYXRpb25i
YXIgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgKgorICAgICogU2luY2U6
IDEuMC4yCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmpl
Y3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0xPQ0FU
SU9OQkFSX1ZJU0lCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs
b2NhdGlvbmJhci12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJMb2NhdGlvbmJhciBWaXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJDb250cm9scyB3aGV0aGVyIHRoZSBsb2NhdGlvbmJhciBzaG91bGQgYmUgdmlzaWJsZSBm
b3IgdGhlIHdpbmRvdy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAv
KioKKyAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmZ1bGxzY3JlZW46CisgICAgKgorICAg
ICogQ29udHJvbHMgd2hldGhlciB3aW5kb3cgd2lsbCBiZSBkaXNwbGF5ZWQgZnVsbHNjcmVlbi4K
KyAgICAqCisgICAgKiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBST1BfRlVMTFNDUkVFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUgZGlzcGxheWVkIGZ1bGxzY3JlZW4uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworCisgICAgZ190eXBlX2NsYXNzX2FkZF9w
cml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2luaXQoV2ViS2l0V2Vi
V2luZG93RmVhdHVyZXMqIHdlYl93aW5kb3dfZmVhdHVyZXMpCit7CisgICAgd2ViX3dpbmRvd19m
ZWF0dXJlcy0+cHJpdiA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTX0dFVF9QUklWQVRFKHdl
Yl93aW5kb3dfZmVhdHVyZXMpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgR19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYl93
aW5kb3dfZmVhdHVyZXMgPSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhvYmplY3QpOworICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdiA9IHdlYl93aW5kb3dfZmVhdHVy
ZXMtPnByaXY7CisKKyAgICBzd2l0Y2gocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9YOgorICAg
ICAgICBwcml2LT54ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX1k6CisgICAgICAgIHByaXYtPnkgPSBnX3ZhbHVlX2dldF9pbnQodmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lEVEg6CisgICAgICAgIHByaXYtPndp
ZHRoID0gZ192YWx1ZV9nZXRfaW50KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0hFSUdIVDoKKyAgICAgICAgcHJpdi0+aGVpZ2h0ID0gZ192YWx1ZV9nZXRfaW50KHZhbHVl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RPT0xCQVJfVklTSUJMRToKKyAgICAg
ICAgcHJpdi0+dG9vbGJhcl92aXNpYmxlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TVEFUVVNCQVJfVklTSUJMRToKKyAgICAgICAg
cHJpdi0+c3RhdHVzYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFOgorICAgICAgICBw
cml2LT5zY3JvbGxiYXJfdmlzaWJsZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVOVUJBUl9WSVNJQkxFOgorICAgICAgICBwcml2
LT5tZW51YmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9OQkFSX1ZJU0lCTEU6CisgICAgICAgIHByaXYt
PmxvY2F0aW9uYmFyX3Zpc2libGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZVTExTQ1JFRU46CisgICAgICAgIHByaXYtPmZ1bGxz
Y3JlZW4gPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQorewor
ICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJfd2luZG93X2ZlYXR1cmVzID0gV0VCS0lU
X1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
c1ByaXZhdGUqIHByaXYgPSB3ZWJfd2luZG93X2ZlYXR1cmVzLT5wcml2OworCisgICAgc3dpdGNo
IChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1g6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2
YWx1ZSwgcHJpdi0+eCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ZOgorICAgICAg
ICBnX3ZhbHVlX3NldF9pbnQodmFsdWUsIHByaXYtPnkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfV0lEVEg6CisgICAgICAgIGdfdmFsdWVfc2V0X2ludCh2YWx1ZSwgcHJpdi0+d2lk
dGgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSEVJR0hUOgorICAgICAgICBnX3Zh
bHVlX3NldF9pbnQodmFsdWUsIHByaXYtPmhlaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9UT09MQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHByaXYtPnRvb2xiYXJfdmlzaWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9TVEFUVVNCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
cHJpdi0+c3RhdHVzYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
U0NST0xMQkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHBy
aXYtPnNjcm9sbGJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01F
TlVCQVJfVklTSUJMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+
bWVudWJhcl92aXNpYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0xPQ0FUSU9O
QkFSX1ZJU0lCTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmxv
Y2F0aW9uYmFyX3Zpc2libGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlVMTFND
UkVFTjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZnVsbHNjcmVl
bik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5f
SU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldzoK
KyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZSB3
aXRoIGRlZmF1bHQgdmFsdWVzLiBJdCBtdXN0CisgKiBiZSBtYW51YWxseSBhdHRhY2hlZCB0byBh
IFdlYlZpZXcuCisgKgorICogUmV0dXJuczogYSBuZXcgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
IGluc3RhbmNlCisgKgorICogU2luY2UgMS4wLjIKKyAqKi8KK1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKQoreworICAgIHJldHVybiBXRUJL
SVRfV0VCX1dJTkRPV19GRUFUVVJFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1dJTkRP
V19GRUFUVVJFUywgTlVMTCkpOworfQorCisvLyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkKK1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9j
b3JlX2ZlYXR1cmVzKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKK3sK
KyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyAqd2ViV2luZG93RmVhdHVyZXMgPSB3ZWJraXRf
d2ViX3dpbmRvd19mZWF0dXJlc19uZXcoKTsKKworICAgIGlmKGZlYXR1cmVzLnhTZXQpCisgICAg
ICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyksICJ4Iiwgc3RhdGlj
X2Nhc3Q8aW50PihmZWF0dXJlcy54KSwgTlVMTCk7CisKKyAgICBpZihmZWF0dXJlcy55U2V0KQor
ICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVyZXMpLCAieSIsIHN0
YXRpY19jYXN0PGludD4oZmVhdHVyZXMueSksIE5VTEwpOworCisgICAgaWYoZmVhdHVyZXMud2lk
dGhTZXQpCisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh3ZWJXaW5kb3dGZWF0dXJlcyks
ICJ3aWR0aCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMud2lkdGgpLCBOVUxMKTsKKworICAg
IGlmKGZlYXR1cmVzLmhlaWdodFNldCkKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdl
YldpbmRvd0ZlYXR1cmVzKSwgImhlaWdodCIsIHN0YXRpY19jYXN0PGludD4oZmVhdHVyZXMuaGVp
Z2h0KSwgTlVMTCk7CisKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViV2luZG93RmVhdHVy
ZXMpLAorICAgICAgICAgICAgICAgICAidG9vbGJhci12aXNpYmxlIiwgZmVhdHVyZXMudG9vbEJh
clZpc2libGUsCisgICAgICAgICAgICAgICAgICJzdGF0dXNiYXItdmlzaWJsZSIsIGZlYXR1cmVz
LnN0YXR1c0JhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJzY3JvbGxiYXItdmlzaWJsZSIs
IGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlLAorICAgICAgICAgICAgICAgICAibWVudWJhci12
aXNpYmxlIiwgZmVhdHVyZXMubWVudUJhclZpc2libGUsCisgICAgICAgICAgICAgICAgICJsb2Nh
dGlvbmJhci12aXNpYmxlIiwgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlLAorICAgICAgICAg
ICAgICAgICAiZnVsbHNjcmVlbiIsIGZlYXR1cmVzLmZ1bGxzY3JlZW4sCisgICAgICAgICAgICAg
ICAgIE5VTEwpOworCisgICAgcmV0dXJuIHdlYldpbmRvd0ZlYXR1cmVzOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2VxdWFsOgorICogQGZlYXR1cmVzMTogYSAjV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMgaW5zdGFuY2UKKyAqIEBmZWF0dXJlczI6IGFub3RoZXIgI1dl
YktpdFdlYldpbmRvd0ZlYXR1cmVzIGluc3RhbmNlCisgKgorICogRGVjaWRlcyBpZiBhICNXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZSBlcXVhbHMgYW5vdGhlciwgYXMKKyAqIGluIGhh
cyB0aGUgc2FtZSB2YWx1ZXMuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgdGhlIGluc3RhbmNl
cyBoYXZlIHRoZSBzYW1lIHZhbHVlcywgJUZBTFNFCisgKiBvdGhlcndpc2UKKyAqCisgKiBTaW5j
ZSAxLjAuMgorICoqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwo
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMSwgV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXMqIGZlYXR1cmVzMikKK3sKKyAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUqIHBy
aXYxID0gZmVhdHVyZXMxLT5wcml2OworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0
ZSogcHJpdjIgPSBmZWF0dXJlczItPnByaXY7CisgICAgCisgICAgaWYoKHByaXYxLT54ID09IHBy
aXYyLT54KSAmJgorICAgICAgIChwcml2MS0+eSA9PSBwcml2Mi0+eSkgJiYKKyAgICAgICAocHJp
djEtPndpZHRoID09IHByaXYyLT53aWR0aCkgJiYKKyAgICAgICAocHJpdjEtPmhlaWdodCA9PSBw
cml2Mi0+aGVpZ2h0KSAmJgorICAgICAgIChwcml2MS0+dG9vbGJhcl92aXNpYmxlID09IHByaXYy
LT50b29sYmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5zdGF0dXNiYXJfdmlzaWJsZSA9
PSBwcml2Mi0+c3RhdHVzYmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5zY3JvbGxiYXJf
dmlzaWJsZSA9PSBwcml2Mi0+c2Nyb2xsYmFyX3Zpc2libGUpICYmCisgICAgICAgKHByaXYxLT5t
ZW51YmFyX3Zpc2libGUgPT0gcHJpdjItPm1lbnViYXJfdmlzaWJsZSkgJiYKKyAgICAgICAocHJp
djEtPmxvY2F0aW9uYmFyX3Zpc2libGUgPT0gcHJpdjItPmxvY2F0aW9uYmFyX3Zpc2libGUpICYm
CisgICAgICAgKHByaXYxLT5mdWxsc2NyZWVuID09IHByaXYyLT5mdWxsc2NyZWVuKSkKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisgICAgcmV0dXJuIEZBTFNFOworfQorCisKK30KZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggYi9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg3MzAwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIF9fV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfSF9fCisjZGVmaW5lIF9fV0VCS0lUX1dF
Ql9XSU5ET1dfRkVBVFVSRVNfSF9fCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMgICAgICAgICAgICAod2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9XSU5ET1dfRkVB
VFVSRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMp
KQorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19DTEFTUyhrbGFzcykgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZF
QVRVUkVTLCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X1dFQl9XSU5ET1dfRkVBVFVSRVMob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
VFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUykpCisjZGVmaW5lIFdF
QktJVF9JU19XRUJfV0lORE9XX0ZFQVRVUkVTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfV0lORE9XX0ZFQVRVUkVT
LCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU7
CisKK3N0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgeworICAgIEdPYmplY3QgcGFyZW50
X2luc3RhbmNlOworCisgICAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXNQcml2YXRlKiBwcml2Owor
fTsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lv
biAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykg
KHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOworfTsKKworV0VC
S0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3R5cGUgICAgICAg
ICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqCit3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19uZXcgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VC
S0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmVzMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1
cmVzKiBmZWF0dXJlczIpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19XRUJLSVRfV0VC
X1dJTkRPV19GRUFUVVJFU19IX18gKi8K
</data>
<flag name="review"
          id="11244"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25577</attachid>
            <date>2008-11-28 15:52:49 -0800</date>
            <delta_ts>2008-11-28 15:52:49 -0800</delta_ts>
            <desc>Changes on top of the patch done before landing</desc>
            <filename>my-changes.diff</filename>
            <type>text/plain</type>
            <size>14850</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwYzdkODk0Li5mZjU1YzU0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDEwICsxLDE0IEBA
CiAyMDA4LTExLTI4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCi0g
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBSZXZpZXdlZCBhbmQg
c2xpZ2h0bHkgbW9kaWZpZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzMAogCiAgICAgICAgIEFkZGVkIHRo
ZSBuZXcgV2ViS2l0R3RrIGZpbGVzIHRvIGJlIGJ1aWx0OgogICAgICAgICBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy57Y3BwLGh9CiAKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKwogMjAwOC0xMS0yNiAgS2FsbGUgVmFobG1hbiAgPGthbGxlLnZhaGxtYW5AbW92
aWFsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4gTGFuZGVkIGJ5IEph
biBBbG9uem8uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCmluZGV4IGNiYWIzOWYuLmEzOWViYTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDggKzEsOSBAQAogMjAw
OC0xMS0yOCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAotICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgUmV2aWV3ZWQgYW5kIHNsaWdo
dGx5IG1vZGlmaWVkIGJ5IEhvbGdlciBGcmV5dGhlci4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzAKKwogICAgICAgICBDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyBhbmQgZnJpZW5kcyBuZWVkIHRvIGJlIGltcGxlbWVudGVkCiAgICAgICAg
IAogICAgICAgICBDb2RlIGZyb20gR3VzdGF2byBOb3JvbmhhIGFuZCBNYXJjbyBCYXJpc2lvbmUK
QEAgLTE0LDcgKzE1LDkgQEAKICAgICAgICAgYnkgV2ViQ29yZS4KIAogICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6d2luZG93UmVjdCk6CiAgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2lu
ZG93UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dW5mb2N1cyk6CiAgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKICAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50OjpzaG93KToKICAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojpz
ZXRUb29sYmFyc1Zpc2libGUpOgpAQCAtMzAsNyArMzMsNiBAQAogICAgICAgICAoV2ViS2l0OjpG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24p
OgogICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KToKICAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6Ci0g
ICAgICAgICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CiAgICAgICAgICogd2Via2l0L3dl
YmtpdC5oOgogICAgICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6CiAgICAgICAgICogd2Vi
a2l0L3dlYmtpdHByaXZhdGUuaDoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvZG9jcy93ZWJraXRn
dGstZG9jcy5zZ21sIGIvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKaW5kZXgg
MmY1MGNlNS4uMjUwMDBiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1k
b2NzLnNnbWwKKysrIGIvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKQEAgLTE4
LDYgKzE4LDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0d2ViaGlzdG9yeWl0
ZW0ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdG5ldHdvcmtyZXF1ZXN0
LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJraXR3ZWJpbnNwZWN0b3IueG1s
Ii8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLnht
bCIvPgogICA8L2NoYXB0ZXI+CiAKICAgPGluZGV4IGlkPSJpbmRleC1hbGwiPgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgYi9XZWJLaXQvZ3RrL2Rv
Y3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dAppbmRleCBmZDIwMGZhLi4yZjljYzU5IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dAorKysgYi9XZWJLaXQv
Z3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dApAQCAtMjAxLDYgKzIwMSw4IEBAIHdlYmtp
dF93ZWJfdmlld190YXJnZXRfaW5mb19nZXRfdHlwZQogd2Via2l0X3dlYl92aWV3X3VubWFya190
ZXh0X21hdGNoZXMKIHdlYmtpdF93ZWJfdmlld196b29tX2luCiB3ZWJraXRfd2ViX3ZpZXdfem9v
bV9vdXQKK3dlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzCit3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3dpbmRvd19mZWF0dXJlcwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXRUJLSVRfV0VC
X1ZJRVcKIFdFQktJVF9JU19XRUJfVklFVwpAQCAtMjE3LDYgKzIxOSwyNiBAQCBXRUJLSVRfV0VC
X1ZJRVdfR0VUX1BSSVZBVEUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT53ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlczwvRklMRT4KKzxUSVRMRT5XZWJLaXRXZWJXaW5kb3dGZWF0dXJlczwv
VElUTEU+CitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcword2Via2l0X3dlYl93aW5kb3dfZmVhdHVy
ZXNfZXF1YWwKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldworPFNVQlNFQ1RJT04gU3Rh
bmRhcmQ+CitXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUworV0VCS0lUX0lTX1dFQl9XSU5E
T1dfRkVBVFVSRVNfQ0xBU1MKK1dFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMKK1dFQktJ
VF9XRUJfV0lORE9XX0ZFQVRVUkVTCitXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19DTEFTUwor
V0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX0NMQVNTCis8U1VCU0VDVElPTiBQcml2YXRl
Pgord2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3R5cGUKK1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzCitXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlc1ByaXZhdGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT53ZWJraXQ8L0ZJTEU+
CiB3ZWJraXRfaW5pdAogPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9kb2NzL3dl
YmtpdGd0ay50eXBlcyBiL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGsudHlwZXMKaW5kZXggOTAz
NzdjMS4uYjhlZDViZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay50eXBl
cworKysgYi9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLnR5cGVzCkBAIC04LDQgKzgsNSBAQCB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF90eXBlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUKIHdl
YmtpdF9uYXZpZ2F0aW9uX3Jlc3BvbnNlX2dldF90eXBlCiB3ZWJraXRfd2ViX3ZpZXdfdGFyZ2V0
X2luZm9fZ2V0X3R5cGUKK3dlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMTUyMTkyZS4uZGM2NWFmMiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTE3NDIsNyArMTc0Miw3IEBAIFdlYktpdFdl
Ykluc3BlY3Rvciogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIAogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X3dpbmRvd19mZWF0dXJlcwot
ICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2Vi
VmlldwogICogQHdpbmRvd19mZWF0dXJlczogYSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMKICAq
CiAgKiBUaGlzIHdpbGwgc2V0IGhvdyB0aGUgd2luZG93IGNvbnRhaW5pbmcgdGhlICNXZWJLaXRX
ZWJWaWV3IHNob3VsZApAQCAtMTc1Niw3ICsxNzU2LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
c2V0X3dpbmRvd19mZWF0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJXaW5k
b3cKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1dJTkRPV19GRUFUVVJFUyh3ZWJX
aW5kb3dGZWF0dXJlcykpOwotICAgIAorCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3LT5wcml2OwogCiAgICAgaWYod2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1
YWwocHJpdi0+d2ViV2luZG93RmVhdHVyZXMsIHdlYldpbmRvd0ZlYXR1cmVzKSkKQEAgLTE3Njks
NyArMTc2OSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF93aW5kb3dfZmVhdHVyZXMoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViV2luZG93CiAKIC8qKgogICogd2Via2l0X3dl
Yl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMKLSAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3
CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCiAgKiBSZXR1cm5zIHRoZSBpbnN0
YW5jZSBvZiAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgaGVsZCBieSB0aGUgZ2l2ZW4KICAqICNX
ZWJLaXRXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2lu
ZG93ZmVhdHVyZXMuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVy
ZXMuY3BwCmluZGV4IGYzOWU5YTMuLjRhN2E4YzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKQEAgLTU5LDggKzU5LDYgQEAgc3RydWN0IF9XZWJL
aXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGUgewogCiAjZGVmaW5lIFdFQktJVF9XRUJfV0lORE9X
X0ZFQVRVUkVTX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgo
b2JqKSwgV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlKSkKIAotc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKLQogc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5k
b3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwg
Y29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOwogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CkBAIC02OCwx
OSArNjYsMTggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF8KIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfd2luZG93X2ZlYXR1cmVzX2NsYXNzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFz
cyoga2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1Rf
Q0xBU1Moa2xhc3MpOwotICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfZmluYWxpemU7CiAgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5
ID0gd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfc2V0X3Byb3BlcnR5OwogICAgIGdvYmplY3Rf
Y2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF9wcm9w
ZXJ0eTsKIAogICAgIEdQYXJhbUZsYWdzIGZsYWdzID0gKEdQYXJhbUZsYWdzKShXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QpOwogCiAgICAgLyoqCi0gICAgKiBXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlczp4OgotICAgICoKLSAgICAqIFRoZSBzdGFydGluZyB4IHBvc2l0
aW9uIG9mIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KLSAgICAqCi0gICAgKiBTaW5jZTogMS4w
LjMKLSAgICAqLworICAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOng6CisgICAgICoKKyAg
ICAgKiBUaGUgc3RhcnRpbmcgeCBwb3NpdGlvbiBvZiB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4u
CisgICAgICoKKyAgICAgKiBTaW5jZTogMS4wLjMKKyAgICAgKi8KICAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfaW50KApAQCAtOTMsMTIgKzkwLDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfd2luZG93X2ZlYXR1cmVzX2NsYXNzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXND
bGFzcyoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKICAg
ICAvKioKLSAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOnk6Ci0gICAgKgotICAgICogVGhl
IHN0YXJ0aW5nIHkgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVuLgotICAgICoK
LSAgICAqIFNpbmNlOiAxLjAuMwotICAgICovCisgICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVy
ZXM6eToKKyAgICAgKgorICAgICAqIFRoZSBzdGFydGluZyB5IHBvc2l0aW9uIG9mIHRoZSB3aW5k
b3cgb24gdGhlIHNjcmVlbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMworICAgICAqLwog
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfWSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCkBAIC0xMTEsMTIgKzEwOCwxMiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFncykpOwogCiAgICAgLyoqCi0gICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczp3
aWR0aDoKLSAgICAqCi0gICAgKiBUaGUgd2lkdGggb2YgdGhlIHdpbmRvdyBvbiB0aGUgc2NyZWVu
LgotICAgICoKLSAgICAqIFNpbmNlOiAxLjAuMwotICAgICovCisgICAgICogV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXM6d2lkdGg6CisgICAgICoKKyAgICAgKiBUaGUgd2lkdGggb2YgdGhlIHdpbmRv
dyBvbiB0aGUgc2NyZWVuLgorICAgICAqCisgICAgICogU2luY2U6IDEuMC4zCisgICAgICovCiAg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSURUSCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQoCkBAIC0xMjksMTIgKzEyNiwx
MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOwogCiAgICAgLyoqCi0gICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
czpoZWlnaHQ6Ci0gICAgKgotICAgICogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93IG9uIHRoZSBz
Y3JlZW4uCi0gICAgKgotICAgICogU2luY2U6IDEuMC4zCi0gICAgKi8KKyAgICAgKiBXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlczpoZWlnaHQ6CisgICAgICoKKyAgICAgKiBUaGUgaGVpZ2h0IG9mIHRo
ZSB3aW5kb3cgb24gdGhlIHNjcmVlbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMworICAg
ICAqLwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSEVJR0hULAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCgKQEAgLTE0Nywx
MiArMTQ0LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2NsYXNz
X2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKICAgICAvKioKLSAgICAqIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzOnRvb2xiYXItdmlzaWJsZToKLSAgICAqCi0gICAgKiBDb250cm9scyB3aGV0aGVy
IHRoZSB0b29sYmFyIHNob3VsZCBiZSB2aXNpYmxlIGZvciB0aGUgd2luZG93LgotICAgICoKLSAg
ICAqIFNpbmNlOiAxLjAuMwotICAgICovCisgICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6
dG9vbGJhci12aXNpYmxlOgorICAgICAqCisgICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgdG9v
bGJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAxLjAuMworICAgICAqLwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
VE9PTEJBUl9WSVNJQkxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oCkBAIC0xNjMsMTIgKzE2MCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KFdlYktpdFdlYldpbmRvd0ZlYXR1cmVz
Q2xhc3MqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogCiAg
ICAgLyoqCi0gICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpzdGF0dXNiYXItdmlzaWJsZToK
LSAgICAqCi0gICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBzdGF0dXNiYXIgc2hvdWxkIGJlIHZp
c2libGUgZm9yIHRoZSB3aW5kb3cuCi0gICAgKgotICAgICogU2luY2U6IDEuMC4zCi0gICAgKi8K
KyAgICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlczpzdGF0dXNiYXItdmlzaWJsZToKKyAgICAg
KgorICAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHN0YXR1c2JhciBzaG91bGQgYmUgdmlzaWJs
ZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMworICAgICAqLwog
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU1RBVFVTQkFSX1ZJU0lCTEUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigK
QEAgLTE3OSwxMiArMTc2LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1
cmVzX2NsYXNzX2luaXQoV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKICAgICAvKioKLSAgICAqIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzOnNjcm9sbGJhci12aXNpYmxlOgotICAgICoKLSAgICAqIENvbnRy
b2xzIHdoZXRoZXIgdGhlIHNjcm9sbGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5k
b3cuCi0gICAgKgotICAgICogU2luY2U6IDEuMC4zCi0gICAgKi8KKyAgICAgKiBXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlczpzY3JvbGxiYXItdmlzaWJsZToKKyAgICAgKgorICAgICAqIENvbnRyb2xz
IHdoZXRoZXIgdGhlIHNjcm9sbGJhcnMgc2hvdWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cu
CisgICAgICoKKyAgICAgKiBTaW5jZTogMS4wLjMKKyAgICAgKi8KICAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX1NDUk9MTEJBUl9WSVNJQkxFLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCkBAIC0xOTUsMTIgKzE5Miwx
MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jbGFzc19pbml0KFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzQ2xhc3MqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOwogCiAgICAgLyoqCi0gICAgKiBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
czptZW51YmFyLXZpc2libGU6Ci0gICAgKgotICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgbWVu
dWJhciBzaG91bGQgYmUgdmlzaWJsZSBmb3IgdGhlIHdpbmRvdy4KLSAgICAqCi0gICAgKiBTaW5j
ZTogMS4wLjMKLSAgICAqLworICAgICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOm1lbnViYXIt
dmlzaWJsZToKKyAgICAgKgorICAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIG1lbnViYXIgc2hv
dWxkIGJlIHZpc2libGUgZm9yIHRoZSB3aW5kb3cuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4w
LjMKKyAgICAgKi8KICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3Rf
Y2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX01FTlVCQVJf
VklTSUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKApAQCAtMjExLDEyICsyMDgsMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfY2xhc3NfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAogICAgIC8qKgot
ICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6bG9jYXRpb25iYXItdmlzaWJsZToKLSAgICAq
Ci0gICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBsb2NhdGlvbmJhciBzaG91bGQgYmUgdmlzaWJs
ZSBmb3IgdGhlIHdpbmRvdy4KLSAgICAqCi0gICAgKiBTaW5jZTogMS4wLjMKLSAgICAqLworICAg
ICAqIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzOmxvY2F0aW9uYmFyLXZpc2libGU6CisgICAgICoK
KyAgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBsb2NhdGlvbmJhciBzaG91bGQgYmUgdmlzaWJs
ZSBmb3IgdGhlIHdpbmRvdy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMworICAgICAqLwog
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfTE9DQVRJT05CQVJfVklTSUJMRSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFu
KApAQCAtMjI3LDEyICsyMjQsMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVh
dHVyZXNfY2xhc3NfaW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc0NsYXNzKgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAogICAgIC8qKgotICAgICogV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXM6ZnVsbHNjcmVlbjoKLSAgICAqCi0gICAgKiBDb250cm9scyB3
aGV0aGVyIHdpbmRvdyB3aWxsIGJlIGRpc3BsYXllZCBmdWxsc2NyZWVuLgotICAgICoKLSAgICAq
IFNpbmNlOiAxLjAuMwotICAgICovCisgICAgICogV2ViS2l0V2ViV2luZG93RmVhdHVyZXM6ZnVs
bHNjcmVlbjoKKyAgICAgKgorICAgICAqIENvbnRyb2xzIHdoZXRoZXIgd2luZG93IHdpbGwgYmUg
ZGlzcGxheWVkIGZ1bGxzY3JlZW4uCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4wLjMKKyAgICAg
Ki8KICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0ZVTExTQ1JFRU4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKQEAg
LTI1MSwxMSArMjQ4LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
aW5pdChXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViX3dpbmRvd18KICAgICB3ZWJfd2luZG93
X2ZlYXR1cmVzLT5wcml2ID0gV0VCS0lUX1dFQl9XSU5ET1dfRkVBVFVSRVNfR0VUX1BSSVZBVEUo
d2ViX3dpbmRvd19mZWF0dXJlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfd2luZG93
X2ZlYXR1cmVzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKLXsKLSAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Vi
X3dpbmRvd19mZWF0dXJlcyA9IFdFQktJVF9XRUJfV0lORE9XX0ZFQVRVUkVTKG9iamVjdCk7CkBA
IC0zNDksNyArMzQxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF8KICAqIFJldHVybnM6IGEg
bmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBpbnN0YW5jZQogICoKICAqIFNpbmNlIDEuMC4z
Ci0gKiovCisgKi8KIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19uZXcoKQogewogICAgIHJldHVybiBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFUyhn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1dJTkRPV19GRUFUVVJFUywgTlVMTCkpOwpAQCAt
Mzk2LDEyICszODgsMTIgQEAgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2lu
ZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmVfZmVhdHVyZXMoY29uc3QKICAqIG90aGVyd2lzZQog
ICoKICAqIFNpbmNlIDEuMC4zCi0gKiovCisgKi8KIGdib29sZWFuIHdlYmtpdF93ZWJfd2luZG93
X2ZlYXR1cmVzX2VxdWFsKFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczEsIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzKiBmZWF0dXJlczIpCiB7CiAgICAgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXNQcml2YXRlKiBwcml2MSA9IGZlYXR1cmVzMS0+cHJpdjsKICAgICBXZWJLaXRXZWJXaW5k
b3dGZWF0dXJlc1ByaXZhdGUqIHByaXYyID0gZmVhdHVyZXMyLT5wcml2OwotICAgIAorCiAgICAg
aWYoKHByaXYxLT54ID09IHByaXYyLT54KSAmJgogICAgICAgIChwcml2MS0+eSA9PSBwcml2Mi0+
eSkgJiYKICAgICAgICAocHJpdjEtPndpZHRoID09IHByaXYyLT53aWR0aCkgJiYKQEAgLTQxOCw0
ICs0MTAsMyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19lcXVhbChXZWJL
aXRXZWJXaW5kb3dGZWF0dXJlcyogZmVhdHVyZXMxLCBXZQogCiAKIH0KLQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgKaW5kZXggNjc0N2JhNS4uY2QyODk4OCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaAor
KysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oCkBAIC0zOCwx
MiArMzgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0
ZSBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlc1ByaXZhdGU7CiBzdHJ1Y3QgX1dlYktpdFdlYldpbmRv
d0ZlYXR1cmVzIHsKICAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKIAorICAgIC8qPCBwcml2
YXRlID4qLwogICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzUHJpdmF0ZSogcHJpdjsKIH07CiAK
IHN0cnVjdCBfV2ViS2l0V2ViV2luZG93RmVhdHVyZXNDbGFzcyB7CiAgICAgR09iamVjdENsYXNz
IHBhcmVudF9jbGFzczsKIAorICAgIC8qPCBwcml2YXRlID4qLwogICAgIC8qIFBhZGRpbmcgZm9y
IGZ1dHVyZSBleHBhbnNpb24gKi8KICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lk
KTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKQEAgLTY0LDQgKzY2LDMg
QEAgd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfZXF1YWwgICAgICAgICAgICAgICAoV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMqIGZlYXR1cmUKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBXRUJL
SVRfV0VCX1dJTkRPV19GRUFUVVJFU19IICovCi0K
</data>

          </attachment>
      

    </bug>

</bugzilla>