<?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>136989</bug_id>
          
          <creation_ts>2014-09-21 17:37:22 -0700</creation_ts>
          <short_desc>[GTK][WPE] JSC bindings not introspectable</short_desc>
          <delta_ts>2018-03-21 01:44:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>P3</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>164061</dependson>
          <blocked>183448</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Georges Basile Stavracas Neto">feaneron</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alcinnz</cc>
    
    <cc>anewtobi</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dustin</cc>
    
    <cc>gustavo</cc>
    
    <cc>jgdev</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>svillar</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036405</commentid>
    <comment_count>0</comment_count>
    <who name="Georges Basile Stavracas Neto">feaneron</who>
    <bug_when>2014-09-21 17:37:22 -0700</bug_when>
    <thetext>Currently I was faced with a very annoying bug with Python3 and WebKit2 Gtk+.

I try to run a JavaScript code, say:

document.getYOffset

The code runs asynchronously, and I when it finished, I get a reference to the JavaScriptResult as expected. When I try to retrieve the JavaScriptCore.Value or JavaScriptCore.GlobalContext, it simply won&apos;t run. Even more, it gives me the following message: &quot; Couldn&apos;t find conversion for foreign structure &apos;JavaScriptCore.Value&apos; &quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123926</commentid>
    <comment_count>1</comment_count>
      <attachid>260684</attachid>
    <who name="">anewtobi</who>
    <bug_when>2015-09-05 07:04:04 -0700</bug_when>
    <thetext>Created attachment 260684
patch that adds function get_value_as_string to WebKitJavaScriptResult</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123927</commentid>
    <comment_count>2</comment_count>
    <who name="">anewtobi</who>
    <bug_when>2015-09-05 07:04:59 -0700</bug_when>
    <thetext>Hi,

I had the same problem with the send-message-received singal of UserContentManager.

The problem is JavaScriptCore doesn&apos;t have a gobject based API and therefore the introspection doesn&apos;t know what to do with it.

There are some JavaScriptCore bindings for python, but all of them are unmaintained or less than ideal in some way or  the other.

Even with those bindings (or using cffi directly) I&apos;ve found no way to get the actual JSValueRef address in memory and use it from python through the C API. (If someone knows how it would be possible to do this, please enlighten me. It seems you can&apos;t easily get around the &quot;Couldn&apos;t find conversion for foreign structure &apos;JavaScriptCore.Value&apos;&quot; error)

For my use case (receiving a message) and I imagine a lot of other use cases what I want in the end is to get a string (in python or C) representing the value, not the JSValueRef itsself.

So I created a new function for WebKitJavaScriptResult named get_value_as_string, which simply converts the value represented by JSValueRef to a gchar* (user is responsible for freeing it) and returns it.

This also works for numbers by the way, they simply get converted to a string. Objects get converted to a string like &quot;[object Object]&quot;, so this is at least letting you know that you need to convert the object to a string with something like JSON.stringify from within JavaScript. If anything can&apos;t be converted at all, NULL is returned.

I attached the patch. It should work both with 2.8.5 and with master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123928</commentid>
    <comment_count>3</comment_count>
      <attachid>260684</attachid>
    <who name="">anewtobi</who>
    <bug_when>2015-09-05 07:07:16 -0700</bug_when>
    <thetext>Comment on attachment 260684
patch that adds function get_value_as_string to WebKitJavaScriptResult

https://bugs.webkit.org/show_bug.cgi?id=136989

I had the same problem with the send-message-received singal of UserContentManager.

The problem is JavaScriptCore doesn&apos;t have a gobject based API and therefore the introspection doesn&apos;t know what to do with it.

There are some JavaScriptCore bindings for python, but all of them are unmaintained or less than ideal in some way or  the other.

Even with those bindings (or using cffi directly) I&apos;ve found no way to get the actual JSValueRef address in memory and use it from python through the C API. (If someone knows how it would be possible to do this, please enlighten me. It seems you can&apos;t easily get around the &quot;Couldn&apos;t find conversion for foreign structure &apos;JavaScriptCore.Value&apos;&quot; error)

For my use case (receiving a message) and I imagine a lot of other use cases what I want in the end is to get a string (in python or C) representing the value, not the JSValueRef itsself.

So I created a new function for WebKitJavaScriptResult named get_value_as_string, which simply converts the value represented by JSValueRef to a gchar* (user is responsible for freeing it) and returns it.

This also works for numbers by the way, they simply get converted to a string. Objects get converted to a string like &quot;[object Object]&quot;, so this is at least letting you know that you need to convert the object to a string with something like JSON.stringify from within JavaScript. If anything can&apos;t be converted at all, NULL is returned.

I attached the patch. It should work both with 2.8.5 and with master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123945</commentid>
    <comment_count>4</comment_count>
      <attachid>260684</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-09-05 09:57:06 -0700</bug_when>
    <thetext>Comment on attachment 260684
patch that adds function get_value_as_string to WebKitJavaScriptResult

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

This patch looks good to me; all my comments are just regarding code style. It looks like you&apos;re already familiar with GNOME coding style, which is great, but WebKit style is rather different [1]. We only use the GNOME style in our public header files.

Carlos Lopez mentioned on IRC that the patch needs to include a changelog entry [2], which can be created with the prepare-ChangeLog script.

Since this patch adds new API, it needs to be discussed on the mailing list [3] and then approved by two GTK+ reviewers. Since it&apos;s a small addition I think it should be easy: just write a mail introducing your proposal; signing up for the list will make this easier so that your messages aren&apos;t queued for moderation, but isn&apos;t mandatory.

[1] http://www.webkit.org/coding/coding-style.html
[2] http://www.webkit.org/coding/contributing.html
[3] https://lists.webkit.org/mailman/listinfo/webkit-gtk

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:118
&gt; + * gets converted to a string, if possible. In any case where this isn&apos;t possible NULL is returned. 

Write %NULL so that it appears pretty in the documentation

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:121
&gt; + * string; free with g_free()

I don&apos;t think you need to mention how to free it; that should be apparent due to the (transfer full) annotation.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:129
&gt; +    gsize       str_length;

In WebKit we don&apos;t use this extra space between the type and the variable name, and the * always goes on the type, not the variable name. Also, we declare variables at the point of first use whenever possible, instead of at the top of functions. You can use &apos;check-webkit-style&apos; (which will also be run during &apos;webkit-patch upload&apos; if you use that) to find most style issues; I think it is smart enough to automatically find most of the style issues I found here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:131
&gt; +    js_str_value = JSValueToStringCopy (context, javascriptResult-&gt;value, NULL);

Declare JSStringRef on this line, omit the space before the opening parenthesis in the function call, and use nullptr rather than NULL.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:136
&gt; +        return NULL;

Omit the braces around one-line statements, and use nullptr instead of NULL. I would also omit the comment here, since the behavior is clear from the doc comment up above.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:139
&gt; +    str_length = JSStringGetMaximumUTF8CStringSize (js_str_value);

Declare str_length on this line, and again omit the extra space before the opening parenthesis in the function call (and for the other function calls too).

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:140
&gt; +    str_value = (gchar *)g_malloc (str_length);

Declare str_value on this line, use static_cast&lt;gchar*&gt; instead of the C cast.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp:142
&gt; +    JSStringRelease (js_str_value);

Also, in all these cases, omit the extra space before the opening parenthesis in the function call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123946</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-09-05 09:58:42 -0700</bug_when>
    <thetext>Also when you&apos;ve updated your patch, be sure to set the r? and cq? flags to request formal review (which someone else will give) and also automated commit (since you don&apos;t have commit rights yourself).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125583</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-14 04:27:19 -0700</bug_when>
    <thetext>Thanks for the patch. I think the long term solution would be to have GObject bindings for JSC API, but for now I guess we need something current WebKit bindings could use. However, I&apos;m not sure adding _as_string is the best approach.  Why as_string and not also as_number, as_bool, etc.? I prefer if we add something like as_gvalue() for example, that would work for bindings, but would also be more convenient to use for C API users and would cover all possible values of the result that can be represented as a GValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125594</commentid>
    <comment_count>7</comment_count>
    <who name="">anewtobi</who>
    <bug_when>2015-09-14 07:55:17 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Thanks for the patch. I think the long term solution would be to have
&gt; GObject bindings for JSC API, but for now I guess we need something current
&gt; WebKit bindings could use. However, I&apos;m not sure adding _as_string is the
&gt; best approach.  Why as_string and not also as_number, as_bool, etc.? I
&gt; prefer if we add something like as_gvalue() for example, that would work for
&gt; bindings, but would also be more convenient to use for C API users and would
&gt; cover all possible values of the result that can be represented as a GValue.

I agree with the long term solution.

Why as_string and not as_number and as_bool?

Because numbers and bools can (and do) automatically get &quot;stringified&quot; (I don&apos;t mean from the JS-code side, I mean by JSValueToStringCopy), so numbers and booleans are also &quot;covered&quot; with this solution with little extra &quot;costs&quot; and nothing extra to maintain. Furthermore the assumption can be made that people will send complex data as JSON strings with JSON.stringify and than decode the JSON with something like JSON.loads (in python).

The as_gvariant / as_gvalue idea, also occured to me, but seeing that strings can be very easily converted to ints/floats/booleans in python and also seeing that JSON.stringify (js) and JSON.loads (python) work flawlessly through postMessage()/as_string, I saw little need for as_number, as_bool or as_gvariant as it would complicate the code a little bit (I mean in the webkitjavascriptresult implementation, but also when you&apos;re using the API in python). I&apos;m not against as_gvalue, but I&apos;d like to have as_string, as it makes the python code really simple.

Also consider this example in the documenation from:
https://lazka.github.io/pgi-docs/index.html#WebKit2-4.0/classes/WebView.html#WebKit2.WebView.run_javascript_finish

static void
web_view_javascript_finished (GObject      *object,
                              GAsyncResult *result,
                              gpointer      user_data)
{
    WebKitJavascriptResult *js_result;
    JSValueRef              value;
    JSGlobalContextRef      context;
    GError                 *error = NULL;

    js_result = webkit_web_view_run_javascript_finish (WEBKIT_WEB_VIEW (object), result, &amp;amp;error);
    if (!js_result) {
        g_warning (&quot;Error running javascript: %s&quot;, error-&gt;message);
        g_error_free (error);
        return;
    }

    context = webkit_javascript_result_get_global_context (js_result);
    value = webkit_javascript_result_get_value (js_result);
    if (JSValueIsString (context, value)) {
        JSStringRef js_str_value;
        gchar      *str_value;
        gsize       str_length;

        js_str_value = JSValueToStringCopy (context, value, NULL);
        str_length = JSStringGetMaximumUTF8CStringSize (js_str_value);
        str_value = (gchar *)g_malloc (str_length);
        JSStringGetUTF8CString (js_str_value, str_value, str_length);
        JSStringRelease (js_str_value);
        g_print (&quot;Script result: %s\n&quot;, str_value);
        g_free (str_value);
    } else {
        g_warning (&quot;Error running javascript: unexpected return value&quot;);
    }
    webkit_javascript_result_unref (js_result);
}

That&apos;s a lot of boilerplate code simply to get a string. I imagine that getting a string is a common end result you want from javascript_finish and from messageHandlers. In C you can at least do it, but look at how much code that is!
Now you can you use as_string in this C example and be done. So, this is an additional reason for having as_string beyond just enabling python scripts to use the API at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125602</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-14 09:46:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Thanks for the patch. I think the long term solution would be to have
&gt; &gt; GObject bindings for JSC API, but for now I guess we need something current
&gt; &gt; WebKit bindings could use. However, I&apos;m not sure adding _as_string is the
&gt; &gt; best approach.  Why as_string and not also as_number, as_bool, etc.? I
&gt; &gt; prefer if we add something like as_gvalue() for example, that would work for
&gt; &gt; bindings, but would also be more convenient to use for C API users and would
&gt; &gt; cover all possible values of the result that can be represented as a GValue.
&gt; 
&gt; I agree with the long term solution.
&gt; 
&gt; Why as_string and not as_number and as_bool?
&gt; 
&gt; Because numbers and bools can (and do) automatically get &quot;stringified&quot; (I
&gt; don&apos;t mean from the JS-code side, I mean by JSValueToStringCopy), so numbers
&gt; and booleans are also &quot;covered&quot; with this solution with little extra &quot;costs&quot;
&gt; and nothing extra to maintain. Furthermore the assumption can be made that
&gt; people will send complex data as JSON strings with JSON.stringify and than
&gt; decode the JSON with something like JSON.loads (in python).

In that case maybe it would be better to use to_string() since we are converting the value to a string in some cases.

&gt; The as_gvariant / as_gvalue idea, also occured to me, but seeing that
&gt; strings can be very easily converted to ints/floats/booleans in python and
&gt; also seeing that JSON.stringify (js) and JSON.loads (python) work flawlessly
&gt; through postMessage()/as_string, I saw little need for as_number, as_bool or
&gt; as_gvariant as it would complicate the code a little bit (I mean in the
&gt; webkitjavascriptresult implementation, but also when you&apos;re using the API in
&gt; python). I&apos;m not against as_gvalue, but I&apos;d like to have as_string, as it
&gt; makes the python code really simple.
&gt; 
&gt; Also consider this example in the documenation from:
&gt; https://lazka.github.io/pgi-docs/index.html#WebKit2-4.0/classes/WebView.
&gt; html#WebKit2.WebView.run_javascript_finish
&gt; 
&gt; static void
&gt; web_view_javascript_finished (GObject      *object,
&gt;                               GAsyncResult *result,
&gt;                               gpointer      user_data)
&gt; {
&gt;     WebKitJavascriptResult *js_result;
&gt;     JSValueRef              value;
&gt;     JSGlobalContextRef      context;
&gt;     GError                 *error = NULL;
&gt; 
&gt;     js_result = webkit_web_view_run_javascript_finish (WEBKIT_WEB_VIEW
&gt; (object), result, &amp;amp;error);
&gt;     if (!js_result) {
&gt;         g_warning (&quot;Error running javascript: %s&quot;, error-&gt;message);
&gt;         g_error_free (error);
&gt;         return;
&gt;     }
&gt; 
&gt;     context = webkit_javascript_result_get_global_context (js_result);
&gt;     value = webkit_javascript_result_get_value (js_result);
&gt;     if (JSValueIsString (context, value)) {
&gt;         JSStringRef js_str_value;
&gt;         gchar      *str_value;
&gt;         gsize       str_length;
&gt; 
&gt;         js_str_value = JSValueToStringCopy (context, value, NULL);
&gt;         str_length = JSStringGetMaximumUTF8CStringSize (js_str_value);
&gt;         str_value = (gchar *)g_malloc (str_length);
&gt;         JSStringGetUTF8CString (js_str_value, str_value, str_length);
&gt;         JSStringRelease (js_str_value);
&gt;         g_print (&quot;Script result: %s\n&quot;, str_value);
&gt;         g_free (str_value);
&gt;     } else {
&gt;         g_warning (&quot;Error running javascript: unexpected return value&quot;);
&gt;     }
&gt;     webkit_javascript_result_unref (js_result);
&gt; }

Note that this example only uses JSValueToStringCopy if JSValueIsString() return true, to make it clear that we are expecting a string and getting a string.

&gt; That&apos;s a lot of boilerplate code simply to get a string. I imagine that
&gt; getting a string is a common end result you want from javascript_finish and
&gt; from messageHandlers. In C you can at least do it, but look at how much code
&gt; that is!

I agree, and that&apos;s why I said it would work for bindings but also would make the API more convenient.

&gt; Now you can you use as_string in this C example and be done. So, this is an
&gt; additional reason for having as_string beyond just enabling python scripts
&gt; to use the API at all.

I agree, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125603</commentid>
    <comment_count>9</comment_count>
    <who name="">anewtobi</who>
    <bug_when>2015-09-14 10:07:29 -0700</bug_when>
    <thetext>&gt; In that case maybe it would be better to use to_string() since we are
&gt; converting the value to a string in some cases.

I assume you mean .to_string(), because .get_value_to_string() would obviously not make sense. I chose .get_value_as_string(), because it&apos;s explicit, but now I think .to_string() is even better (I thought &quot;as&quot; implied conversion, too, but .to_string() is both shorter and more common in APIs, and as you said it implies conversion). +1 for .to_string() I&apos;ll change this in the next update to the patch, unless somebody has an even better idea or contrary opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244795</commentid>
    <comment_count>10</comment_count>
    <who name="Jack Goofy">jgdev</who>
    <bug_when>2016-10-26 08:32:39 -0700</bug_when>
    <thetext>modified the patch from anewtobi with the comments from Michael.

--- a/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp      2016-03-17 16:58:24.866081047 +0100
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp       2016-03-17 17:09:58.702068622 +0100
@@ -108,3 +108,34 @@
 {
     return javascriptResult-&gt;value;
 }
+
+
+/**
+ * webkit_javascript_result_to_string:
+ * @js_result: a #WebKitJavascriptResult
+ *
+ * Get string representing the value of @js_result. The value referenced by &lt;function&gt;JSValueRef&lt;/function&gt;
+ * gets converted to a string, if possible. In any case where this isn&apos;t possible %NULL is returned. 
+ *
+ * Return value: (transfer full): a newly allocated result
+ * string; free with g_free()
+ */
+gchar* webkit_javascript_result_to_string(WebKitJavascriptResult* javascriptResult)
+{
+    JSGlobalContextRef context = webkit_javascript_result_get_global_context(javascriptResult);
+
+    JSStringRef js_str_value = JSValueToStringCopy(context, javascriptResult-&gt;value, nullptr);
+    
+    // If JSValueToStringCopy returns Null, this means JSValueRef couldn&apos;t be converted to a JSStringRef,
+    // so we return NULL
+    if (!js_str_value) {
+        return nullptr;
+    }
+
+    gsize str_length = JSStringGetMaximumUTF8CStringSize(js_str_value);
+    gchar* str_value = static_cast&lt;gchar*&gt;(g_malloc(str_length));
+    JSStringGetUTF8CString(js_str_value, str_value, str_length);
+    JSStringRelease(js_str_value);
+
+    return str_value;
+}



--- a/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.h        2013-08-03 18:10:40.000000000 +0200
+++ a/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.h 2016-03-17 17:15:28.362062718 +0100
@@ -50,6 +50,9 @@
 WEBKIT_API JSValueRef
 webkit_javascript_result_get_value          (WebKitJavascriptResult *js_result);
 
+WEBKIT_API gchar*
+webkit_javascript_result_to_string          (WebKitJavascriptResult *js_result);
+
 G_END_DECLS
 
 #endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245067</commentid>
    <comment_count>11</comment_count>
      <attachid>293003</attachid>
    <who name="Jack Goofy">jgdev</who>
    <bug_when>2016-10-27 02:38:25 -0700</bug_when>
    <thetext>Created attachment 293003
patch that adds function get_value_to_string to WebKitJavaScriptResult</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245110</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-27 06:49:09 -0700</bug_when>
    <thetext>Thanks for your patch Jack!

I don&apos;t see any reason not to add webkit_javascript_result_to_string, but I think it belongs in a separate bug since it doesn&apos;t really solve the problem here. Georges wants to be able to use JSC from Python, that requires introspection support, and that in turn depends on bug #164061. So I think you should file a new bug and attach your patch there. Please also see https://webkit.org/contributing-code/ for tips on contributing patches (set the r? and cq? Bugzilla flags, give the patch a ChangeLog entry).

As for the patch itself, it looks sane to me, just one style nit in the header file:

WEBKIT_API gchar*

Since the header file follows GNOME coding style, it should be gchar * with a space before the *, unlike the WebKit coding style used in the rest of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404030</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-06 09:38:13 -0800</bug_when>
    <thetext>*** Bug 170621 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404036</commentid>
    <comment_count>14</comment_count>
      <attachid>335107</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-06 09:42:14 -0800</bug_when>
    <thetext>Created attachment 335107
WIP patch

This is a WIP patch based on new API added in patch attached to bug #164061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404039</commentid>
    <comment_count>15</comment_count>
      <attachid>335109</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-06 09:53:29 -0800</bug_when>
    <thetext>Created attachment 335109
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404041</commentid>
    <comment_count>16</comment_count>
      <attachid>335110</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-06 10:00:49 -0800</bug_when>
    <thetext>Created attachment 335110
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404715</commentid>
    <comment_count>17</comment_count>
      <attachid>335293</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-08 05:30:58 -0800</bug_when>
    <thetext>Created attachment 335293
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406964</commentid>
    <comment_count>18</comment_count>
      <attachid>335930</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-16 04:29:38 -0700</bug_when>
    <thetext>Created attachment 335930
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407188</commentid>
    <comment_count>19</comment_count>
      <attachid>335930</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-03-16 17:49:49 -0700</bug_when>
    <thetext>Comment on attachment 335930
WIP patch

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

My attention span compares unfavorably to Donald Trump, so I&apos;m just skimming through this...

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:66
&gt;  #include &lt;JavaScriptCore/JSRetainPtr.h&gt;
&gt; +#include &lt;jsc/JSCContextPrivate.h&gt;
&gt;  #include &lt;WebCore/CertificateInfo.h&gt;

Again, style checker will complain about alphabetization when you set r?

&gt; Source/WebKit/UIProcess/API/gtk/WebKitJavascriptResult.h:52
&gt;  WEBKIT_API JSValueRef
&gt;  webkit_javascript_result_get_value          (WebKitJavascriptResult *js_result);

Shall we deprecate it? I think so, otherwise it will be confusing.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:435
&gt;  WEBKIT_API JSGlobalContextRef
&gt;  webkit_web_view_get_javascript_global_context        (WebKitWebView             *web_view);

Ditto, we should probably deprecate all the JSC C API stuff.

In the unlikely event we ever decide that was a mistake, we can always un-deprecate it. Not like it&apos;s going away in the GTK+ 3 API. But this would allow us to not expose the C API at all in the GTK+ 4 API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407237</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-17 02:16:10 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #19)
&gt; Comment on attachment 335930 [details]
&gt; WIP patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335930&amp;action=review
&gt; 
&gt; My attention span compares unfavorably to Donald Trump, so I&apos;m just skimming
&gt; through this...

Thanks for taking the time.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:66
&gt; &gt;  #include &lt;JavaScriptCore/JSRetainPtr.h&gt;
&gt; &gt; +#include &lt;jsc/JSCContextPrivate.h&gt;
&gt; &gt;  #include &lt;WebCore/CertificateInfo.h&gt;
&gt; 
&gt; Again, style checker will complain about alphabetization when you set r?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitJavascriptResult.h:52
&gt; &gt;  WEBKIT_API JSValueRef
&gt; &gt;  webkit_javascript_result_get_value          (WebKitJavascriptResult *js_result);
&gt; 
&gt; Shall we deprecate it? I think so, otherwise it will be confusing.

Yes, this is a WIP patch, I just did the minimum I needed to make thr whole thing work and port epiphany. I&apos;ll deprecate the old methods and document the new ones.

&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:435
&gt; &gt;  WEBKIT_API JSGlobalContextRef
&gt; &gt;  webkit_web_view_get_javascript_global_context        (WebKitWebView             *web_view);
&gt; 
&gt; Ditto, we should probably deprecate all the JSC C API stuff.

Ditto.

&gt; In the unlikely event we ever decide that was a mistake, we can always
&gt; un-deprecate it. Not like it&apos;s going away in the GTK+ 3 API. But this would
&gt; allow us to not expose the C API at all in the GTK+ 4 API.

You don&apos;t have to convince me :-) my idea has always been to deprecate the JSC C API usage in WebKit API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407656</commentid>
    <comment_count>21</comment_count>
      <attachid>336120</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-20 07:53:56 -0700</bug_when>
    <thetext>Created attachment 336120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407956</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-03-21 01:44:17 -0700</bug_when>
    <thetext>Committed r229799: &lt;https://trac.webkit.org/changeset/229799&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260684</attachid>
            <date>2015-09-05 07:04:04 -0700</date>
            <delta_ts>2018-03-20 07:53:56 -0700</delta_ts>
            <desc>patch that adds function get_value_as_string to WebKitJavaScriptResult</desc>
            <filename>webkitjavascriptresult_get_value_as_string.patch</filename>
            <type>text/plain</type>
            <size>3538</size>
            <attacher>anewtobi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFz
Y3JpcHRSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdC5jcHAKaW5kZXggNzllYzY5Yi4uMTg0ZDJlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVG9iaWEgR2xhc2VyCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKIApAQCAtMTA4LDMgKzEwOSwzOSBAQCBKU1ZhbHVlUmVmIHdlYmtpdF9qYXZhc2Ny
aXB0X3Jlc3VsdF9nZXRfdmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdAog
ewogICAgIHJldHVybiBqYXZhc2NyaXB0UmVzdWx0LT52YWx1ZTsKIH0KKworLyoqCisgKiB3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlX2FzX3N0cmluZzoKKyAqIEBqc19yZXN1bHQ6
IGEgI1dlYktpdEphdmFzY3JpcHRSZXN1bHQKKyAqCisgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGlu
ZyB0aGUgdmFsdWUgb2YgQGpzX3Jlc3VsdC4gVGhlIHZhbHVlIHJlZmVyZW5jZWQgYnkgPGZ1bmN0
aW9uPkpTVmFsdWVSZWY8L2Z1bmN0aW9uPgorICogZ2V0cyBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcs
IGlmIHBvc3NpYmxlLiBJbiBhbnkgY2FzZSB3aGVyZSB0aGlzIGlzbid0IHBvc3NpYmxlIE5VTEwg
aXMgcmV0dXJuZWQuIAorICoKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIGZ1bGwpOiBhIG5l
d2x5IGFsbG9jYXRlZCByZXN1bHQKKyAqIHN0cmluZzsgZnJlZSB3aXRoIGdfZnJlZSgpCisgKi8K
K2djaGFyKiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlX2FzX3N0cmluZyhXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQoreworICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBjb250ZXh0ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29u
dGV4dChqYXZhc2NyaXB0UmVzdWx0KTsKKworICAgIEpTU3RyaW5nUmVmIGpzX3N0cl92YWx1ZTsK
KyAgICBnY2hhciAgICAgICpzdHJfdmFsdWU7CisgICAgZ3NpemUgICAgICAgc3RyX2xlbmd0aDsK
KworICAgIGpzX3N0cl92YWx1ZSA9IEpTVmFsdWVUb1N0cmluZ0NvcHkgKGNvbnRleHQsIGphdmFz
Y3JpcHRSZXN1bHQtPnZhbHVlLCBOVUxMKTsKKyAgICAKKyAgICAvLyBJZiBKU1ZhbHVlVG9TdHJp
bmdDb3B5IHJldHVybnMgTnVsbCwgdGhpcyBtZWFucyBKU1ZhbHVlUmVmIGNvdWxkbid0IGJlIGNv
bnZlcnRlZCB0byBhIEpTU3RyaW5nUmVmLAorICAgIC8vIHNvIHdlIHJldHVybiBOVUxMCisgICAg
aWYgKCFqc19zdHJfdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAg
c3RyX2xlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZSAoanNfc3RyX3Zh
bHVlKTsKKyAgICBzdHJfdmFsdWUgPSAoZ2NoYXIgKilnX21hbGxvYyAoc3RyX2xlbmd0aCk7Cisg
ICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyAoanNfc3RyX3ZhbHVlLCBzdHJfdmFsdWUsIHN0cl9s
ZW5ndGgpOworICAgIEpTU3RyaW5nUmVsZWFzZSAoanNfc3RyX3ZhbHVlKTsKKworICAgIHJldHVy
biBzdHJfdmFsdWU7Cit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCmluZGV4IDVhOWY3MzguLjBmM2My
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEph
dmFzY3JpcHRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVG9iaWEgR2xhc2Vy
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDE5ICszNywyMiBAQCB0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0OwogCiAKIFdFQktJ
VF9BUEkgR1R5cGUKLXdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdHlwZSAgICAgICAgICAg
KHZvaWQpOword2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF90eXBlICAgICAgICAgICAgICAo
dm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqCi13ZWJraXRfamF2
YXNjcmlwdF9yZXN1bHRfcmVmICAgICAgICAgICAgICAgIChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
ICpqc19yZXN1bHQpOword2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3JlZiAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSB2
b2lkCi13ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYgICAgICAgICAgICAgIChXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0ICpqc19yZXN1bHQpOword2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3Vu
cmVmICAgICAgICAgICAgICAgICAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0KTsK
IAogV0VCS0lUX0FQSSBKU0dsb2JhbENvbnRleHRSZWYKLXdlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF9nZXRfZ2xvYmFsX2NvbnRleHQgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7
Cit3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0ICAgIChXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0ICpqc19yZXN1bHQpOwogCiBXRUJLSVRfQVBJIEpTVmFsdWVSZWYKLXdl
YmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgICAgICAgICAgKFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQgKmpzX3Jlc3VsdCk7Cit3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVl
ICAgICAgICAgICAgIChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0ICpqc19yZXN1bHQpOworCitXRUJL
SVRfQVBJIGdjaGFyKgord2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZV9hc19zdHJp
bmcgICAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKIAogR19FTkRfREVDTFMK
IAoKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293003</attachid>
            <date>2016-10-27 02:38:25 -0700</date>
            <delta_ts>2018-03-20 07:53:56 -0700</delta_ts>
            <desc>patch that adds function get_value_to_string to WebKitJavaScriptResult</desc>
            <filename>webkitjavascriptresult_get_value_to_string.patch</filename>
            <type>text/plain</type>
            <size>1907</size>
            <attacher name="Jack Goofy">jgdev</attacher>
            
              <data encoding="base64">LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdC5jcHAgICAgICAgMjAxNi0wMy0xNyAxNjo1ODoyNC44NjYwODEwNDcgKzAxMDAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5j
cHAgICAgICAgMjAxNi0wMy0xNyAxNzowOTo1OC43MDIwNjg2MjIgKzAxMDAKQEAgLTEwOCwzICsx
MDgsMzQgQEAKIHsKICAgICByZXR1cm4gamF2YXNjcmlwdFJlc3VsdC0+dmFsdWU7CiB9CisKKwor
LyoqCisgKiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdG9fc3RyaW5nOgorICogQGpzX3Jlc3Vs
dDogYSAjV2ViS2l0SmF2YXNjcmlwdFJlc3VsdAorICoKKyAqIEdldCBzdHJpbmcgcmVwcmVzZW50
aW5nIHRoZSB2YWx1ZSBvZiBAanNfcmVzdWx0LiBUaGUgdmFsdWUgcmVmZXJlbmNlZCBieSA8ZnVu
Y3Rpb24+SlNWYWx1ZVJlZjwvZnVuY3Rpb24+CisgKiBnZXRzIGNvbnZlcnRlZCB0byBhIHN0cmlu
ZywgaWYgcG9zc2libGUuIEluIGFueSBjYXNlIHdoZXJlIHRoaXMgaXNuJ3QgcG9zc2libGUgJU5V
TEwgaXMgcmV0dXJuZWQuIAorICoKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIGZ1bGwpOiBh
IG5ld2x5IGFsbG9jYXRlZCByZXN1bHQKKyAqIHN0cmluZzsgZnJlZSB3aXRoIGdfZnJlZSgpCisg
Ki8KK2djaGFyKiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdG9fc3RyaW5nKFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCit7CisgICAgSlNHbG9iYWxDb250ZXh0UmVm
IGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0KGph
dmFzY3JpcHRSZXN1bHQpOworCisgICAgSlNTdHJpbmdSZWYganNfc3RyX3ZhbHVlID0gSlNWYWx1
ZVRvU3RyaW5nQ29weShjb250ZXh0LCBqYXZhc2NyaXB0UmVzdWx0LT52YWx1ZSwgbnVsbHB0cik7
CisgICAgCisgICAgLy8gSWYgSlNWYWx1ZVRvU3RyaW5nQ29weSByZXR1cm5zIE51bGwsIHRoaXMg
bWVhbnMgSlNWYWx1ZVJlZiBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQgdG8gYSBKU1N0cmluZ1JlZiwK
KyAgICAvLyBzbyB3ZSByZXR1cm4gTlVMTAorICAgIGlmICghanNfc3RyX3ZhbHVlKSB7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGdzaXplIHN0cl9sZW5ndGggPSBKU1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoanNfc3RyX3ZhbHVlKTsKKyAgICBnY2hhciog
c3RyX3ZhbHVlID0gc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhzdHJfbGVuZ3RoKSk7Cisg
ICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhqc19zdHJfdmFsdWUsIHN0cl92YWx1ZSwgc3RyX2xl
bmd0aCk7CisgICAgSlNTdHJpbmdSZWxlYXNlKGpzX3N0cl92YWx1ZSk7CisKKyAgICByZXR1cm4g
c3RyX3ZhbHVlOworfQoKCgotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmggICAgICAgIDIwMTMtMDgtMDMgMTg6MTA6NDAuMDAwMDAw
MDAwICswMjAwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEph
dmFzY3JpcHRSZXN1bHQuaCAgICAgICAgMjAxNi0wMy0xNyAxNzoxNToyOC4zNjIwNjI3MTggKzAx
MDAKQEAgLTUwLDYgKzUwLDkgQEAKIFdFQktJVF9BUEkgSlNWYWx1ZVJlZgogd2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X2dldF92YWx1ZSAgICAgICAgICAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAq
anNfcmVzdWx0KTsKIAorV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF90b19zdHJpbmcgICAgICAgICAgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7
CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335107</attachid>
            <date>2018-03-06 09:42:14 -0800</date>
            <delta_ts>2018-03-06 09:53:29 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wk2-jsc.diff</filename>
            <type>text/plain</type>
            <size>33183</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmgKaW5kZXggMjAyZTY4NmJm
NDkuLmUxNjM5YzRhMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ2xhc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xh
c3MuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAg
Ki8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01Q
SUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0Nf
Q09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3IgIk9u
bHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAppbmRleCAzNzgyZjBlOWMx
MC4uNWNhZTA4YmJjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0Nv
bnRleHQuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19D
T01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChK
U0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3Ig
Ik9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKaW5kZXggNDJh
OGQ4MDg4MmQuLjlhNDQ5MmRkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ0V4Y2VwdGlvbi5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYm
ICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElP
TikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmgKaW5kZXgg
YzAyNDRmNmZiZWMuLjRiYjk4NGI1Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDVmFsdWUuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KEpTQ19DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChKU0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAj
ZXJyb3IgIk9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVh
bE1hY2hpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFj
aGluZS5oCmluZGV4IDI1YzY0M2UwOWIwLi4wODNjNmE5MzQyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKQEAgLTE3LDcgKzE3
LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5l
ZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pCisjaWYgIWRl
ZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKSAmJiAh
ZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQogI2Vycm9yICJPbmx5IDxqc2MvanNjLmg+IGNh
biBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggZGM2YjMwNjZjM2EuLjYxNWFhN2ExODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTM2Niw2ICszNjYsOCBAQCBsaXN0KElOU0VSVCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UyAwCiApCiAKIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7
Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvIgorICAgICIke0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
UGx1Z2luUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9zb3VwIgpAQCAtNzYzLDYgKzc2NSw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElP
TikKICAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJE
SU5HX0hFQURFUlNfRElSfQorICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9
L0phdmFTY3JpcHRDb3JlL2dsaWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNf
V0VCS0lUMkdUS19ESVJ9CiAgICAgICAgICAgICAke1dlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURF
UlN9CiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi8qLmNwcApAQCAt
ODA3LDYgKzgxMCw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKICAgICAgICAgICAgIC1J
JHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkke0RFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfQor
ICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2ds
aWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19ESVJ9CiAg
ICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRVhURU5TSU9OX0RJ
Un0KICAgICAgICAgICAgIC1JJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEphdmFzY3JpcHRSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5jcHAKaW5kZXggMDEwODA1YzM5MGEuLjdiMjVkNjg4
Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRK
YXZhc2NyaXB0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcApAQCAtMjIsMjEgKzIyLDE5IEBACiAKICNpbmNs
dWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8anNjL0pT
Q1ZhbHVlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogc3RydWN0
IF9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0IHsKLSAgICBfV2ViS2l0SmF2YXNjcmlwdFJlc3VsdChK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLSAgICAgICAgOiBqYXZhc2NyaXB0R2xvYmFsQ29u
dGV4dChqc0NvbnRleHQpCi0gICAgICAgICwgcmVmZXJlbmNlQ291bnQoMSkKKyAgICBfV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdChHUmVmUHRyPEpTQ0NvbnRleHQ+JiYganNDb250ZXh0LCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAgICAgICAg
OiBqc1ZhbHVlKGpzY0NvbnRleHRHZXRPckNyZWF0ZVZhbHVlKGpzQ29udGV4dC5nZXQoKSwgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKGpzY0NvbnRleHRHZXRKU0NvbnRleHQoanND
b250ZXh0LmdldCgpKSwgbnVsbHB0cikpKQogICAgIHsKLSAgICAgICAgdmFsdWUgPSBzZXJpYWxp
emVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoamF2YXNjcmlwdEdsb2JhbENvbnRleHQuZ2V0KCks
IG51bGxwdHIpOwogICAgIH0KIAotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4g
amF2YXNjcmlwdEdsb2JhbENvbnRleHQ7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZTsKKyAgICBHUmVm
UHRyPEpTQ1ZhbHVlPiBqc1ZhbHVlOwogCi0gICAgaW50IHJlZmVyZW5jZUNvdW50OworICAgIGlu
dCByZWZlcmVuY2VDb3VudCB7IDEgfTsKIH07CiAKIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCwgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2YXNj
cmlwdF9yZXN1bHRfcmVmLCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYpCkBAIC00NCw3
ICs0Miw3IEBAIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCwgd2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiB3ZWJraXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKEpTR2xvYmFsQ29udGV4dFJlZiBqYXZhc2Ny
aXB0R2xvYmFsQ29udGV4dCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUpCiB7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQoamF2YXNjcmlwdEdsb2JhbENvbnRleHQsIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CisgICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3JpcHRSZXN1bHQoanNjQ29udGV4dEdldE9y
Q3JlYXRlKGphdmFzY3JpcHRHbG9iYWxDb250ZXh0KSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC05MSw3ICs4OSw4IEBAIHZvaWQgd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X3VucmVmKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQpCiAgKi8KIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2dsb2JhbF9jb250ZXh0KFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1
bHQpCiB7Ci0gICAgcmV0dXJuIGphdmFzY3JpcHRSZXN1bHQtPmphdmFzY3JpcHRHbG9iYWxDb250
ZXh0LmdldCgpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGphdmFzY3JpcHRSZXN1bHQsIG51
bGxwdHIpOworICAgIHJldHVybiBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGpzY192YWx1ZV9nZXRf
Y29udGV4dChqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVlLmdldCgpKSk7CiB9CiAKIC8qKgpAQCAt
MTA1LDUgKzEwNCwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X2phdmFzY3JpcHRfcmVz
dWx0X2dldF9nbG9iYWxfY29udGV4dChXZWJLaXRKYXZhc2NyaXB0UgogICovCiBKU1ZhbHVlUmVm
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCkKIHsKLSAgICByZXR1cm4gamF2YXNjcmlwdFJlc3VsdC0+dmFs
dWU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoamF2YXNjcmlwdFJlc3VsdCwgbnVsbHB0cik7
CisgICAgcmV0dXJuIGpzY1ZhbHVlR2V0SlNWYWx1ZShqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVl
LmdldCgpKTsKK30KKworSlNDVmFsdWUqIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNf
dmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChqYXZhc2NyaXB0UmVzdWx0LCBudWxscHRyKTsKKyAgICByZXR1
cm4gamF2YXNjcmlwdFJlc3VsdC0+anNWYWx1ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTFjY2Q3NzU1
ZjIuLjVlYzUxYzJmY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIldlYktp
dFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0
ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CkBAIC0yMjgsNyArMjI5LDcgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb3Vz
ZVRhcmdldE1vZGlmaWVyczsKIAogICAgIEdSZWZQdHI8V2ViS2l0RmluZENvbnRyb2xsZXI+IGZp
bmRDb250cm9sbGVyOwotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4gamF2YXNj
cmlwdEdsb2JhbENvbnRleHQ7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQ7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiBtYWluUmVzb3VyY2U7CiAgICAgTG9hZGlu
Z1Jlc291cmNlc01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAtMzI2MSwxMiArMzI2MiwxNyBA
QCBXZWJLaXRGaW5kQ29udHJvbGxlciogd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xs
ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldwogICogICAgdGhlIHJlc3VsdCB2YWx1ZXMgb2Ygc2Ny
aXB0cy4KICAqLwogSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNj
cmlwdF9nbG9iYWxfY29udGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVy
biBqc2NDb250ZXh0R2V0SlNDb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4dCh3
ZWJWaWV3KSk7Cit9CisKK0pTQ0NvbnRleHQqIHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICBpZiAoIXdlYlZpZXct
PnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KQotICAgICAgICB3ZWJWaWV3LT5wcml2LT5q
YXZhc2NyaXB0R2xvYmFsQ29udGV4dCA9IGFkb3B0KEpTR2xvYmFsQ29udGV4dENyZWF0ZShudWxs
cHRyKSk7Ci0gICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0
LmdldCgpOworICAgIGlmICghd2ViVmlldy0+cHJpdi0+anNDb250ZXh0KQorICAgICAgICB3ZWJW
aWV3LT5wcml2LT5qc0NvbnRleHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfbmV3KCkpOworICAg
IHJldHVybiB3ZWJWaWV3LT5wcml2LT5qc0NvbnRleHQuZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHdrU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBl
eGNlcHRpb25EZXRhaWxzLCBHVGFzayogdGFzaykKQEAgLTMzNDMsOCArMzM0OSw3IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyKiBzY3JpcHQsCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciAgICAgIHVzZXJfZGF0YSkKICAqIHsKICAqICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
ICpqc19yZXN1bHQ7Ci0gKiAgICAgSlNWYWx1ZVJlZiAgICAgICAgICAgICAgdmFsdWU7Ci0gKiAg
ICAgSlNHbG9iYWxDb250ZXh0UmVmICAgICAgY29udGV4dDsKKyAqICAgICBKU0NWYWx1ZSAgICAg
ICAgICAgICAgICB2YWx1ZTsKICAqICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICplcnJvciA9
IE5VTEw7CiAgKgogICogICAgIGpzX3Jlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNj
cmlwdF9maW5pc2ggKFdFQktJVF9XRUJfVklFVyAob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3IpOwpA
QCAtMzM1NCwxOSArMzM1OSwxNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICogICAgICAg
ICByZXR1cm47CiAgKiAgICAgfQogICoKLSAqICAgICBjb250ZXh0ID0gd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dCAoanNfcmVzdWx0KTsKLSAqICAgICB2YWx1ZSA9
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgKGpzX3Jlc3VsdCk7Ci0gKiAgICAg
aWYgKEpTVmFsdWVJc1N0cmluZyAoY29udGV4dCwgdmFsdWUpKSB7Ci0gKiAgICAgICAgIEpTU3Ry
aW5nUmVmIGpzX3N0cl92YWx1ZTsKLSAqICAgICAgICAgZ2NoYXIgICAgICAqc3RyX3ZhbHVlOwot
ICogICAgICAgICBnc2l6ZSAgICAgICBzdHJfbGVuZ3RoOwotICoKLSAqICAgICAgICAganNfc3Ry
X3ZhbHVlID0gSlNWYWx1ZVRvU3RyaW5nQ29weSAoY29udGV4dCwgdmFsdWUsIE5VTEwpOwotICog
ICAgICAgICBzdHJfbGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplIChq
c19zdHJfdmFsdWUpOwotICogICAgICAgICBzdHJfdmFsdWUgPSAoZ2NoYXIgKilnX21hbGxvYyAo
c3RyX2xlbmd0aCk7Ci0gKiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcgKGpzX3N0cl92
YWx1ZSwgc3RyX3ZhbHVlLCBzdHJfbGVuZ3RoKTsKLSAqICAgICAgICAgSlNTdHJpbmdSZWxlYXNl
IChqc19zdHJfdmFsdWUpOwotICogICAgICAgICBnX3ByaW50ICgiU2NyaXB0IHJlc3VsdDogJXNc
biIsIHN0cl92YWx1ZSk7CisgKiAgICAgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2pzX3ZhbHVlIChqc19yZXN1bHQpOworICogICAgIGlmIChqc2NfdmFsdWVfaXNfc3RyaW5n
ICh2YWx1ZSkpIHsKKyAqICAgICAgICAgSlNDRXhjZXB0aW9uICpleGNlcHRpb247CisgKiAgICAg
ICAgIGdjaGFyICAgICAgICAqc3RyX3ZhbHVlOworICoKKyAqICAgICAgICAgc3RyX3ZhbHVlID0g
anNjX3ZhbHVlX3RvX3N0cmluZyAodmFsdWUpOworICogICAgICAgICBleGNlcHRpb24gPSBqc2Nf
Y29udGV4dF9nZXRfZXhjZXB0aW9uIChqc2NfdmFsdWVfZ2V0X2NvbnRleHQgKHZhbHVlKSk7Cisg
KiAgICAgICAgIGlmIChleGNlcHRpb24pCisgKiAgICAgICAgICAgICBnX3dhcm5pbmcgKCJFcnJv
ciBydW5uaW5nIGphdmFzY3JpcHQ6ICVzIiwganNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZSAoZXhj
ZXB0aW9uKSk7CisgKiAgICAgICAgIGVsc2UKKyAqICAgICAgICAgICAgIGdfcHJpbnQgKCJTY3Jp
cHQgcmVzdWx0OiAlc1xuIiwgc3RyX3ZhbHVlKTsKICAqICAgICAgICAgZ19mcmVlIChzdHJfdmFs
dWUpOwogICogICAgIH0gZWxzZSB7CiAgKiAgICAgICAgIGdfd2FybmluZyAoIkVycm9yIHJ1bm5p
bmcgamF2YXNjcmlwdDogdW5leHBlY3RlZCByZXR1cm4gdmFsdWUiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgK
aW5kZXggNWE5ZjczODlmNDQuLmY4YTVmZmY2MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaApAQCAtMjUs
NiArMjUsNyBAQAogI2RlZmluZSBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0X2gKIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogCkBA
IC01MCw2ICs1MSw5IEBAIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRl
eHQgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiBXRUJLSVRfQVBJIEpTVmFs
dWVSZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgICAgICAgICAgKFdlYktp
dEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiAKK1dFQktJVF9BUEkgSlNDVmFsdWUgKgor
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZSAgICAgICAoV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGMzNjk2
NTNhNDEyLi4wYmVkY2I3NGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgV2ViS2l0V2Vi
Vmlld19oCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxq
c2MvanNjLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgpAQCAtNDMzLDYgKzQzNCw5IEBAIHdlYmtpdF93ZWJf
dmlld19nZXRfZmluZF9jb250cm9sbGVyICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcK
IFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFz
Y3JpcHRfZ2xvYmFsX2NvbnRleHQgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgSlNDQ29udGV4dCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2pzX2NvbnRleHQgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpzY3JpcHQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAyMDg5NmYzYjYwZi4uYjI2YjdlMTRjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMjA1LDYgKzIwNSw3IEBAIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZF93aXRoX2FyZ3VtZW50CiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcgogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IK
IHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dAord2Via2l0X3dl
Yl92aWV3X2dldF9qc19jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQKIHdl
YmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19ydW5f
amF2YXNjcmlwdF9mcm9tX2dyZXNvdXJjZQpAQCAtMjMyLDYgKzIzMyw3IEBAIHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9yZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZgogd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dAogd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF92YWx1ZQord2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZQog
CiA8U1VCU0VDVElPTiBXZWJLaXRTY3JpcHREaWFsb2c+CiBXZWJLaXRTY3JpcHREaWFsb2cKQEAg
LTE0ODcsNiArMTQ4OSw4IEBAIHdlYmtpdF9mcmFtZV9pc19tYWluX2ZyYW1lCiB3ZWJraXRfZnJh
bWVfZ2V0X3VyaQogd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0CiB3
ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkCit3ZWJr
aXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0RnJhbWVDbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKaW5kZXggMTk1MzMzM2FkYWUuLjFkMWE5OGUx
MTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
IAogI2luY2x1ZGUgIldlYktpdEZyYW1lUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNjcmlw
dFdvcmxkUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC0xMjYsMyArMTI3LDE4IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfZnJhbWVf
Z2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKFdlYktpdEZyCiAKICAgICBy
ZXR1cm4gZnJhbWUtPnByaXYtPndlYkZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3ZWJraXRTY3Jp
cHRXb3JsZEdldEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQpKTsKIH0KKworSlNDQ29u
dGV4dCogd2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0KFdlYktpdEZyYW1lKiBmcmFtZSkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRy
KTsKKworICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGUoZnJhbWUtPnByaXYtPndlYkZy
YW1lLT5qc0NvbnRleHQoKSkubGVha1JlZigpOworfQorCitKU0NDb250ZXh0KiB3ZWJraXRfZnJh
bWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChXZWJLaXRGcmFtZSogZnJhbWUsIFdl
YktpdFNjcmlwdFdvcmxkKiB3b3JsZCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfU0NSSVBUX1dPUkxEKHdvcmxkKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4ganNj
Q29udGV4dEdldE9yQ3JlYXRlKGZyYW1lLT5wcml2LT53ZWJGcmFtZS0+anNDb250ZXh0Rm9yV29y
bGQod2Via2l0U2NyaXB0V29ybGRHZXRJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKHdvcmxkKSkp
LmxlYWtSZWYoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCmluZGV4IDUwNTkzMDBmNzNh
Li4yYzQ1NThhN2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAKQEAg
LTY4LDYgKzY5LDEzIEBAIFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfZnJh
bWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkIChXZWJLaXRGcmFtZSAg
ICAgICAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRTY3JpcHRXb3JsZCAqd29ybGQpOwogCitXRUJLSVRfQVBJIEpTQ0Nv
bnRleHQgKgord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKKworV0VCS0lUX0FQSSBKU0NDb250ZXh0
ICoKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkICAgICAgICAg
KFdlYktpdEZyYW1lICAgICAgICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdFdvcmxkICp3b3JsZCk7CisKIEdf
RU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvRnJhbWVUZXN0LmNwcAppbmRleCBkZTgwMzE0M2RjMS4uYzAwNzA0ZmExOTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCkBAIC01NCw2ICs1NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGZyYW1lKSk7CiAgICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChmcmFtZSkpOwogCisg
ICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9m
cmFtZV9nZXRfanNfY29udGV4dChmcmFtZSkpOworICAgICAgICBnX2Fzc2VydChKU0NfSVNfQ09O
VEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChqc0NvbnRleHQuZ2V0KCkpKTsKKwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGZlMGMyY2M0M2Y0Li41
NDExNDM0ZDRlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlZpZXdUZXN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8Z2xpYi9n
c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKQEAgLTI4Nyw1NCArMjg1
LDY0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdXZWJLaXRMaW5rJykudGl0bGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2Vy
dChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFs
dWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRHVEsrIFRpdGxlIik7CiAKICAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cu
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS5ocmVmOyIsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQo
IWVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iKTsK
IAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLnRl
eHRDb250ZW50IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJl
c3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJl
c2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0
R1RLKyBXZWJzaXRlIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMjU7IiwgJmVycm9yLm91dFB0cigpKTsKICAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAyNSk7CiAKICAgICBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMi41OyIs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMi41
KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImEgPSB0cnVlIiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUo
amF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdf
YXNzZXJ0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRS
ZXN1bHQpKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImEgPSBmYWxzZSIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19h
c3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
ICAgICBnX2Fzc2VydCghV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2
YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IG51bGwiLCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0
X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CiAgICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwo
amF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZnVuY3Rpb24gRm9vKCkgeyBhID0gMjU7IH0g
Rm9vKCk7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3Vs
dCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0KFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQoamF2YXNjcmlwdFJlc3VsdCkpOwogCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5k
V2FpdFVudGlsRmluaXNoZWQoIi9vcmcvd2Via2l0L2dsaWIvdGVzdHMvbGluay10aXRsZS5qcyIs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAg
Z19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUi
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJF
eHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9X
ZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCBkM2ExMmFiZjkzMi4uMmE4MGE5Yzk5ZGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25U
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0
ZW5zaW9uVGVzdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KICNlbmRpZgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
QEAgLTQwNywyNSArNDA4LDE3IEBAIHN0YXRpYyB2b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdlYlBhZ2UqIHdlCiAjZW5kaWYKIH0K
IAotc3RhdGljIEpTVmFsdWVSZWYgZWNob0NhbGxiYWNrKEpTQ29udGV4dFJlZiBqc0NvbnRleHQs
IEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqKQorc3RhdGljIGNoYXIqIGVjaG9DYWxs
YmFjayhjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDw9IDAp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChqc0NvbnRleHQpOwotCi0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZyhBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShqc0NvbnRleHQsIGFyZ3VtZW50c1swXSwgMCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0
cmluZyhqc0NvbnRleHQsIHN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGdfc3RyZHVwKG1lc3Nh
Z2UpOwogfQogCiBzdGF0aWMgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKFdlYktpdFNjcmlwdFdv
cmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSogcGFnZSwgV2ViS2l0RnJhbWUqIGZyYW1lLCBncG9p
bnRlcikKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0ID0gd2Via2l0X2ZyYW1l
X2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwgd29ybGQpOwot
ICAgIGdfYXNzZXJ0KGpzQ29udGV4dCk7Ci0gICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0g
SlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGpzQ29udGV4dCk7Ci0gICAgZ19hc3NlcnQoZ2xvYmFs
T2JqZWN0KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmdW5jdGlvbk5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJlY2hvIikpOwotICAgIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soanNDb250ZXh0
LCBmdW5jdGlvbk5hbWUuZ2V0KCksIGVjaG9DYWxsYmFjayk7Ci0gICAgSlNPYmplY3RTZXRQcm9w
ZXJ0eShqc0NvbnRleHQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25OYW1lLmdldCgpLCBmdW5jdGlv
biwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSwgMCk7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdS
ZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdv
cmxkKSk7CisgICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7Cisg
ICAgR1JlZlB0cjxKU0NWYWx1ZT4gZnVuY3Rpb24gPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25ld19m
dW5jdGlvbihqc0NvbnRleHQuZ2V0KCksICJlY2hvIiwgR19DQUxMQkFDSyhlY2hvQ2FsbGJhY2sp
LCBHX1RZUEVfU1RSSU5HLCAxLCBHX1RZUEVfU1RSSU5HKSk7CisgICAganNjX2NvbnRleHRfc2V0
X3ZhbHVlKGpzQ29udGV4dC5nZXQoKSwgImVjaG8iLCBmdW5jdGlvbi5nZXQoKSk7CiB9CiAKIHN0
YXRpYyBXZWJLaXRXZWJQYWdlKiBnZXRXZWJQYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uLCB1aW50NjRfdCBwYWdlSUQsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbikK
QEAgLTQ3Myw5ICs0NjYsOCBAQCBzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBzZW5kZXIsCiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0U2NyaXB0V29ybGQ+IHdvcmxkID0gYWRvcHRHUmVmKHdlYmtpdF9zY3JpcHRfd29y
bGRfbmV3KCkpOwogICAgICAgICBnX2Fzc2VydCh3ZWJraXRfc2NyaXB0X3dvcmxkX2dldF9kZWZh
dWx0KCkgIT0gd29ybGQuZ2V0KCkpOwogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSk7Ci0gICAgICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBqc0NvbnRleHQgPSB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZC5nZXQoKSk7Ci0gICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBqc1NjcmlwdChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
c2NyaXB0KSk7Ci0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoanNDb250ZXh0LCBqc1NjcmlwdC5n
ZXQoKSwgMCwgMCwgMCwgMCk7CisgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0
ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxk
KGZyYW1lLCB3b3JsZC5nZXQoKSkpOworICAgICAgICBqc2NfY29udGV4dF9ldmFsdWF0ZShqc0Nv
bnRleHQuZ2V0KCksIHNjcmlwdCk7CiAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9y
ZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgMCk7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1l
dGhvZE5hbWUsICJBYm9ydFByb2Nlc3MiKSkgewogICAgICAgICBhYm9ydCgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5j
cHAKaW5kZXggYmMwNTg2OTNkNzYuLjEzNzU4MTRjODMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKQEAgLTIw
LDggKzIwLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzVGVz
dC5oIgogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8anNjL2pzYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1VuaXF1ZVB0ci5oPgpAQCAtNTQsMzggKzU0LDI2IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9j
ZXNzVGVzdD4gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRlc3ROYW1lKQog
ICAgIHJldHVybiB0ZXN0c01hcCgpLmdldCh0ZXN0TmFtZSkoKTsKIH0KIAotc3RhdGljIEpTVmFs
dWVSZWYgcnVuVGVzdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCitzdGF0aWMgZ2Jvb2xl
YW4gcnVuVGVzdChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBjaGFyKiB0ZXN0UGF0aCkK
IHsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nVmFsdWUoQWRvcHQsIEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBudWxscHRyKSk7Ci0gICAgZ19h
c3NlcnQoc3RyaW5nVmFsdWUpOwotICAgIHNpemVfdCB0ZXN0UGF0aExlbmd0aCA9IEpTU3RyaW5n
R2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdWYWx1ZS5nZXQoKSk7Ci0gICAgR1VuaXF1
ZVB0cjxjaGFyPiB0ZXN0UGF0aChzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2ModGVzdFBhdGhM
ZW5ndGgpKSk7Ci0gICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmdWYWx1ZS5nZXQoKSwg
dGVzdFBhdGguZ2V0KCksIHRlc3RQYXRoTGVuZ3RoKTsKLQotICAgIFdlYktpdFdlYlBhZ2UqIHdl
YlBhZ2UgPSBXRUJLSVRfV0VCX1BBR0UoSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
ICAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSkpOworICAgIGdfYXNzZXJ0
KHRlc3RQYXRoKTsKICAgICAvLyBUZXN0IC9XZWJLaXRET01Ob2RlL2RvbS1jYWNoZSBpcyBhbiBl
eGNlcHRpb24sIGJlY2F1c2UgaXQncyBjYWxsZWQgMyB0aW1lcywgc28KICAgICAvLyB0aGUgV2Vi
UGFnZSBpcyBkZXN0cm95ZWQgYWZ0ZXIgdGhlIHRoaXJkIHRpbWUuCi0gICAgaWYgKGdfc3RyX2Vx
dWFsKHRlc3RQYXRoLmdldCgpLCAiV2ViS2l0RE9NTm9kZS9kb20tY2FjaGUiKSkgeworICAgIGlm
IChnX3N0cl9lcXVhbCh0ZXN0UGF0aCwgIldlYktpdERPTU5vZGUvZG9tLWNhY2hlIikpIHsKICAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGRvbUNhY2hlVGVzdFJ1bkNvdW50ID0gMDsKICAgICAgICAg
aWYgKCsrZG9tQ2FjaGVUZXN0UnVuQ291bnQgPT0gMykKICAgICAgICAgICAgIFdlYlByb2Nlc3NU
ZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYlBh
Z2UpKTsKICAgICB9IGVsc2UKICAgICAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViUGFnZSkpOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShT
dHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoLmdldCgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtl
Qm9vbGVhbihjb250ZXh0LCB0ZXN0LT5ydW5UZXN0KGdfc3RycnN0cih0ZXN0UGF0aC5nZXQoKSwg
Ii8iKSArIDEsIHdlYlBhZ2UpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
IHRlc3QgPSBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgodGVzdFBhdGgp
KTsKKyAgICByZXR1cm4gdGVzdC0+cnVuVGVzdChnX3N0cnJzdHIodGVzdFBhdGgsICIvIikgKyAx
LCB3ZWJQYWdlKTsKIH0KIAotc3RhdGljIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24gd2ViUHJvY2Vz
c1Rlc3RSdW5uZXJTdGF0aWNGdW5jdGlvbnNbXSA9Ci17Ci0gICAgeyAicnVuVGVzdCIsIHJ1blRl
c3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKLSAgICB7IG51bGxwdHIsIG51bGxwdHIsIDAgfQotfTsKLQotc3RhdGljIHZv
aWQgd2ViUHJvY2Vzc1Rlc3RSdW5uZXJGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCitzdGF0
aWMgdm9pZCB3ZWJQcm9jZXNzVGVzdFJ1bm5lckZpbmFsaXplKFdlYktpdFdlYlBhZ2UqIHdlYlBh
Z2UpCiB7Ci0gICAgZ19vYmplY3RfdW5yZWYoSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwor
ICAgIGdfb2JqZWN0X3VucmVmKHdlYlBhZ2UpOwogCiAgICAgaWYgKHNfd2F0Y2hlZE9iamVjdHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDAsMTkgKzg4LDExIEBAIHN0YXRpYyB2
b2lkIHdlYlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogCiBz
dGF0aWMgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkQ2FsbGJhY2soV2ViS2l0U2NyaXB0V29ybGQq
IHdvcmxkLCBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJLaXRGcmFtZSogZnJhbWUsIFdlYktp
dFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250
ZXh0ID0gd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93b3Js
ZChmcmFtZSwgd29ybGQpOwotICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4
dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKLQotICAgIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNz
RGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIGNsYXNzRGVmaW5pdGlv
bi5jbGFzc05hbWUgPSAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiOwotICAgIGNsYXNzRGVmaW5pdGlv
bi5zdGF0aWNGdW5jdGlvbnMgPSB3ZWJQcm9jZXNzVGVzdFJ1bm5lclN0YXRpY0Z1bmN0aW9uczsK
LSAgICBjbGFzc0RlZmluaXRpb24uZmluYWxpemUgPSB3ZWJQcm9jZXNzVGVzdFJ1bm5lckZpbmFs
aXplOwotCi0gICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZp
bml0aW9uKTsKLSAgICBKU09iamVjdFJlZiBjbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250
ZXh0LCBqc0NsYXNzLCBnX29iamVjdF9yZWYod2ViUGFnZSkpOwotICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBwcm9wZXJ0eVN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIldlYlByb2Nlc3NUZXN0UnVubmVyIikpOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHko
Y29udGV4dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eVN0cmluZy5nZXQoKSwgY2xhc3NPYmplY3Qs
IGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7Ci0gICAgSlNDbGFzc1JlbGVhc2Uo
anNDbGFzcyk7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKHdl
YmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZCkp
OworICAgIGF1dG8qIGpzQ2xhc3MgPSBqc2NfY29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0
LmdldCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCBudWxscHRyLCByZWludGVycHJldF9jYXN0
PEdEZXN0cm95Tm90aWZ5Pih3ZWJQcm9jZXNzVGVzdFJ1bm5lckZpbmFsaXplKSk7CisgICAganNj
X2NsYXNzX2FkZF9tZXRob2QoanNDbGFzcywgInJ1blRlc3QiLCBHX0NBTExCQUNLKHJ1blRlc3Qp
LCBHX1RZUEVfQk9PTEVBTiwgMSwgR19UWVBFX1NUUklORyk7CisgICAgR1JlZlB0cjxKU0NWYWx1
ZT4gdGVzdFJ1bm5lciA9IGFkb3B0R1JlZihqc2NfdmFsdWVfbmV3X29iamVjdChjb250ZXh0Lmdl
dCgpLCBnX29iamVjdF9yZWYod2ViUGFnZSksIGpzQ2xhc3MpKTsKKyAgICBqc2NfY29udGV4dF9z
ZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgIldlYlByb2Nlc3NUZXN0UnVubmVyIiwgdGVzdFJ1bm5l
ci5nZXQoKSk7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0
aWFsaXplKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDg3ODIzZmE3
OGJlLi5kZjkxY2MxNTliMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KIAogYm9vbCBXZWJWaWV3
VGVzdDo6c2hvdWxkSW5pdGlhbGl6ZVdlYlZpZXdJbkNvbnN0cnVjdG9yID0gdHJ1ZTsKIApAQCAt
MzEyLDY3ICszMTIsNDIgQEAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1
bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXMKICAgICByZXR1cm4gbV9q
YXZhc2NyaXB0UmVzdWx0OwogfQogCi1zdGF0aWMgY2hhcioganNWYWx1ZVRvQ1N0cmluZyhKU0ds
b2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICBnX2Fzc2Vy
dCh2YWx1ZSk7Ci0gICAgZ19hc3NlcnQoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSk7
Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nVmFsdWUoQWRvcHQsIEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsKLSAgICBnX2Fzc2VydChzdHJpbmdW
YWx1ZSk7Ci0KLSAgICBzaXplX3QgY1N0cmluZ0xlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShzdHJpbmdWYWx1ZS5nZXQoKSk7Ci0gICAgY2hhciogY1N0cmluZyA9IHN0
YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyhjU3RyaW5nTGVuZ3RoKSk7Ci0gICAgSlNTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhzdHJpbmdWYWx1ZS5nZXQoKSwgY1N0cmluZywgY1N0cmluZ0xlbmd0aCk7
Ci0gICAgcmV0dXJuIGNTdHJpbmc7Ci19Ci0KIGNoYXIqIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9DU3RyaW5nKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQp
CiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0
KGNvbnRleHQpOwotICAgIHJldHVybiBqc1ZhbHVlVG9DU3RyaW5nKGNvbnRleHQsIHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGF1dG8q
IHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0
UmVzdWx0KTsKKyAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICBnX2Fzc2Vy
dChqc2NfdmFsdWVfaXNfc3RyaW5nKHZhbHVlKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV90b19z
dHJpbmcodmFsdWUpOwogfQogCiBkb3VibGUgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b051bWJlcihXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dl
dF9nbG9iYWxfY29udGV4dChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0
KTsKLSAgICBKU1ZhbHVlUmVmIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92
YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCh2YWx1ZSk7Ci0gICAgZ19hc3Nl
cnQoSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHZhbHVlKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCAwKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19h
c3NlcnQoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX251
bWJlcih2YWx1ZSkpOworICAgIHJldHVybiBqc2NfdmFsdWVfdG9fZG91YmxlKHZhbHVlKTsKIH0K
IAogYm9vbCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBjb250ZXh0ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChq
YXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICBKU1ZhbHVlUmVm
IHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShqYXZhc2NyaXB0UmVz
dWx0KTsKLSAgICBnX2Fzc2VydCh2YWx1ZSk7Ci0gICAgZ19hc3NlcnQoSlNWYWx1ZUlzQm9vbGVh
bihjb250ZXh0LCB2YWx1ZSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4
dCwgdmFsdWUpOworICAgIGF1dG8qIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dl
dF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUo
dmFsdWUpKTsKKyAgICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfYm9vbGVhbih2YWx1ZSkpOworICAg
IHJldHVybiBqc2NfdmFsdWVfdG9fYm9vbGVhbih2YWx1ZSk7CiB9CiAKIGJvb2wgV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNj
cmlwdFJlc3VsdCkKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0g
ICAgZ19hc3NlcnQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQo
dmFsdWUpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpOworICAg
IGF1dG8qIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZh
c2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICBy
ZXR1cm4ganNjX3ZhbHVlX2lzX251bGwodmFsdWUpOwogfQogCiBib29sIFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNj
cmlwdFJlc3VsdCkKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0g
ICAgZ19hc3NlcnQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQo
dmFsdWUpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSk7
CisgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVl
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOwor
ICAgIHJldHVybiBqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHZhbHVlKTsKIH0KIAogI2lmIFBMQVRG
T1JNKEdUSykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335109</attachid>
            <date>2018-03-06 09:53:29 -0800</date>
            <delta_ts>2018-03-06 10:00:49 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wk2-jsc.diff</filename>
            <type>text/plain</type>
            <size>32225</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmgKaW5kZXggMjAyZTY4NmJm
NDkuLmUxNjM5YzRhMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ2xhc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xh
c3MuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAg
Ki8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01Q
SUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0Nf
Q09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3IgIk9u
bHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAppbmRleCAzNzgyZjBlOWMx
MC4uNWNhZTA4YmJjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0Nv
bnRleHQuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19D
T01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChK
U0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3Ig
Ik9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKaW5kZXggNDJh
OGQ4MDg4MmQuLjlhNDQ5MmRkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ0V4Y2VwdGlvbi5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYm
ICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElP
TikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmgKaW5kZXgg
YzAyNDRmNmZiZWMuLjRiYjk4NGI1Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDVmFsdWUuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KEpTQ19DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChKU0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAj
ZXJyb3IgIk9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVh
bE1hY2hpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFj
aGluZS5oCmluZGV4IDI1YzY0M2UwOWIwLi4wODNjNmE5MzQyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKQEAgLTE3LDcgKzE3
LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5l
ZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pCisjaWYgIWRl
ZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKSAmJiAh
ZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQogI2Vycm9yICJPbmx5IDxqc2MvanNjLmg+IGNh
biBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggZGM2YjMwNjZjM2EuLjYxNWFhN2ExODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTM2Niw2ICszNjYsOCBAQCBsaXN0KElOU0VSVCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UyAwCiApCiAKIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7
Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvIgorICAgICIke0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
UGx1Z2luUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9zb3VwIgpAQCAtNzYzLDYgKzc2NSw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElP
TikKICAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJE
SU5HX0hFQURFUlNfRElSfQorICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9
L0phdmFTY3JpcHRDb3JlL2dsaWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNf
V0VCS0lUMkdUS19ESVJ9CiAgICAgICAgICAgICAke1dlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURF
UlN9CiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi8qLmNwcApAQCAt
ODA3LDYgKzgxMCw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKICAgICAgICAgICAgIC1J
JHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkke0RFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfQor
ICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2ds
aWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19ESVJ9CiAg
ICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRVhURU5TSU9OX0RJ
Un0KICAgICAgICAgICAgIC1JJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEphdmFzY3JpcHRSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5jcHAKaW5kZXggMDEwODA1YzM5MGEuLjdiMjVkNjg4
Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRK
YXZhc2NyaXB0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcApAQCAtMjIsMjEgKzIyLDE5IEBACiAKICNpbmNs
dWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8anNjL0pT
Q1ZhbHVlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogc3RydWN0
IF9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0IHsKLSAgICBfV2ViS2l0SmF2YXNjcmlwdFJlc3VsdChK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLSAgICAgICAgOiBqYXZhc2NyaXB0R2xvYmFsQ29u
dGV4dChqc0NvbnRleHQpCi0gICAgICAgICwgcmVmZXJlbmNlQ291bnQoMSkKKyAgICBfV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdChHUmVmUHRyPEpTQ0NvbnRleHQ+JiYganNDb250ZXh0LCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAgICAgICAg
OiBqc1ZhbHVlKGpzY0NvbnRleHRHZXRPckNyZWF0ZVZhbHVlKGpzQ29udGV4dC5nZXQoKSwgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKGpzY0NvbnRleHRHZXRKU0NvbnRleHQoanND
b250ZXh0LmdldCgpKSwgbnVsbHB0cikpKQogICAgIHsKLSAgICAgICAgdmFsdWUgPSBzZXJpYWxp
emVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoamF2YXNjcmlwdEdsb2JhbENvbnRleHQuZ2V0KCks
IG51bGxwdHIpOwogICAgIH0KIAotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4g
amF2YXNjcmlwdEdsb2JhbENvbnRleHQ7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZTsKKyAgICBHUmVm
UHRyPEpTQ1ZhbHVlPiBqc1ZhbHVlOwogCi0gICAgaW50IHJlZmVyZW5jZUNvdW50OworICAgIGlu
dCByZWZlcmVuY2VDb3VudCB7IDEgfTsKIH07CiAKIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCwgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2YXNj
cmlwdF9yZXN1bHRfcmVmLCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYpCkBAIC00NCw3
ICs0Miw3IEBAIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCwgd2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiB3ZWJraXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKEpTR2xvYmFsQ29udGV4dFJlZiBqYXZhc2Ny
aXB0R2xvYmFsQ29udGV4dCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUpCiB7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQoamF2YXNjcmlwdEdsb2JhbENvbnRleHQsIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CisgICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3JpcHRSZXN1bHQoanNjQ29udGV4dEdldE9y
Q3JlYXRlKGphdmFzY3JpcHRHbG9iYWxDb250ZXh0KSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC05MSw3ICs4OSw4IEBAIHZvaWQgd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X3VucmVmKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQpCiAgKi8KIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2dsb2JhbF9jb250ZXh0KFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1
bHQpCiB7Ci0gICAgcmV0dXJuIGphdmFzY3JpcHRSZXN1bHQtPmphdmFzY3JpcHRHbG9iYWxDb250
ZXh0LmdldCgpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGphdmFzY3JpcHRSZXN1bHQsIG51
bGxwdHIpOworICAgIHJldHVybiBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGpzY192YWx1ZV9nZXRf
Y29udGV4dChqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVlLmdldCgpKSk7CiB9CiAKIC8qKgpAQCAt
MTA1LDUgKzEwNCwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X2phdmFzY3JpcHRfcmVz
dWx0X2dldF9nbG9iYWxfY29udGV4dChXZWJLaXRKYXZhc2NyaXB0UgogICovCiBKU1ZhbHVlUmVm
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCkKIHsKLSAgICByZXR1cm4gamF2YXNjcmlwdFJlc3VsdC0+dmFs
dWU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoamF2YXNjcmlwdFJlc3VsdCwgbnVsbHB0cik7
CisgICAgcmV0dXJuIGpzY1ZhbHVlR2V0SlNWYWx1ZShqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVl
LmdldCgpKTsKK30KKworSlNDVmFsdWUqIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNf
dmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChqYXZhc2NyaXB0UmVzdWx0LCBudWxscHRyKTsKKyAgICByZXR1
cm4gamF2YXNjcmlwdFJlc3VsdC0+anNWYWx1ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTFjY2Q3NzU1
ZjIuLjhlMzFjZjM5YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIldlYktp
dFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0
ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CkBAIC0yMjgsNyArMjI5LDcgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb3Vz
ZVRhcmdldE1vZGlmaWVyczsKIAogICAgIEdSZWZQdHI8V2ViS2l0RmluZENvbnRyb2xsZXI+IGZp
bmRDb250cm9sbGVyOwotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4gamF2YXNj
cmlwdEdsb2JhbENvbnRleHQ7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQ7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiBtYWluUmVzb3VyY2U7CiAgICAgTG9hZGlu
Z1Jlc291cmNlc01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAtMzI2MSwxMiArMzI2MiwxNyBA
QCBXZWJLaXRGaW5kQ29udHJvbGxlciogd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xs
ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldwogICogICAgdGhlIHJlc3VsdCB2YWx1ZXMgb2Ygc2Ny
aXB0cy4KICAqLwogSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNj
cmlwdF9nbG9iYWxfY29udGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVy
biBqc2NDb250ZXh0R2V0SlNDb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4dCh3
ZWJWaWV3KSk7Cit9CisKK0pTQ0NvbnRleHQqIHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICBpZiAoIXdlYlZpZXct
PnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KQotICAgICAgICB3ZWJWaWV3LT5wcml2LT5q
YXZhc2NyaXB0R2xvYmFsQ29udGV4dCA9IGFkb3B0KEpTR2xvYmFsQ29udGV4dENyZWF0ZShudWxs
cHRyKSk7Ci0gICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0
LmdldCgpOworICAgIGlmICghd2ViVmlldy0+cHJpdi0+anNDb250ZXh0KQorICAgICAgICB3ZWJW
aWV3LT5wcml2LT5qc0NvbnRleHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfbmV3KCkpOworICAg
IHJldHVybiB3ZWJWaWV3LT5wcml2LT5qc0NvbnRleHQuZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHdrU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBl
eGNlcHRpb25EZXRhaWxzLCBHVGFzayogdGFzaykKQEAgLTMzNDMsOCArMzM0OSw3IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyKiBzY3JpcHQsCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciAgICAgIHVzZXJfZGF0YSkKICAqIHsKICAqICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
ICpqc19yZXN1bHQ7Ci0gKiAgICAgSlNWYWx1ZVJlZiAgICAgICAgICAgICAgdmFsdWU7Ci0gKiAg
ICAgSlNHbG9iYWxDb250ZXh0UmVmICAgICAgY29udGV4dDsKKyAqICAgICBKU0NWYWx1ZSAgICAg
ICAgICAgICAgICp2YWx1ZTsKICAqICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICplcnJvciA9
IE5VTEw7CiAgKgogICogICAgIGpzX3Jlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNj
cmlwdF9maW5pc2ggKFdFQktJVF9XRUJfVklFVyAob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3IpOwpA
QCAtMzM1NCwxOSArMzM1OSwxNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICogICAgICAg
ICByZXR1cm47CiAgKiAgICAgfQogICoKLSAqICAgICBjb250ZXh0ID0gd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dCAoanNfcmVzdWx0KTsKLSAqICAgICB2YWx1ZSA9
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgKGpzX3Jlc3VsdCk7Ci0gKiAgICAg
aWYgKEpTVmFsdWVJc1N0cmluZyAoY29udGV4dCwgdmFsdWUpKSB7Ci0gKiAgICAgICAgIEpTU3Ry
aW5nUmVmIGpzX3N0cl92YWx1ZTsKLSAqICAgICAgICAgZ2NoYXIgICAgICAqc3RyX3ZhbHVlOwot
ICogICAgICAgICBnc2l6ZSAgICAgICBzdHJfbGVuZ3RoOwotICoKLSAqICAgICAgICAganNfc3Ry
X3ZhbHVlID0gSlNWYWx1ZVRvU3RyaW5nQ29weSAoY29udGV4dCwgdmFsdWUsIE5VTEwpOwotICog
ICAgICAgICBzdHJfbGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplIChq
c19zdHJfdmFsdWUpOwotICogICAgICAgICBzdHJfdmFsdWUgPSAoZ2NoYXIgKilnX21hbGxvYyAo
c3RyX2xlbmd0aCk7Ci0gKiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcgKGpzX3N0cl92
YWx1ZSwgc3RyX3ZhbHVlLCBzdHJfbGVuZ3RoKTsKLSAqICAgICAgICAgSlNTdHJpbmdSZWxlYXNl
IChqc19zdHJfdmFsdWUpOwotICogICAgICAgICBnX3ByaW50ICgiU2NyaXB0IHJlc3VsdDogJXNc
biIsIHN0cl92YWx1ZSk7CisgKiAgICAgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2pzX3ZhbHVlIChqc19yZXN1bHQpOworICogICAgIGlmIChqc2NfdmFsdWVfaXNfc3RyaW5n
ICh2YWx1ZSkpIHsKKyAqICAgICAgICAgSlNDRXhjZXB0aW9uICpleGNlcHRpb247CisgKiAgICAg
ICAgIGdjaGFyICAgICAgICAqc3RyX3ZhbHVlOworICoKKyAqICAgICAgICAgc3RyX3ZhbHVlID0g
anNjX3ZhbHVlX3RvX3N0cmluZyAodmFsdWUpOworICogICAgICAgICBleGNlcHRpb24gPSBqc2Nf
Y29udGV4dF9nZXRfZXhjZXB0aW9uIChqc2NfdmFsdWVfZ2V0X2NvbnRleHQgKHZhbHVlKSk7Cisg
KiAgICAgICAgIGlmIChleGNlcHRpb24pCisgKiAgICAgICAgICAgICBnX3dhcm5pbmcgKCJFcnJv
ciBydW5uaW5nIGphdmFzY3JpcHQ6ICVzIiwganNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZSAoZXhj
ZXB0aW9uKSk7CisgKiAgICAgICAgIGVsc2UKKyAqICAgICAgICAgICAgIGdfcHJpbnQgKCJTY3Jp
cHQgcmVzdWx0OiAlc1xuIiwgc3RyX3ZhbHVlKTsKICAqICAgICAgICAgZ19mcmVlIChzdHJfdmFs
dWUpOwogICogICAgIH0gZWxzZSB7CiAgKiAgICAgICAgIGdfd2FybmluZyAoIkVycm9yIHJ1bm5p
bmcgamF2YXNjcmlwdDogdW5leHBlY3RlZCByZXR1cm4gdmFsdWUiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgK
aW5kZXggNWE5ZjczODlmNDQuLmY4YTVmZmY2MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaApAQCAtMjUs
NiArMjUsNyBAQAogI2RlZmluZSBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0X2gKIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogCkBA
IC01MCw2ICs1MSw5IEBAIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRl
eHQgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiBXRUJLSVRfQVBJIEpTVmFs
dWVSZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgICAgICAgICAgKFdlYktp
dEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiAKK1dFQktJVF9BUEkgSlNDVmFsdWUgKgor
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZSAgICAgICAoV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGMzNjk2
NTNhNDEyLi4wYmVkY2I3NGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgV2ViS2l0V2Vi
Vmlld19oCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxq
c2MvanNjLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgpAQCAtNDMzLDYgKzQzNCw5IEBAIHdlYmtpdF93ZWJf
dmlld19nZXRfZmluZF9jb250cm9sbGVyICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcK
IFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFz
Y3JpcHRfZ2xvYmFsX2NvbnRleHQgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgSlNDQ29udGV4dCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2pzX2NvbnRleHQgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpzY3JpcHQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAyMDg5NmYzYjYwZi4uYjI2YjdlMTRjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMjA1LDYgKzIwNSw3IEBAIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZF93aXRoX2FyZ3VtZW50CiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcgogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IK
IHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dAord2Via2l0X3dl
Yl92aWV3X2dldF9qc19jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQKIHdl
YmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19ydW5f
amF2YXNjcmlwdF9mcm9tX2dyZXNvdXJjZQpAQCAtMjMyLDYgKzIzMyw3IEBAIHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9yZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZgogd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dAogd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF92YWx1ZQord2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZQog
CiA8U1VCU0VDVElPTiBXZWJLaXRTY3JpcHREaWFsb2c+CiBXZWJLaXRTY3JpcHREaWFsb2cKQEAg
LTE0ODcsNiArMTQ4OSw4IEBAIHdlYmtpdF9mcmFtZV9pc19tYWluX2ZyYW1lCiB3ZWJraXRfZnJh
bWVfZ2V0X3VyaQogd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0CiB3
ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkCit3ZWJr
aXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0RnJhbWVDbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKaW5kZXggMTk1MzMzM2FkYWUuLjFkMWE5OGUx
MTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
IAogI2luY2x1ZGUgIldlYktpdEZyYW1lUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNjcmlw
dFdvcmxkUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC0xMjYsMyArMTI3LDE4IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfZnJhbWVf
Z2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKFdlYktpdEZyCiAKICAgICBy
ZXR1cm4gZnJhbWUtPnByaXYtPndlYkZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3ZWJraXRTY3Jp
cHRXb3JsZEdldEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQpKTsKIH0KKworSlNDQ29u
dGV4dCogd2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0KFdlYktpdEZyYW1lKiBmcmFtZSkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRy
KTsKKworICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGUoZnJhbWUtPnByaXYtPndlYkZy
YW1lLT5qc0NvbnRleHQoKSkubGVha1JlZigpOworfQorCitKU0NDb250ZXh0KiB3ZWJraXRfZnJh
bWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChXZWJLaXRGcmFtZSogZnJhbWUsIFdl
YktpdFNjcmlwdFdvcmxkKiB3b3JsZCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfU0NSSVBUX1dPUkxEKHdvcmxkKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4ganNj
Q29udGV4dEdldE9yQ3JlYXRlKGZyYW1lLT5wcml2LT53ZWJGcmFtZS0+anNDb250ZXh0Rm9yV29y
bGQod2Via2l0U2NyaXB0V29ybGRHZXRJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKHdvcmxkKSkp
LmxlYWtSZWYoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCmluZGV4IDUwNTkzMDBmNzNh
Li4yYzQ1NThhN2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAKQEAg
LTY4LDYgKzY5LDEzIEBAIFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfZnJh
bWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkIChXZWJLaXRGcmFtZSAg
ICAgICAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRTY3JpcHRXb3JsZCAqd29ybGQpOwogCitXRUJLSVRfQVBJIEpTQ0Nv
bnRleHQgKgord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKKworV0VCS0lUX0FQSSBKU0NDb250ZXh0
ICoKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkICAgICAgICAg
KFdlYktpdEZyYW1lICAgICAgICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdFdvcmxkICp3b3JsZCk7CisKIEdf
RU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvRnJhbWVUZXN0LmNwcAppbmRleCBkZTgwMzE0M2RjMS4uYzAwNzA0ZmExOTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCkBAIC01NCw2ICs1NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGZyYW1lKSk7CiAgICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChmcmFtZSkpOwogCisg
ICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9m
cmFtZV9nZXRfanNfY29udGV4dChmcmFtZSkpOworICAgICAgICBnX2Fzc2VydChKU0NfSVNfQ09O
VEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChqc0NvbnRleHQuZ2V0KCkpKTsKKwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGZlMGMyY2M0M2Y0Li41
NDExNDM0ZDRlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlZpZXdUZXN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8Z2xpYi9n
c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKQEAgLTI4Nyw1NCArMjg1
LDY0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdXZWJLaXRMaW5rJykudGl0bGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2Vy
dChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFs
dWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRHVEsrIFRpdGxlIik7CiAKICAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cu
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS5ocmVmOyIsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQo
IWVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iKTsK
IAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLnRl
eHRDb250ZW50IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJl
c3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJl
c2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0
R1RLKyBXZWJzaXRlIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMjU7IiwgJmVycm9yLm91dFB0cigpKTsKICAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAyNSk7CiAKICAgICBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMi41OyIs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMi41
KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImEgPSB0cnVlIiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUo
amF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdf
YXNzZXJ0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRS
ZXN1bHQpKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImEgPSBmYWxzZSIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19h
c3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
ICAgICBnX2Fzc2VydCghV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2
YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IG51bGwiLCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0
X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CiAgICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwo
amF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZnVuY3Rpb24gRm9vKCkgeyBhID0gMjU7IH0g
Rm9vKCk7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3Vs
dCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0KFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQoamF2YXNjcmlwdFJlc3VsdCkpOwogCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5k
V2FpdFVudGlsRmluaXNoZWQoIi9vcmcvd2Via2l0L2dsaWIvdGVzdHMvbGluay10aXRsZS5qcyIs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAg
Z19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUi
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJF
eHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9X
ZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCBkM2ExMmFiZjkzMi4uMWFlMTk3MDk2MmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25U
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0
ZW5zaW9uVGVzdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KICNlbmRpZgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
QEAgLTQwNywyNSArNDA4LDE3IEBAIHN0YXRpYyB2b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdlYlBhZ2UqIHdlCiAjZW5kaWYKIH0K
IAotc3RhdGljIEpTVmFsdWVSZWYgZWNob0NhbGxiYWNrKEpTQ29udGV4dFJlZiBqc0NvbnRleHQs
IEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqKQorc3RhdGljIGNoYXIqIGVjaG9DYWxs
YmFjayhjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDw9IDAp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChqc0NvbnRleHQpOwotCi0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZyhBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShqc0NvbnRleHQsIGFyZ3VtZW50c1swXSwgMCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0
cmluZyhqc0NvbnRleHQsIHN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGdfc3RyZHVwKG1lc3Nh
Z2UpOwogfQogCiBzdGF0aWMgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKFdlYktpdFNjcmlwdFdv
cmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSogcGFnZSwgV2ViS2l0RnJhbWUqIGZyYW1lLCBncG9p
bnRlcikKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0ID0gd2Via2l0X2ZyYW1l
X2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwgd29ybGQpOwot
ICAgIGdfYXNzZXJ0KGpzQ29udGV4dCk7Ci0gICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0g
SlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGpzQ29udGV4dCk7Ci0gICAgZ19hc3NlcnQoZ2xvYmFs
T2JqZWN0KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmdW5jdGlvbk5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJlY2hvIikpOwotICAgIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soanNDb250ZXh0
LCBmdW5jdGlvbk5hbWUuZ2V0KCksIGVjaG9DYWxsYmFjayk7Ci0gICAgSlNPYmplY3RTZXRQcm9w
ZXJ0eShqc0NvbnRleHQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25OYW1lLmdldCgpLCBmdW5jdGlv
biwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSwgMCk7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdS
ZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdv
cmxkKSk7CisgICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7Cisg
ICAgR1JlZlB0cjxKU0NWYWx1ZT4gZnVuY3Rpb24gPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25ld19m
dW5jdGlvbihqc0NvbnRleHQuZ2V0KCksICJlY2hvIiwgR19DQUxMQkFDSyhlY2hvQ2FsbGJhY2sp
LCBHX1RZUEVfU1RSSU5HLCAxLCBHX1RZUEVfU1RSSU5HKSk7CisgICAganNjX2NvbnRleHRfc2V0
X3ZhbHVlKGpzQ29udGV4dC5nZXQoKSwgImVjaG8iLCBmdW5jdGlvbi5nZXQoKSk7CiB9CiAKIHN0
YXRpYyBXZWJLaXRXZWJQYWdlKiBnZXRXZWJQYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uLCB1aW50NjRfdCBwYWdlSUQsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbikK
QEAgLTQ3Myw5ICs0NjYsOCBAQCBzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBzZW5kZXIsCiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0U2NyaXB0V29ybGQ+IHdvcmxkID0gYWRvcHRHUmVmKHdlYmtpdF9zY3JpcHRfd29y
bGRfbmV3KCkpOwogICAgICAgICBnX2Fzc2VydCh3ZWJraXRfc2NyaXB0X3dvcmxkX2dldF9kZWZh
dWx0KCkgIT0gd29ybGQuZ2V0KCkpOwogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSk7Ci0gICAgICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBqc0NvbnRleHQgPSB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZC5nZXQoKSk7Ci0gICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBqc1NjcmlwdChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
c2NyaXB0KSk7Ci0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoanNDb250ZXh0LCBqc1NjcmlwdC5n
ZXQoKSwgMCwgMCwgMCwgMCk7CisgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0
ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxk
KGZyYW1lLCB3b3JsZC5nZXQoKSkpOworICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQg
PSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoanNDb250ZXh0LmdldCgpLCBzY3JpcHQp
KTsKICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0
aW9uLCAwKTsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkFib3J0UHJv
Y2VzcyIpKSB7CiAgICAgICAgIGFib3J0KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcAppbmRleCBiYzA1ODY5M2Q3
Ni4uMTM3NTgxNGM4MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcApAQCAtMjAsOCArMjAsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCiAKLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNs
dWRlIDxqc2MvanNjLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC01
NCwzOCArNTQsMjYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBXZWJQcm9jZXNz
VGVzdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpCiAgICAgcmV0dXJuIHRlc3RzTWFw
KCkuZ2V0KHRlc3ROYW1lKSgpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBydW5UZXN0KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRpYyBnYm9vbGVhbiBydW5UZXN0KFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IGNoYXIqIHRlc3RQYXRoKQogewotICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdHJpbmdWYWx1ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBhcmd1bWVudHNbMF0sIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydChzdHJpbmdWYWx1ZSk7
Ci0gICAgc2l6ZV90IHRlc3RQYXRoTGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHN0cmluZ1ZhbHVlLmdldCgpKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IHRlc3RQYXRo
KHN0YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyh0ZXN0UGF0aExlbmd0aCkpKTsKLSAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZ1ZhbHVlLmdldCgpLCB0ZXN0UGF0aC5nZXQoKSwgdGVz
dFBhdGhMZW5ndGgpOwotCi0gICAgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJf
UEFHRShKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwogICAgIGdfYXNzZXJ0KFdFQktJ
VF9JU19XRUJfUEFHRSh3ZWJQYWdlKSk7CisgICAgZ19hc3NlcnQodGVzdFBhdGgpOwogICAgIC8v
IFRlc3QgL1dlYktpdERPTU5vZGUvZG9tLWNhY2hlIGlzIGFuIGV4Y2VwdGlvbiwgYmVjYXVzZSBp
dCdzIGNhbGxlZCAzIHRpbWVzLCBzbwogICAgIC8vIHRoZSBXZWJQYWdlIGlzIGRlc3Ryb3llZCBh
ZnRlciB0aGUgdGhpcmQgdGltZS4KLSAgICBpZiAoZ19zdHJfZXF1YWwodGVzdFBhdGguZ2V0KCks
ICJXZWJLaXRET01Ob2RlL2RvbS1jYWNoZSIpKSB7CisgICAgaWYgKGdfc3RyX2VxdWFsKHRlc3RQ
YXRoLCAiV2ViS2l0RE9NTm9kZS9kb20tY2FjaGUiKSkgewogICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgZG9tQ2FjaGVUZXN0UnVuQ291bnQgPSAwOwogICAgICAgICBpZiAoKytkb21DYWNoZVRlc3RS
dW5Db3VudCA9PSAzKQogICAgICAgICAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViUGFnZSkpOwogICAgIH0gZWxzZQog
ICAgICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVCh3ZWJQYWdlKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IHRlc3QgPSBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgodGVz
dFBhdGguZ2V0KCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRl
c3QtPnJ1blRlc3QoZ19zdHJyc3RyKHRlc3RQYXRoLmdldCgpLCAiLyIpICsgMSwgd2ViUGFnZSkp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gdGVzdCA9IFdlYlByb2Nlc3NU
ZXN0OjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCh0ZXN0UGF0aCkpOworICAgIHJldHVybiB0ZXN0
LT5ydW5UZXN0KGdfc3RycnN0cih0ZXN0UGF0aCwgIi8iKSArIDEsIHdlYlBhZ2UpOwogfQogCi1z
dGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiB3ZWJQcm9jZXNzVGVzdFJ1bm5lclN0YXRpY0Z1
bmN0aW9uc1tdID0KLXsKLSAgICB7ICJydW5UZXN0IiwgcnVuVGVzdCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgIHsg
bnVsbHB0ciwgbnVsbHB0ciwgMCB9Ci19OwotCi1zdGF0aWMgdm9pZCB3ZWJQcm9jZXNzVGVzdFJ1
bm5lckZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKK3N0YXRpYyB2b2lkIHdlYlByb2Nlc3NU
ZXN0UnVubmVyRmluYWxpemUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsKLSAgICBnX29iamVj
dF91bnJlZihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7CisgICAgZ19vYmplY3RfdW5yZWYo
d2ViUGFnZSk7CiAKICAgICBpZiAoc193YXRjaGVkT2JqZWN0cy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwMCwxOSArODgsMTEgQEAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlc3RS
dW5uZXJGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiAKIHN0YXRpYyB2b2lkIHdpbmRvd09i
amVjdENsZWFyZWRDYWxsYmFjayhXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdlYlBh
Z2UqIHdlYlBhZ2UsIFdlYktpdEZyYW1lKiBmcmFtZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRl
bnNpb24pCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfZnJhbWVf
Z2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZCk7Ci0g
ICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNv
bnRleHQpOwotCi0gICAgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0ga0pTQ2xh
c3NEZWZpbml0aW9uRW1wdHk7Ci0gICAgY2xhc3NEZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJXZWJQ
cm9jZXNzVGVzdFJ1bm5lciI7Ci0gICAgY2xhc3NEZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9
IHdlYlByb2Nlc3NUZXN0UnVubmVyU3RhdGljRnVuY3Rpb25zOwotICAgIGNsYXNzRGVmaW5pdGlv
bi5maW5hbGl6ZSA9IHdlYlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemU7Ci0KLSAgICBKU0NsYXNz
UmVmIGpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOwotICAgIEpTT2Jq
ZWN0UmVmIGNsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGpzQ2xhc3MsIGdfb2Jq
ZWN0X3JlZih3ZWJQYWdlKSk7Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5
U3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiV2ViUHJvY2Vzc1Rl
c3RSdW5uZXIiKSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5U3RyaW5nLmdldCgpLCBjbGFzc09iamVjdCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVOb25lLCBudWxscHRyKTsKLSAgICBKU0NsYXNzUmVsZWFzZShqc0NsYXNzKTsKKyAgICBHUmVm
UHRyPEpTQ0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19j
b250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdvcmxkKSk7CisgICAgYXV0byoganNDbGFz
cyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJXZWJQcm9jZXNz
VGVzdFJ1bm5lciIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdl
YlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemUpKTsKKyAgICBqc2NfY2xhc3NfYWRkX21ldGhvZChq
c0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FMTEJBQ0socnVuVGVzdCksIEdfVFlQRV9CT09MRUFOLCAx
LCBHX1RZUEVfU1RSSU5HKTsKKyAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB0ZXN0UnVubmVyID0gYWRv
cHRHUmVmKGpzY192YWx1ZV9uZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCksIGdfb2JqZWN0X3JlZih3
ZWJQYWdlKSwganNDbGFzcykpOworICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShjb250ZXh0Lmdl
dCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCB0ZXN0UnVubmVyLmdldCgpKTsKIH0KIAogZXh0
ZXJuICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUoV2ViS2l0V2ViRXh0
ZW5zaW9uKiBleHRlbnNpb24pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggODc4MjNmYTc4YmUuLjExZTliODYzZTM0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuY3BwCkBAIC0zMTIsNjkgKzMxMiw2IEBAIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIFdlYlZp
ZXdUZXN0OjpydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzCiAgICAg
cmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIqIGpzVmFsdWVUb0NT
dHJpbmcoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0g
ICAgZ19hc3NlcnQodmFsdWUpOwotICAgIGdfYXNzZXJ0KEpTVmFsdWVJc1N0cmluZyhjb250ZXh0
LCB2YWx1ZSkpOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ1ZhbHVlKEFk
b3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVlLCAwKSk7Ci0gICAgZ19hc3Nl
cnQoc3RyaW5nVmFsdWUpOwotCi0gICAgc2l6ZV90IGNTdHJpbmdMZW5ndGggPSBKU1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nVmFsdWUuZ2V0KCkpOwotICAgIGNoYXIqIGNT
dHJpbmcgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MoY1N0cmluZ0xlbmd0aCkpOwotICAg
IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nVmFsdWUuZ2V0KCksIGNTdHJpbmcsIGNTdHJp
bmdMZW5ndGgpOwotICAgIHJldHVybiBjU3RyaW5nOwotfQotCi1jaGFyKiBXZWJWaWV3VGVzdDo6
amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2Ny
aXB0UmVzdWx0KQotewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZhc2NyaXB0UmVzdWx0KTsKLSAg
ICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICByZXR1cm4ganNWYWx1ZVRvQ1N0cmluZyhjb250ZXh0
LCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKTsK
LX0KLQotZG91YmxlIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKLXsKLSAgICBKU0dsb2JhbENvbnRl
eHRSZWYgY29udGV4dCA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRl
eHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoY29udGV4dCk7Ci0gICAgSlNWYWx1
ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoamF2YXNjcmlw
dFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQodmFsdWUpOwotICAgIGdfYXNzZXJ0KEpTVmFsdWVJc051
bWJlcihjb250ZXh0LCB2YWx1ZSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCB2YWx1ZSwgMCk7Ci19Ci0KLWJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b0Jvb2xlYW4oV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKLXsKLSAg
ICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoY29udGV4
dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRf
dmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQodmFsdWUpOwotICAgIGdfYXNz
ZXJ0KEpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpKTsKLQotICAgIHJldHVybiBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHQsIHZhbHVlKTsKLX0KLQotYm9vbCBXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdElzTnVsbChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVz
dWx0KQotewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fz
c2VydChjb250ZXh0KTsKLSAgICBKU1ZhbHVlUmVmIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF92YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCh2YWx1ZSk7
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSk7Ci19Ci0KLWJvb2wg
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc1VuZGVmaW5lZChXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQotewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250
ZXh0ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZhc2Ny
aXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICBKU1ZhbHVlUmVmIHZhbHVl
ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsK
LSAgICBnX2Fzc2VydCh2YWx1ZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZUlzVW5kZWZpbmVkKGNv
bnRleHQsIHZhbHVlKTsKLX0KLQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIG9uU25h
cHNob3RSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0KiByZXMsIFdl
YlZpZXdUZXN0KiB0ZXN0KQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335110</attachid>
            <date>2018-03-06 10:00:49 -0800</date>
            <delta_ts>2018-03-08 05:30:58 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wk2-jsc.diff</filename>
            <type>text/plain</type>
            <size>33023</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmgKaW5kZXggMjAyZTY4NmJm
NDkuLmUxNjM5YzRhMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ2xhc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xh
c3MuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAg
Ki8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01Q
SUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0Nf
Q09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3IgIk9u
bHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAppbmRleCAzNzgyZjBlOWMx
MC4uNWNhZTA4YmJjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0Nv
bnRleHQuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19D
T01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChK
U0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3Ig
Ik9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKaW5kZXggNDJh
OGQ4MDg4MmQuLjlhNDQ5MmRkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ0V4Y2VwdGlvbi5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYm
ICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElP
TikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmgKaW5kZXgg
YzAyNDRmNmZiZWMuLjRiYjk4NGI1Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDVmFsdWUuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KEpTQ19DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChKU0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAj
ZXJyb3IgIk9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVh
bE1hY2hpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFj
aGluZS5oCmluZGV4IDI1YzY0M2UwOWIwLi4wODNjNmE5MzQyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKQEAgLTE3LDcgKzE3
LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5l
ZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pCisjaWYgIWRl
ZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKSAmJiAh
ZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQogI2Vycm9yICJPbmx5IDxqc2MvanNjLmg+IGNh
biBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggZGM2YjMwNjZjM2EuLjYxNWFhN2ExODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTM2Niw2ICszNjYsOCBAQCBsaXN0KElOU0VSVCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UyAwCiApCiAKIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7
Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvIgorICAgICIke0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
UGx1Z2luUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9zb3VwIgpAQCAtNzYzLDYgKzc2NSw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElP
TikKICAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJE
SU5HX0hFQURFUlNfRElSfQorICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9
L0phdmFTY3JpcHRDb3JlL2dsaWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNf
V0VCS0lUMkdUS19ESVJ9CiAgICAgICAgICAgICAke1dlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURF
UlN9CiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi8qLmNwcApAQCAt
ODA3LDYgKzgxMCw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKICAgICAgICAgICAgIC1J
JHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkke0RFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfQor
ICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2ds
aWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19ESVJ9CiAg
ICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRVhURU5TSU9OX0RJ
Un0KICAgICAgICAgICAgIC1JJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEphdmFzY3JpcHRSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5jcHAKaW5kZXggMDEwODA1YzM5MGEuLjdiMjVkNjg4
Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRK
YXZhc2NyaXB0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcApAQCAtMjIsMjEgKzIyLDE5IEBACiAKICNpbmNs
dWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8anNjL0pT
Q1ZhbHVlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogc3RydWN0
IF9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0IHsKLSAgICBfV2ViS2l0SmF2YXNjcmlwdFJlc3VsdChK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLSAgICAgICAgOiBqYXZhc2NyaXB0R2xvYmFsQ29u
dGV4dChqc0NvbnRleHQpCi0gICAgICAgICwgcmVmZXJlbmNlQ291bnQoMSkKKyAgICBfV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdChHUmVmUHRyPEpTQ0NvbnRleHQ+JiYganNDb250ZXh0LCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAgICAgICAg
OiBqc1ZhbHVlKGpzY0NvbnRleHRHZXRPckNyZWF0ZVZhbHVlKGpzQ29udGV4dC5nZXQoKSwgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKGpzY0NvbnRleHRHZXRKU0NvbnRleHQoanND
b250ZXh0LmdldCgpKSwgbnVsbHB0cikpKQogICAgIHsKLSAgICAgICAgdmFsdWUgPSBzZXJpYWxp
emVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoamF2YXNjcmlwdEdsb2JhbENvbnRleHQuZ2V0KCks
IG51bGxwdHIpOwogICAgIH0KIAotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4g
amF2YXNjcmlwdEdsb2JhbENvbnRleHQ7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZTsKKyAgICBHUmVm
UHRyPEpTQ1ZhbHVlPiBqc1ZhbHVlOwogCi0gICAgaW50IHJlZmVyZW5jZUNvdW50OworICAgIGlu
dCByZWZlcmVuY2VDb3VudCB7IDEgfTsKIH07CiAKIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCwgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2YXNj
cmlwdF9yZXN1bHRfcmVmLCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYpCkBAIC00NCw3
ICs0Miw3IEBAIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCwgd2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiB3ZWJraXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKEpTR2xvYmFsQ29udGV4dFJlZiBqYXZhc2Ny
aXB0R2xvYmFsQ29udGV4dCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUpCiB7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQoamF2YXNjcmlwdEdsb2JhbENvbnRleHQsIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CisgICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3JpcHRSZXN1bHQoanNjQ29udGV4dEdldE9y
Q3JlYXRlKGphdmFzY3JpcHRHbG9iYWxDb250ZXh0KSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC05MSw3ICs4OSw4IEBAIHZvaWQgd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X3VucmVmKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQpCiAgKi8KIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2dsb2JhbF9jb250ZXh0KFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1
bHQpCiB7Ci0gICAgcmV0dXJuIGphdmFzY3JpcHRSZXN1bHQtPmphdmFzY3JpcHRHbG9iYWxDb250
ZXh0LmdldCgpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGphdmFzY3JpcHRSZXN1bHQsIG51
bGxwdHIpOworICAgIHJldHVybiBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGpzY192YWx1ZV9nZXRf
Y29udGV4dChqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVlLmdldCgpKSk7CiB9CiAKIC8qKgpAQCAt
MTA1LDUgKzEwNCwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X2phdmFzY3JpcHRfcmVz
dWx0X2dldF9nbG9iYWxfY29udGV4dChXZWJLaXRKYXZhc2NyaXB0UgogICovCiBKU1ZhbHVlUmVm
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCkKIHsKLSAgICByZXR1cm4gamF2YXNjcmlwdFJlc3VsdC0+dmFs
dWU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoamF2YXNjcmlwdFJlc3VsdCwgbnVsbHB0cik7
CisgICAgcmV0dXJuIGpzY1ZhbHVlR2V0SlNWYWx1ZShqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVl
LmdldCgpKTsKK30KKworSlNDVmFsdWUqIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNf
dmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChqYXZhc2NyaXB0UmVzdWx0LCBudWxscHRyKTsKKyAgICByZXR1
cm4gamF2YXNjcmlwdFJlc3VsdC0+anNWYWx1ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTFjY2Q3NzU1
ZjIuLjhlMzFjZjM5YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIldlYktp
dFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0
ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CkBAIC0yMjgsNyArMjI5LDcgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb3Vz
ZVRhcmdldE1vZGlmaWVyczsKIAogICAgIEdSZWZQdHI8V2ViS2l0RmluZENvbnRyb2xsZXI+IGZp
bmRDb250cm9sbGVyOwotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4gamF2YXNj
cmlwdEdsb2JhbENvbnRleHQ7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQ7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiBtYWluUmVzb3VyY2U7CiAgICAgTG9hZGlu
Z1Jlc291cmNlc01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAtMzI2MSwxMiArMzI2MiwxNyBA
QCBXZWJLaXRGaW5kQ29udHJvbGxlciogd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xs
ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldwogICogICAgdGhlIHJlc3VsdCB2YWx1ZXMgb2Ygc2Ny
aXB0cy4KICAqLwogSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNj
cmlwdF9nbG9iYWxfY29udGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVy
biBqc2NDb250ZXh0R2V0SlNDb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4dCh3
ZWJWaWV3KSk7Cit9CisKK0pTQ0NvbnRleHQqIHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICBpZiAoIXdlYlZpZXct
PnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KQotICAgICAgICB3ZWJWaWV3LT5wcml2LT5q
YXZhc2NyaXB0R2xvYmFsQ29udGV4dCA9IGFkb3B0KEpTR2xvYmFsQ29udGV4dENyZWF0ZShudWxs
cHRyKSk7Ci0gICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0
LmdldCgpOworICAgIGlmICghd2ViVmlldy0+cHJpdi0+anNDb250ZXh0KQorICAgICAgICB3ZWJW
aWV3LT5wcml2LT5qc0NvbnRleHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfbmV3KCkpOworICAg
IHJldHVybiB3ZWJWaWV3LT5wcml2LT5qc0NvbnRleHQuZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHdrU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBl
eGNlcHRpb25EZXRhaWxzLCBHVGFzayogdGFzaykKQEAgLTMzNDMsOCArMzM0OSw3IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyKiBzY3JpcHQsCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciAgICAgIHVzZXJfZGF0YSkKICAqIHsKICAqICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
ICpqc19yZXN1bHQ7Ci0gKiAgICAgSlNWYWx1ZVJlZiAgICAgICAgICAgICAgdmFsdWU7Ci0gKiAg
ICAgSlNHbG9iYWxDb250ZXh0UmVmICAgICAgY29udGV4dDsKKyAqICAgICBKU0NWYWx1ZSAgICAg
ICAgICAgICAgICp2YWx1ZTsKICAqICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICplcnJvciA9
IE5VTEw7CiAgKgogICogICAgIGpzX3Jlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNj
cmlwdF9maW5pc2ggKFdFQktJVF9XRUJfVklFVyAob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3IpOwpA
QCAtMzM1NCwxOSArMzM1OSwxNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICogICAgICAg
ICByZXR1cm47CiAgKiAgICAgfQogICoKLSAqICAgICBjb250ZXh0ID0gd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dCAoanNfcmVzdWx0KTsKLSAqICAgICB2YWx1ZSA9
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgKGpzX3Jlc3VsdCk7Ci0gKiAgICAg
aWYgKEpTVmFsdWVJc1N0cmluZyAoY29udGV4dCwgdmFsdWUpKSB7Ci0gKiAgICAgICAgIEpTU3Ry
aW5nUmVmIGpzX3N0cl92YWx1ZTsKLSAqICAgICAgICAgZ2NoYXIgICAgICAqc3RyX3ZhbHVlOwot
ICogICAgICAgICBnc2l6ZSAgICAgICBzdHJfbGVuZ3RoOwotICoKLSAqICAgICAgICAganNfc3Ry
X3ZhbHVlID0gSlNWYWx1ZVRvU3RyaW5nQ29weSAoY29udGV4dCwgdmFsdWUsIE5VTEwpOwotICog
ICAgICAgICBzdHJfbGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplIChq
c19zdHJfdmFsdWUpOwotICogICAgICAgICBzdHJfdmFsdWUgPSAoZ2NoYXIgKilnX21hbGxvYyAo
c3RyX2xlbmd0aCk7Ci0gKiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcgKGpzX3N0cl92
YWx1ZSwgc3RyX3ZhbHVlLCBzdHJfbGVuZ3RoKTsKLSAqICAgICAgICAgSlNTdHJpbmdSZWxlYXNl
IChqc19zdHJfdmFsdWUpOwotICogICAgICAgICBnX3ByaW50ICgiU2NyaXB0IHJlc3VsdDogJXNc
biIsIHN0cl92YWx1ZSk7CisgKiAgICAgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2pzX3ZhbHVlIChqc19yZXN1bHQpOworICogICAgIGlmIChqc2NfdmFsdWVfaXNfc3RyaW5n
ICh2YWx1ZSkpIHsKKyAqICAgICAgICAgSlNDRXhjZXB0aW9uICpleGNlcHRpb247CisgKiAgICAg
ICAgIGdjaGFyICAgICAgICAqc3RyX3ZhbHVlOworICoKKyAqICAgICAgICAgc3RyX3ZhbHVlID0g
anNjX3ZhbHVlX3RvX3N0cmluZyAodmFsdWUpOworICogICAgICAgICBleGNlcHRpb24gPSBqc2Nf
Y29udGV4dF9nZXRfZXhjZXB0aW9uIChqc2NfdmFsdWVfZ2V0X2NvbnRleHQgKHZhbHVlKSk7Cisg
KiAgICAgICAgIGlmIChleGNlcHRpb24pCisgKiAgICAgICAgICAgICBnX3dhcm5pbmcgKCJFcnJv
ciBydW5uaW5nIGphdmFzY3JpcHQ6ICVzIiwganNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZSAoZXhj
ZXB0aW9uKSk7CisgKiAgICAgICAgIGVsc2UKKyAqICAgICAgICAgICAgIGdfcHJpbnQgKCJTY3Jp
cHQgcmVzdWx0OiAlc1xuIiwgc3RyX3ZhbHVlKTsKICAqICAgICAgICAgZ19mcmVlIChzdHJfdmFs
dWUpOwogICogICAgIH0gZWxzZSB7CiAgKiAgICAgICAgIGdfd2FybmluZyAoIkVycm9yIHJ1bm5p
bmcgamF2YXNjcmlwdDogdW5leHBlY3RlZCByZXR1cm4gdmFsdWUiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgK
aW5kZXggNWE5ZjczODlmNDQuLmY4YTVmZmY2MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaApAQCAtMjUs
NiArMjUsNyBAQAogI2RlZmluZSBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0X2gKIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogCkBA
IC01MCw2ICs1MSw5IEBAIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRl
eHQgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiBXRUJLSVRfQVBJIEpTVmFs
dWVSZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgICAgICAgICAgKFdlYktp
dEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiAKK1dFQktJVF9BUEkgSlNDVmFsdWUgKgor
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZSAgICAgICAoV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGMzNjk2
NTNhNDEyLi4wYmVkY2I3NGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgV2ViS2l0V2Vi
Vmlld19oCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxq
c2MvanNjLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgpAQCAtNDMzLDYgKzQzNCw5IEBAIHdlYmtpdF93ZWJf
dmlld19nZXRfZmluZF9jb250cm9sbGVyICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcK
IFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFz
Y3JpcHRfZ2xvYmFsX2NvbnRleHQgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgSlNDQ29udGV4dCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2pzX2NvbnRleHQgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpzY3JpcHQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAyMDg5NmYzYjYwZi4uYjI2YjdlMTRjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMjA1LDYgKzIwNSw3IEBAIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZF93aXRoX2FyZ3VtZW50CiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcgogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IK
IHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dAord2Via2l0X3dl
Yl92aWV3X2dldF9qc19jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQKIHdl
YmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19ydW5f
amF2YXNjcmlwdF9mcm9tX2dyZXNvdXJjZQpAQCAtMjMyLDYgKzIzMyw3IEBAIHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9yZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZgogd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dAogd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF92YWx1ZQord2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZQog
CiA8U1VCU0VDVElPTiBXZWJLaXRTY3JpcHREaWFsb2c+CiBXZWJLaXRTY3JpcHREaWFsb2cKQEAg
LTE0ODcsNiArMTQ4OSw4IEBAIHdlYmtpdF9mcmFtZV9pc19tYWluX2ZyYW1lCiB3ZWJraXRfZnJh
bWVfZ2V0X3VyaQogd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0CiB3
ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkCit3ZWJr
aXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0RnJhbWVDbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKaW5kZXggMTk1MzMzM2FkYWUuLjFkMWE5OGUx
MTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
IAogI2luY2x1ZGUgIldlYktpdEZyYW1lUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNjcmlw
dFdvcmxkUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC0xMjYsMyArMTI3LDE4IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfZnJhbWVf
Z2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKFdlYktpdEZyCiAKICAgICBy
ZXR1cm4gZnJhbWUtPnByaXYtPndlYkZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3ZWJraXRTY3Jp
cHRXb3JsZEdldEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQpKTsKIH0KKworSlNDQ29u
dGV4dCogd2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0KFdlYktpdEZyYW1lKiBmcmFtZSkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRy
KTsKKworICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGUoZnJhbWUtPnByaXYtPndlYkZy
YW1lLT5qc0NvbnRleHQoKSkubGVha1JlZigpOworfQorCitKU0NDb250ZXh0KiB3ZWJraXRfZnJh
bWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChXZWJLaXRGcmFtZSogZnJhbWUsIFdl
YktpdFNjcmlwdFdvcmxkKiB3b3JsZCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfU0NSSVBUX1dPUkxEKHdvcmxkKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4ganNj
Q29udGV4dEdldE9yQ3JlYXRlKGZyYW1lLT5wcml2LT53ZWJGcmFtZS0+anNDb250ZXh0Rm9yV29y
bGQod2Via2l0U2NyaXB0V29ybGRHZXRJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKHdvcmxkKSkp
LmxlYWtSZWYoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCmluZGV4IDUwNTkzMDBmNzNh
Li4yYzQ1NThhN2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAKQEAg
LTY4LDYgKzY5LDEzIEBAIFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfZnJh
bWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkIChXZWJLaXRGcmFtZSAg
ICAgICAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRTY3JpcHRXb3JsZCAqd29ybGQpOwogCitXRUJLSVRfQVBJIEpTQ0Nv
bnRleHQgKgord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKKworV0VCS0lUX0FQSSBKU0NDb250ZXh0
ICoKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkICAgICAgICAg
KFdlYktpdEZyYW1lICAgICAgICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdFdvcmxkICp3b3JsZCk7CisKIEdf
RU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvRnJhbWVUZXN0LmNwcAppbmRleCBkZTgwMzE0M2RjMS4uYzAwNzA0ZmExOTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCkBAIC01NCw2ICs1NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGZyYW1lKSk7CiAgICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChmcmFtZSkpOwogCisg
ICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9m
cmFtZV9nZXRfanNfY29udGV4dChmcmFtZSkpOworICAgICAgICBnX2Fzc2VydChKU0NfSVNfQ09O
VEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChqc0NvbnRleHQuZ2V0KCkpKTsKKwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGZlMGMyY2M0M2Y0Li41
NDExNDM0ZDRlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlZpZXdUZXN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8Z2xpYi9n
c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKQEAgLTI4Nyw1NCArMjg1
LDY0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdXZWJLaXRMaW5rJykudGl0bGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2Vy
dChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFs
dWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRHVEsrIFRpdGxlIik7CiAKICAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cu
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS5ocmVmOyIsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQo
IWVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iKTsK
IAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLnRl
eHRDb250ZW50IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJl
c3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJl
c2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0
R1RLKyBXZWJzaXRlIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMjU7IiwgJmVycm9yLm91dFB0cigpKTsKICAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAyNSk7CiAKICAgICBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMi41OyIs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMi41
KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImEgPSB0cnVlIiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUo
amF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdf
YXNzZXJ0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRS
ZXN1bHQpKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImEgPSBmYWxzZSIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19h
c3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
ICAgICBnX2Fzc2VydCghV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2
YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IG51bGwiLCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0
X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CiAgICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwo
amF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZnVuY3Rpb24gRm9vKCkgeyBhID0gMjU7IH0g
Rm9vKCk7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3Vs
dCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0KFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQoamF2YXNjcmlwdFJlc3VsdCkpOwogCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5k
V2FpdFVudGlsRmluaXNoZWQoIi9vcmcvd2Via2l0L2dsaWIvdGVzdHMvbGluay10aXRsZS5qcyIs
ICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAg
Z19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUi
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJF
eHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9X
ZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCBkM2ExMmFiZjkzMi4uMWFlMTk3MDk2MmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25U
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0
ZW5zaW9uVGVzdC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KICNlbmRpZgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
QEAgLTQwNywyNSArNDA4LDE3IEBAIHN0YXRpYyB2b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdlYlBhZ2UqIHdlCiAjZW5kaWYKIH0K
IAotc3RhdGljIEpTVmFsdWVSZWYgZWNob0NhbGxiYWNrKEpTQ29udGV4dFJlZiBqc0NvbnRleHQs
IEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqKQorc3RhdGljIGNoYXIqIGVjaG9DYWxs
YmFjayhjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDw9IDAp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChqc0NvbnRleHQpOwotCi0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZyhBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShqc0NvbnRleHQsIGFyZ3VtZW50c1swXSwgMCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0
cmluZyhqc0NvbnRleHQsIHN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGdfc3RyZHVwKG1lc3Nh
Z2UpOwogfQogCiBzdGF0aWMgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKFdlYktpdFNjcmlwdFdv
cmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSogcGFnZSwgV2ViS2l0RnJhbWUqIGZyYW1lLCBncG9p
bnRlcikKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0ID0gd2Via2l0X2ZyYW1l
X2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwgd29ybGQpOwot
ICAgIGdfYXNzZXJ0KGpzQ29udGV4dCk7Ci0gICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0g
SlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGpzQ29udGV4dCk7Ci0gICAgZ19hc3NlcnQoZ2xvYmFs
T2JqZWN0KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmdW5jdGlvbk5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJlY2hvIikpOwotICAgIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soanNDb250ZXh0
LCBmdW5jdGlvbk5hbWUuZ2V0KCksIGVjaG9DYWxsYmFjayk7Ci0gICAgSlNPYmplY3RTZXRQcm9w
ZXJ0eShqc0NvbnRleHQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb25OYW1lLmdldCgpLCBmdW5jdGlv
biwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSwgMCk7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdS
ZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdv
cmxkKSk7CisgICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7Cisg
ICAgR1JlZlB0cjxKU0NWYWx1ZT4gZnVuY3Rpb24gPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25ld19m
dW5jdGlvbihqc0NvbnRleHQuZ2V0KCksICJlY2hvIiwgR19DQUxMQkFDSyhlY2hvQ2FsbGJhY2sp
LCBHX1RZUEVfU1RSSU5HLCAxLCBHX1RZUEVfU1RSSU5HKSk7CisgICAganNjX2NvbnRleHRfc2V0
X3ZhbHVlKGpzQ29udGV4dC5nZXQoKSwgImVjaG8iLCBmdW5jdGlvbi5nZXQoKSk7CiB9CiAKIHN0
YXRpYyBXZWJLaXRXZWJQYWdlKiBnZXRXZWJQYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uLCB1aW50NjRfdCBwYWdlSUQsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbikK
QEAgLTQ3Myw5ICs0NjYsOCBAQCBzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBzZW5kZXIsCiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0U2NyaXB0V29ybGQ+IHdvcmxkID0gYWRvcHRHUmVmKHdlYmtpdF9zY3JpcHRfd29y
bGRfbmV3KCkpOwogICAgICAgICBnX2Fzc2VydCh3ZWJraXRfc2NyaXB0X3dvcmxkX2dldF9kZWZh
dWx0KCkgIT0gd29ybGQuZ2V0KCkpOwogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSk7Ci0gICAgICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBqc0NvbnRleHQgPSB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZC5nZXQoKSk7Ci0gICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBqc1NjcmlwdChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
c2NyaXB0KSk7Ci0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoanNDb250ZXh0LCBqc1NjcmlwdC5n
ZXQoKSwgMCwgMCwgMCwgMCk7CisgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0
ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxk
KGZyYW1lLCB3b3JsZC5nZXQoKSkpOworICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQg
PSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoanNDb250ZXh0LmdldCgpLCBzY3JpcHQp
KTsKICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0
aW9uLCAwKTsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkFib3J0UHJv
Y2VzcyIpKSB7CiAgICAgICAgIGFib3J0KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcAppbmRleCBiYzA1ODY5M2Q3
Ni4uMTM3NTgxNGM4MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcApAQCAtMjAsOCArMjAsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCiAKLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNs
dWRlIDxqc2MvanNjLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC01
NCwzOCArNTQsMjYgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBXZWJQcm9jZXNz
VGVzdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpCiAgICAgcmV0dXJuIHRlc3RzTWFw
KCkuZ2V0KHRlc3ROYW1lKSgpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBydW5UZXN0KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRpYyBnYm9vbGVhbiBydW5UZXN0KFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IGNoYXIqIHRlc3RQYXRoKQogewotICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBzdHJpbmdWYWx1ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBhcmd1bWVudHNbMF0sIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydChzdHJpbmdWYWx1ZSk7
Ci0gICAgc2l6ZV90IHRlc3RQYXRoTGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHN0cmluZ1ZhbHVlLmdldCgpKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IHRlc3RQYXRo
KHN0YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyh0ZXN0UGF0aExlbmd0aCkpKTsKLSAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZ1ZhbHVlLmdldCgpLCB0ZXN0UGF0aC5nZXQoKSwgdGVz
dFBhdGhMZW5ndGgpOwotCi0gICAgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJf
UEFHRShKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwogICAgIGdfYXNzZXJ0KFdFQktJ
VF9JU19XRUJfUEFHRSh3ZWJQYWdlKSk7CisgICAgZ19hc3NlcnQodGVzdFBhdGgpOwogICAgIC8v
IFRlc3QgL1dlYktpdERPTU5vZGUvZG9tLWNhY2hlIGlzIGFuIGV4Y2VwdGlvbiwgYmVjYXVzZSBp
dCdzIGNhbGxlZCAzIHRpbWVzLCBzbwogICAgIC8vIHRoZSBXZWJQYWdlIGlzIGRlc3Ryb3llZCBh
ZnRlciB0aGUgdGhpcmQgdGltZS4KLSAgICBpZiAoZ19zdHJfZXF1YWwodGVzdFBhdGguZ2V0KCks
ICJXZWJLaXRET01Ob2RlL2RvbS1jYWNoZSIpKSB7CisgICAgaWYgKGdfc3RyX2VxdWFsKHRlc3RQ
YXRoLCAiV2ViS2l0RE9NTm9kZS9kb20tY2FjaGUiKSkgewogICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgZG9tQ2FjaGVUZXN0UnVuQ291bnQgPSAwOwogICAgICAgICBpZiAoKytkb21DYWNoZVRlc3RS
dW5Db3VudCA9PSAzKQogICAgICAgICAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViUGFnZSkpOwogICAgIH0gZWxzZQog
ICAgICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVCh3ZWJQYWdlKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IHRlc3QgPSBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgodGVz
dFBhdGguZ2V0KCkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRl
c3QtPnJ1blRlc3QoZ19zdHJyc3RyKHRlc3RQYXRoLmdldCgpLCAiLyIpICsgMSwgd2ViUGFnZSkp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gdGVzdCA9IFdlYlByb2Nlc3NU
ZXN0OjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCh0ZXN0UGF0aCkpOworICAgIHJldHVybiB0ZXN0
LT5ydW5UZXN0KGdfc3RycnN0cih0ZXN0UGF0aCwgIi8iKSArIDEsIHdlYlBhZ2UpOwogfQogCi1z
dGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiB3ZWJQcm9jZXNzVGVzdFJ1bm5lclN0YXRpY0Z1
bmN0aW9uc1tdID0KLXsKLSAgICB7ICJydW5UZXN0IiwgcnVuVGVzdCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgIHsg
bnVsbHB0ciwgbnVsbHB0ciwgMCB9Ci19OwotCi1zdGF0aWMgdm9pZCB3ZWJQcm9jZXNzVGVzdFJ1
bm5lckZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKK3N0YXRpYyB2b2lkIHdlYlByb2Nlc3NU
ZXN0UnVubmVyRmluYWxpemUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsKLSAgICBnX29iamVj
dF91bnJlZihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7CisgICAgZ19vYmplY3RfdW5yZWYo
d2ViUGFnZSk7CiAKICAgICBpZiAoc193YXRjaGVkT2JqZWN0cy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwMCwxOSArODgsMTEgQEAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlc3RS
dW5uZXJGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiAKIHN0YXRpYyB2b2lkIHdpbmRvd09i
amVjdENsZWFyZWRDYWxsYmFjayhXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdlYlBh
Z2UqIHdlYlBhZ2UsIFdlYktpdEZyYW1lKiBmcmFtZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRl
bnNpb24pCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfZnJhbWVf
Z2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZCk7Ci0g
ICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNv
bnRleHQpOwotCi0gICAgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0ga0pTQ2xh
c3NEZWZpbml0aW9uRW1wdHk7Ci0gICAgY2xhc3NEZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJXZWJQ
cm9jZXNzVGVzdFJ1bm5lciI7Ci0gICAgY2xhc3NEZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9
IHdlYlByb2Nlc3NUZXN0UnVubmVyU3RhdGljRnVuY3Rpb25zOwotICAgIGNsYXNzRGVmaW5pdGlv
bi5maW5hbGl6ZSA9IHdlYlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemU7Ci0KLSAgICBKU0NsYXNz
UmVmIGpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOwotICAgIEpTT2Jq
ZWN0UmVmIGNsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGpzQ2xhc3MsIGdfb2Jq
ZWN0X3JlZih3ZWJQYWdlKSk7Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5
U3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiV2ViUHJvY2Vzc1Rl
c3RSdW5uZXIiKSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5U3RyaW5nLmdldCgpLCBjbGFzc09iamVjdCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVOb25lLCBudWxscHRyKTsKLSAgICBKU0NsYXNzUmVsZWFzZShqc0NsYXNzKTsKKyAgICBHUmVm
UHRyPEpTQ0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19j
b250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdvcmxkKSk7CisgICAgYXV0byoganNDbGFz
cyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJXZWJQcm9jZXNz
VGVzdFJ1bm5lciIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdl
YlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemUpKTsKKyAgICBqc2NfY2xhc3NfYWRkX21ldGhvZChq
c0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FMTEJBQ0socnVuVGVzdCksIEdfVFlQRV9CT09MRUFOLCAx
LCBHX1RZUEVfU1RSSU5HKTsKKyAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB0ZXN0UnVubmVyID0gYWRv
cHRHUmVmKGpzY192YWx1ZV9uZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCksIGdfb2JqZWN0X3JlZih3
ZWJQYWdlKSwganNDbGFzcykpOworICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShjb250ZXh0Lmdl
dCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCB0ZXN0UnVubmVyLmdldCgpKTsKIH0KIAogZXh0
ZXJuICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUoV2ViS2l0V2ViRXh0
ZW5zaW9uKiBleHRlbnNpb24pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggODc4MjNmYTc4YmUuLjUyY2EwODY1MmE0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuY3BwCkBAIC0zMTIsNjcgKzMxMiw0MiBAQCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJW
aWV3VGVzdDo6cnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pcwogICAg
IHJldHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyKiBqc1ZhbHVlVG9D
U3RyaW5nKEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewot
ICAgIGdfYXNzZXJ0KHZhbHVlKTsKLSAgICBnX2Fzc2VydChKU1ZhbHVlSXNTdHJpbmcoY29udGV4
dCwgdmFsdWUpKTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmdWYWx1ZShB
ZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgMCkpOwotICAgIGdfYXNz
ZXJ0KHN0cmluZ1ZhbHVlKTsKLQotICAgIHNpemVfdCBjU3RyaW5nTGVuZ3RoID0gSlNTdHJpbmdH
ZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZ1ZhbHVlLmdldCgpKTsKLSAgICBjaGFyKiBj
U3RyaW5nID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9jKGNTdHJpbmdMZW5ndGgpKTsKLSAg
ICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZ1ZhbHVlLmdldCgpLCBjU3RyaW5nLCBjU3Ry
aW5nTGVuZ3RoKTsKLSAgICByZXR1cm4gY1N0cmluZzsKLX0KLQogY2hhciogV2ViVmlld1Rlc3Q6
OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNj
cmlwdFJlc3VsdCkKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0g
ICAgZ19hc3NlcnQoY29udGV4dCk7Ci0gICAgcmV0dXJuIGpzVmFsdWVUb0NTdHJpbmcoY29udGV4
dCwgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSk7
CisgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVl
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOwor
ICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19zdHJpbmcodmFsdWUpKTsKKyAgICByZXR1cm4ganNj
X3ZhbHVlX3RvX3N0cmluZyh2YWx1ZSk7CiB9CiAKIGRvdWJsZSBXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvTnVtYmVyKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1
bHQpCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNz
ZXJ0KGNvbnRleHQpOwotICAgIEpTVmFsdWVSZWYgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfZ2V0X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KHZhbHVlKTsK
LSAgICBnX2Fzc2VydChKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgdmFsdWUpKTsKLQotICAgIHJl
dHVybiBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIDApOworICAgIGF1dG8qIHZhbHVl
ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICBnX2Fzc2VydChqc2Nf
dmFsdWVfaXNfbnVtYmVyKHZhbHVlKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV90b19kb3VibGUo
dmFsdWUpOwogfQogCiBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFu
KFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7Ci0gICAgSlNHbG9i
YWxDb250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2Jh
bF9jb250ZXh0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KGNvbnRleHQpOwotICAg
IEpTVmFsdWVSZWYgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGph
dmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KHZhbHVlKTsKLSAgICBnX2Fzc2VydChKU1Zh
bHVlSXNCb29sZWFuKGNvbnRleHQsIHZhbHVlKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZVRvQm9v
bGVhbihjb250ZXh0LCB2YWx1ZSk7CisgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0KEpT
Q19JU19WQUxVRSh2YWx1ZSkpOworICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19ib29sZWFuKHZh
bHVlKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV90b19ib29sZWFuKHZhbHVlKTsKIH0KIAogYm9v
bCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzTnVsbChXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0
ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZhc2NyaXB0
UmVzdWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICBKU1ZhbHVlUmVmIHZhbHVlID0g
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAg
ICBnX2Fzc2VydCh2YWx1ZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2
YWx1ZSk7CisgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1
ZSkpOworICAgIHJldHVybiBqc2NfdmFsdWVfaXNfbnVsbCh2YWx1ZSk7CiB9CiAKIGJvb2wgV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc1VuZGVmaW5lZChXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0
ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZhc2NyaXB0
UmVzdWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICBKU1ZhbHVlUmVmIHZhbHVlID0g
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAg
ICBnX2Fzc2VydCh2YWx1ZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRl
eHQsIHZhbHVlKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVF
KHZhbHVlKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV9pc191bmRlZmluZWQodmFsdWUpOwogfQog
CiAjaWYgUExBVEZPUk0oR1RLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335293</attachid>
            <date>2018-03-08 05:30:58 -0800</date>
            <delta_ts>2018-03-16 04:29:38 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wk2-jsc-glib-api.diff</filename>
            <type>text/plain</type>
            <size>32772</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmgKaW5kZXggMjAyZTY4NmJm
NDkuLmUxNjM5YzRhMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ2xhc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xh
c3MuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAg
Ki8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01Q
SUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0Nf
Q09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3IgIk9u
bHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAppbmRleCAzNzgyZjBlOWMx
MC4uNWNhZTA4YmJjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0Nv
bnRleHQuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19D
T01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChK
U0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3Ig
Ik9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKaW5kZXggNDJh
OGQ4MDg4MmQuLjlhNDQ5MmRkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ0V4Y2VwdGlvbi5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYm
ICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElP
TikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmgKaW5kZXgg
NTFhYTJkNWM2OTIuLjI4YTA4NDVmZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDVmFsdWUuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KEpTQ19DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChKU0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAj
ZXJyb3IgIk9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmlydHVh
bE1hY2hpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFj
aGluZS5oCmluZGV4IDI1YzY0M2UwOWIwLi4wODNjNmE5MzQyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKQEAgLTE3LDcgKzE3
LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5l
ZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pCisjaWYgIWRl
ZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKSAmJiAh
ZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQogI2Vycm9yICJPbmx5IDxqc2MvanNjLmg+IGNh
biBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggZGM2YjMwNjZjM2EuLjYxNWFhN2ExODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTM2Niw2ICszNjYsOCBAQCBsaXN0KElOU0VSVCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UyAwCiApCiAKIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7
Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvIgorICAgICIke0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0v
UGx1Z2luUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9zb3VwIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9zb3VwIgpAQCAtNzYzLDYgKzc2NSw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElP
TikKICAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJE
SU5HX0hFQURFUlNfRElSfQorICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9
L0phdmFTY3JpcHRDb3JlL2dsaWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNf
V0VCS0lUMkdUS19ESVJ9CiAgICAgICAgICAgICAke1dlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURF
UlN9CiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi8qLmNwcApAQCAt
ODA3LDYgKzgxMCw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKICAgICAgICAgICAgIC1J
JHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkke0RFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0RJUn0KICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfQor
ICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3JlL2ds
aWIKICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19ESVJ9CiAg
ICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRVhURU5TSU9OX0RJ
Un0KICAgICAgICAgICAgIC1JJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEphdmFzY3JpcHRSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5jcHAKaW5kZXggMDEwODA1YzM5MGEuLjdiMjVkNjg4
Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRK
YXZhc2NyaXB0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcApAQCAtMjIsMjEgKzIyLDE5IEBACiAKICNpbmNs
dWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8anNjL0pT
Q1ZhbHVlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogc3RydWN0
IF9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0IHsKLSAgICBfV2ViS2l0SmF2YXNjcmlwdFJlc3VsdChK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLSAgICAgICAgOiBqYXZhc2NyaXB0R2xvYmFsQ29u
dGV4dChqc0NvbnRleHQpCi0gICAgICAgICwgcmVmZXJlbmNlQ291bnQoMSkKKyAgICBfV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdChHUmVmUHRyPEpTQ0NvbnRleHQ+JiYganNDb250ZXh0LCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAgICAgICAg
OiBqc1ZhbHVlKGpzY0NvbnRleHRHZXRPckNyZWF0ZVZhbHVlKGpzQ29udGV4dC5nZXQoKSwgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKGpzY0NvbnRleHRHZXRKU0NvbnRleHQoanND
b250ZXh0LmdldCgpKSwgbnVsbHB0cikpKQogICAgIHsKLSAgICAgICAgdmFsdWUgPSBzZXJpYWxp
emVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoamF2YXNjcmlwdEdsb2JhbENvbnRleHQuZ2V0KCks
IG51bGxwdHIpOwogICAgIH0KIAotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4g
amF2YXNjcmlwdEdsb2JhbENvbnRleHQ7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZTsKKyAgICBHUmVm
UHRyPEpTQ1ZhbHVlPiBqc1ZhbHVlOwogCi0gICAgaW50IHJlZmVyZW5jZUNvdW50OworICAgIGlu
dCByZWZlcmVuY2VDb3VudCB7IDEgfTsKIH07CiAKIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCwgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2YXNj
cmlwdF9yZXN1bHRfcmVmLCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYpCkBAIC00NCw3
ICs0Miw3IEBAIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCwgd2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0LCB3ZWJraXRfamF2CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiB3ZWJraXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKEpTR2xvYmFsQ29udGV4dFJlZiBqYXZhc2Ny
aXB0R2xvYmFsQ29udGV4dCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUpCiB7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQoamF2YXNjcmlwdEdsb2JhbENvbnRleHQsIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CisgICAgbmV3IChyZXN1bHQpIFdlYktpdEphdmFzY3JpcHRSZXN1bHQoanNjQ29udGV4dEdldE9y
Q3JlYXRlKGphdmFzY3JpcHRHbG9iYWxDb250ZXh0KSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC05MSw3ICs4OSw4IEBAIHZvaWQgd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X3VucmVmKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQpCiAgKi8KIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2dsb2JhbF9jb250ZXh0KFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1
bHQpCiB7Ci0gICAgcmV0dXJuIGphdmFzY3JpcHRSZXN1bHQtPmphdmFzY3JpcHRHbG9iYWxDb250
ZXh0LmdldCgpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGphdmFzY3JpcHRSZXN1bHQsIG51
bGxwdHIpOworICAgIHJldHVybiBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGpzY192YWx1ZV9nZXRf
Y29udGV4dChqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVlLmdldCgpKSk7CiB9CiAKIC8qKgpAQCAt
MTA1LDUgKzEwNCwxMiBAQCBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X2phdmFzY3JpcHRfcmVz
dWx0X2dldF9nbG9iYWxfY29udGV4dChXZWJLaXRKYXZhc2NyaXB0UgogICovCiBKU1ZhbHVlUmVm
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCkKIHsKLSAgICByZXR1cm4gamF2YXNjcmlwdFJlc3VsdC0+dmFs
dWU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoamF2YXNjcmlwdFJlc3VsdCwgbnVsbHB0cik7
CisgICAgcmV0dXJuIGpzY1ZhbHVlR2V0SlNWYWx1ZShqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVl
LmdldCgpKTsKK30KKworSlNDVmFsdWUqIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNf
dmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChqYXZhc2NyaXB0UmVzdWx0LCBudWxscHRyKTsKKyAgICByZXR1
cm4gamF2YXNjcmlwdFJlc3VsdC0+anNWYWx1ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTFjY2Q3NzU1
ZjIuLjhlMzFjZjM5YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIldlYktp
dFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0
ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CkBAIC0yMjgsNyArMjI5LDcgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb3Vz
ZVRhcmdldE1vZGlmaWVyczsKIAogICAgIEdSZWZQdHI8V2ViS2l0RmluZENvbnRyb2xsZXI+IGZp
bmRDb250cm9sbGVyOwotICAgIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4gamF2YXNj
cmlwdEdsb2JhbENvbnRleHQ7CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQ7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiBtYWluUmVzb3VyY2U7CiAgICAgTG9hZGlu
Z1Jlc291cmNlc01hcCBsb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAtMzI2MSwxMiArMzI2MiwxNyBA
QCBXZWJLaXRGaW5kQ29udHJvbGxlciogd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xs
ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldwogICogICAgdGhlIHJlc3VsdCB2YWx1ZXMgb2Ygc2Ny
aXB0cy4KICAqLwogSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNj
cmlwdF9nbG9iYWxfY29udGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVy
biBqc2NDb250ZXh0R2V0SlNDb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4dCh3
ZWJWaWV3KSk7Cit9CisKK0pTQ0NvbnRleHQqIHdlYmtpdF93ZWJfdmlld19nZXRfanNfY29udGV4
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICBpZiAoIXdlYlZpZXct
PnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KQotICAgICAgICB3ZWJWaWV3LT5wcml2LT5q
YXZhc2NyaXB0R2xvYmFsQ29udGV4dCA9IGFkb3B0KEpTR2xvYmFsQ29udGV4dENyZWF0ZShudWxs
cHRyKSk7Ci0gICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0
LmdldCgpOworICAgIGlmICghd2ViVmlldy0+cHJpdi0+anNDb250ZXh0KQorICAgICAgICB3ZWJW
aWV3LT5wcml2LT5qc0NvbnRleHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfbmV3KCkpOworICAg
IHJldHVybiB3ZWJWaWV3LT5wcml2LT5qc0NvbnRleHQuZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHdrU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBl
eGNlcHRpb25EZXRhaWxzLCBHVGFzayogdGFzaykKQEAgLTMzNDMsOCArMzM0OSw3IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyKiBzY3JpcHQsCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9p
bnRlciAgICAgIHVzZXJfZGF0YSkKICAqIHsKICAqICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
ICpqc19yZXN1bHQ7Ci0gKiAgICAgSlNWYWx1ZVJlZiAgICAgICAgICAgICAgdmFsdWU7Ci0gKiAg
ICAgSlNHbG9iYWxDb250ZXh0UmVmICAgICAgY29udGV4dDsKKyAqICAgICBKU0NWYWx1ZSAgICAg
ICAgICAgICAgICp2YWx1ZTsKICAqICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICplcnJvciA9
IE5VTEw7CiAgKgogICogICAgIGpzX3Jlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNj
cmlwdF9maW5pc2ggKFdFQktJVF9XRUJfVklFVyAob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3IpOwpA
QCAtMzM1NCwxOSArMzM1OSwxNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICogICAgICAg
ICByZXR1cm47CiAgKiAgICAgfQogICoKLSAqICAgICBjb250ZXh0ID0gd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dCAoanNfcmVzdWx0KTsKLSAqICAgICB2YWx1ZSA9
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgKGpzX3Jlc3VsdCk7Ci0gKiAgICAg
aWYgKEpTVmFsdWVJc1N0cmluZyAoY29udGV4dCwgdmFsdWUpKSB7Ci0gKiAgICAgICAgIEpTU3Ry
aW5nUmVmIGpzX3N0cl92YWx1ZTsKLSAqICAgICAgICAgZ2NoYXIgICAgICAqc3RyX3ZhbHVlOwot
ICogICAgICAgICBnc2l6ZSAgICAgICBzdHJfbGVuZ3RoOwotICoKLSAqICAgICAgICAganNfc3Ry
X3ZhbHVlID0gSlNWYWx1ZVRvU3RyaW5nQ29weSAoY29udGV4dCwgdmFsdWUsIE5VTEwpOwotICog
ICAgICAgICBzdHJfbGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplIChq
c19zdHJfdmFsdWUpOwotICogICAgICAgICBzdHJfdmFsdWUgPSAoZ2NoYXIgKilnX21hbGxvYyAo
c3RyX2xlbmd0aCk7Ci0gKiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcgKGpzX3N0cl92
YWx1ZSwgc3RyX3ZhbHVlLCBzdHJfbGVuZ3RoKTsKLSAqICAgICAgICAgSlNTdHJpbmdSZWxlYXNl
IChqc19zdHJfdmFsdWUpOwotICogICAgICAgICBnX3ByaW50ICgiU2NyaXB0IHJlc3VsdDogJXNc
biIsIHN0cl92YWx1ZSk7CisgKiAgICAgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2pzX3ZhbHVlIChqc19yZXN1bHQpOworICogICAgIGlmIChqc2NfdmFsdWVfaXNfc3RyaW5n
ICh2YWx1ZSkpIHsKKyAqICAgICAgICAgSlNDRXhjZXB0aW9uICpleGNlcHRpb247CisgKiAgICAg
ICAgIGdjaGFyICAgICAgICAqc3RyX3ZhbHVlOworICoKKyAqICAgICAgICAgc3RyX3ZhbHVlID0g
anNjX3ZhbHVlX3RvX3N0cmluZyAodmFsdWUpOworICogICAgICAgICBleGNlcHRpb24gPSBqc2Nf
Y29udGV4dF9nZXRfZXhjZXB0aW9uIChqc2NfdmFsdWVfZ2V0X2NvbnRleHQgKHZhbHVlKSk7Cisg
KiAgICAgICAgIGlmIChleGNlcHRpb24pCisgKiAgICAgICAgICAgICBnX3dhcm5pbmcgKCJFcnJv
ciBydW5uaW5nIGphdmFzY3JpcHQ6ICVzIiwganNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZSAoZXhj
ZXB0aW9uKSk7CisgKiAgICAgICAgIGVsc2UKKyAqICAgICAgICAgICAgIGdfcHJpbnQgKCJTY3Jp
cHQgcmVzdWx0OiAlc1xuIiwgc3RyX3ZhbHVlKTsKICAqICAgICAgICAgZ19mcmVlIChzdHJfdmFs
dWUpOwogICogICAgIH0gZWxzZSB7CiAgKiAgICAgICAgIGdfd2FybmluZyAoIkVycm9yIHJ1bm5p
bmcgamF2YXNjcmlwdDogdW5leHBlY3RlZCByZXR1cm4gdmFsdWUiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgK
aW5kZXggNWE5ZjczODlmNDQuLmY4YTVmZmY2MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaApAQCAtMjUs
NiArMjUsNyBAQAogI2RlZmluZSBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0X2gKIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogCkBA
IC01MCw2ICs1MSw5IEBAIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRl
eHQgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiBXRUJLSVRfQVBJIEpTVmFs
dWVSZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgICAgICAgICAgKFdlYktp
dEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiAKK1dFQktJVF9BUEkgSlNDVmFsdWUgKgor
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZSAgICAgICAoV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGMzNjk2
NTNhNDEyLi4wYmVkY2I3NGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgV2ViS2l0V2Vi
Vmlld19oCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxq
c2MvanNjLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgpAQCAtNDMzLDYgKzQzNCw5IEBAIHdlYmtpdF93ZWJf
dmlld19nZXRfZmluZF9jb250cm9sbGVyICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcK
IFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFz
Y3JpcHRfZ2xvYmFsX2NvbnRleHQgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgSlNDQ29udGV4dCAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2pzX2NvbnRleHQgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpzY3JpcHQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAyMDg5NmYzYjYwZi4uYjI2YjdlMTRjMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMjA1LDYgKzIwNSw3IEBAIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZF93aXRoX2FyZ3VtZW50CiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcgogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IK
IHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dAord2Via2l0X3dl
Yl92aWV3X2dldF9qc19jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQKIHdl
YmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19ydW5f
amF2YXNjcmlwdF9mcm9tX2dyZXNvdXJjZQpAQCAtMjMyLDYgKzIzMyw3IEBAIHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9yZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZgogd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dAogd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF92YWx1ZQord2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZQog
CiA8U1VCU0VDVElPTiBXZWJLaXRTY3JpcHREaWFsb2c+CiBXZWJLaXRTY3JpcHREaWFsb2cKQEAg
LTE0ODcsNiArMTQ4OSw4IEBAIHdlYmtpdF9mcmFtZV9pc19tYWluX2ZyYW1lCiB3ZWJraXRfZnJh
bWVfZ2V0X3VyaQogd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0CiB3
ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkCit3ZWJr
aXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0RnJhbWVDbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKaW5kZXggMTk1MzMzM2FkYWUuLjFkMWE5OGUx
MTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
IAogI2luY2x1ZGUgIldlYktpdEZyYW1lUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNjcmlw
dFdvcmxkUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC0xMjYsMyArMTI3LDE4IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfZnJhbWVf
Z2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKFdlYktpdEZyCiAKICAgICBy
ZXR1cm4gZnJhbWUtPnByaXYtPndlYkZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3ZWJraXRTY3Jp
cHRXb3JsZEdldEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQpKTsKIH0KKworSlNDQ29u
dGV4dCogd2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0KFdlYktpdEZyYW1lKiBmcmFtZSkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRy
KTsKKworICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGUoZnJhbWUtPnByaXYtPndlYkZy
YW1lLT5qc0NvbnRleHQoKSkubGVha1JlZigpOworfQorCitKU0NDb250ZXh0KiB3ZWJraXRfZnJh
bWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChXZWJLaXRGcmFtZSogZnJhbWUsIFdl
YktpdFNjcmlwdFdvcmxkKiB3b3JsZCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfRlJBTUUoZnJhbWUpLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfU0NSSVBUX1dPUkxEKHdvcmxkKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4ganNj
Q29udGV4dEdldE9yQ3JlYXRlKGZyYW1lLT5wcml2LT53ZWJGcmFtZS0+anNDb250ZXh0Rm9yV29y
bGQod2Via2l0U2NyaXB0V29ybGRHZXRJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKHdvcmxkKSkp
LmxlYWtSZWYoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCmluZGV4IDUwNTkzMDBmNzNh
Li4yYzQ1NThhN2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CiAKQEAg
LTY4LDYgKzY5LDEzIEBAIFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfZnJh
bWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkIChXZWJLaXRGcmFtZSAg
ICAgICAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRTY3JpcHRXb3JsZCAqd29ybGQpOwogCitXRUJLSVRfQVBJIEpTQ0Nv
bnRleHQgKgord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKKworV0VCS0lUX0FQSSBKU0NDb250ZXh0
ICoKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkICAgICAgICAg
KFdlYktpdEZyYW1lICAgICAgICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdFdvcmxkICp3b3JsZCk7CisKIEdf
RU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvRnJhbWVUZXN0LmNwcAppbmRleCA5OTY3M2U0ODc1ZS4uZjBmNGU0NzRkYzMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwCkBAIC01MSw2ICs1MSwxMCBAQCBwcml2YXRlOgogICAgICAgICBnX2Fzc2VydChXRUJLSVRf
SVNfRlJBTUUoZnJhbWUpKTsKICAgICAgICAgZ19hc3NlcnQod2Via2l0X2ZyYW1lX2dldF9qYXZh
c2NyaXB0X2dsb2JhbF9jb250ZXh0KGZyYW1lKSk7CiAKKyAgICAgICAgR1JlZlB0cjxKU0NDb250
ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0KGZy
YW1lKSk7CisgICAgICAgIGdfYXNzZXJ0KEpTQ19JU19DT05URVhUKGpzQ29udGV4dC5nZXQoKSkp
OworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KGpzQ29udGV4dC5nZXQoKSkpOworCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0V2ViVmlldy5jcHAKaW5kZXggZmUwYzJjYzQzZjQuLjU0MTE0MzRkNGU2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
V2ViVmlldy5jcHAKQEAgLTIxLDggKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTVmFsdWVSZWYuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KIApAQCAtMjg3LDU0ICsyODUsNjQgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdSdW5KYXZhU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS50aXRs
ZTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwor
ICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkp
OwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1
ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0
UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldl
YktpdEdUSysgVGl0bGUiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnV2ViS2l0TGluaycpLmhyZWY7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUo
amF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIHZh
bHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGph
dmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCks
ID09LCAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIpOwogCiAgICAgamF2YXNjcmlwdFJlc3Vs
dCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykudGV4dENvbnRlbnQiLCAmZXJyb3Iub3V0
UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0
KCFlcnJvci5nZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRHVEsrIFdlYnNpdGUiKTsKIAogICAg
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoImEgPSAyNTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRS
ZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0
UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21w
ZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVz
dWx0KSwgPT0sIDI1KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2Ny
aXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSAyLjU7IiwgJmVycm9yLm91dFB0cigpKTsKICAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAyLjUpOwogCiAgICAgamF2YXNjcmlwdFJl
c3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IHRydWUi
LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAg
IHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwog
ICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9
IGZhbHNlIiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3Vs
dCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0KCFXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CiAKICAg
ICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJhID0gbnVsbCIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3Jp
cHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydChX
ZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzTnVsbChqYXZhc2NyaXB0UmVzdWx0KSk7CiAK
ICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJmdW5jdGlvbiBGb28oKSB7IGEgPSAyNTsgfSBGb28oKTsiLCAmZXJyb3Iub3V0UHRy
KCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFl
cnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJ
c1VuZGVmaW5lZChqYXZhc2NyaXB0UmVzdWx0KSk7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZCgiL29y
Zy93ZWJraXQvZ2xpYi90ZXN0cy9saW5rLXRpdGxlLmpzIiwgJmVycm9yLm91dFB0cigpKTsKICAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwogICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVT
dHJpbmcuZ2V0KCksID09LCAiV2ViS2l0R1RLKyBUaXRsZSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCmlu
ZGV4IGQzYTEyYWJmOTMyLi4xYWUxOTcwOTYyYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjUs
NiArMjUsNyBAQAogI2lmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2Vu
ZGlmCisjaW5jbHVkZSA8anNjL2pzYy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNDA3LDI1ICs0MDgsMTcgQEAg
c3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVu
c2lvbiwgV2ViS2l0V2ViUGFnZSogd2UKICNlbmRpZgogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBl
Y2hvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGpzQ29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0
UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiopCitzdGF0aWMgY2hhciogZWNob0NhbGxiYWNrKGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPD0gMCkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCk7Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gc3RyaW5nKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGpzQ29udGV4dCwgYXJndW1lbnRz
WzBdLCAwKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGpzQ29udGV4dCwgc3RyaW5n
LmdldCgpKTsKKyAgICByZXR1cm4gZ19zdHJkdXAobWVzc2FnZSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdpbmRvd09iamVjdENsZWFyZWQoV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkLCBXZWJLaXRXZWJQ
YWdlKiBwYWdlLCBXZWJLaXRGcmFtZSogZnJhbWUsIGdwb2ludGVyKQogewotICAgIEpTR2xvYmFs
Q29udGV4dFJlZiBqc0NvbnRleHQgPSB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4
dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZCk7Ci0gICAgZ19hc3NlcnQoanNDb250ZXh0
KTsKLSAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxPYmpl
Y3QoanNDb250ZXh0KTsKLSAgICBnX2Fzc2VydChnbG9iYWxPYmplY3QpOwotCi0gICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGZ1bmN0aW9uTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoImVjaG8iKSk7Ci0gICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBKU09iamVj
dE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhqc0NvbnRleHQsIGZ1bmN0aW9uTmFtZS5nZXQoKSwg
ZWNob0NhbGxiYWNrKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGpzQ29udGV4dCwgZ2xvYmFs
T2JqZWN0LCBmdW5jdGlvbk5hbWUuZ2V0KCksIGZ1bmN0aW9uLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5LCAwKTsKKyAgICBHUmVm
UHRyPEpTQ0NvbnRleHQ+IGpzQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pz
X2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwgd29ybGQpKTsKKyAgICBnX2Fzc2VydChK
U0NfSVNfQ09OVEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKKyAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBm
dW5jdGlvbiA9IGFkb3B0R1JlZihqc2NfdmFsdWVfbmV3X2Z1bmN0aW9uKGpzQ29udGV4dC5nZXQo
KSwgImVjaG8iLCBHX0NBTExCQUNLKGVjaG9DYWxsYmFjayksIEdfVFlQRV9TVFJJTkcsIDEsIEdf
VFlQRV9TVFJJTkcpKTsKKyAgICBqc2NfY29udGV4dF9zZXRfdmFsdWUoanNDb250ZXh0LmdldCgp
LCAiZWNobyIsIGZ1bmN0aW9uLmdldCgpKTsKIH0KIAogc3RhdGljIFdlYktpdFdlYlBhZ2UqIGdl
dFdlYlBhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIHVpbnQ2NF90IHBhZ2VJRCwg
R0RCdXNNZXRob2RJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQpAQCAtNDczLDkgKzQ2Niw4IEBAIHN0
YXRpYyB2b2lkIG1ldGhvZENhbGxDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IGNvbnN0IGNoYXIqIHNlbmRlciwKICAgICAgICAgR1JlZlB0cjxXZWJLaXRTY3JpcHRXb3JsZD4g
d29ybGQgPSBhZG9wdEdSZWYod2Via2l0X3NjcmlwdF93b3JsZF9uZXcoKSk7CiAgICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X2RlZmF1bHQoKSAhPSB3b3JsZC5nZXQoKSk7
CiAgICAgICAgIFdlYktpdEZyYW1lKiBmcmFtZSA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9m
cmFtZShwYWdlKTsKLSAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCA9IHdlYmtp
dF9mcmFtZV9nZXRfamF2YXNjcmlwdF9jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdv
cmxkLmdldCgpKTsKLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU2NyaXB0KEFk
b3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQpKTsKLSAgICAgICAgSlNF
dmFsdWF0ZVNjcmlwdChqc0NvbnRleHQsIGpzU2NyaXB0LmdldCgpLCAwLCAwLCAwLCAwKTsKKyAg
ICAgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2Zy
YW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdvcmxkLmdldCgpKSk7
CisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29udGV4
dF9ldmFsdWF0ZShqc0NvbnRleHQuZ2V0KCksIHNjcmlwdCkpOwogICAgICAgICBnX2RidXNfbWV0
aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIDApOwogICAgIH0gZWxzZSBp
ZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiQWJvcnRQcm9jZXNzIikpIHsKICAgICAgICAgYWJv
cnQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9X
ZWJQcm9jZXNzVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
V2ViUHJvY2Vzc1Rlc3QuY3BwCmluZGV4IGUzNWY3Nzk5NDRiLi44NGUwNzI1NGU2NCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vz
c1Rlc3QuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3QuaCIK
IAogI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRl
IDxqc2MvanNjLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC01NSwz
MSArNTUsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBXZWJQcm9jZXNzVGVz
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpCiAgICAgcmV0dXJuIHRlc3RzTWFwKCku
Z2V0KHRlc3ROYW1lKSgpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBydW5UZXN0KEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRpYyBnYm9vbGVhbiBydW5UZXN0KFdlYktpdFdlYlBh
Z2UqIHdlYlBhZ2UsIGNvbnN0IGNoYXIqIHRlc3RQYXRoKQogewotICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBzdHJpbmdWYWx1ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBhcmd1bWVudHNbMF0sIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydChzdHJpbmdWYWx1ZSk7Ci0g
ICAgc2l6ZV90IHRlc3RQYXRoTGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKHN0cmluZ1ZhbHVlLmdldCgpKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IHRlc3RQYXRoKHN0
YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyh0ZXN0UGF0aExlbmd0aCkpKTsKLSAgICBKU1N0cmlu
Z0dldFVURjhDU3RyaW5nKHN0cmluZ1ZhbHVlLmdldCgpLCB0ZXN0UGF0aC5nZXQoKSwgdGVzdFBh
dGhMZW5ndGgpOwotCi0gICAgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJfUEFH
RShKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwogICAgIGdfYXNzZXJ0KFdFQktJVF9J
U19XRUJfUEFHRSh3ZWJQYWdlKSk7CiAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViUGFnZSkpOworICAgIGdfYXNzZXJ0
KHRlc3RQYXRoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gdGVzdCA9
IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCh0ZXN0UGF0aC5nZXQoKSkp
OwotICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdGVzdC0+cnVuVGVzdChn
X3N0cnJzdHIodGVzdFBhdGguZ2V0KCksICIvIikgKyAxLCB3ZWJQYWdlKSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShT
dHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7CisgICAgcmV0dXJuIHRlc3QtPnJ1blRlc3QoZ19z
dHJyc3RyKHRlc3RQYXRoLCAiLyIpICsgMSwgd2ViUGFnZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBK
U1N0YXRpY0Z1bmN0aW9uIHdlYlByb2Nlc3NUZXN0UnVubmVyU3RhdGljRnVuY3Rpb25zW10gPQot
ewotICAgIHsgInJ1blRlc3QiLCBydW5UZXN0LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgeyBudWxscHRyLCBudWxs
cHRyLCAwIH0KLX07Ci0KLXN0YXRpYyB2b2lkIHdlYlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemUo
SlNPYmplY3RSZWYgb2JqZWN0KQorc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlc3RSdW5uZXJGaW5h
bGl6ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewotICAgIGdfb2JqZWN0X3VucmVmKEpTT2Jq
ZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKKyAgICBnX29iamVjdF91bnJlZih3ZWJQYWdlKTsKIAog
ICAgIGlmIChzX3dhdGNoZWRPYmplY3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTcsMTkgKzg1LDE0IEBAIHN0YXRpYyB2b2lkIHdpbmRvd09iamVjdENsZWFyZWRDYWxsYmFjayhX
ZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdlYlBhZ2UqCiAgICAgaWYgKGdfc3RyY21w
MCh3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSh3ZWJQYWdlKSwgIndlYnByb2Nlc3M6Ly90ZXN0Iikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gd2Vi
a2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwg
d29ybGQpOwotICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2Jh
bE9iamVjdChjb250ZXh0KTsKLQotICAgIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmaW5pdGlv
biA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgIGNsYXNzRGVmaW5pdGlvbi5jbGFzc05h
bWUgPSAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiOwotICAgIGNsYXNzRGVmaW5pdGlvbi5zdGF0aWNG
dW5jdGlvbnMgPSB3ZWJQcm9jZXNzVGVzdFJ1bm5lclN0YXRpY0Z1bmN0aW9uczsKLSAgICBjbGFz
c0RlZmluaXRpb24uZmluYWxpemUgPSB3ZWJQcm9jZXNzVGVzdFJ1bm5lckZpbmFsaXplOwotCi0g
ICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsK
LSAgICBKU09iamVjdFJlZiBjbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBqc0Ns
YXNzLCBnX29iamVjdF9yZWYod2ViUGFnZSkpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBwcm9wZXJ0eVN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldl
YlByb2Nlc3NUZXN0UnVubmVyIikpOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eVN0cmluZy5nZXQoKSwgY2xhc3NPYmplY3QsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlTm9uZSwgbnVsbHB0cik7Ci0gICAgSlNDbGFzc1JlbGVhc2UoanNDbGFzcyk7
CisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFt
ZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZCkpOworICAgIFdl
YlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBhdXRvKiBqc0NsYXNzID0ganNjX2NvbnRleHRfcmVn
aXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIldlYlByb2Nlc3NUZXN0UnVubmVyIiwgbnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4od2ViUHJvY2Vzc1Rlc3RSdW5uZXJG
aW5hbGl6ZSkpOworICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKGpzQ2xhc3MpKTsKKyAgICBqc2NfY2xhc3NfYWRkX21ldGhv
ZChqc0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FMTEJBQ0socnVuVGVzdCksIEdfVFlQRV9CT09MRUFO
LCAxLCBHX1RZUEVfU1RSSU5HKTsKKyAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB0ZXN0UnVubmVyID0g
YWRvcHRHUmVmKGpzY192YWx1ZV9uZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCksIGdfb2JqZWN0X3Jl
Zih3ZWJQYWdlKSwganNDbGFzcykpOworICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHRlc3RSdW5uZXIuZ2V0KCkpKTsKKyAg
ICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgIldlYlByb2Nlc3NUZXN0UnVu
bmVyIiwgdGVzdFJ1bm5lci5nZXQoKSk7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9pbml0aWFsaXplKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3Bw
CmluZGV4IGY2MGEyMGUyZjM4Li4yZWU3ZGY5YjRhMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMzEyLDY3ICszMTIs
NDIgQEAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRG
cm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXMKICAgICByZXR1cm4gbV9qYXZhc2NyaXB0UmVz
dWx0OwogfQogCi1zdGF0aWMgY2hhcioganNWYWx1ZVRvQ1N0cmluZyhKU0dsb2JhbENvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICBnX2Fzc2VydCh2YWx1ZSk7Ci0g
ICAgZ19hc3NlcnQoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSk7Ci0KLSAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nVmFsdWUoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgdmFsdWUsIDApKTsKLSAgICBnX2Fzc2VydChzdHJpbmdWYWx1ZSk7Ci0KLSAg
ICBzaXplX3QgY1N0cmluZ0xlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShzdHJpbmdWYWx1ZS5nZXQoKSk7Ci0gICAgY2hhciogY1N0cmluZyA9IHN0YXRpY19jYXN0PGNo
YXIqPihnX21hbGxvYyhjU3RyaW5nTGVuZ3RoKSk7Ci0gICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhzdHJpbmdWYWx1ZS5nZXQoKSwgY1N0cmluZywgY1N0cmluZ0xlbmd0aCk7Ci0gICAgcmV0dXJu
IGNTdHJpbmc7Ci19Ci0KIGNoYXIqIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3Ry
aW5nKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7Ci0gICAgSlNH
bG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2ds
b2JhbF9jb250ZXh0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KGNvbnRleHQpOwot
ICAgIHJldHVybiBqc1ZhbHVlVG9DU3RyaW5nKGNvbnRleHQsIHdlYmtpdF9qYXZhc2NyaXB0X3Jl
c3VsdF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGF1dG8qIHZhbHVlID0gd2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKKyAg
ICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICBnX2Fzc2VydChqc2NfdmFsdWVf
aXNfc3RyaW5nKHZhbHVlKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV90b19zdHJpbmcodmFsdWUp
OwogfQogCiBkb3VibGUgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBjb250ZXh0ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29u
dGV4dChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICBKU1Zh
bHVlUmVmIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShqYXZhc2Ny
aXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCh2YWx1ZSk7Ci0gICAgZ19hc3NlcnQoSlNWYWx1ZUlz
TnVtYmVyKGNvbnRleHQsIHZhbHVlKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIHZhbHVlLCAwKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jl
c3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQoSlNDX0lT
X1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZSkp
OworICAgIHJldHVybiBqc2NfdmFsdWVfdG9fZG91YmxlKHZhbHVlKTsKIH0KIAogYm9vbCBXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0g
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZhc2NyaXB0UmVz
dWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICBKU1ZhbHVlUmVmIHZhbHVlID0gd2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBn
X2Fzc2VydCh2YWx1ZSk7Ci0gICAgZ19hc3NlcnQoSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0LCB2
YWx1ZSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpOwor
ICAgIGF1dG8qIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAg
ICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfYm9vbGVhbih2YWx1ZSkpOworICAgIHJldHVybiBqc2Nf
dmFsdWVfdG9fYm9vbGVhbih2YWx1ZSk7CiB9CiAKIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRJc051bGwoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkK
IHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jl
c3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQo
Y29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQodmFsdWUpOwotCi0g
ICAgcmV0dXJuIEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpOworICAgIGF1dG8qIHZhbHVl
ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICByZXR1cm4ganNjX3Zh
bHVlX2lzX251bGwodmFsdWUpOwogfQogCiBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0SXNVbmRlZmluZWQoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkK
IHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jl
c3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQo
Y29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQodmFsdWUpOwotCi0g
ICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSk7CisgICAgYXV0byog
dmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRS
ZXN1bHQpOworICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOworICAgIHJldHVybiBq
c2NfdmFsdWVfaXNfdW5kZWZpbmVkKHZhbHVlKTsKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335930</attachid>
            <date>2018-03-16 04:29:38 -0700</date>
            <delta_ts>2018-03-20 07:53:56 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wk-jsc-glib-api.diff</filename>
            <type>text/plain</type>
            <size>34066</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmgKaW5kZXggZmMwMjFjNWY4
MzEuLjFhNjhlYzEwOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ2xhc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xh
c3MuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAg
Ki8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01Q
SUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0Nf
Q09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3IgIk9u
bHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAppbmRleCAzNzgyZjBlOWMx
MC4uNWNhZTA4YmJjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0Nv
bnRleHQuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19D
T01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChK
U0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAjZXJyb3Ig
Ik9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKaW5kZXggMmZk
NTdmYWQyNWMuLjJiZWU2MDY0NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ0V4Y2VwdGlvbi5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYm
ICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElP
TikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmgKaW5kZXgg
NWVkYzlhYTQ5MTUuLmYzNGRjN2QzMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDVmFsdWUuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KEpTQ19DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChKU0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAj
ZXJyb3IgIk9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmVyc2lv
bi5oLmluIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZlcnNpb24uaC5pbgpp
bmRleCAwNzlmOTUzZDhmZS4uYzQ0NWY0NWRlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NWZXJzaW9uLmguaW4KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ1ZlcnNpb24uaC5pbgpAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURF
X18pICYmICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lO
U0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCiAjZXJyb3IgIk9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRp
cmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NWaXJ0dWFsTWFjaGluZS5oCmluZGV4IDI1YzY0M2UwOWIwLi4wODNjNmE5MzQyYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5l
LmgKQEAgLTE3LDcgKzE3LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICov
CiAKLSNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElM
QVRJT04pCisjaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NP
TVBJTEFUSU9OKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQogI2Vycm9yICJPbmx5
IDxqc2MvanNjLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggZGM2YjMwNjZjM2EuLmEzNzE1N2MxZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTM2Niw2ICszNjYsOSBAQCBsaXN0KElOU0VSVCBXZWJLaXRfSU5D
TFVERV9ESVJFQ1RPUklFUyAwCiApCiAKIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVD
VE9SSUVTCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUENPUkVHVEtfRElSfSIKKyAg
ICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZS8iCisgICAgIiR7Rk9S
V0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvZ2xpYiIKICAgICAiJHtXRUJLSVRf
RElSfS9QbHVnaW5Qcm9jZXNzL3VuaXgiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL3NvdXAiCkBAIC03NjIsNyArNzY1LDkgQEAgaWYgKEVOQUJMRV9JTlRST1NQ
RUNUSU9OKQogICAgICAgICAgICAgLUkke1dFQktJVF9ESVJ9CiAgICAgICAgICAgICAtSSR7REVS
SVZFRF9TT1VSQ0VTX0RJUn0KICAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lU
MkdUS19ESVJ9CisgICAgICAgICAgICAtSSR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUENPUkVH
VEtfRElSfQogICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9CisgICAgICAg
ICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvZ2xpYgogICAg
ICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19XRUJLSVQyR1RLX0RJUn0KICAgICAgICAg
ICAgICR7V2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSU30KICAgICAgICAgICAgICR7V0VCS0lU
X0RJUn0vU2hhcmVkL0FQSS9nbGliLyouY3BwCkBAIC04MDYsNyArODExLDkgQEAgaWYgKEVOQUJM
RV9JTlRST1NQRUNUSU9OKQogICAgICAgICAgICAgLUkke1dFQktJVF9ESVJ9CiAgICAgICAgICAg
ICAtSSR7REVSSVZFRF9TT1VSQ0VTX0RJUn0KICAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMkdUS19ESVJ9CisgICAgICAgICAgICAtSSR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUENPUkVHVEtfRElSfQogICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9
CisgICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX0RJUn0vSmF2YVNjcmlwdENvcmUv
Z2xpYgogICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19XRUJLSVQyR1RLX0RJUn0K
ICAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfV0VCS0lUMkdUS19FWFRFTlNJT05f
RElSfQogICAgICAgICAgICAgLUkke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcAppbmRleCAwMTA4MDVjMzkwYS4uN2IyNWQ2
ODhmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEphdmFzY3JpcHRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuY3BwCkBAIC0yMiwyMSArMjIsMTkgQEAKIAogI2lu
Y2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldlYktpdEphdmFz
Y3JpcHRSZXN1bHRQcml2YXRlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDxqc2MvSlNDQ29udGV4dFByaXZhdGUuaD4KKyNpbmNsdWRlIDxqc2Mv
SlNDVmFsdWVQcml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBzdHJ1
Y3QgX1dlYktpdEphdmFzY3JpcHRSZXN1bHQgewotICAgIF9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQotICAgICAgICA6IGphdmFzY3JpcHRHbG9iYWxD
b250ZXh0KGpzQ29udGV4dCkKLSAgICAgICAgLCByZWZlcmVuY2VDb3VudCgxKQorICAgIF9XZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KEdSZWZQdHI8SlNDQ29udGV4dD4mJiBqc0NvbnRleHQsIFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQorICAgICAg
ICA6IGpzVmFsdWUoanNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoanNDb250ZXh0LmdldCgpLCBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoanNjQ29udGV4dEdldEpTQ29udGV4dChq
c0NvbnRleHQuZ2V0KCkpLCBudWxscHRyKSkpCiAgICAgewotICAgICAgICB2YWx1ZSA9IHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShqYXZhc2NyaXB0R2xvYmFsQ29udGV4dC5nZXQo
KSwgbnVsbHB0cik7CiAgICAgfQogCi0gICAgSlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVm
PiBqYXZhc2NyaXB0R2xvYmFsQ29udGV4dDsKLSAgICBKU1ZhbHVlUmVmIHZhbHVlOworICAgIEdS
ZWZQdHI8SlNDVmFsdWU+IGpzVmFsdWU7CiAKLSAgICBpbnQgcmVmZXJlbmNlQ291bnQ7CisgICAg
aW50IHJlZmVyZW5jZUNvdW50IHsgMSB9OwogfTsKIAogR19ERUZJTkVfQk9YRURfVFlQRShXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0LCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHQsIHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9yZWYsIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZikKQEAgLTQ0
LDcgKzQyLDcgQEAgR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRKYXZhc2NyaXB0UmVzdWx0LCB3
ZWJraXRfamF2YXNjcmlwdF9yZXN1bHQsIHdlYmtpdF9qYXYKIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIHdlYmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUoSlNHbG9iYWxDb250ZXh0UmVmIGphdmFz
Y3JpcHRHbG9iYWxDb250ZXh0LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiByZXN1bHQg
PSBzdGF0aWNfY2FzdDxXZWJLaXRKYXZhc2NyaXB0UmVzdWx0Kj4oZmFzdE1hbGxvYyhzaXplb2Yo
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBuZXcgKHJlc3VsdCkgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdChqYXZhc2NyaXB0R2xvYmFsQ29udGV4dCwgc2VyaWFsaXplZFNjcmlwdFZhbHVl
KTsKKyAgICBuZXcgKHJlc3VsdCkgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdChqc2NDb250ZXh0R2V0
T3JDcmVhdGUoamF2YXNjcmlwdEdsb2JhbENvbnRleHQpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTkxLDcgKzg5LDggQEAgdm9pZCB3ZWJraXRf
amF2YXNjcmlwdF9yZXN1bHRfdW5yZWYoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlw
dFJlc3VsdCkKICAqLwogSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF9nZXRfZ2xvYmFsX2NvbnRleHQoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJl
c3VsdCkKIHsKLSAgICByZXR1cm4gamF2YXNjcmlwdFJlc3VsdC0+amF2YXNjcmlwdEdsb2JhbENv
bnRleHQuZ2V0KCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoamF2YXNjcmlwdFJlc3VsdCwg
bnVsbHB0cik7CisgICAgcmV0dXJuIGpzY0NvbnRleHRHZXRKU0NvbnRleHQoanNjX3ZhbHVlX2dl
dF9jb250ZXh0KGphdmFzY3JpcHRSZXN1bHQtPmpzVmFsdWUuZ2V0KCkpKTsKIH0KIAogLyoqCkBA
IC0xMDUsNSArMTA0LDEyIEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0KFdlYktpdEphdmFzY3JpcHRSCiAgKi8KIEpTVmFsdWVS
ZWYgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZShXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIHJldHVybiBqYXZhc2NyaXB0UmVzdWx0LT52
YWx1ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChqYXZhc2NyaXB0UmVzdWx0LCBudWxscHRy
KTsKKyAgICByZXR1cm4ganNjVmFsdWVHZXRKU1ZhbHVlKGphdmFzY3JpcHRSZXN1bHQtPmpzVmFs
dWUuZ2V0KCkpOworfQorCitKU0NWYWx1ZSogd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9q
c192YWx1ZShXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGphdmFzY3JpcHRSZXN1bHQsIG51bGxwdHIpOworICAgIHJl
dHVybiBqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1MWNjZDc3
NTVmMi4uOGUzMWNmMzliMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiV2Vi
S2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDxqc2MvSlNDQ29udGV4dFByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmlj
YXRlSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KQEAgLTIyOCw3ICsyMjksNyBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1v
dXNlVGFyZ2V0TW9kaWZpZXJzOwogCiAgICAgR1JlZlB0cjxXZWJLaXRGaW5kQ29udHJvbGxlcj4g
ZmluZENvbnRyb2xsZXI7Ci0gICAgSlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPiBqYXZh
c2NyaXB0R2xvYmFsQ29udGV4dDsKKyAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGpzQ29udGV4dDsK
IAogICAgIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+IG1haW5SZXNvdXJjZTsKICAgICBMb2Fk
aW5nUmVzb3VyY2VzTWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CkBAIC0zMjYxLDEyICszMjYyLDE3
IEBAIFdlYktpdEZpbmRDb250cm9sbGVyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJv
bGxlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3CiAgKiAgICB0aGUgcmVzdWx0IHZhbHVlcyBvZiBz
Y3JpcHRzLgogICovCiBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X3dlYl92aWV3X2dldF9qYXZh
c2NyaXB0X2dsb2JhbF9jb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0
dXJuIGpzY0NvbnRleHRHZXRKU0NvbnRleHQod2Via2l0X3dlYl92aWV3X2dldF9qc19jb250ZXh0
KHdlYlZpZXcpKTsKK30KKworSlNDQ29udGV4dCogd2Via2l0X3dlYl92aWV3X2dldF9qc19jb250
ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxscHRyKTsKIAotICAgIGlmICghd2ViVmll
dy0+cHJpdi0+amF2YXNjcmlwdEdsb2JhbENvbnRleHQpCi0gICAgICAgIHdlYlZpZXctPnByaXYt
PmphdmFzY3JpcHRHbG9iYWxDb250ZXh0ID0gYWRvcHQoSlNHbG9iYWxDb250ZXh0Q3JlYXRlKG51
bGxwdHIpKTsKLSAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+amF2YXNjcmlwdEdsb2JhbENvbnRl
eHQuZ2V0KCk7CisgICAgaWYgKCF3ZWJWaWV3LT5wcml2LT5qc0NvbnRleHQpCisgICAgICAgIHdl
YlZpZXctPnByaXYtPmpzQ29udGV4dCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9uZXcoKSk7Cisg
ICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmpzQ29udGV4dC5nZXQoKTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogd2tTZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMm
IGV4Y2VwdGlvbkRldGFpbHMsIEdUYXNrKiB0YXNrKQpAQCAtMzM0Myw4ICszMzQ5LDcgQEAgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgZ2NoYXIqIHNjcmlwdCwKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw
b2ludGVyICAgICAgdXNlcl9kYXRhKQogICogewogICogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQgKmpzX3Jlc3VsdDsKLSAqICAgICBKU1ZhbHVlUmVmICAgICAgICAgICAgICB2YWx1ZTsKLSAq
ICAgICBKU0dsb2JhbENvbnRleHRSZWYgICAgICBjb250ZXh0OworICogICAgIEpTQ1ZhbHVlICAg
ICAgICAgICAgICAgKnZhbHVlOwogICogICAgIEdFcnJvciAgICAgICAgICAgICAgICAgKmVycm9y
ID0gTlVMTDsKICAqCiAgKiAgICAganNfcmVzdWx0ID0gd2Via2l0X3dlYl92aWV3X3J1bl9qYXZh
c2NyaXB0X2ZpbmlzaCAoV0VCS0lUX1dFQl9WSUVXIChvYmplY3QpLCByZXN1bHQsICZlcnJvcik7
CkBAIC0zMzU0LDE5ICszMzU5LDE3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2Ny
aXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQsCiAgKiAgICAg
ICAgIHJldHVybjsKICAqICAgICB9CiAgKgotICogICAgIGNvbnRleHQgPSB3ZWJraXRfamF2YXNj
cmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0IChqc19yZXN1bHQpOwotICogICAgIHZhbHVl
ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZSAoanNfcmVzdWx0KTsKLSAqICAg
ICBpZiAoSlNWYWx1ZUlzU3RyaW5nIChjb250ZXh0LCB2YWx1ZSkpIHsKLSAqICAgICAgICAgSlNT
dHJpbmdSZWYganNfc3RyX3ZhbHVlOwotICogICAgICAgICBnY2hhciAgICAgICpzdHJfdmFsdWU7
Ci0gKiAgICAgICAgIGdzaXplICAgICAgIHN0cl9sZW5ndGg7Ci0gKgotICogICAgICAgICBqc19z
dHJfdmFsdWUgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5IChjb250ZXh0LCB2YWx1ZSwgTlVMTCk7Ci0g
KiAgICAgICAgIHN0cl9sZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUg
KGpzX3N0cl92YWx1ZSk7Ci0gKiAgICAgICAgIHN0cl92YWx1ZSA9IChnY2hhciAqKWdfbWFsbG9j
IChzdHJfbGVuZ3RoKTsKLSAqICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyAoanNfc3Ry
X3ZhbHVlLCBzdHJfdmFsdWUsIHN0cl9sZW5ndGgpOwotICogICAgICAgICBKU1N0cmluZ1JlbGVh
c2UgKGpzX3N0cl92YWx1ZSk7Ci0gKiAgICAgICAgIGdfcHJpbnQgKCJTY3JpcHQgcmVzdWx0OiAl
c1xuIiwgc3RyX3ZhbHVlKTsKKyAqICAgICB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF9nZXRfanNfdmFsdWUgKGpzX3Jlc3VsdCk7CisgKiAgICAgaWYgKGpzY192YWx1ZV9pc19zdHJp
bmcgKHZhbHVlKSkgeworICogICAgICAgICBKU0NFeGNlcHRpb24gKmV4Y2VwdGlvbjsKKyAqICAg
ICAgICAgZ2NoYXIgICAgICAgICpzdHJfdmFsdWU7CisgKgorICogICAgICAgICBzdHJfdmFsdWUg
PSBqc2NfdmFsdWVfdG9fc3RyaW5nICh2YWx1ZSk7CisgKiAgICAgICAgIGV4Y2VwdGlvbiA9IGpz
Y19jb250ZXh0X2dldF9leGNlcHRpb24gKGpzY192YWx1ZV9nZXRfY29udGV4dCAodmFsdWUpKTsK
KyAqICAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAqICAgICAgICAgICAgIGdfd2FybmluZyAoIkVy
cm9yIHJ1bm5pbmcgamF2YXNjcmlwdDogJXMiLCBqc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdlIChl
eGNlcHRpb24pKTsKKyAqICAgICAgICAgZWxzZQorICogICAgICAgICAgICAgZ19wcmludCAoIlNj
cmlwdCByZXN1bHQ6ICVzXG4iLCBzdHJfdmFsdWUpOwogICogICAgICAgICBnX2ZyZWUgKHN0cl92
YWx1ZSk7CiAgKiAgICAgfSBlbHNlIHsKICAqICAgICAgICAgZ193YXJuaW5nICgiRXJyb3IgcnVu
bmluZyBqYXZhc2NyaXB0OiB1bmV4cGVjdGVkIHJldHVybiB2YWx1ZSIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQu
aAppbmRleCA1YTlmNzM4OWY0NC4uZjhhNWZmZjYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdEphdmFzY3JpcHRSZXN1bHRfaAogCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8anNjL2pzYy5oPgogI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAK
QEAgLTUwLDYgKzUxLDkgQEAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29u
dGV4dCAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKIFdFQktJVF9BUEkgSlNW
YWx1ZVJlZgogd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1ZSAgICAgICAgICAoV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKIAorV0VCS0lUX0FQSSBKU0NWYWx1ZSAq
Cit3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlICAgICAgIChXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0ICpqc19yZXN1bHQpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYzM2
OTY1M2E0MTIuLjBiZWRjYjc0ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMjksNiArMjksNyBAQAogI2RlZmluZSBXZWJLaXRX
ZWJWaWV3X2gKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUg
PGpzYy9qc2MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CkBAIC00MzMsNiArNDM0LDkgQEAgd2Via2l0X3dl
Yl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dwogV0VCS0lUX0FQSSBKU0dsb2JhbENvbnRleHRSZWYKIHdlYmtpdF93ZWJfdmlld19nZXRfamF2
YXNjcmlwdF9nbG9iYWxfY29udGV4dCAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBKU0NDb250ZXh0ICoKK3dlYmtpdF93ZWJfdmlld19n
ZXRfanNfY29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfcnVu
X2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKnNjcmlwdCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDIwODk2ZjNiNjBmLi5iMjZiN2UxNGMyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0yMDUsNiArMjA1LDcgQEAgd2Via2l0
X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kX3dpdGhfYXJndW1lbnQKIHdlYmtpdF93
ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3Rv
cgogd2Via2l0X3dlYl92aWV3X2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0Cit3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2pzX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdAog
d2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0X2Zyb21fZ3Jlc291cmNlCkBAIC0yMzIsNiArMjMzLDcgQEAgd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X3JlZgogd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmCiB3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0CiB3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X3ZhbHVlCit3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVl
CiAKIDxTVUJTRUNUSU9OIFdlYktpdFNjcmlwdERpYWxvZz4KIFdlYktpdFNjcmlwdERpYWxvZwpA
QCAtMTQ4Nyw2ICsxNDg5LDggQEAgd2Via2l0X2ZyYW1lX2lzX21haW5fZnJhbWUKIHdlYmtpdF9m
cmFtZV9nZXRfdXJpCiB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQK
IHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQKK3dl
YmtpdF9mcmFtZV9nZXRfanNfY29udGV4dAord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zv
cl9zY3JpcHRfd29ybGQKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRGcmFtZUNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdEZyYW1lLmNwcAppbmRleCAxOTUzMzMzYWRhZS4uMWQxYTk4
ZTExN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEZyYW1lLmNwcApAQCAtMjIsNiArMjIsNyBA
QAogCiAjaW5jbHVkZSAiV2ViS2l0RnJhbWVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2Ny
aXB0V29ybGRQcml2YXRlLmgiCisjaW5jbHVkZSA8anNjL0pTQ0NvbnRleHRQcml2YXRlLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTEyNiwzICsxMjcsMTggQEAgSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF9mcmFt
ZV9nZXRfamF2YXNjcmlwdF9jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoV2ViS2l0RnIKIAogICAg
IHJldHVybiBmcmFtZS0+cHJpdi0+d2ViRnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdlYmtpdFNj
cmlwdFdvcmxkR2V0SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCh3b3JsZCkpOwogfQorCitKU0ND
b250ZXh0KiB3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQoV2ViS2l0RnJhbWUqIGZyYW1lKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19GUkFNRShmcmFtZSksIG51bGxw
dHIpOworCisgICAgcmV0dXJuIGpzY0NvbnRleHRHZXRPckNyZWF0ZShmcmFtZS0+cHJpdi0+d2Vi
RnJhbWUtPmpzQ29udGV4dCgpKS5sZWFrUmVmKCk7Cit9CisKK0pTQ0NvbnRleHQqIHdlYmtpdF9m
cmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKFdlYktpdEZyYW1lKiBmcmFtZSwg
V2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19GUkFNRShmcmFtZSksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19TQ1JJUFRfV09STEQod29ybGQpLCBudWxscHRyKTsKKworICAgIHJldHVybiBq
c2NDb250ZXh0R2V0T3JDcmVhdGUoZnJhbWUtPnByaXYtPndlYkZyYW1lLT5qc0NvbnRleHRGb3JX
b3JsZCh3ZWJraXRTY3JpcHRXb3JsZEdldEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQp
KSkubGVha1JlZigpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmgKaW5kZXggNTA1OTMwMGY3
M2EuLjJjNDU1OGE3ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8anNjL2pzYy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0V29ybGQuaD4KIApA
QCAtNjgsNiArNjksMTMgQEAgV0VCS0lUX0FQSSBKU0dsb2JhbENvbnRleHRSZWYKIHdlYmtpdF9m
cmFtZV9nZXRfamF2YXNjcmlwdF9jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQgKFdlYktpdEZyYW1l
ICAgICAgICpmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFNjcmlwdFdvcmxkICp3b3JsZCk7CiAKK1dFQktJVF9BUEkgSlND
Q29udGV4dCAqCit3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRGcmFtZSAgICAgICAqZnJhbWUpOworCitXRUJLSVRfQVBJIEpTQ0NvbnRl
eHQgKgord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQgICAgICAg
ICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2NyaXB0V29ybGQgKndvcmxkKTsKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCmluZGV4IDk5NjczZTQ4NzVlLi5mMGY0ZTQ3NGRjMyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVz
dC5jcHAKQEAgLTUxLDYgKzUxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9JU19GUkFNRShmcmFtZSkpOwogICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZnJhbWVfZ2V0X2ph
dmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQoZnJhbWUpKTsKIAorICAgICAgICBHUmVmUHRyPEpTQ0Nv
bnRleHQ+IGpzQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQo
ZnJhbWUpKTsKKyAgICAgICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgp
KSk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QoanNDb250ZXh0LmdldCgpKSk7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCBmZTBjMmNjNDNmNC4uNTQxMTQzNGQ0ZTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcApAQCAtMjEsOCArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNWYWx1ZVJlZi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogCkBAIC0yODcsNTQgKzI4NSw2NCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRS
ZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLnRp
dGxlOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7
CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQp
KSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZh
bHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3Jp
cHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAi
V2ViS2l0R1RLKyBUaXRsZSIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdXZWJLaXRMaW5rJykuaHJlZjsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1
ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAg
dmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmco
amF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQo
KSwgPT0sICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIik7CiAKICAgICBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS50ZXh0Q29udGVudCIsICZlcnJvci5v
dXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNj
cmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3Nl
cnQoIWVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgV2Vic2l0ZSIpOwogCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiYSA9IDI1OyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3Jp
cHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9j
bXBmbG9hdChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRS
ZXN1bHQpLCA9PSwgMjUpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IDIuNTsiLCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0
X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIDIuNSk7CiAKICAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gdHJ1
ZSIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Cisg
ICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3
ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7
CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydChXZWJWaWV3VGVzdDo6
amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CiAKICAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJh
ID0gZmFsc2UiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVz
dWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnQoIVdlYlZp
ZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKIAog
ICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImEgPSBudWxsIiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2Ny
aXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNj
cmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKGphdmFzY3JpcHRSZXN1bHQpKTsK
IAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoImZ1bmN0aW9uIEZvbygpIHsgYSA9IDI1OyB9IEZvbygpOyIsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQo
IWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dElzVW5kZWZpbmVkKGphdmFzY3JpcHRSZXN1bHQpKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIv
b3JnL3dlYmtpdC9nbGliL3Rlc3RzL2xpbmstdGl0bGUuanMiLCAmZXJyb3Iub3V0UHRyKCkpOwog
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0
X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRHVEsrIFRpdGxlIik7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAK
aW5kZXggZWQ0OTE4NDY3ZjguLmYyNDRiMTYzZDdiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0y
NSw2ICsyNSw3IEBACiAjaWYgVVNFKEdTVFJFQU1FUikKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAj
ZW5kaWYKKyNpbmNsdWRlIDxqc2MvanNjLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC00MDksMjUgKzQxMCwxNyBA
QCBzdGF0aWMgdm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uLCBXZWJLaXRXZWJQYWdlKiB3ZQogI2VuZGlmCiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVm
IGVjaG9DYWxsYmFjayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmpl
Y3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKikKK3N0YXRpYyBjaGFyKiBlY2hvQ2FsbGJhY2soY29uc3QgY2hhciogbWVz
c2FnZSkKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8PSAwKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoanNDb250ZXh0KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBzdHJpbmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoanNDb250ZXh0LCBhcmd1bWVu
dHNbMF0sIDApKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoanNDb250ZXh0LCBzdHJp
bmcuZ2V0KCkpOworICAgIHJldHVybiBnX3N0cmR1cChtZXNzYWdlKTsKIH0KIAogc3RhdGljIHZv
aWQgd2luZG93T2JqZWN0Q2xlYXJlZChXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdl
YlBhZ2UqIHBhZ2UsIFdlYktpdEZyYW1lKiBmcmFtZSwgZ3BvaW50ZXIpCiB7Ci0gICAgSlNHbG9i
YWxDb250ZXh0UmVmIGpzQ29udGV4dCA9IHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9jb250
ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdvcmxkKTsKLSAgICBnX2Fzc2VydChqc0NvbnRl
eHQpOwotICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9i
amVjdChqc0NvbnRleHQpOwotICAgIGdfYXNzZXJ0KGdsb2JhbE9iamVjdCk7Ci0KLSAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gZnVuY3Rpb25OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiZWNobyIpKTsKLSAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IEpTT2Jq
ZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGpzQ29udGV4dCwgZnVuY3Rpb25OYW1lLmdldCgp
LCBlY2hvQ2FsbGJhY2spOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoanNDb250ZXh0LCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uTmFtZS5nZXQoKSwgZnVuY3Rpb24sIGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHksIDApOworICAgIEdS
ZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRf
anNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZCkpOworICAgIGdfYXNzZXJ0
KEpTQ19JU19DT05URVhUKGpzQ29udGV4dC5nZXQoKSkpOworICAgIEdSZWZQdHI8SlNDVmFsdWU+
IGZ1bmN0aW9uID0gYWRvcHRHUmVmKGpzY192YWx1ZV9uZXdfZnVuY3Rpb24oanNDb250ZXh0Lmdl
dCgpLCAiZWNobyIsIEdfQ0FMTEJBQ0soZWNob0NhbGxiYWNrKSwgTlVMTCwgTlVMTCwgR19UWVBF
X1NUUklORywgMSwgR19UWVBFX1NUUklORykpOworICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShq
c0NvbnRleHQuZ2V0KCksICJlY2hvIiwgZnVuY3Rpb24uZ2V0KCkpOwogfQogCiBzdGF0aWMgV2Vi
S2l0V2ViUGFnZSogZ2V0V2ViUGFnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgdWlu
dDY0X3QgcGFnZUlELCBHREJ1c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24pCkBAIC00NzUs
OSArNDY4LDggQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlv
biogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICBHUmVmUHRyPFdlYktp
dFNjcmlwdFdvcmxkPiB3b3JsZCA9IGFkb3B0R1JlZih3ZWJraXRfc2NyaXB0X3dvcmxkX25ldygp
KTsKICAgICAgICAgZ19hc3NlcnQod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpICE9
IHdvcmxkLmdldCgpKTsKICAgICAgICAgV2ViS2l0RnJhbWUqIGZyYW1lID0gd2Via2l0X3dlYl9w
YWdlX2dldF9tYWluX2ZyYW1lKHBhZ2UpOwotICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYganND
b250ZXh0ID0gd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93
b3JsZChmcmFtZSwgd29ybGQuZ2V0KCkpOwotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4ganNTY3JpcHQoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdCkp
OwotICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwganNTY3JpcHQuZ2V0KCksIDAs
IDAsIDAsIDApOworICAgICAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGpzQ29udGV4dCA9IGFkb3B0
R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwg
d29ybGQuZ2V0KCkpKTsKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVzdWx0ID0gYWRvcHRH
UmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGpzQ29udGV4dC5nZXQoKSwgc2NyaXB0KSk7CiAgICAg
ICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgMCk7
CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJBYm9ydFByb2Nlc3MiKSkg
ewogICAgICAgICBhYm9ydCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggZTM1Zjc3OTk0NGIuLjIzMGZl
OGI0YzU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
V2ViUHJvY2Vzc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzVGVzdC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8Z2lvL2dp
by5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHIuaD4KQEAgLTU1LDMxICs1NSwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkKICAgICByZXR1
cm4gdGVzdHNNYXAoKS5nZXQodGVzdE5hbWUpKCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHJ1
blRlc3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorc3RhdGljIGdib29sZWFuIHJ1blRl
c3QoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgY2hhciogdGVzdFBhdGgpCiB7Ci0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ1ZhbHVlKEFkb3B0LCBKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgbnVsbHB0cikpOwotICAgIGdfYXNzZXJ0KHN0
cmluZ1ZhbHVlKTsKLSAgICBzaXplX3QgdGVzdFBhdGhMZW5ndGggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nVmFsdWUuZ2V0KCkpOwotICAgIEdVbmlxdWVQdHI8Y2hh
cj4gdGVzdFBhdGgoc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9jKHRlc3RQYXRoTGVuZ3RoKSkp
OwotICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nVmFsdWUuZ2V0KCksIHRlc3RQYXRo
LmdldCgpLCB0ZXN0UGF0aExlbmd0aCk7Ci0KLSAgICBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlID0g
V0VCS0lUX1dFQl9QQUdFKEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CiAgICAgZ19h
c3NlcnQoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpKTsKICAgICBXZWJQcm9jZXNzVGVzdDo6
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJQYWdlKSk7
CisgICAgZ19hc3NlcnQodGVzdFBhdGgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nl
c3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHRl
c3RQYXRoLmdldCgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0
ZXN0LT5ydW5UZXN0KGdfc3RycnN0cih0ZXN0UGF0aC5nZXQoKSwgIi8iKSArIDEsIHdlYlBhZ2Up
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IHRlc3QgPSBXZWJQcm9jZXNz
VGVzdDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgodGVzdFBhdGgpKTsKKyAgICByZXR1cm4gdGVz
dC0+cnVuVGVzdChnX3N0cnJzdHIodGVzdFBhdGgsICIvIikgKyAxLCB3ZWJQYWdlKTsKIH0KIAot
c3RhdGljIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24gd2ViUHJvY2Vzc1Rlc3RSdW5uZXJTdGF0aWNG
dW5jdGlvbnNbXSA9Ci17Ci0gICAgeyAicnVuVGVzdCIsIHJ1blRlc3QsIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICB7
IG51bGxwdHIsIG51bGxwdHIsIDAgfQotfTsKLQotc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlc3RS
dW5uZXJGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCitzdGF0aWMgdm9pZCB3ZWJQcm9jZXNz
VGVzdFJ1bm5lckZpbmFsaXplKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiB7Ci0gICAgZ19vYmpl
Y3RfdW5yZWYoSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOworICAgIGdfb2JqZWN0X3VucmVm
KHdlYlBhZ2UpOwogCiAgICAgaWYgKHNfd2F0Y2hlZE9iamVjdHMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC05NywxOSArODUsMTQgQEAgc3RhdGljIHZvaWQgd2luZG93T2JqZWN0Q2xl
YXJlZENhbGxiYWNrKFdlYktpdFNjcmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSoKICAg
ICBpZiAoZ19zdHJjbXAwKHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKHdlYlBhZ2UpLCAid2VicHJv
Y2VzczovL3Rlc3QiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNHbG9iYWxDb250ZXh0UmVm
IGNvbnRleHQgPSB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0
X3dvcmxkKGZyYW1lLCB3b3JsZCk7Ci0gICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlND
b250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOwotCi0gICAgSlNDbGFzc0RlZmluaXRpb24g
Y2xhc3NEZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7Ci0gICAgY2xhc3NEZWZp
bml0aW9uLmNsYXNzTmFtZSA9ICJXZWJQcm9jZXNzVGVzdFJ1bm5lciI7Ci0gICAgY2xhc3NEZWZp
bml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9IHdlYlByb2Nlc3NUZXN0UnVubmVyU3RhdGljRnVuY3Rp
b25zOwotICAgIGNsYXNzRGVmaW5pdGlvbi5maW5hbGl6ZSA9IHdlYlByb2Nlc3NUZXN0UnVubmVy
RmluYWxpemU7Ci0KLSAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZjbGFz
c0RlZmluaXRpb24pOwotICAgIEpTT2JqZWN0UmVmIGNsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtl
KGNvbnRleHQsIGpzQ2xhc3MsIGdfb2JqZWN0X3JlZih3ZWJQYWdlKSk7Ci0gICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5U3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiKSk7Ci0gICAgSlNPYmplY3RTZXRQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5U3RyaW5nLmdldCgpLCBjbGFzc09i
amVjdCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRyKTsKLSAgICBKU0NsYXNzUmVs
ZWFzZShqc0NsYXNzKTsKKyAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdS
ZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdv
cmxkKSk7CisgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QoY29udGV4dC5nZXQoKSkpOworICAgIGF1dG8qIGpzQ2xhc3MgPSBq
c2NfY29udGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiV2ViUHJvY2Vzc1Rlc3RS
dW5uZXIiLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pih3ZWJQcm9j
ZXNzVGVzdFJ1bm5lckZpbmFsaXplKSk7CisgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNDbGFzcykpOworICAgIGpzY19j
bGFzc19hZGRfbWV0aG9kKGpzQ2xhc3MsICJydW5UZXN0IiwgR19DQUxMQkFDSyhydW5UZXN0KSwg
TlVMTCwgTlVMTCwgR19UWVBFX0JPT0xFQU4sIDEsIEdfVFlQRV9TVFJJTkcpOworICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IHRlc3RSdW5uZXIgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25ld19vYmplY3Qo
Y29udGV4dC5nZXQoKSwgZ19vYmplY3RfcmVmKHdlYlBhZ2UpLCBqc0NsYXNzKSk7CisgICAgV2Vi
UHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QodGVzdFJ1bm5lci5nZXQoKSkpOworICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShjb250ZXh0
LmdldCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCB0ZXN0UnVubmVyLmdldCgpKTsKIH0KIAog
ZXh0ZXJuICJDIiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUoV2ViS2l0V2Vi
RXh0ZW5zaW9uKiBleHRlbnNpb24pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZvcm1H
VEsuY21ha2UKaW5kZXggZDhkNjc4ZjhiMmQuLmRmNmEyNjdjOTRmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVO
RCBXZWJLaXRHTGliQVBJVGVzdHNfU09VUkNFUwogKQogCiBsaXN0KEFQUEVORCBXZWJLaXRHTGli
QVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUENPUkVHVEtfRElSfQogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfQog
ICAgICR7Rk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRElSfQogICAgICR7Rk9SV0FSRElO
R19IRUFERVJTX1dFQktJVDJHVEtfRVhURU5TSU9OX0RJUn0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCBmNjBhMjBlMmYz
OC4uMmVlN2RmOWI0YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTMxMiw2NyArMzEyLDQyIEBAIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdh
aXRVbnRpbEZpbmlzCiAgICAgcmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKIH0KIAotc3RhdGlj
IGNoYXIqIGpzVmFsdWVUb0NTdHJpbmcoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgdmFsdWUpCi17Ci0gICAgZ19hc3NlcnQodmFsdWUpOwotICAgIGdfYXNzZXJ0KEpTVmFs
dWVJc1N0cmluZyhjb250ZXh0LCB2YWx1ZSkpOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHN0cmluZ1ZhbHVlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVl
LCAwKSk7Ci0gICAgZ19hc3NlcnQoc3RyaW5nVmFsdWUpOwotCi0gICAgc2l6ZV90IGNTdHJpbmdM
ZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nVmFsdWUuZ2V0
KCkpOwotICAgIGNoYXIqIGNTdHJpbmcgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MoY1N0
cmluZ0xlbmd0aCkpOwotICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nVmFsdWUuZ2V0
KCksIGNTdHJpbmcsIGNTdHJpbmdMZW5ndGgpOwotICAgIHJldHVybiBjU3RyaW5nOwotfQotCiBj
aGFyKiBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZh
c2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICByZXR1cm4ganNWYWx1
ZVRvQ1N0cmluZyhjb250ZXh0LCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGph
dmFzY3JpcHRSZXN1bHQpKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jl
c3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQoSlNDX0lT
X1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX3N0cmluZyh2YWx1ZSkp
OworICAgIHJldHVybiBqc2NfdmFsdWVfdG9fc3RyaW5nKHZhbHVlKTsKIH0KIAogZG91YmxlIFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCkKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJl
c3VsdCk7Ci0gICAgZ19hc3NlcnQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdl
YmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAg
Z19hc3NlcnQodmFsdWUpOwotICAgIGdfYXNzZXJ0KEpTVmFsdWVJc051bWJlcihjb250ZXh0LCB2
YWx1ZSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgMCk7
CisgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVl
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOwor
ICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUpKTsKKyAgICByZXR1cm4ganNj
X3ZhbHVlX3RvX2RvdWJsZSh2YWx1ZSk7CiB9CiAKIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb0Jvb2xlYW4oV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3Vs
dCkKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3Nl
cnQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jl
c3VsdF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQodmFsdWUpOwot
ICAgIGdfYXNzZXJ0KEpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpKTsKLQotICAgIHJl
dHVybiBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIHZhbHVlKTsKKyAgICBhdXRvKiB2YWx1ZSA9
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7
CisgICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnQoanNjX3Zh
bHVlX2lzX2Jvb2xlYW4odmFsdWUpKTsKKyAgICByZXR1cm4ganNjX3ZhbHVlX3RvX2Jvb2xlYW4o
dmFsdWUpOwogfQogCiBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7Ci0gICAgSlNHbG9iYWxD
b250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9j
b250ZXh0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KGNvbnRleHQpOwotICAgIEpT
VmFsdWVSZWYgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGphdmFz
Y3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KHZhbHVlKTsKLQotICAgIHJldHVybiBKU1ZhbHVl
SXNOdWxsKGNvbnRleHQsIHZhbHVlKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2Ny
aXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQo
SlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV9pc19udWxsKHZhbHVl
KTsKIH0KIAogYm9vbCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzVW5kZWZpbmVkKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7Ci0gICAgSlNHbG9iYWxD
b250ZXh0UmVmIGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9j
b250ZXh0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KGNvbnRleHQpOwotICAgIEpT
VmFsdWVSZWYgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGphdmFz
Y3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KHZhbHVlKTsKLQotICAgIHJldHVybiBKU1ZhbHVl
SXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpOworICAgIGF1dG8qIHZhbHVlID0gd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fz
c2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICByZXR1cm4ganNjX3ZhbHVlX2lzX3VuZGVm
aW5lZCh2YWx1ZSk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336120</attachid>
            <date>2018-03-20 07:53:56 -0700</date>
            <delta_ts>2018-03-20 09:37:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-jsc-glib-api.diff</filename>
            <type>text/plain</type>
            <size>59935</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NBdXRvY2xlYW51
cHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NBdXRvY2xlYW51cHMuaApp
bmRleCA2ZDkxNzhlNjk4NC4uOWRmYTkzZjc1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NBdXRvY2xlYW51cHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQXV0b2NsZWFudXBzLmgKQEAgLTE3LDcgKzE3LDcgQEAKICAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5lZChfX0pTQ19IX0lO
U0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pCisjaWYgIWRlZmluZWQoX19KU0Nf
SF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChXRUJL
SVQyX0NPTVBJTEFUSU9OKQogI2Vycm9yICJPbmx5IDxqc2MvanNjLmg+IGNhbiBiZSBpbmNsdWRl
ZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ0NsYXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlND
Q2xhc3MuaAppbmRleCBkZjVjNmE4MTMyMS4uZDg0MTFkYTdlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJREVf
XykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5T
SURFX18pICYmICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQoV0VCS0lUMl9D
T01QSUxBVElPTikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5jbHVkZWQgZGly
ZWN0bHkuIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29u
dGV4dC5oCmluZGV4IDM2NWM2N2ExZWVhLi5kNTc0ZmQzNThkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0NfSF9JTlNJ
REVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fSlNDX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQoV0VCS0lU
Ml9DT01QSUxBVElPTikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5jbHVkZWQg
ZGlyZWN0bHkuIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NFeGNlcHRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NFeGNlcHRpb24uaAppbmRleCAyZmQ1N2ZhZDI1Yy4uMmJlZTYwNjQ1OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NFeGNlcHRpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKQEAgLTE3LDcgKzE3LDcg
QEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5lZChf
X0pTQ19IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pCisjaWYgIWRlZmlu
ZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKSAmJiAhZGVm
aW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQogI2Vycm9yICJPbmx5IDxqc2MvanNjLmg+IGNhbiBi
ZSBpbmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDVmFsdWUuaAppbmRleCAwNWYxZjk3YTEzMi4uMTBlZDk2NjQwNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5oCkBAIC0xNyw3ICsxNyw3IEBACiAg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19KU0Nf
SF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9f
SlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikKICNlcnJvciAiT25seSA8anNjL2pzYy5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NWZXJzaW9uLmguaW4gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDVmVyc2lvbi5oLmluCmluZGV4IDA3OWY5NTNkOGZlLi5jNDQ1ZjQ1ZGU3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZlcnNpb24uaC5pbgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmVyc2lvbi5oLmluCkBAIC0x
Nyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYg
IWRlZmluZWQoX19KU0NfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoSlNDX0NPTVBJTEFUSU9OKQor
I2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEpTQ19DT01QSUxBVElP
TikgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKICNlcnJvciAiT25seSA8anNjL2pz
Yy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmgKaW5kZXggMjVjNjQz
ZTA5YjAuLjA4M2M2YTkzNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fSlNDX0hfSU5TSURFX18p
ICYmICFkZWZpbmVkKEpTQ19DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX0pTQ19IX0lOU0lE
RV9fKSAmJiAhZGVmaW5lZChKU0NfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCiAjZXJyb3IgIk9ubHkgPGpzYy9qc2MuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVj
dGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwZTRlMmFiMmZlMy4u
NWVhOGU0ZTc5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE4LTAzLTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXVtXUEVdIEpTQyBiaW5kaW5ncyBub3QgaW50cm9zcGVjdGFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjk4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2li
bGUgdG8gaW5jbHVkZSBpbmRpdmlkdWFsIGhlYWRlcnMgd2hlbiBidWlsZGluZyBXZWJLaXQgbGF5
ZXIuCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NBdXRvY2xlYW51cHMuaDoKKyAgICAgICAgKiBB
UEkvZ2xpYi9KU0NDbGFzcy5oOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NvbnRleHQuaDoKKyAg
ICAgICAgKiBBUEkvZ2xpYi9KU0NFeGNlcHRpb24uaDoKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NW
YWx1ZS5oOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1ZlcnNpb24uaC5pbjoKKyAgICAgICAgKiBB
UEkvZ2xpYi9KU0NWaXJ0dWFsTWFjaGluZS5oOgorCiAyMDE4LTAzLTIwICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEluaXRp
YWwgaW1wbGVtZW50YXRpb24gb2YgSmF2YVNjcmlwdENvcmUgZ2xpYiBiaW5kaW5ncwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzYzQwYmRjOWEyNy4uN2QzYjA2NDE5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMTgtMDMtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdW1dQRV0gSlNDIGJpbmRpbmdzIG5vdCBpbnRyb3NwZWN0YWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2OTg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVwcmVjYXRlIHRo
ZSBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IGludHJvc3BlY3RhYmxlIGR1ZSB0byBKU0MgQyBBUEkg
aW4gR1RLKyBwb3J0IGFuZCByZW1vdmUgdGhlbSBpbiBXUEUKKyAgICAgICAgcG9ydC4gQWRkIGFs
dGVybmF0aXZlIGZ1bmN0aW9ucyB1c2luZyB0aGUgbmV3IEpTQyBHTGliIEFQSS4gV2Ugbm8gbG9u
Z2VyIG5lZWQgdG8ga2VlcCBhIGdsb2JhbCBjb250ZXh0IGF0dGFjaGVkCisgICAgICAgIHRvIGV2
ZXJ5IHZpZXcuIFdlIGNhbiBzaW1wbHkgY3JlYXRlIGEgdGVtcG9yYXJ5IGdsb2JhbCBjb250ZXh0
IG9uIGRlbWFuZCBhbmQgcmVsZWFzZSBpdCBhZnRlciAxIHNlY29uZC4gVGhpcworICAgICAgICBh
bHNvIGFsbG93cyB1cyB0byByZW1vdmUgV2ViUGFnZVByb3h5OjpqYXZhc2NyaXB0R2xvYmFsQ29u
dGV4dCgpIGFuZCBhbGwgdGhlIHJlbGF0ZWQgY29kZS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcDoKKyAgICAgICAgKF9XZWJLaXRK
YXZhc2NyaXB0UmVzdWx0OjpfV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCk6CisgICAgICAgICh3ZWJr
aXRKYXZhc2NyaXB0UmVzdWx0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9qYXZhc2NyaXB0X3Jl
c3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQpOgorICAgICAgICAod2Via2l0X2phdmFzY3JpcHRfcmVz
dWx0X2dldF92YWx1ZSk6CisgICAgICAgICh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdFByaXZhdGUuaDoKKyAgICAgICAgKFNoYXJlZEphdmFzY3JpcHRDb250ZXh0OjpzaW5nbGV0
b24pOgorICAgICAgICAoU2hhcmVkSmF2YXNjcmlwdENvbnRleHQ6OlNoYXJlZEphdmFzY3JpcHRD
b250ZXh0KToKKyAgICAgICAgKFNoYXJlZEphdmFzY3JpcHRDb250ZXh0OjpnZXRPckNyZWF0ZUNv
bnRleHQpOgorICAgICAgICAoU2hhcmVkSmF2YXNjcmlwdENvbnRleHQ6OnJlbGVhc2VDb250ZXh0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OlZpZXdDbGllbnQ6OmhhbmRsZURvd25sb2FkUmVxdWVz
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUv
V1BFVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEphdmFzY3JpcHRS
ZXN1bHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEZyYW1lLmNwcDoKKyAg
ICAgICAgKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dCk6CisgICAgICAgICh3ZWJraXRfZnJh
bWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdEZyYW1lLmg6CisKIDIwMTgtMDMtMjAg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdW1dQRV0gSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBKYXZhU2NyaXB0Q29yZSBnbGliIGJp
bmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwNDM1ZmNjYjI1YS4uNGFkY2ZmYjk2
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzY2LDYgKzM2Niw5IEBAIGxpc3QoSU5T
RVJUIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTIDAKICkKIAogbGlzdChBUFBFTkQgV2ViS2l0
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQQ09S
RUdUS19ESVJ9IgorICAgICIke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9L0phdmFTY3JpcHRDb3Jl
LyIKKyAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZS9nbGliIgog
ICAgICIke1dFQktJVF9ESVJ9L1BsdWdpblByb2Nlc3MvdW5peCIKICAgICAiJHtXRUJLSVRfRElS
fS9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cCIKICAgICAiJHtXRUJLSVRfRElS
fS9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKQEAgLTc2Miw3ICs3NjUsOSBAQCBpZiAo
RU5BQkxFX0lOVFJPU1BFQ1RJT04pCiAgICAgICAgICAgICAtSSR7V0VCS0lUX0RJUn0KICAgICAg
ICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkke0RFUklWRURf
U09VUkNFU19XRUJLSVQyR1RLX0RJUn0KKyAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQQ09SRUdUS19ESVJ9CiAgICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJT
X0RJUn0KKyAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0
Q29yZS9nbGliCiAgICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtf
RElSfQogICAgICAgICAgICAgJHtXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTfQogICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvKi5jcHAKQEAgLTgwNiw3ICs4MTEs
OSBAQCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCiAgICAgICAgICAgICAtSSR7V0VCS0lUX0RJ
Un0KICAgICAgICAgICAgIC1JJHtERVJJVkVEX1NPVVJDRVNfRElSfQogICAgICAgICAgICAgLUkk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RLX0RJUn0KKyAgICAgICAgICAgIC1JJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQQ09SRUdUS19ESVJ9CiAgICAgICAgICAgICAtSSR7Rk9SV0FSRElO
R19IRUFERVJTX0RJUn0KKyAgICAgICAgICAgIC1JJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfS9K
YXZhU2NyaXB0Q29yZS9nbGliCiAgICAgICAgICAgICAtSSR7Rk9SV0FSRElOR19IRUFERVJTX1dF
QktJVDJHVEtfRElSfQogICAgICAgICAgICAgLUkke0ZPUldBUkRJTkdfSEVBREVSU19XRUJLSVQy
R1RLX0VYVEVOU0lPTl9ESVJ9CiAgICAgICAgICAgICAtSSR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCAyYjQx
YWNhNmU4Zi4uMDNlN2UxZDlmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTc4LDcg
KzE3OCwxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiApCiAKIGxpc3QoQVBQRU5EIFdlYktpdF9J
TkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUENPUkVX
UEVfRElSfSIKICAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfSIKKyAgICAiJHtGT1JXQVJE
SU5HX0hFQURFUlNfRElSfS9KYXZhU2NyaXB0Q29yZS8iCisgICAgIiR7Rk9SV0FSRElOR19IRUFE
RVJTX0RJUn0vSmF2YVNjcmlwdENvcmUvZ2xpYiIKICAgICAiJHtGT1JXQVJESU5HX0hFQURFUlNf
V1BFX0RJUn0iCiAgICAgIiR7Rk9SV0FSRElOR19IRUFERVJTX1dQRV9FWFRFTlNJT05fRElSfSIK
ICAgICAiJHtERVJJVkVEX1NPVVJDRVNfRElSfSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5jcHAKaW5kZXgg
MDEwODA1YzM5MGEuLjEwYmIxMTJiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmNwcApAQCAtMjIs
MjkgKzIyLDI3IEBACiAKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJXZWJLaXRKYXZhc2NyaXB0UmVzdWx0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgor
I2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgorI2luY2x1ZGUgPGpzYy9KU0NWYWx1
ZVByaXZhdGUuaD4KIAogc3RydWN0IF9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0IHsKLSAgICBfV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdChKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0LCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLSAgICAgICAg
OiBqYXZhc2NyaXB0R2xvYmFsQ29udGV4dChqc0NvbnRleHQpCi0gICAgICAgICwgcmVmZXJlbmNl
Q291bnQoMSkKKyAgICBleHBsaWNpdCBfV2ViS2l0SmF2YXNjcmlwdFJlc3VsdChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKICAgICB7Ci0gICAg
ICAgIHZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKGphdmFzY3JpcHRH
bG9iYWxDb250ZXh0LmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgYXV0byoganNDb250ZXh0ID0g
U2hhcmVkSmF2YXNjcmlwdENvbnRleHQ6OnNpbmdsZXRvbigpLmdldE9yQ3JlYXRlQ29udGV4dCgp
OworICAgICAgICBqc1ZhbHVlID0ganNjQ29udGV4dEdldE9yQ3JlYXRlVmFsdWUoanNDb250ZXh0
LCBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoanNjQ29udGV4dEdldEpTQ29udGV4
dChqc0NvbnRleHQpLCBudWxscHRyKSk7CiAgICAgfQogCi0gICAgSlNSZXRhaW5QdHI8SlNHbG9i
YWxDb250ZXh0UmVmPiBqYXZhc2NyaXB0R2xvYmFsQ29udGV4dDsKLSAgICBKU1ZhbHVlUmVmIHZh
bHVlOworICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzVmFsdWU7CiAKLSAgICBpbnQgcmVmZXJlbmNl
Q291bnQ7CisgICAgaW50IHJlZmVyZW5jZUNvdW50IHsgMSB9OwogfTsKIAogR19ERUZJTkVfQk9Y
RURfVFlQRShXZWJLaXRKYXZhc2NyaXB0UmVzdWx0LCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHQs
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9yZWYsIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91
bnJlZikKIAotV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogd2Via2l0SmF2YXNjcmlwdFJlc3VsdENy
ZWF0ZShKU0dsb2JhbENvbnRleHRSZWYgamF2YXNjcmlwdEdsb2JhbENvbnRleHQsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQorV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogd2Via2l0SmF2YXNjcmlwdFJlc3VsdENyZWF0ZShXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0Kj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBu
ZXcgKHJlc3VsdCkgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdChqYXZhc2NyaXB0R2xvYmFsQ29udGV4
dCwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBuZXcgKHJlc3VsdCkgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdChzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTgwLDYgKzc4LDcgQEAgdm9pZCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYo
V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKICAgICB9CiB9CiAKKyNp
ZiBQTEFURk9STShHVEspCiAvKioKICAqIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xv
YmFsX2NvbnRleHQ6CiAgKiBAanNfcmVzdWx0OiBhICNXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBA
IC04OCwxMCArODcsMTMgQEAgdm9pZCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYoV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKICAqIDxmdW5jdGlvbj5KU1Zh
bHVlUmVmPC9mdW5jdGlvbj4gcmV0dXJuZWQgYnkgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dl
dF92YWx1ZSgpLgogICoKICAqIFJldHVybnM6IHRoZSA8ZnVuY3Rpb24+SlNHbG9iYWxDb250ZXh0
UmVmPC9mdW5jdGlvbj4gZm9yIHRoZSAjV2ViS2l0SmF2YXNjcmlwdFJlc3VsdAorICoKKyAqIERl
cHJlY2F0ZWQ6IDIuMjI6IFVzZSBqc2NfdmFsdWVfZ2V0X2NvbnRleHQoKSBpbnN0ZWFkLgogICov
CiBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxf
Y29udGV4dChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAg
IHJldHVybiBqYXZhc2NyaXB0UmVzdWx0LT5qYXZhc2NyaXB0R2xvYmFsQ29udGV4dC5nZXQoKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChqYXZhc2NyaXB0UmVzdWx0LCBudWxscHRyKTsKKyAg
ICByZXR1cm4ganNjQ29udGV4dEdldEpTQ29udGV4dChqc2NfdmFsdWVfZ2V0X2NvbnRleHQoamF2
YXNjcmlwdFJlc3VsdC0+anNWYWx1ZS5nZXQoKSkpOwogfQogCiAvKioKQEAgLTEwMiw4ICsxMDQs
MjggQEAgSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xv
YmFsX2NvbnRleHQoV2ViS2l0SmF2YXNjcmlwdFIKICAqIHJldHVybmVkIGJ5IHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoKSB0byB1c2UgdGhlIDxmdW5jdGlvbj5K
U1ZhbHVlUmVmPC9mdW5jdGlvbj4uCiAgKgogICogUmV0dXJuczogdGhlIDxmdW5jdGlvbj5KU1Zh
bHVlUmVmPC9mdW5jdGlvbj4gb2YgdGhlICNXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CisgKgorICog
RGVwcmVjYXRlZDogMi4yMjogVXNlIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFs
dWUoKSBpbnN0ZWFkLgogICovCiBKU1ZhbHVlUmVmIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfdmFsdWUoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKIHsKLSAg
ICByZXR1cm4gamF2YXNjcmlwdFJlc3VsdC0+dmFsdWU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoamF2YXNjcmlwdFJlc3VsdCwgbnVsbHB0cik7CisgICAgcmV0dXJuIGpzY1ZhbHVlR2V0SlNW
YWx1ZShqYXZhc2NyaXB0UmVzdWx0LT5qc1ZhbHVlLmdldCgpKTsKK30KKyNlbmRpZgorCisvKioK
KyAqIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWU6CisgKiBAanNfcmVzdWx0
OiBhICNXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CisgKgorICogR2V0IHRoZSAjSlNDVmFsdWUgb2Yg
QGpzX3Jlc3VsdC4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjSlNDVmFs
dWUgb2YgdGhlICNXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CisgKgorICogU2luY2U6IDIuMjIKKyAq
LworSlNDVmFsdWUqIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChqYXZhc2NyaXB0UmVzdWx0LCBudWxscHRyKTsKKyAgICByZXR1cm4gamF2YXNjcmlw
dFJlc3VsdC0+anNWYWx1ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRSZXN1bHRQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0UHJpdmF0ZS5o
CmluZGV4IGU3NTNmYjIyODY4Li5lMTkwODk0OThlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0
UHJpdmF0ZS5oCkBAIC0yMSw1ICsyMSw0MCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlICJXZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
KyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLVdlYktpdEphdmFzY3JpcHRSZXN1bHQq
IHdlYmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUoSlNHbG9iYWxDb250ZXh0UmVmLCBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKTsKK2NsYXNzIFNoYXJlZEphdmFzY3JpcHRDb250ZXh0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkSmF2YXNjcmlwdENvbnRleHQmIHNpbmdsZXRv
bigpCisgICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhcmVkSmF2YXNjcmlw
dENvbnRleHQ+IGNvbnRleHQ7CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIH0KKworICAg
IFNoYXJlZEphdmFzY3JpcHRDb250ZXh0KCkKKyAgICAgICAgOiBtX3RpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJlNoYXJlZEphdmFzY3JpcHRDb250ZXh0OjpyZWxlYXNlQ29udGV4dCkKKyAg
ICB7CisgICAgfQorCisgICAgSlNDQ29udGV4dCogZ2V0T3JDcmVhdGVDb250ZXh0KCkKKyAgICB7
CisgICAgICAgIGlmICghbV9jb250ZXh0KSB7CisgICAgICAgICAgICBtX2NvbnRleHQgPSBhZG9w
dEdSZWYoanNjX2NvbnRleHRfbmV3KCkpOworICAgICAgICAgICAgbV90aW1lci5zdGFydE9uZVNo
b3QoMV9zKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHJlbGVhc2VDb250ZXh0KCkKKyAgICB7CisgICAgICAg
IG1fY29udGV4dCA9IG51bGxwdHI7CisgICAgfQorCisgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBt
X2NvbnRleHQ7CisgICAgUnVuTG9vcDo6VGltZXI8U2hhcmVkSmF2YXNjcmlwdENvbnRleHQ+IG1f
dGltZXI7Cit9OworCitXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiB3ZWJraXRKYXZhc2NyaXB0UmVz
dWx0Q3JlYXRlKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50
TWFuYWdlci5jcHAKaW5kZXggMjI4MzI2MDRhNjMuLmFjYWU5ZTE1NTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250
ZW50TWFuYWdlci5jcHAKQEAgLTE4OCw5ICsxODgsOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBGcmFt
ZUluZm9EYXRhJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkm
LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBqc1Jlc3VsdCA9IHdlYmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUocGFn
ZS5qYXZhc2NyaXB0R2xvYmFsQ29udGV4dCgpLCBzZXJpYWxpemVkU2NyaXB0VmFsdWUpOworICAg
ICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqc1Jlc3VsdCA9IHdlYmtpdEphdmFzY3JpcHRS
ZXN1bHRDcmVhdGUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKICAgICAgICAgZ19zaWduYWxfZW1p
dChtX21hbmFnZXIsIHNpZ25hbHNbU0NSSVBUX01FU1NBR0VfUkVDRUlWRURdLCBtX2hhbmRsZXJO
YW1lLCBqc1Jlc3VsdCk7CiAgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihq
c1Jlc3VsdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1MWNjZDc3NTVmMi4uYTI3ZjllYzMxOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
CkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZh
dGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxqc2MvSlNDQ29udGV4dFByaXZh
dGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaD4KQEAgLTIyOCw3ICsyMjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2
YXRlIHsKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1vdXNlVGFyZ2V0TW9kaWZpZXJzOwogCiAg
ICAgR1JlZlB0cjxXZWJLaXRGaW5kQ29udHJvbGxlcj4gZmluZENvbnRyb2xsZXI7Ci0gICAgSlNS
ZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPiBqYXZhc2NyaXB0R2xvYmFsQ29udGV4dDsKIAog
ICAgIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+IG1haW5SZXNvdXJjZTsKICAgICBMb2FkaW5n
UmVzb3VyY2VzTWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CkBAIC0yMzYsNiArMjM2LDggQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2ViS2l0U2NyaXB0RGlhbG9nKiBjdXJy
ZW50U2NyaXB0RGlhbG9nOwogCiAjaWYgUExBVEZPUk0oR1RLKQorICAgIEdSZWZQdHI8SlNDQ29u
dGV4dD4ganNDb250ZXh0OworCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJJbnNwZWN0b3I+IGluc3Bl
Y3RvcjsKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGZhdmljb247CkBAIC0zNjcsMTEg
KzM2OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdIYW5kbGVEb3dubG9hZFJl
cXVlc3QobV93ZWJWaWV3LCAmZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxD
b250ZXh0UmVmIGphdmFzY3JpcHRHbG9iYWxDb250ZXh0KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQo
bV93ZWJWaWV3KTsKLSAgICB9Ci0KICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9Owog
I2VuZGlmCkBAIC0zMjUwLDYgKzMyNDcsNyBAQCBXZWJLaXRGaW5kQ29udHJvbGxlciogd2Via2l0
X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldwogICAg
IHJldHVybiB3ZWJWaWV3LT5wcml2LT5maW5kQ29udHJvbGxlci5nZXQoKTsKIH0KIAorI2lmIFBM
QVRGT1JNKEdUSykKIC8qKgogICogd2Via2l0X3dlYl92aWV3X2dldF9qYXZhc2NyaXB0X2dsb2Jh
bF9jb250ZXh0OgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CkBAIC0zMjU5LDE1ICsz
MjU3LDIwIEBAIFdlYktpdEZpbmRDb250cm9sbGVyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRf
Y29udHJvbGxlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3CiAgKgogICogUmV0dXJuczogdGhlIDxm
dW5jdGlvbj5KU0dsb2JhbENvbnRleHRSZWY8L2Z1bmN0aW9uPiB1c2VkIGJ5IEB3ZWJfdmlldyB0
byBkZXNlcmlhbGl6ZQogICogICAgdGhlIHJlc3VsdCB2YWx1ZXMgb2Ygc2NyaXB0cy4KKyAqCisg
KiBEZXByZWNhdGVkOiAyLjIyOiBVc2UganNjX3ZhbHVlX2dldF9jb250ZXh0KCkgaW5zdGVhZC4K
ICAqLwogSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9n
bG9iYWxfY29udGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICBp
ZiAoIXdlYlZpZXctPnByaXYtPmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KQotICAgICAgICB3ZWJW
aWV3LT5wcml2LT5qYXZhc2NyaXB0R2xvYmFsQ29udGV4dCA9IGFkb3B0KEpTR2xvYmFsQ29udGV4
dENyZWF0ZShudWxscHRyKSk7Ci0gICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmphdmFzY3JpcHRH
bG9iYWxDb250ZXh0LmdldCgpOworICAgIC8vIFdlIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGpz
IGNvbnRleHQgaW4gdGhlIHZpZXcgb25seSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZAorICAg
IC8vIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKyAgICBpZiAoIXdlYlZpZXctPnByaXYt
PmpzQ29udGV4dCkKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+anNDb250ZXh0ID0gU2hhcmVkSmF2
YXNjcmlwdENvbnRleHQ6OnNpbmdsZXRvbigpLmdldE9yQ3JlYXRlQ29udGV4dCgpOworICAgIHJl
dHVybiBqc2NDb250ZXh0R2V0SlNDb250ZXh0KHdlYlZpZXctPnByaXYtPmpzQ29udGV4dC5nZXQo
KSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRD
YWxsYmFjayhBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogd2tTZXJpYWxpemVkU2NyaXB0VmFs
dWUsIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIEdUYXNrKiB0YXNr
KQogewpAQCAtMzI5NCw5ICszMjk3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkph
dmFTY3JpcHRDYWxsYmFjayhBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogd2tTZXIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGpzQ29udGV4dCA9IHdlYmtpdF93ZWJfdmll
d19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dl
dF9zb3VyY2Vfb2JqZWN0KHRhc2spKSk7Ci0gICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2ss
IHdlYmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUoanNDb250ZXh0LAotICAgICAgICB3a1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSwKKyAgICBnX3Rhc2tf
cmV0dXJuX3BvaW50ZXIodGFzaywgd2Via2l0SmF2YXNjcmlwdFJlc3VsdENyZWF0ZSh3a1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSwKICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4od2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3Vu
cmVmKSk7CiB9CiAKQEAgLTMzNDMsOCArMzM0NCw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQs
CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgIHVzZXJfZGF0
YSkKICAqIHsKICAqICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0ICpqc19yZXN1bHQ7Ci0gKiAg
ICAgSlNWYWx1ZVJlZiAgICAgICAgICAgICAgdmFsdWU7Ci0gKiAgICAgSlNHbG9iYWxDb250ZXh0
UmVmICAgICAgY29udGV4dDsKKyAqICAgICBKU0NWYWx1ZSAgICAgICAgICAgICAgICp2YWx1ZTsK
ICAqICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICplcnJvciA9IE5VTEw7CiAgKgogICogICAg
IGpzX3Jlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2ggKFdFQktJ
VF9XRUJfVklFVyAob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3IpOwpAQCAtMzM1NCwxOSArMzM1NCwx
NyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICogICAgICAgICByZXR1cm47CiAgKiAgICAg
fQogICoKLSAqICAgICBjb250ZXh0ID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9i
YWxfY29udGV4dCAoanNfcmVzdWx0KTsKLSAqICAgICB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF9nZXRfdmFsdWUgKGpzX3Jlc3VsdCk7Ci0gKiAgICAgaWYgKEpTVmFsdWVJc1N0cmlu
ZyAoY29udGV4dCwgdmFsdWUpKSB7Ci0gKiAgICAgICAgIEpTU3RyaW5nUmVmIGpzX3N0cl92YWx1
ZTsKLSAqICAgICAgICAgZ2NoYXIgICAgICAqc3RyX3ZhbHVlOwotICogICAgICAgICBnc2l6ZSAg
ICAgICBzdHJfbGVuZ3RoOwotICoKLSAqICAgICAgICAganNfc3RyX3ZhbHVlID0gSlNWYWx1ZVRv
U3RyaW5nQ29weSAoY29udGV4dCwgdmFsdWUsIE5VTEwpOwotICogICAgICAgICBzdHJfbGVuZ3Ro
ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplIChqc19zdHJfdmFsdWUpOwotICog
ICAgICAgICBzdHJfdmFsdWUgPSAoZ2NoYXIgKilnX21hbGxvYyAoc3RyX2xlbmd0aCk7Ci0gKiAg
ICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcgKGpzX3N0cl92YWx1ZSwgc3RyX3ZhbHVlLCBz
dHJfbGVuZ3RoKTsKLSAqICAgICAgICAgSlNTdHJpbmdSZWxlYXNlIChqc19zdHJfdmFsdWUpOwot
ICogICAgICAgICBnX3ByaW50ICgiU2NyaXB0IHJlc3VsdDogJXNcbiIsIHN0cl92YWx1ZSk7Cisg
KiAgICAgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlIChqc19y
ZXN1bHQpOworICogICAgIGlmIChqc2NfdmFsdWVfaXNfc3RyaW5nICh2YWx1ZSkpIHsKKyAqICAg
ICAgICAgSlNDRXhjZXB0aW9uICpleGNlcHRpb247CisgKiAgICAgICAgIGdjaGFyICAgICAgICAq
c3RyX3ZhbHVlOworICoKKyAqICAgICAgICAgc3RyX3ZhbHVlID0ganNjX3ZhbHVlX3RvX3N0cmlu
ZyAodmFsdWUpOworICogICAgICAgICBleGNlcHRpb24gPSBqc2NfY29udGV4dF9nZXRfZXhjZXB0
aW9uIChqc2NfdmFsdWVfZ2V0X2NvbnRleHQgKHZhbHVlKSk7CisgKiAgICAgICAgIGlmIChleGNl
cHRpb24pCisgKiAgICAgICAgICAgICBnX3dhcm5pbmcgKCJFcnJvciBydW5uaW5nIGphdmFzY3Jp
cHQ6ICVzIiwganNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZSAoZXhjZXB0aW9uKSk7CisgKiAgICAg
ICAgIGVsc2UKKyAqICAgICAgICAgICAgIGdfcHJpbnQgKCJTY3JpcHQgcmVzdWx0OiAlc1xuIiwg
c3RyX3ZhbHVlKTsKICAqICAgICAgICAgZ19mcmVlIChzdHJfdmFsdWUpOwogICogICAgIH0gZWxz
ZSB7CiAgKiAgICAgICAgIGdfd2FybmluZyAoIkVycm9yIHJ1bm5pbmcgamF2YXNjcmlwdDogdW5l
eHBlY3RlZCByZXR1cm4gdmFsdWUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggM2VkNWJlOWZkZjEuLmM5ZjIwMzQ1ODlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcApAQCAtNDc0LDE0ICs0NzQsNiBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpkZWNpZGVQ
b2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KAogfQog
I2VuZGlmCiAKLUpTR2xvYmFsQ29udGV4dFJlZiBQYWdlQ2xpZW50SW1wbDo6amF2YXNjcmlwdEds
b2JhbENvbnRleHQoKQotewotICAgIGlmICghV0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdl
dCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHdlYmtpdF93ZWJfdmll
d19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChXRUJLSVRfV0VCX1ZJRVcobV92aWV3V2lk
Z2V0KSk7Ci19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6Onpvb20oZG91YmxlIHpvb21MZXZlbCkK
IHsKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCA2ZGZk
YzJjODc5MC4uNTMwNTA1NzEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0OSw4ICsxNDksNiBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gV2ViQ29yZTo6VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjo6TFRSOyB9CiAKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgamF2YXNjcmlw
dEdsb2JhbENvbnRleHQoKSBvdmVycmlkZTsKLQogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNsaWVu
dEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQqIG1fdmlld1dpZGdldDsKICAgICBEZWZhdWx0VW5k
b0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SmF2YXNjcmlwdFJlc3VsdC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmgKaW5kZXggNWE5Zjcz
ODlmNDQuLmRhY2NkZWIwZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaApAQCAtMjUsNiArMjUsNyBAQAog
I2RlZmluZSBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0X2gKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogCkBAIC00NCwxMiArNDUs
MTUgQEAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3JlZiAgICAgICAgICAgICAgICAoV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X3VucmVmICAgICAgICAgICAgICAoV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCAqanNfcmVzdWx0KTsKIAotV0VCS0lUX0FQSSBKU0dsb2JhbENvbnRleHRSZWYKK1dFQktJVF9E
RVBSRUNBVEVEIEpTR2xvYmFsQ29udGV4dFJlZgogd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dl
dF9nbG9iYWxfY29udGV4dCAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0KTsKIAot
V0VCS0lUX0FQSSBKU1ZhbHVlUmVmCitXRUJLSVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZSkgSlNWYWx1ZVJlZgogd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF92YWx1ZSAgICAgICAgICAoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVz
dWx0KTsKIAorV0VCS0lUX0FQSSBKU0NWYWx1ZSAqCit3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2pzX3ZhbHVlICAgICAgIChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0ICpqc19yZXN1bHQpOwor
CiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYzM2OTY1M2E0MTIuLjAzZGZlYTUzOGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAt
NDMwLDcgKzQzMCw3IEBAIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZF93
aXRoX2FyZ3VtZW50KFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0RmluZENvbnRyb2xs
ZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCi1XRUJLSVRfQVBJIEpT
R2xvYmFsQ29udGV4dFJlZgorV0VCS0lUX0RFUFJFQ0FURUQgSlNHbG9iYWxDb250ZXh0UmVmCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2phdmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKIFdFQktJVF9BUEkgdm9pZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggMjA4OTZmM2I2MGYuLmU5NTIyMzE3MjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTIzMiw2ICsyMzIsNyBAQCB3
ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfcmVmCiB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5y
ZWYKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQKIHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUKK3dlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRf
anNfdmFsdWUKIAogPFNVQlNFQ1RJT04gV2ViS2l0U2NyaXB0RGlhbG9nPgogV2ViS2l0U2NyaXB0
RGlhbG9nCkBAIC0xNDg3LDYgKzE0ODgsOCBAQCB3ZWJraXRfZnJhbWVfaXNfbWFpbl9mcmFtZQog
d2Via2l0X2ZyYW1lX2dldF91cmkKIHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9nbG9iYWxf
Y29udGV4dAogd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93
b3JsZAord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0Cit3ZWJraXRfZnJhbWVfZ2V0X2pzX2Nv
bnRleHRfZm9yX3NjcmlwdF93b3JsZAogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdEZy
YW1lQ2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJ
Vmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xp
ZW50LmgKaW5kZXggZWQ1YTllM2YzNWUuLjRhZGFmNDY4YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaApAQCAtNDMsNyArNDMsNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEaXNwbGF5ZWQoV0tXUEU6OlZpZXcmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdLV1BFOjpWaWV3Jiwg
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCBKU0dsb2JhbENvbnRleHRS
ZWYgamF2YXNjcmlwdEdsb2JhbENvbnRleHQoKSB7IHJldHVybiBudWxscHRyOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggZDUwZWU4Mjc0N2IuLjU5Y2NiNDAxMzNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNw
cApAQCAtMzIxLDkgKzMyMSw0IEBAIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gUGFnZUNsaWVudEltcGw6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3RpCiAgICAgcmV0dXJu
IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUjsKIH0KIAotSlNHbG9i
YWxDb250ZXh0UmVmIFBhZ2VDbGllbnRJbXBsOjpqYXZhc2NyaXB0R2xvYmFsQ29udGV4dCgpCi17
Ci0gICAgcmV0dXJuIG1fdmlldy5qYXZhc2NyaXB0R2xvYmFsQ29udGV4dCgpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
UGFnZUNsaWVudEltcGwuaAppbmRleCA3ODBjODg0NGYxNy4uMTY3ZTU2NTZlMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEx
OSw4ICsxMTksNiBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgb3ZlcnJpZGU7CiAKLSAg
ICBKU0dsb2JhbENvbnRleHRSZWYgamF2YXNjcmlwdEdsb2JhbENvbnRleHQoKSBvdmVycmlkZTsK
LQogICAgIFdLV1BFOjpWaWV3JiBtX3ZpZXc7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXI+IG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAppbmRleCA0OWI2NDI0ZWIxMi4uM2U1
ZGRjNGZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BF
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNw
cApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNp
bmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHdwZS92aWV3LWJhY2tl
bmQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTE1NiwxMSArMTU1LDYgQEAgdm9p
ZCBWaWV3OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAg
ICAgbV9jbGllbnQtPmhhbmRsZURvd25sb2FkUmVxdWVzdCgqdGhpcywgZG93bmxvYWQpOwogfQog
Ci1KU0dsb2JhbENvbnRleHRSZWYgVmlldzo6amF2YXNjcmlwdEdsb2JhbENvbnRleHQoKQotewot
ICAgIHJldHVybiBtX2NsaWVudC0+amF2YXNjcmlwdEdsb2JhbENvbnRleHQoKTsKLX0KLQogdm9p
ZCBWaWV3OjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiB7CiAgICAgbV9z
aXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKaW5k
ZXggZmY4MmZiZTdlZTMuLmE4Y2U4MzE0ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dQRVZpZXcuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJik7CiAgICAgdm9pZCBmcmFt
ZURpc3BsYXllZCgpOwogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93
bmxvYWRQcm94eSYpOwotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqYXZhc2NyaXB0R2xvYmFsQ29u
dGV4dCgpOwogCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UoKSB7IHJldHVybiAqbV9w
YWdlUHJveHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRKYXZhc2NyaXB0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuaAppbmRleCAyNjM0MjJlMjA3Ni4uMWZlZTJlZmQ0
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdC5oCkBAIC0yNCw4ICsyNCw4IEBACiAjaWZuZGVmIFdlYktpdEph
dmFzY3JpcHRSZXN1bHRfaAogI2RlZmluZSBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0X2gKIAotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisjaW5jbHVkZSA8anNjL2pzYy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CiAK
IEdfQkVHSU5fREVDTFMKQEAgLTQ0LDExICs0NCw4IEBAIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF9yZWYgICAgICAgICAgICAgICAgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7
CiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZiAgICAgICAg
ICAgICAgKFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiAKLVdFQktJVF9BUEkg
SlNHbG9iYWxDb250ZXh0UmVmCi13ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9j
b250ZXh0IChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0ICpqc19yZXN1bHQpOwotCi1XRUJLSVRfQVBJ
IEpTVmFsdWVSZWYKLXdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUgICAgICAgICAg
KFdlYktpdEphdmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CitXRUJLSVRfQVBJIEpTQ1ZhbHVl
ICoKK3dlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUgICAgICAgKFdlYktpdEph
dmFzY3JpcHRSZXN1bHQgKmpzX3Jlc3VsdCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXggZmJiNGY4MDlk
OTIuLjNjMDJmMGQ5MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXcuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRlZiBXZWJLaXRXZWJWaWV3
X2gKICNkZWZpbmUgV2ViS2l0V2ViVmlld19oCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJL
aXRDb250ZXh0TWVudS5oPgpAQCAtNDAwLDkgKzM5OSw2IEBAIHdlYmtpdF93ZWJfdmlld19leGVj
dXRlX2VkaXRpbmdfY29tbWFuZF93aXRoX2FyZ3VtZW50KFdlYktpdFdlYlZpZXcKIFdFQktJVF9B
UEkgV2ViS2l0RmluZENvbnRyb2xsZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRy
b2xsZXIgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcpOwogCi1XRUJLSVRfQVBJIEpTR2xvYmFsQ29udGV4dFJlZgotd2Via2l0X3dlYl92aWV3X2dl
dF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwotCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19ydW5f
amF2YXNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqc2NyaXB0LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDRkY2FjNTcxNTEwLi4yNGZhN2M1MDkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzg3LDEwICszODcsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbW92ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSB7IH0KICNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgdmlydHVhbCBKU0dsb2Jh
bENvbnRleHRSZWYgamF2YXNjcmlwdEdsb2JhbENvbnRleHQoKSB7IHJldHVybiBudWxscHRyOyB9
Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBlZjQyYTdhOGY0MC4uMjdjMGNkYzRmNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02ODMsMTAgKzY4Myw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgamF2YXNjcmlw
dEdsb2JhbENvbnRleHQoKTsKLSNlbmRpZgotCiAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwogICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDk0Y2Q4NGMwNDZmLi4xNWE2MzFkYzRj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKQEAgLTUwLDExICs1MCw2IEBAIEd0a1dpZGdldCogV2ViUGFnZVByb3h5Ojp2aWV3V2lkZ2V0
KCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwmPihtX3BhZ2VDbGllbnQp
LnZpZXdXaWRnZXQoKTsKIH0KIAotSlNHbG9iYWxDb250ZXh0UmVmIFdlYlBhZ2VQcm94eTo6amF2
YXNjcmlwdEdsb2JhbENvbnRleHQoKQotewotICAgIHJldHVybiBtX3BhZ2VDbGllbnQuamF2YXNj
cmlwdEdsb2JhbENvbnRleHQoKTsKLX0KLQogU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCiB7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFn
ZVByb3h5V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlX
UEUuY3BwCmluZGV4IDM1YjY2ZjIyNjgzLi42OGYzYzU4YTAzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHAKQEAgLTM4LDExICszOCw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLUpTR2xvYmFsQ29udGV4dFJlZiBXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRH
bG9iYWxDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gbV9wYWdlQ2xpZW50LmphdmFzY3JpcHRHbG9i
YWxDb250ZXh0KCk7Ci19Ci0KIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KQogewogICAgIHJldHVy
biBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKaW5kZXggMTk1MzMzM2FkYWUuLjA0Nzcx
MDAxNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRGcmFtZS5jcHAKQEAgLTIyLDYgKzIyLDcg
QEAKIAogI2luY2x1ZGUgIldlYktpdEZyYW1lUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNj
cmlwdFdvcmxkUHJpdmF0ZS5oIgorI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC05MCw2ICs5MSw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfZnJhbWVfZ2V0X3Vy
aShXZWJLaXRGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIGZyYW1lLT5wcml2LT51cmkuZGF0YSgp
OwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogLyoqCiAgKiB3ZWJraXRfZnJhbWVfZ2V0X2phdmFz
Y3JpcHRfZ2xvYmFsX2NvbnRleHQ6CiAgKiBAZnJhbWU6IGEgI1dlYktpdEZyYW1lCkBAIC0xMDAs
NiArMTAyLDggQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF9mcmFtZV9nZXRfdXJpKFdlYktpdEZyYW1l
KiBmcmFtZSkKICAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlIGdsb2JhbCBKYXZhU2Ny
aXB0IGNvbnRleHQgb2YgQGZyYW1lCiAgKgogICogU2luY2U6IDIuMgorICoKKyAqIERlcHJlY2F0
ZWQ6IDIuMjI6IFVzZSB3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQoKSBpbnN0ZWFkLgogICov
CiBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9j
b250ZXh0KFdlYktpdEZyYW1lKiBmcmFtZSkKIHsKQEAgLTExOCw2ICsxMjIsOCBAQCBKU0dsb2Jh
bENvbnRleHRSZWYgd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0KFdl
YktpdEZyYW1lKiBmcmFtZQogICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgSmF2YVNj
cmlwdCBjb250ZXh0IG9mIEBmcmFtZSBmb3IgQHdvcmxkCiAgKgogICogU2luY2U6IDIuMgorICoK
KyAqIERlcHJlY2F0ZWQ6IDIuMjI6IFVzZSB3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHRfZm9y
X3NjcmlwdF93b3JsZCgpIGluc3RlYWQuCiAgKi8KIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRf
ZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKFdlYktpdEZyYW1l
KiBmcmFtZSwgV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkKQogewpAQCAtMTI2LDMgKzEzMiw0MSBA
QCBKU0dsb2JhbENvbnRleHRSZWYgd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2NvbnRleHRf
Zm9yX3NjcmlwdF93b3JsZChXZWJLaXRGcgogCiAgICAgcmV0dXJuIGZyYW1lLT5wcml2LT53ZWJG
cmFtZS0+anNDb250ZXh0Rm9yV29ybGQod2Via2l0U2NyaXB0V29ybGRHZXRJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkKHdvcmxkKSk7CiB9CisjZW5kaWYKKworLyoqCisgKiB3ZWJraXRfZnJhbWVf
Z2V0X2pzX2NvbnRleHQ6CisgKiBAZnJhbWU6IGEgI1dlYktpdEZyYW1lCisgKgorICogR2V0IHRo
ZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IG9mIEBmcmFtZS4gVXNlIHRoaXMgZnVuY3Rp
b24gdG8gYnJpZGdlCisgKiBiZXR3ZWVuIHRoZSBXZWJLaXQgYW5kIEphdmFTY3JpcHRDb3JlIEFQ
SXMuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0aGUgI0pTQ0NvbnRleHQgZm9y
IHRoZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IG9mIEBmcmFtZS4KKyAqCisgKiBTaW5j
ZTogMi4yMgorICovCitKU0NDb250ZXh0KiB3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQoV2Vi
S2l0RnJhbWUqIGZyYW1lKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19G
UkFNRShmcmFtZSksIG51bGxwdHIpOworCisgICAgcmV0dXJuIGpzY0NvbnRleHRHZXRPckNyZWF0
ZShmcmFtZS0+cHJpdi0+d2ViRnJhbWUtPmpzQ29udGV4dCgpKS5sZWFrUmVmKCk7Cit9CisKKy8q
KgorICogd2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQ6CisgKiBA
ZnJhbWU6IGEgI1dlYktpdEZyYW1lCisgKiBAd29ybGQ6IGEgI1dlYktpdFNjcmlwdFdvcmxkCisg
KgorICogR2V0IHRoZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IG9mIEBmcmFtZSBmb3Ig
dGhlIGdpdmVuICNXZWJLaXRTY3JpcHRXb3JsZC4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIg
ZnVsbCk6IHRoZSAjSlNDQ29udGV4dCBmb3IgdGhlIEphdmFTY3JpcHQgZXhlY3V0aW9uIGNvbnRl
eHQgb2YgQGZyYW1lIGZvciBAd29ybGQuCisgKgorICogU2luY2U6IDIuMjIKKyAqLworSlNDQ29u
dGV4dCogd2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoV2ViS2l0
RnJhbWUqIGZyYW1lLCBXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSwgbnVsbHB0cik7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NDUklQVF9XT1JMRCh3b3JsZCksIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIGpzY0NvbnRleHRHZXRPckNyZWF0ZShmcmFtZS0+cHJpdi0+d2ViRnJhbWUt
PmpzQ29udGV4dEZvcldvcmxkKHdlYmtpdFNjcmlwdFdvcmxkR2V0SW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCh3b3JsZCkpKS5sZWFrUmVmKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRGcmFtZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaApp
bmRleCA1MDU5MzAwZjczYS4uNmM1NGEyNDg0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUu
aApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+
CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxqc2MvanNjLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTY3Jp
cHRXb3JsZC5oPgogCkBAIC02MSwxMyArNjIsMjAgQEAgd2Via2l0X2ZyYW1lX2lzX21haW5fZnJh
bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsK
IFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X2ZyYW1lX2dldF91cmkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKIAotV0VC
S0lUX0FQSSBKU0dsb2JhbENvbnRleHRSZWYKK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRf
ZnJhbWVfZ2V0X2pzX2NvbnRleHQpIEpTR2xvYmFsQ29udGV4dFJlZgogd2Via2l0X2ZyYW1lX2dl
dF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0ICAgICAgICAgICAoV2ViS2l0RnJhbWUgICAgICAg
KmZyYW1lKTsKIAotV0VCS0lUX0FQSSBKU0dsb2JhbENvbnRleHRSZWYKK1dFQktJVF9ERVBSRUNB
VEVEX0ZPUih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZCkgSlNH
bG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jf
c2NyaXB0X3dvcmxkIChXZWJLaXRGcmFtZSAgICAgICAqZnJhbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3JpcHRXb3JsZCAq
d29ybGQpOwogCitXRUJLSVRfQVBJIEpTQ0NvbnRleHQgKgord2Via2l0X2ZyYW1lX2dldF9qc19j
b250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1l
KTsKKworV0VCS0lUX0FQSSBKU0NDb250ZXh0ICoKK3dlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4
dF9mb3Jfc2NyaXB0X3dvcmxkICAgICAgICAgKFdlYktpdEZyYW1lICAgICAgICpmcmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNjcmlwdFdvcmxkICp3b3JsZCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0
RnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3Bl
L1dlYktpdEZyYW1lLmgKaW5kZXggMjNkYTBhZTRjYTQuLjk0ZjBkMDA0MDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
d3BlL1dlYktpdEZyYW1lLmgKQEAgLTI0LDggKzI0LDggQEAKICNpZm5kZWYgV2ViS2l0RnJhbWVf
aAogI2RlZmluZSBXZWJLaXRGcmFtZV9oCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRTY3JpcHRX
b3JsZC5oPgogCkBAIC01MywyMCArNTMsMjAgQEAgc3RydWN0IF9XZWJLaXRGcmFtZUNsYXNzIHsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9mcmFtZV9nZXRfdHlwZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOword2Via2l0X2ZyYW1lX2dldF90eXBlICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRf
ZnJhbWVfaXNfbWFpbl9mcmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRGcmFt
ZSAgICAgICAqZnJhbWUpOword2Via2l0X2ZyYW1lX2lzX21haW5fZnJhbWUgICAgICAgICAgICAg
ICAgICAgKFdlYktpdEZyYW1lICAgICAgICpmcmFtZSk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2No
YXIgKgotd2Via2l0X2ZyYW1lX2dldF91cmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKK3dlYmtpdF9mcmFtZV9nZXRfdXJpICAgICAg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRGcmFtZSAgICAgICAqZnJhbWUpOwogCi1XRUJLSVRf
QVBJIEpTR2xvYmFsQ29udGV4dFJlZgotd2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2Jh
bF9jb250ZXh0ICAgICAgICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKK1dFQktJVF9B
UEkgSlNDQ29udGV4dCAqCit3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQgICAgICAgICAgICAg
ICAgICAoV2ViS2l0RnJhbWUgICAgICAgKmZyYW1lKTsKIAotV0VCS0lUX0FQSSBKU0dsb2JhbENv
bnRleHRSZWYKLXdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9jb250ZXh0X2Zvcl9zY3JpcHRf
d29ybGQgKFdlYktpdEZyYW1lICAgICAgICpmcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdFdvcmxkICp3b3JsZCk7
CitXRUJLSVRfQVBJIEpTQ0NvbnRleHQgKgord2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zv
cl9zY3JpcHRfd29ybGQgKFdlYktpdEZyYW1lICAgICAgICpmcmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTY3JpcHRXb3JsZCAqd29ybGQp
OwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZDJlZGMyMTM4ODQuLmVhZTdlNmNmOGY4IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgt
MDMtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHVEtdW1dQRV0gSlNDIGJpbmRpbmdzIG5vdCBpbnRyb3NwZWN0YWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2OTg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgQVBJIGlu
c3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQgb25lLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L21haW4uYzoKKyAgICAgICAgKGFib3V0RGF0YVNjcmlwdE1lc3NhZ2VSZWNlaXZlZENhbGxiYWNr
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdEZyYW1lVGVzdDo6dGVzdEphdmFTY3JpcHRDb250ZXh0KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwOgorICAgICAgICAodGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAg
IChjb25zb2xlTWVzc2FnZVNlbnRDYWxsYmFjayk6CisgICAgICAgIChlY2hvQ2FsbGJhY2spOgor
ICAgICAgICAod2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChtZXRob2RDYWxsQ2FsbGJh
Y2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNz
VGVzdC5jcHA6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHdlYlByb2Nlc3NUZXN0UnVu
bmVyRmluYWxpemUpOgorICAgICAgICAod2luZG93T2JqZWN0Q2xlYXJlZENhbGxiYWNrKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcpOgorICAgICAgICAoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcik6CisgICAgICAgIChXZWJWaWV3VGVzdDo6
amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbik6CisgICAgICAgIChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdElzTnVsbCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dElzVW5kZWZpbmVkKToKKwogMjAxOC0wMy0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBJbml0aWFsIGltcGxlbWVudGF0
aW9uIG9mIEphdmFTY3JpcHRDb3JlIGdsaWIgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4
IDE5ZTgwNmYwZjUwLi44ODE2MDJlZjEwYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC0yOCw3ICsy
OCw2IEBACiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKIAogI2luY2x1ZGUgIkJyb3dzZXJXaW5k
b3cuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8
ZXJybm8uaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgpAQCAt
Mjk3LDE3ICsyOTYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJzaXRlRGF0YUNsZWFyZWRDYWxsYmFjayhX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsIEdBc3luYwogCiBzdGF0aWMgdm9pZCBh
Ym91dERhdGFTY3JpcHRNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKnVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqbWVzc2Fn
ZSwgV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCkKIHsKLSAgICBKU1ZhbHVlUmVmIGpzVmFs
dWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKG1lc3NhZ2UpOwotICAgIEpT
U3RyaW5nUmVmIGpzU3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weSh3ZWJraXRfamF2YXNjcmlw
dF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0KG1lc3NhZ2UpLCBqc1ZhbHVlLCBOVUxMKTsKLSAg
ICBzaXplX3QgbWF4U2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShqc1N0
cmluZyk7Ci0gICAgaWYgKCFtYXhTaXplKSB7Ci0gICAgICAgIEpTU3RyaW5nUmVsZWFzZShqc1N0
cmluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2hhciAqbWVzc2FnZVN0cmluZyA9
IGdfbWFsbG9jKG1heFNpemUpOwotICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoanNTdHJpbmcs
IG1lc3NhZ2VTdHJpbmcsIG1heFNpemUpOwotICAgIEpTU3RyaW5nUmVsZWFzZShqc1N0cmluZyk7
Ci0KKyAgICBjaGFyICptZXNzYWdlU3RyaW5nID0ganNjX3ZhbHVlX3RvX3N0cmluZyh3ZWJraXRf
amF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKG1lc3NhZ2UpKTsKICAgICBjaGFyICoqdG9r
ZW5zID0gZ19zdHJzcGxpdChtZXNzYWdlU3RyaW5nLCAiOiIsIDMpOwogICAgIGdfZnJlZShtZXNz
YWdlU3RyaW5nKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL0ZyYW1lVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvRnJhbWVUZXN0LmNwcAppbmRleCA5OTY3M2U0ODc1ZS4uODgwYzEwMzc1MWQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCkBA
IC00OSw3ICs0OSwxNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgV2ViS2l0RnJhbWUqIGZy
YW1lID0gd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKHBhZ2UpOwogICAgICAgICBnX2Fz
c2VydChXRUJLSVRfSVNfRlJBTUUoZnJhbWUpKTsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAg
IEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBnX2Fzc2VydCh3ZWJr
aXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfZ2xvYmFsX2NvbnRleHQoZnJhbWUpKTsKKyAgICAgICAg
R19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOworI2VuZGlmCisKKyAgICAgICAgR1JlZlB0
cjxKU0NDb250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19j
b250ZXh0KGZyYW1lKSk7CisgICAgICAgIGdfYXNzZXJ0KEpTQ19JU19DT05URVhUKGpzQ29udGV4
dC5nZXQoKSkpOworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKGpzQ29udGV4dC5nZXQoKSkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGZlMGMyY2M0M2Y0Li41NDExNDM0ZDRlNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0Lmgi
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKQEAgLTI4Nyw1NCArMjg1LDY0IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5r
JykudGl0bGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJl
c3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2
YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwg
PT0sICJXZWJLaXRHVEsrIFRpdGxlIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ1dlYktpdExpbmsnKS5ocmVmOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19h
c3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
ICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0
cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5n
LmdldCgpLCA9PSwgImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iKTsKIAogICAgIGphdmFzY3Jp
cHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRv
dy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLnRleHRDb250ZW50IiwgJmVy
cm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBn
X2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0R1RLKyBXZWJzaXRlIik7
CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKCJhID0gMjU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZh
c2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZp
bmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2
YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNj
cmlwdFJlc3VsdCksID09LCAyNSk7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMi41OyIsICZlcnJvci5vdXRQdHIo
KSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVy
cm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMi41KTsKIAogICAgIGphdmFz
Y3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEg
PSB0cnVlIiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3Vs
dCkpKTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0KFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKIAogICAg
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoImEgPSBmYWxzZSIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3Jp
cHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydCgh
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkp
OwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgiYSA9IG51bGwiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGph
dmFzY3JpcHRSZXN1bHQpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShq
YXZhc2NyaXB0UmVzdWx0KSkpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgZ19h
c3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwoamF2YXNjcmlwdFJlc3Vs
dCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZCgiZnVuY3Rpb24gRm9vKCkgeyBhID0gMjU7IH0gRm9vKCk7IiwgJmVycm9y
Lm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKICAgICBnX2Fz
c2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0SXNVbmRlZmluZWQoamF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJl
c3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNo
ZWQoIi9vcmcvd2Via2l0L2dsaWIvdGVzdHMvbGluay10aXRsZS5qcyIsICZlcnJvci5vdXRQdHIo
KSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7CiAgICAgZ19hc3NlcnQoIWVy
cm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3Ry
KHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUiKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0
LmNwcAppbmRleCBlZDQ5MTg0NjdmOC4uNDc0NTExZWRiODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KICNlbmRpZgorI2luY2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTI5OSw5ICszMDAs
OCBAQCBzdGF0aWMgdm9pZCBjb25zb2xlTWVzc2FnZVNlbnRDYWxsYmFjayhXZWJLaXRXZWJQYWdl
KiB3ZWJQYWdlLCBXZWJLaXRDb25zb2xlTWVzcwogICAgIH0KICAgICAqZGVzdCA9ICdcMCc7CiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBzY3JpcHQoZ19zdHJkdXBfcHJpbnRmKCJ3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy5jb25zb2xlLnBvc3RNZXNzYWdlKFwiJXNcIik7IiwgZXNjYXBlZE1l
c3NhZ2VTdHJpbmcuZ2V0KCkpKTsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0ID0g
d2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0KHdlYmtpdF93ZWJfcGFn
ZV9nZXRfbWFpbl9mcmFtZSh3ZWJQYWdlKSk7Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGpzU2NyaXB0KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQuZ2V0
KCkpKTsKLSAgICBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwganNTY3JpcHQuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIsIDEsIG51bGxwdHIpOworICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganND
b250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dCh3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X21haW5fZnJhbWUod2ViUGFnZSkpKTsKKyAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBy
ZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoanNDb250ZXh0LmdldCgpLCBz
Y3JpcHQuZ2V0KCkpKTsKICNlbmRpZgogfQogCkBAIC00MDksMjUgKzQwOSwxNyBAQCBzdGF0aWMg
dm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBX
ZWJLaXRXZWJQYWdlKiB3ZQogI2VuZGlmCiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxs
YmFjayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKikKK3N0YXRpYyBjaGFyKiBlY2hvQ2FsbGJhY2soY29uc3QgY2hhciogbWVzc2FnZSkKIHsK
LSAgICBpZiAoYXJndW1lbnRDb3VudCA8PSAwKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoanNDb250ZXh0KTsKLQotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJp
bmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoanNDb250ZXh0LCBhcmd1bWVudHNbMF0sIDAp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoanNDb250ZXh0LCBzdHJpbmcuZ2V0KCkp
OworICAgIHJldHVybiBnX3N0cmR1cChtZXNzYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgd2luZG93
T2JqZWN0Q2xlYXJlZChXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdlYlBhZ2UqIHBh
Z2UsIFdlYktpdEZyYW1lKiBmcmFtZSwgZ3BvaW50ZXIpCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0
UmVmIGpzQ29udGV4dCA9IHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9jb250ZXh0X2Zvcl9z
Y3JpcHRfd29ybGQoZnJhbWUsIHdvcmxkKTsKLSAgICBnX2Fzc2VydChqc0NvbnRleHQpOwotICAg
IEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChqc0Nv
bnRleHQpOwotICAgIGdfYXNzZXJ0KGdsb2JhbE9iamVjdCk7Ci0KLSAgICBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gZnVuY3Rpb25OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZWNobyIpKTsKLSAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1
bmN0aW9uV2l0aENhbGxiYWNrKGpzQ29udGV4dCwgZnVuY3Rpb25OYW1lLmdldCgpLCBlY2hvQ2Fs
bGJhY2spOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoanNDb250ZXh0LCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uTmFtZS5nZXQoKSwgZnVuY3Rpb24sIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHksIDApOworICAgIEdSZWZQdHI8SlND
Q29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4
dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1lLCB3b3JsZCkpOworICAgIGdfYXNzZXJ0KEpTQ19JU19D
T05URVhUKGpzQ29udGV4dC5nZXQoKSkpOworICAgIEdSZWZQdHI8SlNDVmFsdWU+IGZ1bmN0aW9u
ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9uZXdfZnVuY3Rpb24oanNDb250ZXh0LmdldCgpLCAiZWNo
byIsIEdfQ0FMTEJBQ0soZWNob0NhbGxiYWNrKSwgTlVMTCwgTlVMTCwgR19UWVBFX1NUUklORywg
MSwgR19UWVBFX1NUUklORykpOworICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShqc0NvbnRleHQu
Z2V0KCksICJlY2hvIiwgZnVuY3Rpb24uZ2V0KCkpOwogfQogCiBzdGF0aWMgV2ViS2l0V2ViUGFn
ZSogZ2V0V2ViUGFnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgdWludDY0X3QgcGFn
ZUlELCBHREJ1c01ldGhvZEludm9jYXRpb24qIGludm9jYXRpb24pCkBAIC00NzUsOSArNDY3LDgg
QEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVj
dGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICBHUmVmUHRyPFdlYktpdFNjcmlwdFdv
cmxkPiB3b3JsZCA9IGFkb3B0R1JlZih3ZWJraXRfc2NyaXB0X3dvcmxkX25ldygpKTsKICAgICAg
ICAgZ19hc3NlcnQod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpICE9IHdvcmxkLmdl
dCgpKTsKICAgICAgICAgV2ViS2l0RnJhbWUqIGZyYW1lID0gd2Via2l0X3dlYl9wYWdlX2dldF9t
YWluX2ZyYW1lKHBhZ2UpOwotICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0ID0g
d2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFt
ZSwgd29ybGQuZ2V0KCkpOwotICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ganNTY3Jp
cHQoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdCkpOwotICAgICAg
ICBKU0V2YWx1YXRlU2NyaXB0KGpzQ29udGV4dCwganNTY3JpcHQuZ2V0KCksIDAsIDAsIDAsIDAp
OworICAgICAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGpzQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJr
aXRfZnJhbWVfZ2V0X2pzX2NvbnRleHRfZm9yX3NjcmlwdF93b3JsZChmcmFtZSwgd29ybGQuZ2V0
KCkpKTsKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19j
b250ZXh0X2V2YWx1YXRlKGpzQ29udGV4dC5nZXQoKSwgc2NyaXB0KSk7CiAgICAgICAgIGdfZGJ1
c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgMCk7CiAgICAgfSBl
bHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJBYm9ydFByb2Nlc3MiKSkgewogICAgICAg
ICBhYm9ydCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggZTM1Zjc3OTk0NGIuLjIzMGZlOGI0YzU2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vz
c1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQ
cm9jZXNzVGVzdC5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzVGVz
dC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPGpzYy9qc2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAg
LTU1LDMxICs1NSwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IFdlYlByb2Nl
c3NUZXN0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkKICAgICByZXR1cm4gdGVzdHNN
YXAoKS5nZXQodGVzdE5hbWUpKCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHJ1blRlc3QoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorc3RhdGljIGdib29sZWFuIHJ1blRlc3QoV2ViS2l0
V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgY2hhciogdGVzdFBhdGgpCiB7Ci0gICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHN0cmluZ1ZhbHVlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIGFyZ3VtZW50c1swXSwgbnVsbHB0cikpOwotICAgIGdfYXNzZXJ0KHN0cmluZ1ZhbHVl
KTsKLSAgICBzaXplX3QgdGVzdFBhdGhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0
cmluZ1NpemUoc3RyaW5nVmFsdWUuZ2V0KCkpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVzdFBh
dGgoc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9jKHRlc3RQYXRoTGVuZ3RoKSkpOwotICAgIEpT
U3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nVmFsdWUuZ2V0KCksIHRlc3RQYXRoLmdldCgpLCB0
ZXN0UGF0aExlbmd0aCk7Ci0KLSAgICBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlID0gV0VCS0lUX1dF
Ql9QQUdFKEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CiAgICAgZ19hc3NlcnQoV0VC
S0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpKTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJQYWdlKSk7CisgICAgZ19h
c3NlcnQodGVzdFBhdGgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiB0
ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoLmdl
dCgpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0ZXN0LT5ydW5U
ZXN0KGdfc3RycnN0cih0ZXN0UGF0aC5nZXQoKSwgIi8iKSArIDEsIHdlYlBhZ2UpKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IHRlc3QgPSBXZWJQcm9jZXNzVGVzdDo6Y3Jl
YXRlKFN0cmluZzo6ZnJvbVVURjgodGVzdFBhdGgpKTsKKyAgICByZXR1cm4gdGVzdC0+cnVuVGVz
dChnX3N0cnJzdHIodGVzdFBhdGgsICIvIikgKyAxLCB3ZWJQYWdlKTsKIH0KIAotc3RhdGljIGNv
bnN0IEpTU3RhdGljRnVuY3Rpb24gd2ViUHJvY2Vzc1Rlc3RSdW5uZXJTdGF0aWNGdW5jdGlvbnNb
XSA9Ci17Ci0gICAgeyAicnVuVGVzdCIsIHJ1blRlc3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICB7IG51bGxwdHIs
IG51bGxwdHIsIDAgfQotfTsKLQotc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Rlc3RSdW5uZXJGaW5h
bGl6ZShKU09iamVjdFJlZiBvYmplY3QpCitzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzVGVzdFJ1bm5l
ckZpbmFsaXplKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiB7Ci0gICAgZ19vYmplY3RfdW5yZWYo
SlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOworICAgIGdfb2JqZWN0X3VucmVmKHdlYlBhZ2Up
OwogCiAgICAgaWYgKHNfd2F0Y2hlZE9iamVjdHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CkBAIC05NywxOSArODUsMTQgQEAgc3RhdGljIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZENhbGxi
YWNrKFdlYktpdFNjcmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSoKICAgICBpZiAoZ19z
dHJjbXAwKHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpKHdlYlBhZ2UpLCAid2VicHJvY2VzczovL3Rl
c3QiKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQg
PSB3ZWJraXRfZnJhbWVfZ2V0X2phdmFzY3JpcHRfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZy
YW1lLCB3b3JsZCk7Ci0gICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0
R2xvYmFsT2JqZWN0KGNvbnRleHQpOwotCi0gICAgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZp
bml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7Ci0gICAgY2xhc3NEZWZpbml0aW9uLmNs
YXNzTmFtZSA9ICJXZWJQcm9jZXNzVGVzdFJ1bm5lciI7Ci0gICAgY2xhc3NEZWZpbml0aW9uLnN0
YXRpY0Z1bmN0aW9ucyA9IHdlYlByb2Nlc3NUZXN0UnVubmVyU3RhdGljRnVuY3Rpb25zOwotICAg
IGNsYXNzRGVmaW5pdGlvbi5maW5hbGl6ZSA9IHdlYlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemU7
Ci0KLSAgICBKU0NsYXNzUmVmIGpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRp
b24pOwotICAgIEpTT2JqZWN0UmVmIGNsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQs
IGpzQ2xhc3MsIGdfb2JqZWN0X3JlZih3ZWJQYWdlKSk7Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHByb3BlcnR5U3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiKSk7Ci0gICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250
ZXh0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5U3RyaW5nLmdldCgpLCBjbGFzc09iamVjdCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lLCBudWxscHRyKTsKLSAgICBKU0NsYXNzUmVsZWFzZShqc0Ns
YXNzKTsKKyAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0
X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdvcmxkKSk7Cisg
ICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QoY29udGV4dC5nZXQoKSkpOworICAgIGF1dG8qIGpzQ2xhc3MgPSBqc2NfY29udGV4
dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCBu
dWxscHRyLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pih3ZWJQcm9jZXNzVGVzdFJ1
bm5lckZpbmFsaXplKSk7CisgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNDbGFzcykpOworICAgIGpzY19jbGFzc19hZGRf
bWV0aG9kKGpzQ2xhc3MsICJydW5UZXN0IiwgR19DQUxMQkFDSyhydW5UZXN0KSwgTlVMTCwgTlVM
TCwgR19UWVBFX0JPT0xFQU4sIDEsIEdfVFlQRV9TVFJJTkcpOworICAgIEdSZWZQdHI8SlNDVmFs
dWU+IHRlc3RSdW5uZXIgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25ld19vYmplY3QoY29udGV4dC5n
ZXQoKSwgZ19vYmplY3RfcmVmKHdlYlBhZ2UpLCBqc0NsYXNzKSk7CisgICAgV2ViUHJvY2Vzc1Rl
c3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodGVzdFJ1
bm5lci5nZXQoKSkpOworICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShjb250ZXh0LmdldCgpLCAi
V2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCB0ZXN0UnVubmVyLmdldCgpKTsKIH0KIAogZXh0ZXJuICJD
IiB2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUoV2ViS2l0V2ViRXh0ZW5zaW9u
KiBleHRlbnNpb24pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZv
cm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggZDhkNjc4ZjhiMmQuLmRmNmEyNjdjOTRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRH
TGliQVBJVGVzdHNfU09VUkNFUwogKQogCiBsaXN0KEFQUEVORCBXZWJLaXRHTGliQVBJVGVzdHNf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUENPUkVH
VEtfRElSfQogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfQogICAgICR7Rk9S
V0FSRElOR19IRUFERVJTX1dFQktJVDJHVEtfRElSfQogICAgICR7Rk9SV0FSRElOR19IRUFERVJT
X1dFQktJVDJHVEtfRVhURU5TSU9OX0RJUn0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCBmNjBhMjBlMmYzOC4uMmVlN2Rm
OWI0YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJWaWV3VGVzdC5jcHAKQEAgLTMxMiw2NyArMzEyLDQyIEBAIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZp
bmlzCiAgICAgcmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIqIGpz
VmFsdWVUb0NTdHJpbmcoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFs
dWUpCi17Ci0gICAgZ19hc3NlcnQodmFsdWUpOwotICAgIGdfYXNzZXJ0KEpTVmFsdWVJc1N0cmlu
Zyhjb250ZXh0LCB2YWx1ZSkpOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmlu
Z1ZhbHVlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVlLCAwKSk7Ci0g
ICAgZ19hc3NlcnQoc3RyaW5nVmFsdWUpOwotCi0gICAgc2l6ZV90IGNTdHJpbmdMZW5ndGggPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nVmFsdWUuZ2V0KCkpOwotICAg
IGNoYXIqIGNTdHJpbmcgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MoY1N0cmluZ0xlbmd0
aCkpOwotICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nVmFsdWUuZ2V0KCksIGNTdHJp
bmcsIGNTdHJpbmdMZW5ndGgpOwotICAgIHJldHVybiBjU3RyaW5nOwotfQotCiBjaGFyKiBXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0KQogewotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0g
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqYXZhc2NyaXB0UmVz
dWx0KTsKLSAgICBnX2Fzc2VydChjb250ZXh0KTsKLSAgICByZXR1cm4ganNWYWx1ZVRvQ1N0cmlu
Zyhjb250ZXh0LCB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGphdmFzY3JpcHRS
ZXN1bHQpKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRf
anNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKHZh
bHVlKSk7CisgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX3N0cmluZyh2YWx1ZSkpOworICAgIHJl
dHVybiBqc2NfdmFsdWVfdG9fc3RyaW5nKHZhbHVlKTsKIH0KIAogZG91YmxlIFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNj
cmlwdFJlc3VsdCkKIHsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0g
ICAgZ19hc3NlcnQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9nZXRfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQo
dmFsdWUpOwotICAgIGdfYXNzZXJ0KEpTVmFsdWVJc051bWJlcihjb250ZXh0LCB2YWx1ZSkpOwot
Ci0gICAgcmV0dXJuIEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgMCk7CisgICAgYXV0
byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3Jp
cHRSZXN1bHQpOworICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOworICAgIGdfYXNz
ZXJ0KGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUpKTsKKyAgICByZXR1cm4ganNjX3ZhbHVlX3Rv
X2RvdWJsZSh2YWx1ZSk7CiB9CiAKIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b0Jvb2xlYW4oV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKIHsKLSAg
ICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9n
ZXRfZ2xvYmFsX2NvbnRleHQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoY29udGV4
dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRf
dmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQodmFsdWUpOwotICAgIGdfYXNz
ZXJ0KEpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpKTsKLQotICAgIHJldHVybiBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHQsIHZhbHVlKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19h
c3NlcnQoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX2Jv
b2xlYW4odmFsdWUpKTsKKyAgICByZXR1cm4ganNjX3ZhbHVlX3RvX2Jvb2xlYW4odmFsdWUpOwog
fQogCiBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVm
IGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0KGph
dmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KGNvbnRleHQpOwotICAgIEpTVmFsdWVSZWYg
dmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGphdmFzY3JpcHRSZXN1
bHQpOwotICAgIGdfYXNzZXJ0KHZhbHVlKTsKLQotICAgIHJldHVybiBKU1ZhbHVlSXNOdWxsKGNv
bnRleHQsIHZhbHVlKTsKKyAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3Vs
dF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQoSlNDX0lTX1ZB
TFVFKHZhbHVlKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV9pc19udWxsKHZhbHVlKTsKIH0KIAog
Ym9vbCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzVW5kZWZpbmVkKFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVm
IGNvbnRleHQgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2dsb2JhbF9jb250ZXh0KGph
dmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KGNvbnRleHQpOwotICAgIEpTVmFsdWVSZWYg
dmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X3ZhbHVlKGphdmFzY3JpcHRSZXN1
bHQpOwotICAgIGdfYXNzZXJ0KHZhbHVlKTsKLQotICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmlu
ZWQoY29udGV4dCwgdmFsdWUpOworICAgIGF1dG8qIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydChKU0Nf
SVNfVkFMVUUodmFsdWUpKTsKKyAgICByZXR1cm4ganNjX3ZhbHVlX2lzX3VuZGVmaW5lZCh2YWx1
ZSk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCg==
</data>
<flag name="review"
          id="354658"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>