<?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>193489</bug_id>
          
          <creation_ts>2019-01-16 06:17:54 -0800</creation_ts>
          <short_desc>[GTK][WPE] Add web extensions API to whitelist access to a security origin</short_desc>
          <delta_ts>2021-08-05 03:27:42 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219995</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495054</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-16 06:17:54 -0800</bug_when>
    <thetext>Expose InjectedBundle::addOriginAccessWhitelistEntry(), InjectedBundle::removeOriginAccessWhitelistEntry() and InjectedBundle::resetOriginAccessWhitelists() in GLib API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495055</commentid>
    <comment_count>1</comment_count>
      <attachid>359265</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-16 06:26:26 -0800</bug_when>
    <thetext>Created attachment 359265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495056</commentid>
    <comment_count>2</comment_count>
      <attachid>359266</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-16 06:36:37 -0800</bug_when>
    <thetext>Created attachment 359266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495189</commentid>
    <comment_count>3</comment_count>
      <attachid>359266</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-01-16 13:13:29 -0800</bug_when>
    <thetext>Comment on attachment 359266
Patch

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

Informally reviewing. Patch LGTM, with a small doubt about how the
function that adds a rule works :)

&gt; Source/WebKit/Shared/API/glib/WebKitSecurityOriginInternal.h:2
&gt; + * Copyright (C) 2017 Igalia S.L.

I am quite sure we are in 2019 at the moment ;-)

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:246
&gt; + * be accessed from @origin.

Is it possible specify “any destination host” somehow? I don&apos;t know
how the WebKit code works internally, but from the description it looks
like using “.” as destination host with “allow_subdomains” set to “TRUE”
might work to achieve that. Maybe it would be worth it to explicitly
mention whether that&apos;s allowed or not in the documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495431</commentid>
    <comment_count>4</comment_count>
      <attachid>359366</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-17 03:50:11 -0800</bug_when>
    <thetext>Created attachment 359366
Patch

Added support for any host and documented it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495432</commentid>
    <comment_count>5</comment_count>
      <attachid>359366</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-01-17 03:59:30 -0800</bug_when>
    <thetext>Comment on attachment 359366
Patch

Thanks for the update to include the “match all hosts case”, I think using NULL to
mean “do not filter by host, allow all hosts” is coherent with other existing usages
in the public API (like the whitelists/blacklists for injected user content).

Informal r+ :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496508</commentid>
    <comment_count>6</comment_count>
      <attachid>359366</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-20 20:55:29 -0800</bug_when>
    <thetext>Comment on attachment 359366
Patch

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

What is the use-case for this? An embedded application? Not open source?

I have one major reservation about the new API. We create a map of WebKitSecurityOrigin -- i.e. &lt;protocol, host, port&gt; -- to pair&lt;protocol, host&gt; to determine whether a security origin can access a &lt;protocol, host&gt; pair, with port notably lacking. I would expect that the port should be included as well, so we&apos;d instead map from security origin to security origin. The policy would be more restrictive, but it intuitively makes more sense and the API exposed would be a bit nicer (one fewer parameter, and the parameters could have more meaningful names, e.g. WebKitSecurityOrigin *key and WebKitSecurityOrigin *value). So then the new APIs would allow you to decide whether a given security origin can access other security origins. I know that&apos;s not the functionality exposed by InjectedBundle::addOriginAccessWhitelistEntry and InjectedBundle::removeOriginAccessWhitelistEntry, but perhaps we should look into changing that at the InjectedBundle level before exposing it forever in the public API with this weird limitation. We could also use WebKitSecurityOrigin now in the public API, and just ignore the port, perhaps documenting that port will be ignored currently but might not be in the future.

&gt; Source/WebKit/ChangeLog:10
&gt; +        to Shared and make it availale from the web extensions API.

available

&gt; Source/WebKit/ChangeLog:16
&gt; +        * Shared/API/glib/WebKitSecurityOriginInternal.h: Added.
&gt; +        * Shared/API/glib/WebKitSecurityOriginPrivate.h: Copied from Source/WebKit/UIProcess/API/glib/WebKitSecurityOriginPrivate.h.

I think you could just add the new API to WebKitSecurityOriginPrivate.h and include that from the test, like the Cocoa API tests do, instead of creating a new convention to separate APIs used only by API tests out into Internal.h files like this. Note that the non-glib API tests include lots of Private.h headers, but not any Internal.h headers, and there are many Internal.h headers in both the C and Cocoa APIs, so I would try to parallel that convention.

&gt; Source/WebKit/Shared/API/glib/WebKitSecurityOrigin.cppSource/WebKit/UIProcess/API/glib/WebKitSecurityOrigin.cpp:72
&gt; +// Internal API only used for testing.
&gt; +bool webkitSecurityOriginCanRequest(WebKitSecurityOrigin* origin, const char* url)

The comment is pretty obvious, since it uses camelCase rather than underscores and the pattern is well-established that these are private functions.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:202
&gt; +    extension-&gt;priv-&gt;bundle = bundle;
&gt;      bundle-&gt;setClient(std::make_unique&lt;WebExtensionInjectedBundleClient&gt;(extension));

Can you explain the ownership semantics of WebKitWebExtension and InjectedBundle? I&apos;m a bit confused why it is appropriate for the WebExtensionInjectedBundleClient to ref the InjectedBundle? I haven&apos;t investigated, but might have assumed the WebKitWebExtension is supposed to die when the InjectedBundle does, or something like that.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:241
&gt; + * @protocol: the destination protocol
&gt; + * @host: (nullable): the destination host, or %NULL for any host

Does the internal InjectedBundle API really accept null for host, but not for protocol?

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:245
&gt; + * If @host is %NULL all hosts are allowed and @allow_subdomains parameter is ignored.

%NULL,

the @allow_subdomains

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:254
&gt; +    g_return_if_fail(origin &amp;&amp; !webkit_security_origin_is_opaque(origin));

Better on two separate lines (so you can tell from the critical which check is failing).

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:275
&gt; +    g_return_if_fail(origin &amp;&amp; !webkit_security_origin_is_opaque(origin));

Ditto.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/wpe/WebKitWebExtension.h:91
&gt; +                                                           gboolean              allow_subdomains);

I just told Patrick to add a two-member enum instead of using gboolean parameters in the public API... should probably hold you to that, too. It will be better!

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/WebProcessTest.cpp:32
&gt; -typedef HashMap&lt;String, std::function&lt;std::unique_ptr&lt;WebProcessTest&gt; ()&gt;&gt; TestsMap;
&gt; +typedef HashMap&lt;String, std::function&lt;std::unique_ptr&lt;WebProcessTest&gt; (WebKitWebExtension*)&gt;&gt; TestsMap;

I think it&apos;s time for another typedef here, to simplify this typedef and the signature of WebProcessTest::add. Or convert it to using statements, since those are nicer than typedefs. I would try:

using TestFunction = std::function&lt;std::unique_ptr&lt;WebProcessTest&gt; (WebKitWebExtension*)&gt;;
using TestsMap = HashMap&lt;String, TestFunction&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498189</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-25 03:16:18 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; Comment on attachment 359366 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359366&amp;action=review
&gt; 
&gt; What is the use-case for this? An embedded application? Not open source?

This is used by WPE applications still using the C API, this is needed to migrate them to the glib API.

&gt; I have one major reservation about the new API. We create a map of
&gt; WebKitSecurityOrigin -- i.e. &lt;protocol, host, port&gt; -- to pair&lt;protocol,
&gt; host&gt; to determine whether a security origin can access a &lt;protocol, host&gt;
&gt; pair, with port notably lacking. I would expect that the port should be
&gt; included as well, so we&apos;d instead map from security origin to security
&gt; origin. The policy would be more restrictive, but it intuitively makes more
&gt; sense and the API exposed would be a bit nicer (one fewer parameter, and the
&gt; parameters could have more meaningful names, e.g. WebKitSecurityOrigin *key
&gt; and WebKitSecurityOrigin *value). So then the new APIs would allow you to
&gt; decide whether a given security origin can access other security origins. I
&gt; know that&apos;s not the functionality exposed by
&gt; InjectedBundle::addOriginAccessWhitelistEntry and
&gt; InjectedBundle::removeOriginAccessWhitelistEntry, but perhaps we should look
&gt; into changing that at the InjectedBundle level before exposing it forever in
&gt; the public API with this weird limitation. We could also use
&gt; WebKitSecurityOrigin now in the public API, and just ignore the port,
&gt; perhaps documenting that port will be ignored currently but might not be in
&gt; the future.

Ok, but we can&apos;t use SecurityOrigin anyway for the destination, as we still want the special values for all hosts (and now all ports).

&gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; +        to Shared and make it availale from the web extensions API.
&gt; 
&gt; available
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:16
&gt; &gt; +        * Shared/API/glib/WebKitSecurityOriginInternal.h: Added.
&gt; &gt; +        * Shared/API/glib/WebKitSecurityOriginPrivate.h: Copied from Source/WebKit/UIProcess/API/glib/WebKitSecurityOriginPrivate.h.
&gt; 
&gt; I think you could just add the new API to WebKitSecurityOriginPrivate.h and
&gt; include that from the test, like the Cocoa API tests do, instead of creating
&gt; a new convention to separate APIs used only by API tests out into Internal.h
&gt; files like this. Note that the non-glib API tests include lots of Private.h
&gt; headers, but not any Internal.h headers, and there are many Internal.h
&gt; headers in both the C and Cocoa APIs, so I would try to parallel that
&gt; convention.

We can&apos;t, because WebKitSecurityOriginPrivate.h uses WEbCore types that make the tests fail to link.

&gt; &gt; Source/WebKit/Shared/API/glib/WebKitSecurityOrigin.cppSource/WebKit/UIProcess/API/glib/WebKitSecurityOrigin.cpp:72
&gt; &gt; +// Internal API only used for testing.
&gt; &gt; +bool webkitSecurityOriginCanRequest(WebKitSecurityOrigin* origin, const char* url)
&gt; 
&gt; The comment is pretty obvious, since it uses camelCase rather than
&gt; underscores and the pattern is well-established that these are private
&gt; functions.

Not so obvious considering your previous comment. Private.h means private API *required* by the public API implementation and Internal.h means public API we don&apos;t want to expose, but it&apos;s used *only* by tests. Maybe Internal is not the best name for this, though, but I don&apos;t think it matters.

&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:202
&gt; &gt; +    extension-&gt;priv-&gt;bundle = bundle;
&gt; &gt;      bundle-&gt;setClient(std::make_unique&lt;WebExtensionInjectedBundleClient&gt;(extension));
&gt; 
&gt; Can you explain the ownership semantics of WebKitWebExtension and
&gt; InjectedBundle? I&apos;m a bit confused why it is appropriate for the
&gt; WebExtensionInjectedBundleClient to ref the InjectedBundle? I haven&apos;t
&gt; investigated, but might have assumed the WebKitWebExtension is supposed to
&gt; die when the InjectedBundle does, or something like that.

The web extension is owned by the extension manager which is a singleton, so it will never be destroyed. The InjectedBundle is owned by the WebProcess, which is a singleton, so it will never be destroyed.

&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:241
&gt; &gt; + * @protocol: the destination protocol
&gt; &gt; + * @host: (nullable): the destination host, or %NULL for any host
&gt; 
&gt; Does the internal InjectedBundle API really accept null for host, but not
&gt; for protocol?

Not exactly, OriginAccessEntry API handles an empty host as any host. That&apos;s the only special case. We don&apos;t want to use empty strings for this in the public API, so we use NULL instead. String::fromUTF8(nullptr).isEmpty() will be true.

&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:245
&gt; &gt; + * If @host is %NULL all hosts are allowed and @allow_subdomains parameter is ignored.
&gt; 
&gt; %NULL,
&gt; 
&gt; the @allow_subdomains
&gt; 
&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:254
&gt; &gt; +    g_return_if_fail(origin &amp;&amp; !webkit_security_origin_is_opaque(origin));
&gt; 
&gt; Better on two separate lines (so you can tell from the critical which check
&gt; is failing).
&gt; 
&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:275
&gt; &gt; +    g_return_if_fail(origin &amp;&amp; !webkit_security_origin_is_opaque(origin));
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/wpe/WebKitWebExtension.h:91
&gt; &gt; +                                                           gboolean              allow_subdomains);
&gt; 
&gt; I just told Patrick to add a two-member enum instead of using gboolean
&gt; parameters in the public API... should probably hold you to that, too. It
&gt; will be better!
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/WebProcessTest.cpp:32
&gt; &gt; -typedef HashMap&lt;String, std::function&lt;std::unique_ptr&lt;WebProcessTest&gt; ()&gt;&gt; TestsMap;
&gt; &gt; +typedef HashMap&lt;String, std::function&lt;std::unique_ptr&lt;WebProcessTest&gt; (WebKitWebExtension*)&gt;&gt; TestsMap;
&gt; 
&gt; I think it&apos;s time for another typedef here, to simplify this typedef and the
&gt; signature of WebProcessTest::add. Or convert it to using statements, since
&gt; those are nicer than typedefs. I would try:
&gt; 
&gt; using TestFunction = std::function&lt;std::unique_ptr&lt;WebProcessTest&gt;
&gt; (WebKitWebExtension*)&gt;;
&gt; using TestsMap = HashMap&lt;String, TestFunction&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498191</commentid>
    <comment_count>8</comment_count>
      <attachid>360098</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-25 03:24:30 -0800</bug_when>
    <thetext>Created attachment 360098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498229</commentid>
    <comment_count>9</comment_count>
      <attachid>360112</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-25 07:12:06 -0800</bug_when>
    <thetext>Created attachment 360112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498236</commentid>
    <comment_count>10</comment_count>
      <attachid>360112</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-25 07:47:36 -0800</bug_when>
    <thetext>Comment on attachment 360112
Patch

OK, thanks for updating this, it looks better. r=me if you get owner approval for the WK2 changes. If owners don&apos;t want to add port for some reason, then the original version of this patch is fine too I suppose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498247</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-25 08:13:05 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #10)
&gt; Comment on attachment 360112 [details]
&gt; Patch
&gt; 
&gt; OK, thanks for updating this, it looks better. r=me if you get owner
&gt; approval for the WK2 changes. If owners don&apos;t want to add port for some
&gt; reason, then the original version of this patch is fine too I suppose.

There&apos;s no change in behavior nor API in WebKit2 in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498956</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-28 01:02:25 -0800</bug_when>
    <thetext>A WebKit2 owner is required here too, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498957</commentid>
    <comment_count>13</comment_count>
      <attachid>360325</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-28 01:06:50 -0800</bug_when>
    <thetext>Created attachment 360325
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500489</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-31 00:35:30 -0800</bug_when>
    <thetext>Please owners, we are in a hurry to land new API patches because of the release schedule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501886</commentid>
    <comment_count>15</comment_count>
      <attachid>360325</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-04 10:34:01 -0800</bug_when>
    <thetext>Comment on attachment 360325
Patch for landing

The injected bundle is the wrong place for this API.  If you really want this API, please put it in a downstream branch, but I would advice against it.  We do not want this in upstream WebKit.  I give my explicit disapproval of it.

The optional port is suspicious and needs more explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501956</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-04 12:55:36 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; The injected bundle is the wrong place for this API.  If you really want
&gt; this API, please put it in a downstream branch, but I would advice against
&gt; it.  We do not want this in upstream WebKit.  I give my explicit disapproval
&gt; of it.

OK, but the problem is where it&apos;s located rather than the functionality, right? We could e.g. create a UI process API for it?

&gt; The optional port is suspicious and needs more explanation.

Hm, there&apos;s no strong reason for this. I just thought it was suspicious that the port was missing from Carlos&apos;s original patch, and figured it&apos;d make most sense to work with security origins &lt;protocol, host, port&gt; rather than just protocol and host.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501988</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-04 13:27:03 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #16)
&gt; (In reply to Alex Christensen from comment #15)
&gt; &gt; The injected bundle is the wrong place for this API.  If you really want
&gt; &gt; this API, please put it in a downstream branch, but I would advice against
&gt; &gt; it.  We do not want this in upstream WebKit.  I give my explicit disapproval
&gt; &gt; of it.
&gt; 
&gt; OK, but the problem is where it&apos;s located rather than the functionality,
&gt; right? We could e.g. create a UI process API for it?

That would be less problematic, but only if designed well.  It should, for example, not be anything similar to the SchemeRegistry, which tries to be multiprocess-global.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502138</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-04 17:12:04 -0800</bug_when>
    <thetext>WebKitWebContext would be the most natural point, from the perspective of API users. That would correspond to a WebProcessPool. If the internal implementation were to be per-WebPage/WebPageProxy instead of per-WebProcessPool, our API could just call the internal function for every page controlled by the WebProcessPool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502705</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-05 23:45:54 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #18)
&gt; WebKitWebContext would be the most natural point, from the perspective of
&gt; API users. That would correspond to a WebProcessPool. If the internal
&gt; implementation were to be per-WebPage/WebPageProxy instead of
&gt; per-WebProcessPool, our API could just call the internal function for every
&gt; page controlled by the WebProcessPool.

I think WebKitSecurityManager would be the most natural point, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503355</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-06 09:27:54 -0800</bug_when>
    <thetext>Yeah sure. (Still corresponds to a WebProcessPool.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504849</commentid>
    <comment_count>21</comment_count>
      <attachid>361675</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-11 05:41:27 -0800</bug_when>
    <thetext>Created attachment 361675
Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504851</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-11 05:51:46 -0800</bug_when>
    <thetext>Oops, wrong bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505692</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-13 03:42:07 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #17)
&gt; (In reply to Michael Catanzaro from comment #16)
&gt; &gt; (In reply to Alex Christensen from comment #15)
&gt; &gt; &gt; The injected bundle is the wrong place for this API.  If you really want
&gt; &gt; &gt; this API, please put it in a downstream branch, but I would advice against
&gt; &gt; &gt; it.  We do not want this in upstream WebKit.  I give my explicit disapproval
&gt; &gt; &gt; of it.
&gt; &gt; 
&gt; &gt; OK, but the problem is where it&apos;s located rather than the functionality,
&gt; &gt; right? We could e.g. create a UI process API for it?
&gt; 
&gt; That would be less problematic, but only if designed well.  It should, for
&gt; example, not be anything similar to the SchemeRegistry, which tries to be
&gt; multiprocess-global.

Moving the API to the UI process would mean we will keep the whitelist origin map in UI, web and network processes. Do you really want to move the API to the UI process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505824</commentid>
    <comment_count>24</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-13 13:06:03 -0800</bug_when>
    <thetext>It should certainly not be in the WebProcess.  Why would it be needed in the NetworkProcess?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506087</commentid>
    <comment_count>25</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-14 00:44:04 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #24)
&gt; It should certainly not be in the WebProcess.  Why would it be needed in the
&gt; NetworkProcess?

See bug #184374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715429</commentid>
    <comment_count>26</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-12-17 09:59:13 -0800</bug_when>
    <thetext>Hi Alex, can we look at this again? Looks like you quite firmly do not want this API in the web process. Carlos suggested putting the public API in WebKitSecurityManager instead. That would mean all the *internal* InjectedBundle API changes in this patch remain, but the public GTK APIs would be removed. (The public APIs are what you are objecting to, right, Alex?) Then we would add internal IPC to allow WebKitSecurityManager in the UI process to use the internal InjectedBundle APIs. Does that sound OK?

We could also drop the internal InjectedBundle API changes if we don&apos;t check ports, following my earlier suggestion in comment #6: &quot;We could also use WebKitSecurityOrigin now in the public API, and just ignore the port, perhaps documenting that port will be ignored currently but might not be in the future.&quot; I think it&apos;s better if we check ports, though, so I would only do this if Alex really doesn&apos;t like checking the port.

Finally, the public APIs would need to change &quot;whitelist&quot; to &quot;allowlist,&quot; of course.

Motivation: Jan-Michael needs this to implement WebExtensions. He can&apos;t get lasercat working because the extension tries to make an XMLHTTPRequest from the website&apos;s origin (say, http://example.com) to a webextension:// URI, and that gets blocked by CORS. I assume that needs to be exempted from CORS. This would also allow us to remove our hacks to PDF.js: currently we patch PDF.js to feed it PDF content using g_strdup_printf() in order to avoid it trying to load the PDF via HTTP and getting blocked by CORS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715430</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-12-17 10:01:51 -0800</bug_when>
    <thetext>Note this proposal does imply the origin map has to be duplicated in every process. It&apos;s already in web process and network process, so now it would be in the UI process as well:

(In reply to Carlos Garcia Campos from comment #23)
&gt; Moving the API to the UI process would mean we will keep the whitelist
&gt; origin map in UI, web and network processes. Do you really want to move the
&gt; API to the UI process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715433</commentid>
    <comment_count>28</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-17 10:08:10 -0800</bug_when>
    <thetext>We successfully implemented web extensions without this.  I think we used WKWebView._setCORSDisablingPatterns for this particular case.  That&apos;s not a perfect interface, but it&apos;s in the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715572</commentid>
    <comment_count>29</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-12-17 14:55:40 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #28)
&gt; We successfully implemented web extensions without this.  I think we used
&gt; WKWebView._setCORSDisablingPatterns for this particular case.  That&apos;s not a
&gt; perfect interface, but it&apos;s in the UI process.

Looks like Jan-Michael really liked this idea, because he implemented it in bug #219995.

I notice we would be the first port to expose this as public API, so please be sure you really like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782164</commentid>
    <comment_count>30</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-08-05 03:27:42 -0700</bug_when>
    <thetext>I understand that this won&apos;t be needed anymore now that the patch
from bug #219995 has landed. Let&apos;s close this; if needed we can
reopen it in the future :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359265</attachid>
            <date>2019-01-16 06:26:26 -0800</date>
            <delta_ts>2019-01-16 06:36:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-origin-whitelist.diff</filename>
            <type>text/plain</type>
            <size>38464</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2NiMjYxYmZiZTYuLmUzMDJlMTYxM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDE5LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hp
dGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEluamVjdGVkQnVuZGxlOjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgpLCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoKSBhbmQKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpIGluIEdMaWIgQVBJLiBUaGlzIHBhdGNoIG1vdmVzIFdlYktp
dFNlY3VyaXR5T3JpZ2luIGZyb20gVUlQcm9jZXNzCisgICAgICAgIHRvIFNoYXJlZCBhbmQgbWFr
ZSBpdCBhdmFpbGFsZSBmcm9tIHRoZSB3ZWIgZXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJp
dHlPcmlnaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwLgorICAgICAgICAod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KTogSW50ZXJuYWwgZnVuY3Rpb24gb25seSB1c2VkIGJ5IHRlc3RzLgorICAg
ICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZh
dGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmguCisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVu
c2lvbkNyZWF0ZSk6IEtlZXAgYSByZWZlcmVuY2UgdG8gSW5qZWN0ZWRCdW5kbGUgaW4gV2ViS2l0
V2ViRXh0ZW5zaW9uIHByaXZhdGUgc3RydWN0LgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNp
b25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSk6CisgICAg
ICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJF
eHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
d2Via2l0LXdlYi1leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6CisKIDIwMTktMDEt
MTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gQWRkIGVuYWJsZS1qYXZhc2NyaXB0LW1hcmt1cCBzZXR0aW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCAyMjgxMjc0Y2YwYy4uNzRlMzlhMjY5ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtODI0LDEyICs4MjQsMTQgQEAgaWYgKEVOQUJMRV9JTlRST1NQRUNU
SU9OKQogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcAorICAgICAgICAgICAgJHtXRUJLSVRf
RElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCiAgICAgICAgICAg
ICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAogICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2Uu
Y3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKICAgICAgICAgICAgICR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCisgICAgICAg
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2lu
LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
UmVxdWVzdC5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVJlc3BvbnNlLmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi8qLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCnNpbWlsYXJpdHkgaW5k
ZXggOTclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDJlMDc4OWQ0MzAxLi4yYzY4ODA2ZmU3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNjgsNiArNjgsMTMgQEAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlPcmlnaW4oV2ViS2l0U2VjdXJp
dHlPcmkKICAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKIH0KIAorLy8g
SW50ZXJuYWwgQVBJIG9ubHkgdXNlZCBmb3IgdGVzdGluZy4KK2Jvb2wgd2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IGNoYXIq
IHVybCkKK3sKKyAgICBBU1NFUlQob3JpZ2luKTsKKyAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0
eU9yaWdpbi0+Y2FuUmVxdWVzdChVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJsKSkpOwor
fQorCiAvKioKICAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3OgogICogQHByb3RvY29sOiBU
aGUgcHJvdG9jb2wgZm9yIHRoZSBuZXcgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBiOTBkYzM0NjY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRTZWN1cml0eU9y
aWdpbi5oIgorCitib29sIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChXZWJLaXRTZWN1
cml0eU9yaWdpbiosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKc2ltaWxh
cml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKaW5kZXggYjA4ZDcyM2I0YWUuLmM1YWJkZDM2ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
QEAgLTY5LDYgKzY5LDcgQEAgU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51LmNwcCBA
bm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuY3BwIEBu
by11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAgQG5vLXVu
aWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CitT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIEBuby11bmlmeQogU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGli
L1dlYktpdFVSSVJlc3BvbnNlLmNwcCBAbm8tdW5pZnkKIApAQCAtMTY0LDcgKzE2NSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2YXRlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTY3JpcHREaWFsb2cuY3BwIEBuby11bmlmeQogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFNlY3VyaXR5TWFuYWdlci5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVSUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCA1MTE5Y2Fl
NTZiYy4uYjc0Y2U2MzZjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtNjYsNiArNjYsNyBAQCBT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnUuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQ
SS9nbGliL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBAbm8tdW5pZnkKK1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU9yaWdpbi5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2Uu
Y3BwIEBuby11bmlmeQogCkBAIC0xNDksNyArMTUwLDYgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFByaXZhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFJlc3Bv
bnNlUG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFNjcmlwdERpYWxvZy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBA
bm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uaAppbmRleCA2ZGNhMmI3N2VhNi4uMmE0NDNmODg4NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmln
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmgKQEAgLTE3LDcgKzE3LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgogICovCiAKLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VC
X0VYVEVOU0lPTl9IX0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4g
Y2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dAppbmRleCBmZGE3ZGVhYTZiZS4uNmNhNDJhMTlkMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQ1Myw2ICsxNDUzLDkgQEAgV2ViS2l0V2ViRXh0ZW5z
aW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplRnVuY3Rpb24KIFdlYktpdFdlYkV4dGVu
c2lvbkluaXRpYWxpemVXaXRoVXNlckRhdGFGdW5jdGlvbgogd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X3BhZ2UKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dF9lbnRyeQord2Via2l0X3dlYl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVs
aXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRl
bGlzdHMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJFeHRlbnNpb25DbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oCmluZGV4IDgwZTA0NTIzYzdmLi40NGUzZTY1Y2FjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaApA
QCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAot
I2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9I
X0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNsdWRlZCBk
aXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmNwcAppbmRleCAwODJkNjA5YTg3Yi4uNDlkYmQxYzU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlP
cmlnaW5Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgpAQCAtMTE4LDYgKzExOSw3IEBAIGVudW0gewogdHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2UqLCBH
UmVmUHRyPFdlYktpdFdlYlBhZ2U+ID4gV2ViUGFnZU1hcDsKIAogc3RydWN0IF9XZWJLaXRXZWJF
eHRlbnNpb25Qcml2YXRlIHsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGJ1bmRsZTsKICAg
ICBXZWJQYWdlTWFwIHBhZ2VzOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBib29s
IGdhcmJhZ2VDb2xsZWN0T25QYWdlRGVzdHJveTsKQEAgLTE5Niw2ICsxOTgsNyBAQCBwcml2YXRl
OgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRC
dW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdF
QktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9O
LCBOVUxMKSk7CisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUgPSBidW5kbGU7CiAgICAgYnVu
ZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRs
ZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KQEAgLTIyOSwz
ICsyMzIsNjQgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Uo
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGd1aW4KIAogICAgIHJldHVybiAwOwogfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dF9lbnRyeToKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICogQG9yaWdp
bjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqIEBwcm90b2NvbDogdGhlIGRlc3RpbmF0aW9u
IHByb3RvY29sCisgKiBAaG9zdDogdGhlIGRlc3RpbmF0aW9uIGhvc3QKKyAqIEBhbGxvd19zdWJk
b21haW5zOiB3aGV0aGVyIHRvIGFsbG93IHN1YmRvbWFpbnMKKyAqCisgKiBBZGQgYSB3aGl0ZWxp
c3QgZW50cnkgZm9yIG9yaWdpbiB0byBhbGxvdyBjcm9zcyBvcmlnaW4gYWNjZXNzIHRvIHRoZSBn
aXZlbiBAcHJvdG9jb2wgYW5kIEBob3N0LgorICogSWYgQGFsbG93X3N1YmRvbWFpbnMgaXMgJVRS
VUUsIHN1YmRvbWFpbnMgb2YgQGhvc3QgZm9yIHRoZSBnaXZlbiBAcHJvdG9jb2wgYXJlIGFsc28g
YWxsb3dlZCB0bworICogYmUgYWNjZXNzZWQgZnJvbSBAb3JpZ2luLgorICoKKyAqIFNpbmNlOiAy
LjI0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hp
dGVsaXN0X2VudHJ5KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBjb25zdCBjaGFyKiBwcm90b2NvbCwgY29uc3QgY2hhciogaG9zdCwg
Z2Jvb2xlYW4gYWxsb3dTdWJkb21haW5zKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmln
aW4gJiYgIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwocHJvdG9jb2wpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7CisK
KyAgICBleHRlbnNpb24tPnByaXYtPmJ1bmRsZS0+YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkod2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihvcmlnaW4pLnRvU3RyaW5n
KCksIFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBh
bGxvd1N1YmRvbWFpbnMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92
ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeToKKyAqIEBleHRlbnNpb246IGEgI1dlYktp
dFdlYkV4dGVuc2lvbgorICogQG9yaWdpbjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqIEBw
cm90b2NvbDogdGhlIGRlc3RpbmF0aW9uIHByb3RvY29sCisgKiBAaG9zdDogdGhlIGRlc3RpbmF0
aW9uIGhvc3QKKyAqIEBhbGxvd19zdWJkb21haW5zOiB3aGV0aGVyIHN1YmRvbWFpbnMgd2VyZSBh
bGxvd2VkCisgKgorICogUmVtb3ZlIGEgd2hpdGVsaXN0IGVudHJ5IGZvciBvcmlnaW4gcHJldmlv
dXNseSBhZGRlZCB3aXRoIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3do
aXRlbGlzdF9lbnRyeSgpLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KFdlYktpdFdl
YkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBjaGFyKiBwcm90b2NvbCwgY29uc3QgY2hhciogaG9zdCwgZ2Jvb2xlYW4gYWxsb3dTdWJkb21h
aW5zKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0
ZW5zaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW4gJiYgIXdlYmtpdF9zZWN1cml0
eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocHJvdG9j
b2wpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7CisKKyAgICBleHRlbnNpb24tPnByaXYt
PmJ1bmRsZS0+cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkod2Via2l0U2VjdXJpdHlP
cmlnaW5HZXRTZWN1cml0eU9yaWdpbihvcmlnaW4pLnRvU3RyaW5nKCksIFN0cmluZzo6ZnJvbVVU
RjgocHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBhbGxvd1N1YmRvbWFpbnMpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hp
dGVsaXN0czoKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICoKKyAqIFJl
bW92ZSBhbGwgd2hpdGVsaXN0IGVudHJpZXMgcHJldmlvdXNseSBhZGRlZCB3aXRoIHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSgpLgorICoKKyAq
IFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2lu
X2FjY2Vzc193aGl0ZWxpc3RzKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisK
KyAgICBleHRlbnNpb24tPnByaXYtPmJ1bmRsZS0+cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3Rz
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IDM0MTM2
YTM3ZDI1Li5kYjAwMzcwNGJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5z
aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRT
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgogCiBH
X0JFR0lOX0RFQ0xTCkBAIC03NiwxMSArNzcsMjggQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNp
b25DbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgot
d2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5z
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAg
cGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQg
ICAgICAgICAgICAgICBwYWdlX2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4
dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkgICAgKFdlYktpdFdlYkV4
dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
Kmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICBhbGxvd19zdWJkb21haW5zKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193
aGl0ZWxpc3RfZW50cnkgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2Nv
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAg
ICBhbGxvd19zdWJkb21haW5zKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVu
c2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMgICAgICAgKFdlYktpdFdlYkV4dGVu
c2lvbiAgICpleHRlbnNpb24pOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVu
c2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
d2Via2l0LXdlYi1leHRlbnNpb24uaAppbmRleCAxYzk1ZjFkM2FlZC4uMTQ2OTA4OTY2MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRGcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0
V29ybGQuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUv
V2ViS2l0V2ViRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaAppbmRleCBhNmZmYjQ4NTA0OC4uOTNk
Mjc0Mjk0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdFdlYlBhZ2UuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNzYsMTEg
Kzc3LDI4IEBAIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MgewogfTsKIAogV0VCS0lU
X0FQSSBHVHlwZQotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgKHZvaWQpOword2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk
KTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9wYWdlIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOword2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJF
eHRlbnNpb24gICAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgcGFnZV9pZCk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nl
c3Nfd2hpdGVsaXN0X2VudHJ5ICAgIChXZWJLaXRXZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAq
cHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpob3N0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg
ICAgICAgICAgYWxsb3dfc3ViZG9tYWlucyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5IChXZWJLaXRX
ZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgYWxsb3dfc3ViZG9tYWlucyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vz
c193aGl0ZWxpc3RzICAgICAgIChXZWJLaXRXZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uKTsKIAog
R19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgK
aW5kZXggNzk2YjIxZTQxZjEuLmFkZTRiOGRjZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dl
YmtpdC13ZWItZXh0ZW5zaW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3cGUvV2Vi
S2l0Q29udGV4dE1lbnVJdGVtLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEZyYW1lLmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdFNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFNlY3Vy
aXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0VVJJUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRWRpdG9y
Lmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YTUwMjRkZmNlNTUuLjI0NTVjYjQyN2RhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTktMDEtMTYgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0g
QWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEgc2VjdXJpdHkg
b3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTM0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBuZXcgdGVzdCB0byBjaGVjayB0aGUgbmV3IEFQSS4gVGhpcyBwYXRjaCByZWZhY3RvcnMg
V2ViUHJvY2VzcyB0ZXN0cyB0byByZWNlaXZlIHRoZSBXZWJLaXRXZWJFeHRlbnNpb24gYXMKKyAg
ICAgICAgcGFyYW1ldGVyIG9mIGNyZWF0ZSBmdW5jdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5jcHA6CisgICAgICAgIChET01F
bGVtZW50VGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvRWRpdG9yVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0OjpjcmVh
dGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0RnJhbWVUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9PcmlnaW5XaGl0ZWxpc3RUZXN0LmNwcDogQWRkZWQu
CisgICAgICAgIChPcmlnaW5XaGl0ZWxpc3RUZXN0OjpjcmVhdGUpOgorICAgICAgICAoT3JpZ2lu
V2hpdGVsaXN0VGVzdDo6T3JpZ2luV2hpdGVsaXN0VGVzdCk6CisgICAgICAgIChPcmlnaW5XaGl0
ZWxpc3RUZXN0Ojp0ZXN0V2hpdGVsaXN0KToKKyAgICAgICAgKHJlZ2lzdGVyVGVzdHMpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3JpZ2luV2hpdGVsaXN0
LmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0T3JpZ2luV2hpdGVsaXN0KToKKyAgICAgICAgKGJl
Zm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAgICAgICAgKFdlYlByb2Nlc3NU
ZXN0OjphZGQpOgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKHdpbmRvd09iamVjdENsZWFyZWRDYWxsYmFjayk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVzdC5jcHA6
CisgICAgICAgIChBdXRvY2xlYW51cHNUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdERPTUNsaWVudFJlY3RUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERP
TU5vZGVGaWx0ZXJUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTU5vZGVUZXN0Ojpj
cmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRo
TlNSZXNvbHZlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQ6
CisKIDIwMTktMDEtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIGVuYWJsZS1qYXZhc2NyaXB0LW1hcmt1cCBzZXR0
aW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRE9N
RWxlbWVudFRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0RP
TUVsZW1lbnRUZXN0LmNwcAppbmRleCBjZDYwM2FjMmI1Ny4uN2E1YmNkNTdlOGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0RPTUVsZW1lbnRU
ZXN0LmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiBjbGFzcyBET01FbGVtZW50VGVzdCA6IHB1Ymxp
YyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nl
c3NUZXN0PihuZXcgRE9NRWxlbWVudFRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgRE9NRWxlbWVudFRlc3QoKSk7IH0K
IAogcHJpdmF0ZToKICAgICBib29sIHRlc3RBdXRvRmlsbChXZWJLaXRXZWJQYWdlKiBwYWdlKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0VkaXRvclRl
c3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0VkaXRvclRlc3Qu
Y3BwCmluZGV4IDVmNzYzZTRiYmNkLi44M2MyM2I0NjAzZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0VkaXRvclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcApAQCAtMjMsNyArMjMs
NyBAQAogCiBjbGFzcyBXZWJLaXRXZWJFZGl0b3JUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBj
cmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJL
aXRXZWJFZGl0b3JUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9j
ZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdFdlYkVkaXRvclRlc3QoKSk7IH0KIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2soYm9vbCogc2Vs
ZWN0aW9uQ2hhbmdlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9GcmFtZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL0ZyYW1lVGVzdC5jcHAKaW5kZXggMmU2N2MwYTdhMzIuLmVhMjk0MTgwMDBjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcApA
QCAtMjUsNyArMjUsNyBAQAogCiBjbGFzcyBXZWJLaXRGcmFtZVRlc3QgOiBwdWJsaWMgV2ViUHJv
Y2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4o
bmV3IFdlYktpdEZyYW1lVGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRGcmFtZVRlc3QoKSk7IH0KIAogcHJp
dmF0ZToKICAgICBib29sIHRlc3RNYWluRnJhbWUoV2ViS2l0V2ViUGFnZSogcGFnZSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9PcmlnaW5XaGl0ZWxp
c3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9PcmlnaW5X
aGl0ZWxpc3RUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ODA5NjljYTE2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0VGVzdC5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJXZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Rlc3QuaCIKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIv
R1VuaXF1ZVB0ci5oPgorCitjbGFzcyBPcmlnaW5XaGl0ZWxpc3RUZXN0IDogcHVibGljIFdlYlBy
b2Nlc3NUZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nl
c3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pIHsgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IE9yaWdpbldoaXRlbGlzdFRlc3QoZXh0
ZW5zaW9uKSk7IH0KKworcHJpdmF0ZToKKyAgICBPcmlnaW5XaGl0ZWxpc3RUZXN0KFdlYktpdFdl
YkV4dGVuc2lvbiogZXh0ZW5zaW9uKQorICAgICAgICA6IG1fZXh0ZW5zaW9uKGV4dGVuc2lvbikK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCB0ZXN0V2hpdGVsaXN0KFdlYktpdFdlYlBhZ2UqIHBh
Z2UpCisgICAgeworICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0dHAiLCAiZm9vLmNvbSIsIDApOworICAgICAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6
Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5
T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAi
aHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25f
YWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9uLCBvcmlnaW4sICJo
dHRwcyIsICJmb28uY29tIiwgRkFMU0UpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNl
Y3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20vcGFnZSIpKTsK
KyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9y
aWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFn
ZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1
ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRl
bnNpb24sIG9yaWdpbiwgImh0dHBzIiwgImZvby5jb20iLCBUUlVFKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9m
b28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3Jp
Z2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0
cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2VjdXJp
dHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsK
KworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0
ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdpbiwgImh0dHBzIiwgImZvby5jb20iLCBUUlVF
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qo
b3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9w
YWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJl
cXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jh
ci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29y
aWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9uLCBvcmlnaW4sICJodHRwIiwg
ImJhci5jb20iLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9wYWdlIikpOworICAgICAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJo
dHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1
cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmln
aW4sICJodHRwczovL2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9l
eHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RzKG1fZXh0ZW5zaW9uKTsKKyAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdp
biwgImh0dHBzOi8vZm9vLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jhci5jb20vcGFnZSIp
KTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0
KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0
V2ViUGFnZSogcGFnZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghc3RyY21wKHRlc3RO
YW1lLCAid2hpdGVsaXN0IikpCisgICAgICAgICAgICByZXR1cm4gdGVzdFdoaXRlbGlzdChwYWdl
KTsKKworICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBtX2V4dGVuc2lvbiB7IG51bGxw
dHIgfTsKK307CisKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgcmVn
aXN0ZXJUZXN0cygpCit7CisgICAgUkVHSVNURVJfVEVTVChPcmlnaW5XaGl0ZWxpc3RUZXN0LCAi
T3JpZ2luV2hpdGVsaXN0L3doaXRlbGlzdCIpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MjhmOTczNjVmMgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3Jp
Z2luV2hpdGVsaXN0LmNwcApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIs
MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJWaWV3
VGVzdC5oIgorCitzdGF0aWMgdm9pZCB0ZXN0T3JpZ2luV2hpdGVsaXN0KFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJv
Y2Vzc1Rlc3QoIk9yaWdpbldoaXRlbGlzdCIsICJ3aGl0ZWxpc3QiKSk7Cit9CisKK3ZvaWQgYmVm
b3JlQWxsKCkKK3sKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJPcmlnaW5XaGl0ZWxpc3QiLCAid2hp
dGVsaXN0IiwgdGVzdE9yaWdpbldoaXRlbGlzdCk7Cit9CisKK3ZvaWQgYWZ0ZXJBbGwoKQorewor
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlBy
b2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQ
cm9jZXNzVGVzdC5jcHAKaW5kZXggZjQ0MWE3MTlhODIuLjM3NzhmYjc1YTgwIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVz
dC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogc3RhdGljIEhhc2hTZXQ8R09iamVjdCo+IHNfd2F0
Y2hlZE9iamVjdHM7CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6ZnVuY3Rpb248c3Rk
Ojp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiAoKT4+IFRlc3RzTWFwOwordHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
IChXZWJLaXRXZWJFeHRlbnNpb24qKT4+IFRlc3RzTWFwOwogc3RhdGljIFRlc3RzTWFwJiB0ZXN0
c01hcCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RzTWFwPiBzX3Rlc3RzTWFw
OwpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBjaGVja0xlYWtzKCkKICAgICBnX2Fzc2Vy
dF90cnVlKHNfd2F0Y2hlZE9iamVjdHMuaXNFbXB0eSgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
VGVzdDo6YWRkKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUsIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlx
dWVfcHRyPFdlYlByb2Nlc3NUZXN0PiAoKT4gY2xvc3VyZSkKK3ZvaWQgV2ViUHJvY2Vzc1Rlc3Q6
OmFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0
cjxXZWJQcm9jZXNzVGVzdD4gKFdlYktpdFdlYkV4dGVuc2lvbiopPiBjbG9zdXJlKQogewogICAg
IHRlc3RzTWFwKCkuYWRkKHRlc3ROYW1lLCBXVEZNb3ZlKGNsb3N1cmUpKTsKIH0KQEAgLTYyLDE5
ICs2MiwxOSBAQCB2b2lkIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdPYmplY3QqIG9iamVjdCkKICAgICB9LCBudWxscHRyKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgdGVzdE5hbWUpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IFdlYlBy
b2Nlc3NUZXN0OjpjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGNvbnN0IFN0
cmluZyYgdGVzdE5hbWUpCiB7CiAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0c01hcCgpLmNvbnRhaW5z
KHRlc3ROYW1lKSk7Ci0gICAgcmV0dXJuIHRlc3RzTWFwKCkuZ2V0KHRlc3ROYW1lKSgpOworICAg
IHJldHVybiB0ZXN0c01hcCgpLmdldCh0ZXN0TmFtZSkoZXh0ZW5zaW9uKTsKIH0KIAotc3RhdGlj
IGdib29sZWFuIHJ1blRlc3QoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgY2hhciogdGVz
dFBhdGgpCitzdGF0aWMgZ2Jvb2xlYW4gcnVuVGVzdChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBj
b25zdCBjaGFyKiB0ZXN0UGF0aCwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCiB7CiAg
ICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSkpOwogICAgIFdlYlBy
b2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KHdlYlBhZ2UpKTsKICAgICBnX2Fzc2VydF9ub25udWxsKHRlc3RQYXRoKTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gdGVzdCA9IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUo
U3RyaW5nOjpmcm9tVVRGOCh0ZXN0UGF0aCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9j
ZXNzVGVzdD4gdGVzdCA9IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoZXh0ZW5zaW9uLCBTdHJpbmc6
OmZyb21VVEY4KHRlc3RQYXRoKSk7CiAgICAgcmV0dXJuIHRlc3QtPnJ1blRlc3QoZ19zdHJyc3Ry
KHRlc3RQYXRoLCAiLyIpICsgMSwgd2ViUGFnZSk7CiB9CiAKQEAgLTkzLDcgKzkzLDcgQEAgc3Rh
dGljIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZENhbGxiYWNrKFdlYktpdFNjcmlwdFdvcmxkKiB3
b3JsZCwgV2ViS2l0V2ViUGFnZSoKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjb250ZXh0LmdldCgpKSk7CiAgICAgYXV0
byoganNDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJX
ZWJQcm9jZXNzVGVzdFJ1bm5lciIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0Rlc3Ryb3lOb3RpZnk+KHdlYlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemUpKTsKICAgICBXZWJQ
cm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VChqc0NsYXNzKSk7Ci0gICAganNjX2NsYXNzX2FkZF9tZXRob2QoanNDbGFzcywgInJ1blRlc3Qi
LCBHX0NBTExCQUNLKHJ1blRlc3QpLCBOVUxMLCBOVUxMLCBHX1RZUEVfQk9PTEVBTiwgMSwgR19U
WVBFX1NUUklORyk7CisgICAganNjX2NsYXNzX2FkZF9tZXRob2QoanNDbGFzcywgInJ1blRlc3Qi
LCBHX0NBTExCQUNLKHJ1blRlc3QpLCBleHRlbnNpb24sIG51bGxwdHIsIEdfVFlQRV9CT09MRUFO
LCAxLCBHX1RZUEVfU1RSSU5HKTsKICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB0ZXN0UnVubmVyID0g
YWRvcHRHUmVmKGpzY192YWx1ZV9uZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCksIGdfb2JqZWN0X3Jl
Zih3ZWJQYWdlKSwganNDbGFzcykpOwogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHRlc3RSdW5uZXIuZ2V0KCkpKTsKICAg
ICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgIldlYlByb2Nlc3NUZXN0UnVu
bmVyIiwgdGVzdFJ1bm5lci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCmluZGV4IDdhNDRjYjA1Y2Q0Li4wMWI1
M2ViN2NlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1dlYlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYlByb2Nlc3NUZXN0LmgKQEAgLTM2LDggKzM2LDggQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHT2JqZWN0Kik7
CiAKLSAgICBzdGF0aWMgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSwgc3RkOjpmdW5j
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgpPik7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5h
bWUpOworICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBzdGQ6OmZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKFdlYktpdFdlYkV4dGVuc2lv
biopPik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRl
KFdlYktpdFdlYkV4dGVuc2lvbiosIGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpOwogfTsKIAogI2Rl
ZmluZSBSRUdJU1RFUl9URVNUKENsYXNzTmFtZSwgVGVzdE5hbWUpIFwKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVzdC5jcHAK
aW5kZXggZjc5Y2YzNDUxODIuLjA1ZDczZTJmNzBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcApAQCAtMjYs
NyArMjYsNyBAQAogCiBjbGFzcyBBdXRvY2xlYW51cHNUZXN0IDogcHVibGljIFdlYlByb2Nlc3NU
ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBB
dXRvY2xlYW51cHNUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9j
ZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IEF1dG9jbGVhbnVwc1Rlc3QoKSk7IH0KIAogcHJpdmF0
ZToKICAgICBib29sIHRlc3RXZWJQcm9jZXNzQXV0b2NsZWFudXBzKFdlYktpdFdlYlBhZ2UqIHdl
YlBhZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9E
T01DbGllbnRSZWN0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9ET01DbGllbnRSZWN0VGVzdC5jcHAKaW5kZXggMWIzOWZhZmE3YTcuLjE2MDU5MjJkYTYyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRS
ZWN0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9N
Q2xpZW50UmVjdFRlc3QuY3BwCkBAIC0yNyw3ICsyNyw3IEBAIEdfR05VQ19CRUdJTl9JR05PUkVf
REVQUkVDQVRJT05TOwogCiBjbGFzcyBXZWJLaXRET01DbGllbnRSZWN0VGVzdCA6IHB1YmxpYyBX
ZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQ
cm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERPTUNs
aWVudFJlY3RUZXN0PihuZXcgV2ViS2l0RE9NQ2xpZW50UmVjdFRlc3QoKSk7IH0KKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5z
aW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERPTUNsaWVudFJlY3RUZXN0Pihu
ZXcgV2ViS2l0RE9NQ2xpZW50UmVjdFRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBjaGVja0NsaWVudFJlY3RQb3NpdGlvbihXZWJLaXRET01DbGllbnRSZWN0KiBjbGllbnRS
ZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9N
Tm9kZUZpbHRlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
RE9NTm9kZUZpbHRlclRlc3QuY3BwCmluZGV4IGNjYTgyZmNlZTBjLi43OGRjMTU5NDNkOCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRl
clRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5v
ZGVGaWx0ZXJUZXN0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZXhw
ZWN0ZWRFbGVtZW50c05vSW5wdXRbXSA9IHsgIkhUTUwiLCAiSEVBRCIsICJUSVRMRSIsICJCT0RZ
IgogCiBjbGFzcyBXZWJLaXRET01Ob2RlRmlsdGVyVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVz
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4g
Y3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2Vi
S2l0RE9NTm9kZUZpbHRlclRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0RE9NTm9kZUZpbHRlclRlc3QoKSk7
IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRlc3RUcmVlV2Fsa2VyKFdlYktpdFdlYlBhZ2UqIHBh
Z2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01O
b2RlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2Rl
VGVzdC5jcHAKaW5kZXggYmE3ZmFiOTljZjYuLmRiNGQxZTNlMTE2IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwCkBAIC0yOCw3
ICsyOCw3IEBAIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogCiBjbGFzcyBXZWJL
aXRET01Ob2RlVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdERPTU5vZGVUZXN0PihuZXcgV2ViS2l0RE9NTm9kZVRlc3QoKSk7
IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2Vi
S2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERPTU5vZGVU
ZXN0PihuZXcgV2ViS2l0RE9NTm9kZVRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRl
c3RIaWVyYXJjaHlOYXZpZ2F0aW9uKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNv
bHZlclRlc3QuY3BwCmluZGV4IDM1ZWUzNTAzYTQwLi40N2VmYTAyOTkzYyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhO
U1Jlc29sdmVyVGVzdC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3hw
YXRoX25zX3Jlc29sdmVyX2NsYXNzX2luaXQoV2ViS2l0WFBhdGhOU1Jlc29sdmVyQ2xhc3MqKQog
CiBjbGFzcyBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0IDogcHVibGljIFdlYlByb2Nlc3NU
ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBX
ZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdERPTVhQYXRoTlNSZXNv
bHZlclRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGV2YWx1YXRlRm9vQ2hpbGRUZXh0
QW5kQ2hlY2tSZXN1bHQoV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXRET01YUGF0
aE5TUmVzb2x2ZXIqIHJlc29sdmVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGY0YzFlNjk2NjNiLi5hYjhjNWE1NWY4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9DTWFrZUxpc3RzLnR4dApAQCAtMzksNiArMzksNyBAQCBzZXQoV2ViS2l0R0xpYkFQSVdl
YlByb2Nlc3NUZXN0cwogICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvRE9NRWxlbWVudFRlc3QuY3BwCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcAogICAgICR7VE9PTFNfRElSfS9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcAorICAgICR7VE9PTFNfRElSfS9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0VGVzdC5jcHAKICAg
ICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NU
ZXN0LmNwcAogKQogCkBAIC0xNDAsNiArMTQxLDcgQEAgQUREX1dLMl9URVNUKFRlc3RXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2kK
IEFERF9XSzJfVEVTVChUZXN0V2Vic2l0ZURhdGEgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwKQogQUREX1dLMl9URVNUKFRlc3RD
b25zb2xlTWVzc2FnZSAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RDb25zb2xlTWVzc2FnZS5jcHApCiBBRERfV0syX1RFU1QoVGVzdERPTUVsZW1lbnQgJHtU
T09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RE9NRWxlbWVudC5j
cHApCitBRERfV0syX1RFU1QoVGVzdE9yaWdpbldoaXRlbGlzdCAke1RPT0xTX0RJUn0vVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwKQogCiAjIEZJ
WE1FOiBFbmFibGUgZm9yIFdQRQogaWYgKFBPUlQgU1RSRVFVQUwgIkdUSyIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359266</attachid>
            <date>2019-01-16 06:36:37 -0800</date>
            <delta_ts>2019-01-17 03:50:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-origin-whitelist.diff</filename>
            <type>text/plain</type>
            <size>39255</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2NiMjYxYmZiZTYuLmUzMDJlMTYxM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDE5LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hp
dGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEluamVjdGVkQnVuZGxlOjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgpLCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoKSBhbmQKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpIGluIEdMaWIgQVBJLiBUaGlzIHBhdGNoIG1vdmVzIFdlYktp
dFNlY3VyaXR5T3JpZ2luIGZyb20gVUlQcm9jZXNzCisgICAgICAgIHRvIFNoYXJlZCBhbmQgbWFr
ZSBpdCBhdmFpbGFsZSBmcm9tIHRoZSB3ZWIgZXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJp
dHlPcmlnaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwLgorICAgICAgICAod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KTogSW50ZXJuYWwgZnVuY3Rpb24gb25seSB1c2VkIGJ5IHRlc3RzLgorICAg
ICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZh
dGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmguCisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVu
c2lvbkNyZWF0ZSk6IEtlZXAgYSByZWZlcmVuY2UgdG8gSW5qZWN0ZWRCdW5kbGUgaW4gV2ViS2l0
V2ViRXh0ZW5zaW9uIHByaXZhdGUgc3RydWN0LgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNp
b25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSk6CisgICAg
ICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJF
eHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
d2Via2l0LXdlYi1leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6CisKIDIwMTktMDEt
MTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gQWRkIGVuYWJsZS1qYXZhc2NyaXB0LW1hcmt1cCBzZXR0aW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCAyMjgxMjc0Y2YwYy4uNzRlMzlhMjY5ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtODI0LDEyICs4MjQsMTQgQEAgaWYgKEVOQUJMRV9JTlRST1NQRUNU
SU9OKQogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcAorICAgICAgICAgICAgJHtXRUJLSVRf
RElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCiAgICAgICAgICAg
ICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAogICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2Uu
Y3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKICAgICAgICAgICAgICR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCisgICAgICAg
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2lu
LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
UmVxdWVzdC5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVJlc3BvbnNlLmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi8qLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCnNpbWlsYXJpdHkgaW5k
ZXggOTclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDJlMDc4OWQ0MzAxLi4yYzY4ODA2ZmU3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNjgsNiArNjgsMTMgQEAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlPcmlnaW4oV2ViS2l0U2VjdXJp
dHlPcmkKICAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKIH0KIAorLy8g
SW50ZXJuYWwgQVBJIG9ubHkgdXNlZCBmb3IgdGVzdGluZy4KK2Jvb2wgd2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IGNoYXIq
IHVybCkKK3sKKyAgICBBU1NFUlQob3JpZ2luKTsKKyAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0
eU9yaWdpbi0+Y2FuUmVxdWVzdChVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJsKSkpOwor
fQorCiAvKioKICAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3OgogICogQHByb3RvY29sOiBU
aGUgcHJvdG9jb2wgZm9yIHRoZSBuZXcgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBiOTBkYzM0NjY5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRTZWN1cml0eU9y
aWdpbi5oIgorCitib29sIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChXZWJLaXRTZWN1
cml0eU9yaWdpbiosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKc2ltaWxh
cml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKaW5kZXggYjA4ZDcyM2I0YWUuLmM1YWJkZDM2ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
QEAgLTY5LDYgKzY5LDcgQEAgU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51LmNwcCBA
bm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuY3BwIEBu
by11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAgQG5vLXVu
aWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CitT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIEBuby11bmlmeQogU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGli
L1dlYktpdFVSSVJlc3BvbnNlLmNwcCBAbm8tdW5pZnkKIApAQCAtMTY0LDcgKzE2NSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2YXRlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTY3JpcHREaWFsb2cuY3BwIEBuby11bmlmeQogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFNlY3VyaXR5TWFuYWdlci5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVSUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCA1MTE5Y2Fl
NTZiYy4uYjc0Y2U2MzZjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtNjYsNiArNjYsNyBAQCBT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnUuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQ
SS9nbGliL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBAbm8tdW5pZnkKK1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU9yaWdpbi5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2Uu
Y3BwIEBuby11bmlmeQogCkBAIC0xNDksNyArMTUwLDYgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFByaXZhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFJlc3Bv
bnNlUG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFNjcmlwdERpYWxvZy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBA
bm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uaAppbmRleCA2ZGNhMmI3N2VhNi4uMmE0NDNmODg4NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmln
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmgKQEAgLTE3LDcgKzE3LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgogICovCiAKLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VC
X0VYVEVOU0lPTl9IX0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4g
Y2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dAppbmRleCBmZGE3ZGVhYTZiZS4uNmNhNDJhMTlkMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQ1Myw2ICsxNDUzLDkgQEAgV2ViS2l0V2ViRXh0ZW5z
aW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplRnVuY3Rpb24KIFdlYktpdFdlYkV4dGVu
c2lvbkluaXRpYWxpemVXaXRoVXNlckRhdGFGdW5jdGlvbgogd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X3BhZ2UKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dF9lbnRyeQord2Via2l0X3dlYl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVs
aXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRl
bGlzdHMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJFeHRlbnNpb25DbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oCmluZGV4IDgwZTA0NTIzYzdmLi40NGUzZTY1Y2FjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaApA
QCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAot
I2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9I
X0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNsdWRlZCBk
aXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmNwcAppbmRleCAwODJkNjA5YTg3Yi4uNDlkYmQxYzU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlP
cmlnaW5Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgpAQCAtMTE4LDYgKzExOSw3IEBAIGVudW0gewogdHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2UqLCBH
UmVmUHRyPFdlYktpdFdlYlBhZ2U+ID4gV2ViUGFnZU1hcDsKIAogc3RydWN0IF9XZWJLaXRXZWJF
eHRlbnNpb25Qcml2YXRlIHsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGJ1bmRsZTsKICAg
ICBXZWJQYWdlTWFwIHBhZ2VzOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBib29s
IGdhcmJhZ2VDb2xsZWN0T25QYWdlRGVzdHJveTsKQEAgLTE5Niw2ICsxOTgsNyBAQCBwcml2YXRl
OgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRC
dW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdF
QktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9O
LCBOVUxMKSk7CisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUgPSBidW5kbGU7CiAgICAgYnVu
ZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRs
ZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KQEAgLTIyOSwz
ICsyMzIsNjQgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Uo
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGd1aW4KIAogICAgIHJldHVybiAwOwogfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dF9lbnRyeToKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICogQG9yaWdp
bjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqIEBwcm90b2NvbDogdGhlIGRlc3RpbmF0aW9u
IHByb3RvY29sCisgKiBAaG9zdDogdGhlIGRlc3RpbmF0aW9uIGhvc3QKKyAqIEBhbGxvd19zdWJk
b21haW5zOiB3aGV0aGVyIHRvIGFsbG93IHN1YmRvbWFpbnMKKyAqCisgKiBBZGQgYSB3aGl0ZWxp
c3QgZW50cnkgZm9yIG9yaWdpbiB0byBhbGxvdyBjcm9zcyBvcmlnaW4gYWNjZXNzIHRvIHRoZSBn
aXZlbiBAcHJvdG9jb2wgYW5kIEBob3N0LgorICogSWYgQGFsbG93X3N1YmRvbWFpbnMgaXMgJVRS
VUUsIHN1YmRvbWFpbnMgb2YgQGhvc3QgZm9yIHRoZSBnaXZlbiBAcHJvdG9jb2wgYXJlIGFsc28g
YWxsb3dlZCB0bworICogYmUgYWNjZXNzZWQgZnJvbSBAb3JpZ2luLgorICoKKyAqIFNpbmNlOiAy
LjI0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hp
dGVsaXN0X2VudHJ5KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBjb25zdCBjaGFyKiBwcm90b2NvbCwgY29uc3QgY2hhciogaG9zdCwg
Z2Jvb2xlYW4gYWxsb3dTdWJkb21haW5zKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmln
aW4gJiYgIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwocHJvdG9jb2wpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7CisK
KyAgICBleHRlbnNpb24tPnByaXYtPmJ1bmRsZS0+YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkod2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihvcmlnaW4pLnRvU3RyaW5n
KCksIFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBh
bGxvd1N1YmRvbWFpbnMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92
ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeToKKyAqIEBleHRlbnNpb246IGEgI1dlYktp
dFdlYkV4dGVuc2lvbgorICogQG9yaWdpbjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqIEBw
cm90b2NvbDogdGhlIGRlc3RpbmF0aW9uIHByb3RvY29sCisgKiBAaG9zdDogdGhlIGRlc3RpbmF0
aW9uIGhvc3QKKyAqIEBhbGxvd19zdWJkb21haW5zOiB3aGV0aGVyIHN1YmRvbWFpbnMgd2VyZSBh
bGxvd2VkCisgKgorICogUmVtb3ZlIGEgd2hpdGVsaXN0IGVudHJ5IGZvciBvcmlnaW4gcHJldmlv
dXNseSBhZGRlZCB3aXRoIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3do
aXRlbGlzdF9lbnRyeSgpLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KFdlYktpdFdl
YkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBjaGFyKiBwcm90b2NvbCwgY29uc3QgY2hhciogaG9zdCwgZ2Jvb2xlYW4gYWxsb3dTdWJkb21h
aW5zKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0
ZW5zaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW4gJiYgIXdlYmtpdF9zZWN1cml0
eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocHJvdG9j
b2wpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7CisKKyAgICBleHRlbnNpb24tPnByaXYt
PmJ1bmRsZS0+cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkod2Via2l0U2VjdXJpdHlP
cmlnaW5HZXRTZWN1cml0eU9yaWdpbihvcmlnaW4pLnRvU3RyaW5nKCksIFN0cmluZzo6ZnJvbVVU
RjgocHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBhbGxvd1N1YmRvbWFpbnMpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hp
dGVsaXN0czoKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICoKKyAqIFJl
bW92ZSBhbGwgd2hpdGVsaXN0IGVudHJpZXMgcHJldmlvdXNseSBhZGRlZCB3aXRoIHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSgpLgorICoKKyAq
IFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2lu
X2FjY2Vzc193aGl0ZWxpc3RzKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisK
KyAgICBleHRlbnNpb24tPnByaXYtPmJ1bmRsZS0+cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3Rz
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IDM0MTM2
YTM3ZDI1Li5kYjAwMzcwNGJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5z
aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRT
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgogCiBH
X0JFR0lOX0RFQ0xTCkBAIC03NiwxMSArNzcsMjggQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNp
b25DbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgot
d2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5z
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAg
cGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQg
ICAgICAgICAgICAgICBwYWdlX2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4
dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkgICAgKFdlYktpdFdlYkV4
dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
Kmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICBhbGxvd19zdWJkb21haW5zKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193
aGl0ZWxpc3RfZW50cnkgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2Nv
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAg
ICBhbGxvd19zdWJkb21haW5zKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVu
c2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMgICAgICAgKFdlYktpdFdlYkV4dGVu
c2lvbiAgICpleHRlbnNpb24pOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVu
c2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
d2Via2l0LXdlYi1leHRlbnNpb24uaAppbmRleCAxYzk1ZjFkM2FlZC4uMTQ2OTA4OTY2MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRGcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0
V29ybGQuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUv
V2ViS2l0V2ViRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaAppbmRleCBhNmZmYjQ4NTA0OC4uOTNk
Mjc0Mjk0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdFdlYlBhZ2UuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNzYsMTEg
Kzc3LDI4IEBAIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MgewogfTsKIAogV0VCS0lU
X0FQSSBHVHlwZQotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgKHZvaWQpOword2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk
KTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9wYWdlIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgIHBhZ2VfaWQpOword2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJF
eHRlbnNpb24gICAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgcGFnZV9pZCk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nl
c3Nfd2hpdGVsaXN0X2VudHJ5ICAgIChXZWJLaXRXZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAq
cHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpob3N0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg
ICAgICAgICAgYWxsb3dfc3ViZG9tYWlucyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5IChXZWJLaXRX
ZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgYWxsb3dfc3ViZG9tYWlucyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vz
c193aGl0ZWxpc3RzICAgICAgIChXZWJLaXRXZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uKTsKIAog
R19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0wLjEtc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9jcy93
cGUtd2ViZXh0ZW5zaW9ucy0wLjEtc2VjdGlvbnMudHh0CmluZGV4IGExZDY4NDRkZGNmLi5mZDIw
ODNjNGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0wLjEtc2VjdGlvbnMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3Bl
LXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dApAQCAtMTMsNiArMTMsOSBAQCBXZWJLaXRX
ZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVGdW5jdGlvbgogV2ViS2l0
V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZVdpdGhVc2VyRGF0YUZ1bmN0aW9uCiB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfcGFnZQord2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vz
c193aGl0ZWxpc3RfZW50cnkKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nl
c3Nfd2hpdGVsaXN0cwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYkV4dGVuc2lv
bkNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaAppbmRleCA3
OTZiMjFlNDFmMS4uYWRlNGI4ZGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdl
Yi1leHRlbnNpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RnJhbWUuaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0U2NyaXB0V29ybGQuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0U2VjdXJpdHlPcmln
aW4uaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJFZGl0b3IuaD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNTAyNGRm
Y2U1NS4uMjQ1NWNiNDI3ZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxOS0wMS0xNiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgd2Vi
IGV4dGVuc2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5l
dyB0ZXN0IHRvIGNoZWNrIHRoZSBuZXcgQVBJLiBUaGlzIHBhdGNoIHJlZmFjdG9ycyBXZWJQcm9j
ZXNzIHRlc3RzIHRvIHJlY2VpdmUgdGhlIFdlYktpdFdlYkV4dGVuc2lvbiBhcworICAgICAgICBw
YXJhbWV0ZXIgb2YgY3JlYXRlIGZ1bmN0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL0RPTUVsZW1lbnRUZXN0LmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnRU
ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9F
ZGl0b3JUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJLaXRGcmFtZVRlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKE9yaWdpbldoaXRlbGlzdFRlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChPcmlnaW5XaGl0ZWxp
c3RUZXN0OjpPcmlnaW5XaGl0ZWxpc3RUZXN0KToKKyAgICAgICAgKE9yaWdpbldoaXRlbGlzdFRl
c3Q6OnRlc3RXaGl0ZWxpc3QpOgorICAgICAgICAocmVnaXN0ZXJUZXN0cyk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3RPcmlnaW5XaGl0ZWxpc3QpOgorICAgICAgICAoYmVmb3JlQWxs
KToKKyAgICAgICAgKGFmdGVyQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwOgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3Q6OmFk
ZCk6CisgICAgICAgIChXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKHJ1blRlc3Qp
OgorICAgICAgICAod2luZG93T2JqZWN0Q2xlYXJlZENhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcDoKKyAgICAg
ICAgKEF1dG9jbGVhbnVwc1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9N
Q2xpZW50UmVjdFRlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NTm9kZUZp
bHRlclRlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NTm9kZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6OmNyZWF0ZSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29s
dmVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0OjpjcmVh
dGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dDoKKwogMjAx
OS0wMS0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBBZGQgZW5hYmxlLWphdmFzY3JpcHQtbWFya3VwIHNldHRpbmcKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRE9NRWxlbWVu
dFRlc3QuY3BwCmluZGV4IGNkNjAzYWMyYjU3Li43YTViY2Q1N2U4YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0RPTUVsZW1lbnRUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3Bw
CkBAIC0yNSw3ICsyNSw3IEBACiAKIGNsYXNzIERPTUVsZW1lbnRUZXN0IDogcHVibGljIFdlYlBy
b2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nl
c3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
KG5ldyBET01FbGVtZW50VGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBET01FbGVtZW50VGVzdCgpKTsgfQogCiBwcml2
YXRlOgogICAgIGJvb2wgdGVzdEF1dG9GaWxsKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRpdG9yVGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRpdG9yVGVzdC5jcHAKaW5k
ZXggNWY3NjNlNGJiY2QuLjgzYzIzYjQ2MDNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRpdG9yVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL0VkaXRvclRlc3QuY3BwCkBAIC0yMyw3ICsyMyw3IEBACiAK
IGNsYXNzIFdlYktpdFdlYkVkaXRvclRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgp
IHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdFdlYkVk
aXRvclRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0V2ViRWRpdG9yVGVzdCgpKTsgfQogCiBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayhib29sKiBzZWxlY3Rpb25D
aGFuZ2VkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L0ZyYW1lVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJh
bWVUZXN0LmNwcAppbmRleCAyZTY3YzBhN2EzMi4uZWEyOTQxODAwMGMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCkBAIC0yNSw3
ICsyNSw3IEBACiAKIGNsYXNzIFdlYktpdEZyYW1lVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVz
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4g
Y3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2Vi
S2l0RnJhbWVUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdEZyYW1lVGVzdCgpKTsgfQogCiBwcml2YXRlOgog
ICAgIGJvb2wgdGVzdE1haW5GcmFtZShXZWJLaXRXZWJQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL09yaWdpbldoaXRlbGlz
dFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MDk2OWNh
MTZkNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9PcmlnaW5XaGl0ZWxpc3RUZXN0LmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
VGVzdC5oIgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CisKK2NsYXNzIE9yaWdpbldoaXRlbGlzdFRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rl
c3QgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikgeyByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgT3JpZ2luV2hpdGVsaXN0VGVzdChleHRlbnNpb24p
KTsgfQorCitwcml2YXRlOgorICAgIE9yaWdpbldoaXRlbGlzdFRlc3QoV2ViS2l0V2ViRXh0ZW5z
aW9uKiBleHRlbnNpb24pCisgICAgICAgIDogbV9leHRlbnNpb24oZXh0ZW5zaW9uKQorICAgIHsK
KyAgICB9CisKKyAgICBib29sIHRlc3RXaGl0ZWxpc3QoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAg
ICB7CisgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX25ldygiaHR0cCIsICJmb28uY29tIiwgMCk7CisgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5j
b20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5D
YW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczov
L2Jhci5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3Jp
Z2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdpbiwgImh0dHBzIiwg
ImZvby5jb20iLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9wYWdlIikpOworICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAi
aHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2Vj
dXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOwor
ICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3Jp
Z2luLCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lvbiwg
b3JpZ2luLCAiaHR0cHMiLCAiZm9vLmNvbSIsIFRSVUUpOworICAgICAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20v
cGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5S
ZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jh
ci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdp
bkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAg
ICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9l
bnRyeShtX2V4dGVuc2lvbiwgb3JpZ2luLCAiaHR0cHMiLCAiZm9vLmNvbSIsIFRSVUUpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4s
ICJodHRwczovL2Zvby5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7
CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChv
cmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmZvby5j
b20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2Fj
Y2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdpbiwgImh0dHAiLCAiYmFyLmNv
bSIsIEZBTFNFKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNh
blJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9i
YXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3Jp
Z2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0
dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lv
bl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMobV9leHRlbnNpb24pOworICAgICAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0
cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3Vy
aXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAg
ICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2lu
LCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBXZWJLaXRXZWJQYWdl
KiBwYWdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFzdHJjbXAodGVzdE5hbWUsICJ3
aGl0ZWxpc3QiKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0V2hpdGVsaXN0KHBhZ2UpOworCisg
ICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBXZWJLaXRXZWJFeHRlbnNpb24qIG1fZXh0ZW5zaW9uIHsgbnVsbHB0ciB9Owor
fTsKKworc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKSByZWdpc3RlclRl
c3RzKCkKK3sKKyAgICBSRUdJU1RFUl9URVNUKE9yaWdpbldoaXRlbGlzdFRlc3QsICJPcmlnaW5X
aGl0ZWxpc3Qvd2hpdGVsaXN0Iik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9yaWdpbldoaXRlbGlzdC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9yaWdpbldoaXRlbGlzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQyOGY5NzM2NWYyCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0
ZWxpc3QuY3BwCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlZpZXdUZXN0Lmgi
CisKK3N0YXRpYyB2b2lkIHRlc3RPcmlnaW5XaGl0ZWxpc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCit7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVz
dCgiT3JpZ2luV2hpdGVsaXN0IiwgIndoaXRlbGlzdCIpKTsKK30KKwordm9pZCBiZWZvcmVBbGwo
KQoreworICAgIFdlYlZpZXdUZXN0OjphZGQoIk9yaWdpbldoaXRlbGlzdCIsICJ3aGl0ZWxpc3Qi
LCB0ZXN0T3JpZ2luV2hpdGVsaXN0KTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rl
c3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NU
ZXN0LmNwcAppbmRleCBmNDQxYTcxOWE4Mi4uMzc3OGZiNzVhODAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcApA
QCAtMjksNyArMjksNyBAQAogCiBzdGF0aWMgSGFzaFNldDxHT2JqZWN0Kj4gc193YXRjaGVkT2Jq
ZWN0czsKIAotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1
ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgpPj4gVGVzdHNNYXA7Cit0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKFdlYktp
dFdlYkV4dGVuc2lvbiopPj4gVGVzdHNNYXA7CiBzdGF0aWMgVGVzdHNNYXAmIHRlc3RzTWFwKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdHNNYXA+IHNfdGVzdHNNYXA7CkBAIC00
OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrTGVha3MoKQogICAgIGdfYXNzZXJ0X3RydWUo
c193YXRjaGVkT2JqZWN0cy5pc0VtcHR5KCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NUZXN0Ojph
ZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSwgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8
V2ViUHJvY2Vzc1Rlc3Q+ICgpPiBjbG9zdXJlKQordm9pZCBXZWJQcm9jZXNzVGVzdDo6YWRkKGNv
bnN0IFN0cmluZyYgdGVzdE5hbWUsIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFdlYlBy
b2Nlc3NUZXN0PiAoV2ViS2l0V2ViRXh0ZW5zaW9uKik+IGNsb3N1cmUpCiB7CiAgICAgdGVzdHNN
YXAoKS5hZGQodGVzdE5hbWUsIFdURk1vdmUoY2xvc3VyZSkpOwogfQpAQCAtNjIsMTkgKzYyLDE5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0Rmlu
aXNoZXMoR09iamVjdCogb2JqZWN0KQogICAgIH0sIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoY29uc3QgU3RyaW5n
JiB0ZXN0TmFtZSkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gV2ViUHJvY2Vzc1Rl
c3Q6OmNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0
ZXN0TmFtZSkKIHsKICAgICBnX2Fzc2VydF90cnVlKHRlc3RzTWFwKCkuY29udGFpbnModGVzdE5h
bWUpKTsKLSAgICByZXR1cm4gdGVzdHNNYXAoKS5nZXQodGVzdE5hbWUpKCk7CisgICAgcmV0dXJu
IHRlc3RzTWFwKCkuZ2V0KHRlc3ROYW1lKShleHRlbnNpb24pOwogfQogCi1zdGF0aWMgZ2Jvb2xl
YW4gcnVuVGVzdChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBjaGFyKiB0ZXN0UGF0aCkK
K3N0YXRpYyBnYm9vbGVhbiBydW5UZXN0KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IGNo
YXIqIHRlc3RQYXRoLCBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKIHsKICAgICBnX2Fz
c2VydF90cnVlKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSk7CiAgICAgV2ViUHJvY2Vzc1Rl
c3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViUGFn
ZSkpOwogICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdFBhdGgpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShTdHJpbmc6
OmZyb21VVEY4KHRlc3RQYXRoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShleHRlbnNpb24sIFN0cmluZzo6ZnJvbVVU
RjgodGVzdFBhdGgpKTsKICAgICByZXR1cm4gdGVzdC0+cnVuVGVzdChnX3N0cnJzdHIodGVzdFBh
dGgsICIvIikgKyAxLCB3ZWJQYWdlKTsKIH0KIApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9p
ZCB3aW5kb3dPYmplY3RDbGVhcmVkQ2FsbGJhY2soV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkLCBX
ZWJLaXRXZWJQYWdlKgogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNvbnRleHQuZ2V0KCkpKTsKICAgICBhdXRvKiBqc0Ns
YXNzID0ganNjX2NvbnRleHRfcmVnaXN0ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIldlYlByb2Nl
c3NUZXN0UnVubmVyIiwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJv
eU5vdGlmeT4od2ViUHJvY2Vzc1Rlc3RSdW5uZXJGaW5hbGl6ZSkpOwogICAgIFdlYlByb2Nlc3NU
ZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGpzQ2xh
c3MpKTsKLSAgICBqc2NfY2xhc3NfYWRkX21ldGhvZChqc0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FM
TEJBQ0socnVuVGVzdCksIE5VTEwsIE5VTEwsIEdfVFlQRV9CT09MRUFOLCAxLCBHX1RZUEVfU1RS
SU5HKTsKKyAgICBqc2NfY2xhc3NfYWRkX21ldGhvZChqc0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FM
TEJBQ0socnVuVGVzdCksIGV4dGVuc2lvbiwgbnVsbHB0ciwgR19UWVBFX0JPT0xFQU4sIDEsIEdf
VFlQRV9TVFJJTkcpOwogICAgIEdSZWZQdHI8SlNDVmFsdWU+IHRlc3RSdW5uZXIgPSBhZG9wdEdS
ZWYoanNjX3ZhbHVlX25ld19vYmplY3QoY29udGV4dC5nZXQoKSwgZ19vYmplY3RfcmVmKHdlYlBh
Z2UpLCBqc0NsYXNzKSk7CiAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodGVzdFJ1bm5lci5nZXQoKSkpOwogICAgIGpzY19j
b250ZXh0X3NldF92YWx1ZShjb250ZXh0LmdldCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCB0
ZXN0UnVubmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDQuLjAxYjUzZWI3Y2Uw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJv
Y2Vzc1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuaApAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdPYmplY3QqKTsKIAotICAg
IHN0YXRpYyB2b2lkIGFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKCk+KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSk7Cisg
ICAgc3RhdGljIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUsIHN0ZDo6ZnVuY3Rpb248
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiAoV2ViS2l0V2ViRXh0ZW5zaW9uKik+KTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0
V2ViRXh0ZW5zaW9uKiwgY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSk7CiB9OwogCiAjZGVmaW5lIFJF
R0lTVEVSX1RFU1QoQ2xhc3NOYW1lLCBUZXN0TmFtZSkgXApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVzdC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcAppbmRleCBm
NzljZjM0NTE4Mi4uMDVkNzNlMmY3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCkBAIC0yNiw3ICsyNiw3
IEBACiAKIGNsYXNzIEF1dG9jbGVhbnVwc1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0
ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IEF1dG9jbGVh
bnVwc1Rlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PihuZXcgQXV0b2NsZWFudXBzVGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAg
IGJvb2wgdGVzdFdlYlByb2Nlc3NBdXRvY2xlYW51cHMoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVu
dFJlY3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNs
aWVudFJlY3RUZXN0LmNwcAppbmRleCAxYjM5ZmFmYTdhNy4uMTYwNTkyMmRhNjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRS
ZWN0VGVzdC5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNB
VElPTlM7CiAKIGNsYXNzIFdlYktpdERPTUNsaWVudFJlY3RUZXN0IDogcHVibGljIFdlYlByb2Nl
c3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NU
ZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RE9NQ2xpZW50UmVj
dFRlc3Q+KG5ldyBXZWJLaXRET01DbGllbnRSZWN0VGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RE9NQ2xpZW50UmVjdFRlc3Q+KG5ldyBXZWJL
aXRET01DbGllbnRSZWN0VGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNo
ZWNrQ2xpZW50UmVjdFBvc2l0aW9uKFdlYktpdERPTUNsaWVudFJlY3QqIGNsaWVudFJlY3QpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmls
dGVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2Rl
RmlsdGVyVGVzdC5jcHAKaW5kZXggY2NhODJmY2VlMGMuLjc4ZGMxNTk0M2Q4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRl
clRlc3QuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZEVs
ZW1lbnRzTm9JbnB1dFtdID0geyAiSFRNTCIsICJIRUFEIiwgIlRJVExFIiwgIkJPRFkiCiAKIGNs
YXNzIFdlYktpdERPTU5vZGVGaWx0ZXJUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUo
KSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRET01O
b2RlRmlsdGVyVGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRET01Ob2RlRmlsdGVyVGVzdCgpKTsgfQogCiBw
cml2YXRlOgogICAgIGJvb2wgdGVzdFRyZWVXYWxrZXIoV2ViS2l0V2ViUGFnZSogcGFnZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNw
cAppbmRleCBiYTdmYWI5OWNmNi4uZGI0ZDFlM2UxMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAKQEAgLTI4LDcgKzI4LDcg
QEAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAKIGNsYXNzIFdlYktpdERPTU5v
ZGVUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0RE9NTm9kZVRlc3Q+KG5ldyBXZWJLaXRET01Ob2RlVGVzdCgpKTsgfQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJF
eHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RE9NTm9kZVRlc3Q+KG5l
dyBXZWJLaXRET01Ob2RlVGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgdGVzdEhpZXJh
cmNoeU5hdmlnYXRpb24oV2ViS2l0V2ViUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVz
dC5jcHAKaW5kZXggMzVlZTM1MDNhNDAuLjQ3ZWZhMDI5OTNjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5TUmVzb2x2
ZXJUZXN0LmNwcApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfeHBhdGhfbnNf
cmVzb2x2ZXJfY2xhc3NfaW5pdChXZWJLaXRYUGF0aE5TUmVzb2x2ZXJDbGFzcyopCiAKIGNsYXNz
IFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3Qgewog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0
ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdERP
TVhQYXRoTlNSZXNvbHZlclRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVz
dCgpKTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVj
a1Jlc3VsdChXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdERPTVhQYXRoTlNSZXNv
bHZlciogcmVzb2x2ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01h
a2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZjRjMWU2OTY2M2IuLmFiOGM1YTU1ZjgzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NN
YWtlTGlzdHMudHh0CkBAIC0zOSw2ICszOSw3IEBAIHNldChXZWJLaXRHTGliQVBJV2ViUHJvY2Vz
c1Rlc3RzCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9E
T01FbGVtZW50VGVzdC5jcHAKICAgICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL0VkaXRvclRlc3QuY3BwCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCisgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9PcmlnaW5XaGl0ZWxpc3RUZXN0LmNwcAogICAgICR7VE9P
TFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3Bw
CiApCiAKQEAgLTE0MCw2ICsxNDEsNyBAQCBBRERfV0syX1RFU1QoVGVzdFdlYktpdFVzZXJDb250
ZW50TWFuYWdlciAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaQogQUREX1dL
Ml9URVNUKFRlc3RXZWJzaXRlRGF0YSAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHApCiBBRERfV0syX1RFU1QoVGVzdENvbnNvbGVN
ZXNzYWdlICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENv
bnNvbGVNZXNzYWdlLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0RE9NRWxlbWVudCAke1RPT0xTX0RJ
Un0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RET01FbGVtZW50LmNwcCkKK0FE
RF9XSzJfVEVTVChUZXN0T3JpZ2luV2hpdGVsaXN0ICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9yaWdpbldoaXRlbGlzdC5jcHApCiAKICMgRklYTUU6IEVu
YWJsZSBmb3IgV1BFCiBpZiAoUE9SVCBTVFJFUVVBTCAiR1RLIikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359366</attachid>
            <date>2019-01-17 03:50:11 -0800</date>
            <delta_ts>2019-01-25 03:24:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-origin-whitelist.diff</filename>
            <type>text/plain</type>
            <size>40243</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2NiMjYxYmZiZTYuLmUzMDJlMTYxM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDE5LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hp
dGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIEluamVjdGVkQnVuZGxlOjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgpLCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoKSBhbmQKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpIGluIEdMaWIgQVBJLiBUaGlzIHBhdGNoIG1vdmVzIFdlYktp
dFNlY3VyaXR5T3JpZ2luIGZyb20gVUlQcm9jZXNzCisgICAgICAgIHRvIFNoYXJlZCBhbmQgbWFr
ZSBpdCBhdmFpbGFsZSBmcm9tIHRoZSB3ZWIgZXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJp
dHlPcmlnaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwLgorICAgICAgICAod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KTogSW50ZXJuYWwgZnVuY3Rpb24gb25seSB1c2VkIGJ5IHRlc3RzLgorICAg
ICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZh
dGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmguCisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVu
c2lvbkNyZWF0ZSk6IEtlZXAgYSByZWZlcmVuY2UgdG8gSW5qZWN0ZWRCdW5kbGUgaW4gV2ViS2l0
V2ViRXh0ZW5zaW9uIHByaXZhdGUgc3RydWN0LgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNp
b25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSk6CisgICAg
ICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJF
eHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
d2Via2l0LXdlYi1leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmg6CisKIDIwMTktMDEt
MTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gQWRkIGVuYWJsZS1qYXZhc2NyaXB0LW1hcmt1cCBzZXR0aW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCAyMjgxMjc0Y2YwYy4uNzRlMzlhMjY5ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtODI0LDEyICs4MjQsMTQgQEAgaWYgKEVOQUJMRV9JTlRST1NQRUNU
SU9OKQogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnUuY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcAorICAgICAgICAgICAgJHtXRUJLSVRf
RElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCiAgICAgICAgICAg
ICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAogICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2Uu
Y3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKICAgICAgICAgICAgICR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCisgICAgICAg
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2lu
LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
UmVxdWVzdC5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVJlc3BvbnNlLmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi8qLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCnNpbWlsYXJpdHkgaW5k
ZXggOTclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDJlMDc4OWQ0MzAxLi4yYzY4ODA2ZmU3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNjgsNiArNjgsMTMgQEAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlPcmlnaW4oV2ViS2l0U2VjdXJp
dHlPcmkKICAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKIH0KIAorLy8g
SW50ZXJuYWwgQVBJIG9ubHkgdXNlZCBmb3IgdGVzdGluZy4KK2Jvb2wgd2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IGNoYXIq
IHVybCkKK3sKKyAgICBBU1NFUlQob3JpZ2luKTsKKyAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0
eU9yaWdpbi0+Y2FuUmVxdWVzdChVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJsKSkpOwor
fQorCiAvKioKICAqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3OgogICogQHByb3RvY29sOiBU
aGUgcHJvdG9jb2wgZm9yIHRoZSBuZXcgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRlOWE5ODJlZTFlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRTZWN1cml0eU9y
aWdpbi5oIgorCitib29sIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChXZWJLaXRTZWN1
cml0eU9yaWdpbiosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKc2ltaWxh
cml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKaW5kZXggYjA4ZDcyM2I0YWUuLmM1YWJkZDM2ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
QEAgLTY5LDYgKzY5LDcgQEAgU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51LmNwcCBA
bm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuY3BwIEBu
by11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAgQG5vLXVu
aWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CitT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIEBuby11bmlmeQogU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGli
L1dlYktpdFVSSVJlc3BvbnNlLmNwcCBAbm8tdW5pZnkKIApAQCAtMTY0LDcgKzE2NSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2YXRlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTY3JpcHREaWFsb2cuY3BwIEBuby11bmlmeQogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFNlY3VyaXR5TWFuYWdlci5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRVSUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCA1MTE5Y2Fl
NTZiYy4uYjc0Y2U2MzZjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtNjYsNiArNjYsNyBAQCBT
aGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnUuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQ
SS9nbGliL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcCBAbm8tdW5pZnkKK1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU9yaWdpbi5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2Uu
Y3BwIEBuby11bmlmeQogCkBAIC0xNDksNyArMTUwLDYgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFByaXZhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFJlc3Bv
bnNlUG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFNjcmlwdERpYWxvZy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBA
bm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uaAppbmRleCA2ZGNhMmI3N2VhNi4uMmE0NDNmODg4NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmln
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmgKQEAgLTE3LDcgKzE3LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgogICovCiAKLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VC
X0VYVEVOU0lPTl9IX0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4g
Y2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dAppbmRleCBmZGE3ZGVhYTZiZS4uNmNhNDJhMTlkMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQ1Myw2ICsxNDUzLDkgQEAgV2ViS2l0V2ViRXh0ZW5z
aW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplRnVuY3Rpb24KIFdlYktpdFdlYkV4dGVu
c2lvbkluaXRpYWxpemVXaXRoVXNlckRhdGFGdW5jdGlvbgogd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X3BhZ2UKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dF9lbnRyeQord2Via2l0X3dlYl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVs
aXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRl
bGlzdHMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJFeHRlbnNpb25DbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oCmluZGV4IDgwZTA0NTIzYzdmLi40NGUzZTY1Y2FjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaApA
QCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAot
I2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09N
UElMQVRJT04pCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikgJiYgIWRlZmluZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9I
X0lOU0lERV9fKQogI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNsdWRlZCBk
aXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmNwcAppbmRleCAwODJkNjA5YTg3Yi4uZDE2MTEwOWM3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVuZGxlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlP
cmlnaW5Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgpAQCAtMTE4LDYgKzExOSw3IEBAIGVudW0gewogdHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2UqLCBH
UmVmUHRyPFdlYktpdFdlYlBhZ2U+ID4gV2ViUGFnZU1hcDsKIAogc3RydWN0IF9XZWJLaXRXZWJF
eHRlbnNpb25Qcml2YXRlIHsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGJ1bmRsZTsKICAg
ICBXZWJQYWdlTWFwIHBhZ2VzOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBib29s
IGdhcmJhZ2VDb2xsZWN0T25QYWdlRGVzdHJveTsKQEAgLTE5Niw2ICsxOTgsNyBAQCBwcml2YXRl
OgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRC
dW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdF
QktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9O
LCBOVUxMKSk7CisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUgPSBidW5kbGU7CiAgICAgYnVu
ZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRs
ZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KQEAgLTIyOSwz
ICsyMzIsNjMgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Uo
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGd1aW4KIAogICAgIHJldHVybiAwOwogfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dF9lbnRyeToKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICogQG9yaWdp
bjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqIEBwcm90b2NvbDogdGhlIGRlc3RpbmF0aW9u
IHByb3RvY29sCisgKiBAaG9zdDogKG51bGxhYmxlKTogdGhlIGRlc3RpbmF0aW9uIGhvc3QsIG9y
ICVOVUxMIGZvciBhbnkgaG9zdAorICogQGFsbG93X3N1YmRvbWFpbnM6IHdoZXRoZXIgdG8gYWxs
b3cgc3ViZG9tYWlucyB3aGVuIEBob3N0IGlzIG5vdCAlTlVMTAorICoKKyAqIEFkZCBhIHdoaXRl
bGlzdCBlbnRyeSBmb3Igb3JpZ2luIHRvIGFsbG93IGNyb3NzIG9yaWdpbiBhY2Nlc3MgdG8gdGhl
IGdpdmVuIEBwcm90b2NvbCBhbmQgQGhvc3QuCisgKiBJZiBAaG9zdCBpcyAlTlVMTCBhbGwgaG9z
dHMgYXJlIGFsbG93ZWQgYW5kIEBhbGxvd19zdWJkb21haW5zIHBhcmFtZXRlciBpcyBpZ25vcmVk
LgorICogSWYgQGFsbG93X3N1YmRvbWFpbnMgaXMgJVRSVUUsIHN1YmRvbWFpbnMgb2YgQGhvc3Qg
Zm9yIHRoZSBnaXZlbiBAcHJvdG9jb2wgYXJlIGFsc28gYWxsb3dlZCB0bworICogYmUgYWNjZXNz
ZWQgZnJvbSBAb3JpZ2luLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KFdlYktpdFdlYkV4
dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBj
aGFyKiBwcm90b2NvbCwgY29uc3QgY2hhciogaG9zdCwgZ2Jvb2xlYW4gYWxsb3dTdWJkb21haW5z
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5z
aW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW4gJiYgIXdlYmtpdF9zZWN1cml0eV9v
cmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocHJvdG9jb2wp
OworCisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUtPmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlPcmlnaW4ob3JpZ2luKS50b1N0
cmluZygpLCBTdHJpbmc6OmZyb21VVEY4KHByb3RvY29sKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0
KSwgaG9zdCA/IGFsbG93U3ViZG9tYWlucyA6IHRydWUpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeToKKyAqIEBl
eHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICogQG9yaWdpbjogYSAjV2ViS2l0U2Vj
dXJpdHlPcmlnaW4KKyAqIEBwcm90b2NvbDogdGhlIGRlc3RpbmF0aW9uIHByb3RvY29sCisgKiBA
aG9zdDogKG51bGxhYmxlKTogdGhlIGRlc3RpbmF0aW9uIGhvc3QsIG9yICVOVUxMIGZvciBhbnkg
aG9zdAorICogQGFsbG93X3N1YmRvbWFpbnM6IHdoZXRoZXIgc3ViZG9tYWlucyB3ZXJlIGFsbG93
ZWQgd2hlbiBAaG9zdCBpcyBub3QgJU5VTEwKKyAqCisgKiBSZW1vdmUgYSB3aGl0ZWxpc3QgZW50
cnkgZm9yIG9yaWdpbiBwcmV2aW91c2x5IGFkZGVkIHdpdGggd2Via2l0X3dlYl9leHRlbnNpb25f
YWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KCkuCisgKgorICogU2luY2U6IDIuMjQK
KyAqLwordm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0
ZWxpc3RfZW50cnkoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IGNoYXIqIHByb3RvY29sLCBjb25zdCBjaGFyKiBob3N0LCBn
Ym9vbGVhbiBhbGxvd1N1YmRvbWFpbnMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKG9yaWdp
biAmJiAhd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChwcm90b2NvbCk7CisKKyAgICBleHRlbnNpb24tPnByaXYtPmJ1bmRsZS0+
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkod2Via2l0U2VjdXJpdHlPcmlnaW5HZXRT
ZWN1cml0eU9yaWdpbihvcmlnaW4pLnRvU3RyaW5nKCksIFN0cmluZzo6ZnJvbVVURjgocHJvdG9j
b2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBob3N0ID8gYWxsb3dTdWJkb21haW5zIDogdHJ1
ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vz
c193aGl0ZWxpc3RzOgorICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCisgKgor
ICogUmVtb3ZlIGFsbCB3aGl0ZWxpc3QgZW50cmllcyBwcmV2aW91c2x5IGFkZGVkIHdpdGggd2Vi
a2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KCkuCisg
KgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9v
cmlnaW5fYWNjZXNzX3doaXRlbGlzdHMoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24p
KTsKKworICAgIGV4dGVuc2lvbi0+cHJpdi0+YnVuZGxlLT5yZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKaW5kZXgg
MzQxMzZhMzdkMjUuLmRiMDAzNzA0YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJF
eHRlbnNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+
CiAKIEdfQkVHSU5fREVDTFMKQEAgLTc2LDExICs3NywyOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkV4
dGVuc2lvbkNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJfZXh0ZW5z
aW9uX2dldF90eXBlICh2b2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViUGFn
ZSAqCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAoV2ViS2l0V2ViRXh0ZW5zaW9uICpl
eHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAg
ICAgICBwYWdlX2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp
bnQ2NCAgICAgICAgICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSAgICAoV2ViS2l0
V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKnByb3RvY29sLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAg
ICAgICAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgIGFsbG93X3N1YmRvbWFpbnMpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNj
ZXNzX3doaXRlbGlzdF9lbnRyeSAoV2ViS2l0V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKnBy
b3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqaG9zdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAg
ICAgICAgIGFsbG93X3N1YmRvbWFpbnMpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
ZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cyAgICAgICAoV2ViS2l0V2Vi
RXh0ZW5zaW9uICAgKmV4dGVuc2lvbik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCmluZGV4IDFjOTVmMWQzYWVkLi4xNDY5MDg5NjYx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRT
Y3JpcHRXb3JsZC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVSSVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IGE2ZmZiNDg1MDQ4
Li45M2QyNzQyOTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8
d3BlL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4u
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03
NiwxMSArNzcsMjggQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBX
RUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X3BhZ2UgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICBwYWdl
X2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2lu
X2FjY2Vzc193aGl0ZWxpc3RfZW50cnkgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu
ICAgICAgICAgICAgICBhbGxvd19zdWJkb21haW5zKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkgKFdl
YktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luICpv
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICBhbGxvd19zdWJkb21haW5z
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5f
YWNjZXNzX3doaXRlbGlzdHMgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24p
OwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRlbnNpb25zLTAuMS1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9k
b2NzL3dwZS13ZWJleHRlbnNpb25zLTAuMS1zZWN0aW9ucy50eHQKaW5kZXggYTFkNjg0NGRkY2Yu
LmZkMjA4M2M0ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13ZWJleHRlbnNpb25zLTAuMS1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9j
cy93cGUtd2ViZXh0ZW5zaW9ucy0wLjEtc2VjdGlvbnMudHh0CkBAIC0xMyw2ICsxMyw5IEBAIFdl
YktpdFdlYkV4dGVuc2lvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uCiBX
ZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplV2l0aFVzZXJEYXRhRnVuY3Rpb24KIHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9wYWdlCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2Fj
Y2Vzc193aGl0ZWxpc3RfZW50cnkKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5f
YWNjZXNzX3doaXRlbGlzdF9lbnRyeQord2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2lu
X2FjY2Vzc193aGl0ZWxpc3RzCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViRXh0
ZW5zaW9uQ2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCmlu
ZGV4IDc5NmIyMWU0MWYxLi5hZGU0YjhkY2ZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJr
aXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktp
dENvbnRleHRNZW51SXRlbS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRGcmFtZS5oPgogI2luY2x1
ZGUgPHdwZS9XZWJLaXRTY3JpcHRXb3JsZC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRTZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
d3BlL1dlYktpdFVSSVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkVkaXRvci5o
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE1
MDI0ZGZjZTU1Li4yNDU1Y2I0MjdkYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTAxLTE2ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFk
ZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hpdGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9y
aWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgdG8gY2hlY2sgdGhlIG5ldyBBUEkuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIFdl
YlByb2Nlc3MgdGVzdHMgdG8gcmVjZWl2ZSB0aGUgV2ViS2l0V2ViRXh0ZW5zaW9uIGFzCisgICAg
ICAgIHBhcmFtZXRlciBvZiBjcmVhdGUgZnVuY3Rpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3BwOgorICAgICAgICAoRE9NRWxl
bWVudFRlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL0VkaXRvclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdEZyYW1lVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0VGVzdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoT3JpZ2luV2hpdGVsaXN0VGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKE9yaWdpbldo
aXRlbGlzdFRlc3Q6Ok9yaWdpbldoaXRlbGlzdFRlc3QpOgorICAgICAgICAoT3JpZ2luV2hpdGVs
aXN0VGVzdDo6dGVzdFdoaXRlbGlzdCk6CisgICAgICAgIChyZWdpc3RlclRlc3RzKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9yaWdpbldoaXRlbGlzdC5j
cHA6IEFkZGVkLgorICAgICAgICAodGVzdE9yaWdpbldoaXRlbGlzdCk6CisgICAgICAgIChiZWZv
cmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHA6CisgICAgICAgIChXZWJQcm9jZXNzVGVz
dDo6YWRkKToKKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUpOgorICAgICAgICAocnVu
VGVzdCk6CisgICAgICAgICh3aW5kb3dPYmplY3RDbGVhcmVkQ2FsbGJhY2spOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwOgor
ICAgICAgICAoQXV0b2NsZWFudXBzVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHA6CisgICAgICAgIChXZWJL
aXRET01DbGllbnRSZWN0VGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01O
b2RlRmlsdGVyVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9ET01Ob2RlVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01Ob2RlVGVzdDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5T
UmVzb2x2ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3Q6
OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0Ogor
CiAyMDE5LTAxLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXVtXUEVdIEFkZCBlbmFibGUtamF2YXNjcmlwdC1tYXJrdXAgc2V0dGlu
ZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0RPTUVs
ZW1lbnRUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01F
bGVtZW50VGVzdC5jcHAKaW5kZXggY2Q2MDNhYzJiNTcuLjdhNWJjZDU3ZThiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVz
dC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogY2xhc3MgRE9NRWxlbWVudFRlc3QgOiBwdWJsaWMg
V2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4obmV3IERPTUVsZW1lbnRUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IERPTUVsZW1lbnRUZXN0KCkpOyB9CiAK
IHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0QXV0b0ZpbGwoV2ViS2l0V2ViUGFnZSogcGFnZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNw
cAppbmRleCA1Zjc2M2U0YmJjZC4uODNjMjNiNDYwM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRpdG9yVGVzdC5jcHAKQEAgLTIzLDcgKzIzLDcg
QEAKIAogY2xhc3MgV2ViS2l0V2ViRWRpdG9yVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3Jl
YXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0
V2ViRWRpdG9yVGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRXZWJFZGl0b3JUZXN0KCkpOyB9CiAKIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKGJvb2wqIHNlbGVj
dGlvbkNoYW5nZWQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvRnJhbWVUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9GcmFtZVRlc3QuY3BwCmluZGV4IDJlNjdjMGE3YTMyLi5lYTI5NDE4MDAwYyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKQEAg
LTI1LDcgKzI1LDcgQEAKIAogY2xhc3MgV2ViS2l0RnJhbWVUZXN0IDogcHVibGljIFdlYlByb2Nl
c3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NU
ZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5l
dyBXZWJLaXRGcmFtZVRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlBy
b2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0RnJhbWVUZXN0KCkpOyB9CiAKIHByaXZh
dGU6CiAgICAgYm9vbCB0ZXN0TWFpbkZyYW1lKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvT3JpZ2luV2hp
dGVsaXN0VGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI2
YmU2NDQ1N2IwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3QuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzVGVzdC5oIgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CisKK2NsYXNzIE9yaWdpbldoaXRlbGlzdFRlc3QgOiBwdWJsaWMgV2ViUHJv
Y2Vzc1Rlc3QgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikgeyByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgT3JpZ2luV2hpdGVsaXN0VGVzdChleHRl
bnNpb24pKTsgfQorCitwcml2YXRlOgorICAgIE9yaWdpbldoaXRlbGlzdFRlc3QoV2ViS2l0V2Vi
RXh0ZW5zaW9uKiBleHRlbnNpb24pCisgICAgICAgIDogbV9leHRlbnNpb24oZXh0ZW5zaW9uKQor
ICAgIHsKKyAgICB9CisKKyAgICBib29sIHRlc3RXaGl0ZWxpc3QoV2ViS2l0V2ViUGFnZSogcGFn
ZSkKKyAgICB7CisgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX25ldygiaHR0cCIsICJmb28uY29tIiwgMCk7CisgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczov
L2Zvby5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJo
dHRwczovL2Jhci5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9h
ZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdpbiwgImh0
dHBzIiwgImZvby5jb20iLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2Vj
dXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9wYWdlIikpOwor
ICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3Jp
Z2luLCAiaHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdl
IikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVl
c3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVu
c2lvbiwgb3JpZ2luLCAiaHR0cHMiLCAiZm9vLmNvbSIsIFRSVUUpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zv
by5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRw
czovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0
eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOwor
CisgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRl
bGlzdF9lbnRyeShtX2V4dGVuc2lvbiwgb3JpZ2luLCAiaHR0cHMiLCAiZm9vLmNvbSIsIFRSVUUp
OworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChv
cmlnaW4sICJodHRwczovL2Zvby5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3Bh
Z2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVx
dWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFy
LmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3Jp
Z2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdpbiwgImh0dHAiLCAi
YmFyLmNvbSIsIEZBTFNFKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9y
aWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0
dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3Vy
aXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdp
biwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMobV9leHRlbnNpb24pOworICAg
ICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2lu
LCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9wYWdlIikp
OworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qo
b3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9l
eHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9uLCBv
cmlnaW4sICJodHRwcyIsIG51bGxwdHIsIFRSVUUpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20vcGFn
ZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1
ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNv
bS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2Fu
UmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAg
d2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RzKG1fZXh0
ZW5zaW9uKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5S
ZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jh
ci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0
TmFtZSwgV2ViS2l0V2ViUGFnZSogcGFnZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICgh
c3RyY21wKHRlc3ROYW1lLCAid2hpdGVsaXN0IikpCisgICAgICAgICAgICByZXR1cm4gdGVzdFdo
aXRlbGlzdChwYWdlKTsKKworICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBtX2V4dGVu
c2lvbiB7IG51bGxwdHIgfTsKK307CisKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0
cnVjdG9yKSkgcmVnaXN0ZXJUZXN0cygpCit7CisgICAgUkVHSVNURVJfVEVTVChPcmlnaW5XaGl0
ZWxpc3RUZXN0LCAiT3JpZ2luV2hpdGVsaXN0L3doaXRlbGlzdCIpOworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0
ZWxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MjhmOTcz
NjVmMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0T3JpZ2luV2hpdGVsaXN0LmNwcApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJXZWJWaWV3VGVzdC5oIgorCitzdGF0aWMgdm9pZCB0ZXN0T3JpZ2luV2hpdGVsaXN0KFdl
YlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIGdfYXNzZXJ0X3RydWUodGVz
dC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIk9yaWdpbldoaXRlbGlzdCIsICJ3aGl0ZWxpc3QiKSk7Cit9
CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJPcmlnaW5XaGl0
ZWxpc3QiLCAid2hpdGVsaXN0IiwgdGVzdE9yaWdpbldoaXRlbGlzdCk7Cit9CisKK3ZvaWQgYWZ0
ZXJBbGwoKQoreworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggZjQ0MWE3MTlhODIuLjM3NzhmYjc1YTgw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJv
Y2Vzc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9X
ZWJQcm9jZXNzVGVzdC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogc3RhdGljIEhhc2hTZXQ8R09i
amVjdCo+IHNfd2F0Y2hlZE9iamVjdHM7CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6
ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiAoKT4+IFRlc3RzTWFwOwor
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UHJvY2Vzc1Rlc3Q+IChXZWJLaXRXZWJFeHRlbnNpb24qKT4+IFRlc3RzTWFwOwogc3RhdGljIFRl
c3RzTWFwJiB0ZXN0c01hcCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RzTWFw
PiBzX3Rlc3RzTWFwOwpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBjaGVja0xlYWtzKCkK
ICAgICBnX2Fzc2VydF90cnVlKHNfd2F0Y2hlZE9iamVjdHMuaXNFbXB0eSgpKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzVGVzdDo6YWRkKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUsIHN0ZDo6ZnVuY3Rp
b248c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiAoKT4gY2xvc3VyZSkKK3ZvaWQgV2Vi
UHJvY2Vzc1Rlc3Q6OmFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKFdlYktpdFdlYkV4dGVuc2lvbiopPiBjbG9z
dXJlKQogewogICAgIHRlc3RzTWFwKCkuYWRkKHRlc3ROYW1lLCBXVEZNb3ZlKGNsb3N1cmUpKTsK
IH0KQEAgLTYyLDE5ICs2MiwxOSBAQCB2b2lkIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdPYmplY3QqIG9iamVjdCkKICAgICB9LCBudWxscHRy
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBXZWJQcm9jZXNzVGVzdDo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNp
b24sIGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpCiB7CiAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0c01h
cCgpLmNvbnRhaW5zKHRlc3ROYW1lKSk7Ci0gICAgcmV0dXJuIHRlc3RzTWFwKCkuZ2V0KHRlc3RO
YW1lKSgpOworICAgIHJldHVybiB0ZXN0c01hcCgpLmdldCh0ZXN0TmFtZSkoZXh0ZW5zaW9uKTsK
IH0KIAotc3RhdGljIGdib29sZWFuIHJ1blRlc3QoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgY29u
c3QgY2hhciogdGVzdFBhdGgpCitzdGF0aWMgZ2Jvb2xlYW4gcnVuVGVzdChXZWJLaXRXZWJQYWdl
KiB3ZWJQYWdlLCBjb25zdCBjaGFyKiB0ZXN0UGF0aCwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRl
bnNpb24pCiB7CiAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSkp
OwogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKHdlYlBhZ2UpKTsKICAgICBnX2Fzc2VydF9ub25udWxsKHRlc3RQYXRoKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gdGVzdCA9IFdlYlByb2Nlc3NU
ZXN0OjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCh0ZXN0UGF0aCkpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4gdGVzdCA9IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoZXh0ZW5z
aW9uLCBTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7CiAgICAgcmV0dXJuIHRlc3QtPnJ1blRl
c3QoZ19zdHJyc3RyKHRlc3RQYXRoLCAiLyIpICsgMSwgd2ViUGFnZSk7CiB9CiAKQEAgLTkzLDcg
KzkzLDcgQEAgc3RhdGljIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZENhbGxiYWNrKFdlYktpdFNj
cmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSoKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjb250ZXh0LmdldCgp
KSk7CiAgICAgYXV0byoganNDbGFzcyA9IGpzY19jb250ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRl
eHQuZ2V0KCksICJXZWJQcm9jZXNzVGVzdFJ1bm5lciIsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdlYlByb2Nlc3NUZXN0UnVubmVyRmluYWxpemUp
KTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChqc0NsYXNzKSk7Ci0gICAganNjX2NsYXNzX2FkZF9tZXRob2QoanNDbGFz
cywgInJ1blRlc3QiLCBHX0NBTExCQUNLKHJ1blRlc3QpLCBOVUxMLCBOVUxMLCBHX1RZUEVfQk9P
TEVBTiwgMSwgR19UWVBFX1NUUklORyk7CisgICAganNjX2NsYXNzX2FkZF9tZXRob2QoanNDbGFz
cywgInJ1blRlc3QiLCBHX0NBTExCQUNLKHJ1blRlc3QpLCBleHRlbnNpb24sIG51bGxwdHIsIEdf
VFlQRV9CT09MRUFOLCAxLCBHX1RZUEVfU1RSSU5HKTsKICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB0
ZXN0UnVubmVyID0gYWRvcHRHUmVmKGpzY192YWx1ZV9uZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCks
IGdfb2JqZWN0X3JlZih3ZWJQYWdlKSwganNDbGFzcykpOwogICAgIFdlYlByb2Nlc3NUZXN0Ojph
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHRlc3RSdW5uZXIu
Z2V0KCkpKTsKICAgICBqc2NfY29udGV4dF9zZXRfdmFsdWUoY29udGV4dC5nZXQoKSwgIldlYlBy
b2Nlc3NUZXN0UnVubmVyIiwgdGVzdFJ1bm5lci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCmluZGV4IDdhNDRj
YjA1Y2Q0Li4wMWI1M2ViN2NlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAgLTM2LDggKzM2LDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHT2JqZWN0Kik7CiAKLSAgICBzdGF0aWMgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFt
ZSwgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgpPik7Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgdGVzdE5hbWUpOworICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBTdHJpbmcmIHRlc3RO
YW1lLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKFdlYktp
dFdlYkV4dGVuc2lvbiopPik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiosIGNvbnN0IFN0cmluZyYgdGVzdE5hbWUp
OwogfTsKIAogI2RlZmluZSBSRUdJU1RFUl9URVNUKENsYXNzTmFtZSwgVGVzdE5hbWUpIFwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVw
c1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFu
dXBzVGVzdC5jcHAKaW5kZXggZjc5Y2YzNDUxODIuLjA1ZDczZTJmNzBlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0
LmNwcApAQCAtMjYsNyArMjYsNyBAQAogCiBjbGFzcyBBdXRvY2xlYW51cHNUZXN0IDogcHVibGlj
IFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+KG5ldyBBdXRvY2xlYW51cHNUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IEF1dG9jbGVhbnVwc1Rlc3QoKSk7
IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRlc3RXZWJQcm9jZXNzQXV0b2NsZWFudXBzKFdlYktp
dFdlYlBhZ2UqIHdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAKaW5kZXggMWIzOWZhZmE3YTcuLjE2
MDU5MjJkYTYyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9ET01DbGllbnRSZWN0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwCkBAIC0yNyw3ICsyNyw3IEBAIEdfR05VQ19C
RUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogCiBjbGFzcyBXZWJLaXRET01DbGllbnRSZWN0VGVz
dCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFdlYktpdERPTUNsaWVudFJlY3RUZXN0PihuZXcgV2ViS2l0RE9NQ2xpZW50UmVjdFRlc3QoKSk7
IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2Vi
S2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERPTUNsaWVu
dFJlY3RUZXN0PihuZXcgV2ViS2l0RE9NQ2xpZW50UmVjdFRlc3QoKSk7IH0KIAogcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBjaGVja0NsaWVudFJlY3RQb3NpdGlvbihXZWJLaXRET01DbGllbnRS
ZWN0KiBjbGllbnRSZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwCmluZGV4IGNjYTgyZmNlZTBjLi43OGRj
MTU5NDNkOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
RE9NTm9kZUZpbHRlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29u
c3QgY2hhciogZXhwZWN0ZWRFbGVtZW50c05vSW5wdXRbXSA9IHsgIkhUTUwiLCAiSEVBRCIsICJU
SVRMRSIsICJCT0RZIgogCiBjbGFzcyBXZWJLaXRET01Ob2RlRmlsdGVyVGVzdCA6IHB1YmxpYyBX
ZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQ
cm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NU
ZXN0PihuZXcgV2ViS2l0RE9NTm9kZUZpbHRlclRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0RE9NTm9kZUZp
bHRlclRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRlc3RUcmVlV2Fsa2VyKFdlYktp
dFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9ET01Ob2RlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9ET01Ob2RlVGVzdC5jcHAKaW5kZXggYmE3ZmFiOTljZjYuLmRiNGQxZTNlMTE2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3Qu
Y3BwCkBAIC0yOCw3ICsyOCw3IEBAIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwog
CiBjbGFzcyBXZWJLaXRET01Ob2RlVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkg
eyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERPTU5vZGVUZXN0PihuZXcgV2ViS2l0RE9N
Tm9kZVRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdl
YktpdERPTU5vZGVUZXN0PihuZXcgV2ViS2l0RE9NTm9kZVRlc3QoKSk7IH0KIAogcHJpdmF0ZToK
ICAgICBib29sIHRlc3RIaWVyYXJjaHlOYXZpZ2F0aW9uKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5T
UmVzb2x2ZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RP
TVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwCmluZGV4IDM1ZWUzNTAzYTQwLi40N2VmYTAyOTkzYyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhO
U1Jlc29sdmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3hwYXRoX25zX3Jlc29sdmVyX2NsYXNzX2luaXQoV2ViS2l0WFBhdGhOU1Jlc29s
dmVyQ2xhc3MqKQogCiBjbGFzcyBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0IDogcHVibGlj
IFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+KG5ldyBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0KCkpOyB9CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lv
biopIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdERP
TVhQYXRoTlNSZXNvbHZlclRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGV2YWx1YXRl
Rm9vQ2hpbGRUZXh0QW5kQ2hlY2tSZXN1bHQoV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50LCBX
ZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L0NNYWtlTGlzdHMudHh0CmluZGV4IGY0YzFlNjk2NjNiLi5hYjhjNWE1NWY4MyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dApAQCAtMzksNiArMzksNyBAQCBzZXQoV2Vi
S2l0R0xpYkFQSVdlYlByb2Nlc3NUZXN0cwogICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3BwCiAgICAgJHtUT09MU19ESVJ9L1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcAogICAgICR7VE9PTFNf
RElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcAorICAgICR7
VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0
VGVzdC5jcHAKICAgICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1dlYlByb2Nlc3NUZXN0LmNwcAogKQogCkBAIC0xNDAsNiArMTQxLDcgQEAgQUREX1dLMl9URVNU
KFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2kKIEFERF9XSzJfVEVTVChUZXN0V2Vic2l0ZURhdGEgJHtUT09MU19ESVJ9L1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwKQogQUREX1dL
Ml9URVNUKFRlc3RDb25zb2xlTWVzc2FnZSAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHApCiBBRERfV0syX1RFU1QoVGVzdERP
TUVsZW1lbnQgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
RE9NRWxlbWVudC5jcHApCitBRERfV0syX1RFU1QoVGVzdE9yaWdpbldoaXRlbGlzdCAke1RPT0xT
X0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3Qu
Y3BwKQogCiAjIEZJWE1FOiBFbmFibGUgZm9yIFdQRQogaWYgKFBPUlQgU1RSRVFVQUwgIkdUSyIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360098</attachid>
            <date>2019-01-25 03:24:30 -0800</date>
            <delta_ts>2019-01-25 07:12:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-origin-whitelist.diff</filename>
            <type>text/plain</type>
            <size>64777</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzOGE2NzY5ZTRlYS4uMTllNmEwOGY0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOS0wMS0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRv
IHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb25hbCBwb3J0IHBhcmFtZXRl
ciB0byBPcmlnaW5BY2Nlc3NFbnRyeS4gV2hlbiBwb3J0IGlzIFdURjo6bnVsbG9wdCBhbGwgcG9y
dHMgYXJlIGFsbG93ZWQgdG8ga2VlcAorICAgICAgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZG9tYWluSXNSZWdpc3RlcmFibGUgY29uc3QpOiBQYXNzIFdURjo6bnVsbG9wdCBhcyBwb3J0
IHRvIE9yaWdpbkFjY2Vzc0VudHJ5LgorICAgICAgICAqIHBhZ2UvT3JpZ2luQWNjZXNzRW50cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T3JpZ2luQWNjZXNzRW50cnk6Ok9yaWdpbkFjY2Vzc0Vu
dHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5BY2Nlc3NFbnRyeTo6bWF0
Y2hlc09yaWdpbiBjb25zdCk6IENoZWNrIHBvcnQgbWF0Y2hlcy4KKyAgICAgICAgKiBwYWdlL09y
aWdpbkFjY2Vzc0VudHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5BY2Nlc3NFbnRyeTo6
cG9ydCBjb25zdCk6IFJldHVybiB0aGUgcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PT0pOiBDaGVjayBhbHNvIHRoYXQgcG9ydHMgYXJlIGVxdWFsLgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6CisKIDIwMTktMDEtMjQgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdW01hcmdpbkNvbGxh
cHNpbmddIFJlZmFjdG9yIE1hcmdpbkNvbGxhcHNlOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWRiNzFmNTE2ZjYuLmZhZjhhNWI0MzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ5NDcsNyArNDk0Nyw3IEBAIGJvb2wgRG9jdW1l
bnQ6OmRvbWFpbklzUmVnaXN0ZXJhYmxlKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGlwQWRkcmVzc1NldHRpbmcgPSBzZXR0
aW5ncygpLnRyZWF0SVBBZGRyZXNzQXNEb21haW4oKSA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVh
dElQQWRkcmVzc0FzRG9tYWluIDogT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJ
UEFkZHJlc3M7Ci0gICAgT3JpZ2luQWNjZXNzRW50cnkgYWNjZXNzRW50cnkgeyBzZWN1cml0eU9y
aWdpbigpLnByb3RvY29sKCksIG5ld0RvbWFpbiwgT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3Vi
ZG9tYWlucywgaXBBZGRyZXNzU2V0dGluZyB9OworICAgIE9yaWdpbkFjY2Vzc0VudHJ5IGFjY2Vz
c0VudHJ5IHsgc2VjdXJpdHlPcmlnaW4oKS5wcm90b2NvbCgpLCBuZXdEb21haW4sIFdURjo6bnVs
bG9wdCwgT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucywgaXBBZGRyZXNzU2V0dGlu
ZyB9OwogICAgIGlmICghYWNjZXNzRW50cnkubWF0Y2hlc09yaWdpbihzZWN1cml0eU9yaWdpbigp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNj
ZXNzRW50cnkuY3BwCmluZGV4IDM3NjEwNGVjODJmLi5jMWE3MjE0OWFiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLU9y
aWdpbkFjY2Vzc0VudHJ5OjpPcmlnaW5BY2Nlc3NFbnRyeShjb25zdCBTdHJpbmcmIHByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGhvc3QsIFN1YmRvbWFpblNldHRpbmcgc3ViZG9tYWluU2V0dGluZywg
SVBBZGRyZXNzU2V0dGluZyBpcEFkZHJlc3NTZXR0aW5nKQorCitPcmlnaW5BY2Nlc3NFbnRyeTo6
T3JpZ2luQWNjZXNzRW50cnkoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBo
b3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgU3ViZG9tYWluU2V0dGluZyBzdWJkb21haW5T
ZXR0aW5nLCBJUEFkZHJlc3NTZXR0aW5nIGlwQWRkcmVzc1NldHRpbmcpCiAgICAgOiBtX3Byb3Rv
Y29sKHByb3RvY29sLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgLCBtX2hvc3QoaG9z
dC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQorICAgICwgbV9wb3J0KHBvcnQpCiAgICAgLCBt
X3N1YmRvbWFpblNldHRpbmdzKHN1YmRvbWFpblNldHRpbmcpCiAgICAgLCBtX2lwQWRkcmVzc1Nl
dHRpbmdzKGlwQWRkcmVzc1NldHRpbmcpCiAgICAgLCBtX2hvc3RJc0lQQWRkcmVzcyhVUkw6Omhv
c3RJc0lQQWRkcmVzcyhtX2hvc3QpKQpAQCAtNTIsMTEgKzUzLDE1IEBAIGJvb2wgT3JpZ2luQWNj
ZXNzRW50cnk6Om1hdGNoZXNPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29u
c3QKIAogICAgIGlmIChtX3Byb3RvY29sICE9IG9yaWdpbi5wcm90b2NvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKKyAgICAvLyBJZiBtX3BvcnQgaXMgV1RGOjpudWxsb3B0LCBp
dCBtZWFucyBhbnkgcG9ydCwgbm90IHRoZSBkZWZhdWx0IG9uZS4KKyAgICBpZiAobV9wb3J0ICYm
ICgob3JpZ2luLnBvcnQoKSAmJiBtX3BvcnQudmFsdWUoKSAhPSBvcmlnaW4ucG9ydCgpLnZhbHVl
KCkpIHx8ICghb3JpZ2luLnBvcnQoKSAmJiAhV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
bV9wb3J0LnZhbHVlKCksIG1fcHJvdG9jb2wpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIC8vIFNwZWNpYWwgY2FzZTogSW5jbHVkZSBzdWJkb21haW5zIGFuZCBlbXB0eSBob3N0IG1l
YW5zICJhbGwgaG9zdHMsIGluY2x1ZGluZyBpcCBhZGRyZXNzZXMiLgogICAgIGlmIChtX3N1YmRv
bWFpblNldHRpbmdzID09IEFsbG93U3ViZG9tYWlucyAmJiBtX2hvc3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogICAgIC8vIEV4YWN0IG1hdGNoLgogICAgIGlmICht
X2hvc3QgPT0gb3JpZ2luLmhvc3QoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmgKaW5kZXggZjU1ZjdkOTM4YzcuLjg3Mzc4M2ViYzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5oCkBAIC00OSwxNyArNDks
MTkgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBJZiBob3N0IGlzIGVtcHR5IHN0cmluZyBh
bmQgU3ViZG9tYWluU2V0dGluZyBpcyBBbGxvd1N1YmRvbWFpbnMsIHRoZSBlbnRyeSB3aWxsIG1h
dGNoIGFsbCBkb21haW5zIGluIHRoZSBzcGVjaWZpZWQgcHJvdG9jb2wuCi0gICAgT3JpZ2luQWNj
ZXNzRW50cnkoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBTdWJk
b21haW5TZXR0aW5nLCBJUEFkZHJlc3NTZXR0aW5nKTsKKyAgICBPcmlnaW5BY2Nlc3NFbnRyeShj
b25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQx
Nl90PiBwb3J0LCBTdWJkb21haW5TZXR0aW5nLCBJUEFkZHJlc3NTZXR0aW5nKTsKICAgICBib29s
IG1hdGNoZXNPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKIAogICAgIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CisgICAgT3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQ7IH0KICAgICBTdWJkb21haW5T
ZXR0aW5nIHN1YmRvbWFpblNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJkb21haW5TZXR0
aW5nczsgfQogICAgIElQQWRkcmVzc1NldHRpbmcgaXBBZGRyZXNzU2V0dGluZ3MoKSBjb25zdCB7
IHJldHVybiBtX2lwQWRkcmVzc1NldHRpbmdzOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
cHJvdG9jb2w7CiAgICAgU3RyaW5nIG1faG9zdDsKKyAgICBPcHRpb25hbDx1aW50MTZfdD4gbV9w
b3J0OwogICAgIFN1YmRvbWFpblNldHRpbmcgbV9zdWJkb21haW5TZXR0aW5nczsKICAgICBJUEFk
ZHJlc3NTZXR0aW5nIG1faXBBZGRyZXNzU2V0dGluZ3M7CiAgICAgYm9vbCBtX2hvc3RJc0lQQWRk
cmVzczsKQEAgLTY5LDYgKzcxLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmln
aW5BY2Nlc3NFbnRyeSYgYSwgY29uc3QgT3JpZ2luQWNjZXNzRW50cnkmIGIpCiB7CiAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5wcm90b2NvbCgpLCBiLnByb3RvY29sKCkpCiAg
ICAgICAgICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5ob3N0KCksIGIuaG9zdCgpKQorICAg
ICAgICAmJiBhLnBvcnQoKSA9PSBiLnBvcnQoKQogICAgICAgICAmJiBhLnN1YmRvbWFpblNldHRp
bmdzKCkgPT0gYi5zdWJkb21haW5TZXR0aW5ncygpCiAgICAgICAgICYmIGEuaXBBZGRyZXNzU2V0
dGluZ3MoKSA9PSBiLmlwQWRkcmVzc1NldHRpbmdzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhLi4xYzJhMzcyZWE1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBib29sIFNl
Y3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmln
aW4qIGFjdGl2ZU9yaWdpbgogICAgIHJldHVybiBpc0FjY2Vzc1doaXRlTGlzdGVkKGFjdGl2ZU9y
aWdpbiwgJnRhcmdldE9yaWdpbi5nZXQoKSk7CiB9CiAKLXZvaWQgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3ZvaWQg
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgT3B0aW9uYWw8dWludDE2X3Q+IGRl
c3RpbmF0aW9uUG9ydCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBB
U1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlz
VW5pcXVlKCkpCkBAIC0xOTIsMTAgKzE5MiwxMCBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwog
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5B
Y2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwotICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nl
c3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDog
T3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6
OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKKyAgICBsaXN0LT5hcHBlbmQoT3JpZ2luQWNj
ZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGRlc3RpbmF0
aW9uUG9ydCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6
QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywg
T3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKIH0KIAotdm9p
ZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBy
b3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKQordm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9t
YWluLCBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkp
OwogICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2
b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTZWN1cml0eU9yaWdpbiYgc291cgogICAgICAgICByZXR1cm47CiAKICAgICBPcmlnaW5BY2Nl
c3NXaGl0ZUxpc3QmIGxpc3QgPSAqaXQtPnZhbHVlOwotICAgIE9yaWdpbkFjY2Vzc0VudHJ5IG9y
aWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRv
bWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nl
c3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcyk7CisgICAgT3JpZ2luQWNjZXNzRW50
cnkgb3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21h
aW4sIGRlc3RpbmF0aW9uUG9ydCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5B
Y2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93
U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3Mp
OwogICAgIGlmICghbGlzdC5yZW1vdmVGaXJzdChvcmlnaW5BY2Nlc3NFbnRyeSkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGlj
eS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCmluZGV4IDUzM2IxZDRm
YmRhLi40ZGQ5NGFiZDNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAt
NjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcmVzdHJpY3RBY2Nlc3NUb0xv
Y2FsKCk7CiAgICAgc3RhdGljIGJvb2wgYWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21h
aW4sIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvbkRvbWFpbiwgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3RpbmF0aW9uUG9ydCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0Fj
Y2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzZjcxMWVhYTNmOC4u
ODkwMjAzZWU5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTktMDEtMjUgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEgc2VjdXJp
dHkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTM0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBvc2UgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCks
IEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgpIGFuZAor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkgaW4g
R0xpYiBBUEkuIFRoaXMgcGF0Y2ggbW92ZXMgV2ViS2l0U2VjdXJpdHlPcmlnaW4gZnJvbSBVSVBy
b2Nlc3MKKyAgICAgICAgdG8gU2hhcmVkIGFuZCBtYWtlIGl0IGF2YWlsYWJsZSBmcm9tIHRoZSB3
ZWIgZXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IEFkZCBwb3J0
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3Zl
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjog
RGl0dG8uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQ
SS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcC4KKyAgICAgICAg
KHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdCk6IEludGVybmFsIGZ1bmN0aW9uIG9ubHkg
dXNlZCBieSB0ZXN0cy4KKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaC4KKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oLgor
ICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBQYXNzIFdURjo6bnVs
bG9wdCBhcyBwb3J0LgorICAgICAgICAoV0tCdW5kbGVSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lv
bkNyZWF0ZSk6IEtlZXAgYSByZWZlcmVuY2UgdG8gSW5qZWN0ZWRCdW5kbGUgaW4gV2ViS2l0V2Vi
RXh0ZW5zaW9uIHByaXZhdGUgc3RydWN0LgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25f
YWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRl
bnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Vi
a2l0LXdlYi1leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4
dDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdl
Yi1leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IERpdHRvLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKwogMjAx
OS0wMS0yNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBpT1M6
IFNwbGl0IGtleWJvYXJkIHNob3VsZCBub3Qgc2hyaW5rIHZpc3VhbFZpZXdwb3J0LmhlaWdodApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBlNjM0MTQ3ZGViYS4uOWVjZTYyMzk5ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01OTUsMTQgKzU5NSwxNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELAogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIE9wdGlvbmFsPHVp
bnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpOworICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0
aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGRlc3RpbmF0aW9uUG9ydCwgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBPcHRpb25hbDx1
aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQo
KSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBvcnQs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCAwODhkZThmZGVkMS4uNTgwZTZlNDAyMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTE5Niw4ICsxOTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckFsbEZyYW1lc09uUGFnZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlEKTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiB0b3BMZXZlbE9yaWdpbik7CiAKLSAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBPcHRpb25hbDx1
aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KTsKKyAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Q
b3J0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpOwogCiAgICAgc3RydWN0IFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBmMjQ1YmNhN2RjNi4uNmM3NGZiODBkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjIsOCArNjIsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgTG9nVXNlckludGVy
YWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRvcExldmVsT3JpZ2luKQog
I2VuZGlmCiAKLSAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNl
T3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgUmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpOworICAgIEFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3Vy
Y2VPcmlnaW4sIFN0cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25I
b3N0LCBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKTsKKyAgICBSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShT
dHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRl
c3RpbmF0aW9uSG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3RpbmF0aW9uUG9ydCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgUmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7CiAKICAgICBHZXROZXR3b3JrTG9hZEluZm9ybWF0aW9uUmVxdWVzdCh1aW50NjRfdCBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QpIExlZ2FjeVN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDIyODEyNzRjZjBjLi43
NGUzOWEyNjllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04MjQsMTIgKzgyNCwxNCBA
QCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudS5jcHAKICAgICAgICAgICAgICR7V0VCS0lU
X0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKICAgICAgICAg
ICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3Bw
CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dl
YktpdFVSSVJlcXVlc3QuY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgICAgICAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0
ZW0uaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRI
aXRUZXN0UmVzdWx0LmgKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaAogICAgICAgICAgICAgJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliLyouY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9y
aWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9y
aWdpbi5jcHAKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXgg
MmUwNzg5ZDQzMDEuLjJjNjg4MDZmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC02OCw2ICs2OCwx
MyBAQCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgd2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1
cml0eU9yaWdpbihXZWJLaXRTZWN1cml0eU9yaQogICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luLmdldCgpOwogfQogCisvLyBJbnRlcm5hbCBBUEkgb25seSB1c2VkIGZvciB0ZXN0aW5n
LgorYm9vbCB3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3QoV2ViS2l0U2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgY29uc3QgY2hhciogdXJsKQoreworICAgIEFTU0VSVChvcmlnaW4pOworICAg
IHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KFVSTChVUkwoKSwgU3Ry
aW5nOjpmcm9tVVRGOCh1cmwpKSk7Cit9CisKIC8qKgogICogd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9uZXc6CiAgKiBAcHJvdG9jb2w6IFRoZSBwcm90b2NvbCBmb3IgdGhlIG5ldyBvcmlnaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3Vy
aXR5T3JpZ2luSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uZGU5YTk4MmVlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmgKQEAgLTAsMCArMSwyNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luLmgiCisKK2Jvb2wgd2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KFdlYktpdFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgY2hhciopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmln
aW5Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpblByaXZhdGUuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgK
cmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luUHJpdmF0ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCBhNzE4ODA1MTU5NC4uZjZhNjk0OGRk
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtNzAsNiArNzAsNyBAQCBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnUuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdENv
bnRleHRNZW51QWN0aW9ucy5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0
UmVzdWx0LmNwcCBAbm8tdW5pZnkKK1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdp
bi5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgQG5v
LXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIEBuby11bmlmeQog
CkBAIC0xNjUsNyArMTY2LDYgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByaXZhdGUuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNp
b24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNjcmlwdERpYWxvZy5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNw
cCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAg
QG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0CmluZGV4IDE2Yjg5OTMwOGZmLi45YTYwYmU0OTIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0CkBAIC02Nyw2ICs2Nyw3IEBAIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudS5j
cHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmNw
cCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIEBu
by11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIEBuby11bmlm
eQorU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFNo
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5CiAKQEAgLTE1MCw3ICsxNTEsNiBA
QCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJpdmF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2NyaXB0RGlhbG9nLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3BwIEBuby11bmlmeQotVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VUlDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCmluZGV4IDZkY2EyYjc3
ZWE2Li4yYTQ0M2Y4ODg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVk
KF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAm
JiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJyb3IgIk9u
bHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDc1NmFhYTRkZTcyLi44NTlh
NjBiZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xNDUxLDYgKzE0
NTEsOSBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVG
dW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZVdpdGhVc2VyRGF0YUZ1bmN0aW9u
CiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZQord2Via2l0X3dlYl9leHRlbnNpb25fYWRk
X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1v
dmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jl
c2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdl
YktpdFdlYkV4dGVuc2lvbkNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKaW5kZXggODBlMDQ1MjNjN2YuLjQ0ZTNl
NjVjYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRTZWN1cml0eU9yaWdpbi5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChf
X1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJyb3IgIk9ubHkgPHdwZS93ZWJr
aXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcAppbmRleCBiYzYyMWMwODBiYy4uZWI5OTYzYWY1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cApAQCAtMTk4LDEyICsxOTgsMTIgQEAgdm9pZCBXS0J1bmRsZVNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3UKIAogdm9pZCBX
S0J1bmRsZUFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdLQnVuZGxlUmVmIGJ1bmRsZVJl
ZiwgV0tTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoV2ViS2l0Ojp0b1dURlN0cmluZyhzb3VyY2VPcmlnaW4pLCBXZWJL
aXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCBXZWJLaXQ6OnRvV1RGU3RyaW5n
KGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChidW5kbGVSZWYpLT5hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXZWJL
aXQ6OnRvV1RGU3RyaW5nKHNvdXJjZU9yaWdpbiksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGlu
YXRpb25Qcm90b2NvbCksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgV1RG
OjpudWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgV0tCdW5k
bGVSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXS0J1bmRsZVJlZiBidW5kbGVSZWYs
IFdLU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFdlYktpdDo6dG9XVEZTdHJpbmcoc291cmNlT3JpZ2luKSwgV2Vi
S2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgV2ViS2l0Ojp0b1dURlN0cmlu
ZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
V2ViS2l0Ojp0b1dURlN0cmluZyhzb3VyY2VPcmlnaW4pLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRl
c3RpbmF0aW9uUHJvdG9jb2wpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCks
IFdURjo6bnVsbG9wdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIFdL
QnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggMDgyZDYw
OWE4N2IuLmQwNDk4ZjgxMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0
ZW5zaW9uLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIK
ICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SVN0cmluZy5oIgorI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQ
YWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTExOCw2ICsxMTksNyBA
QCBlbnVtIHsKIHR5cGVkZWYgSGFzaE1hcDxXZWJQYWdlKiwgR1JlZlB0cjxXZWJLaXRXZWJQYWdl
PiA+IFdlYlBhZ2VNYXA7CiAKIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSB7Cisg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBidW5kbGU7CiAgICAgV2ViUGFnZU1hcCBwYWdlczsK
ICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgYm9vbCBnYXJiYWdlQ29sbGVjdE9uUGFn
ZURlc3Ryb3k7CkBAIC0xOTYsNiArMTk4LDcgQEAgcHJpdmF0ZToKIFdlYktpdFdlYkV4dGVuc2lv
biogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAg
ICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOworICAgIGV4dGVu
c2lvbi0+cHJpdi0+YnVuZGxlID0gYnVuZGxlOwogICAgIGJ1bmRsZS0+c2V0Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikp
OwogICAgIHJldHVybiBleHRlbnNpb247CiB9CkBAIC0yMjksMyArMjMyLDgzIEBAIFdlYktpdFdl
YlBhZ2UqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4dGVuc2lvbiog
ZXh0ZW5zaW9uLCBndWluCiAKICAgICByZXR1cm4gMDsKIH0KKworLyoqCisgKiB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnk6CisgKiBAZXh0ZW5z
aW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5
T3JpZ2luCisgKiBAcHJvdG9jb2w6IHRoZSBkZXN0aW5hdGlvbiBwcm90b2NvbAorICogQGhvc3Q6
IChudWxsYWJsZSk6IHRoZSBkZXN0aW5hdGlvbiBob3N0LCBvciAlTlVMTCBmb3IgYW55IGhvc3QK
KyAqIEBwb3J0OiB0aGUgZGVzdGluYXRpb24gcG9ydCwgb3IgLTEgZm9yIGFueSBwb3J0LCBvciAw
IHRvIGluZGljYXRlIHRoZQorICogICAgICAgIGRlZmF1bHQgcG9ydCBmb3IgQHByb3RvY29sCisg
KiBAYWxsb3dfc3ViZG9tYWluczogd2hldGhlciB0byBhbGxvdyBzdWJkb21haW5zIHdoZW4gQGhv
c3QgaXMgbm90ICVOVUxMCisgKgorICogQWRkIGEgd2hpdGVsaXN0IGVudHJ5IGZvciBvcmlnaW4g
dG8gYWxsb3cgY3Jvc3Mgb3JpZ2luIGFjY2VzcyB0byB0aGUgZ2l2ZW4gQHByb3RvY29sIGFuZCBA
aG9zdC4KKyAqIElmIEBob3N0IGlzICVOVUxMLCBhbGwgaG9zdHMgYXJlIGFsbG93ZWQgYW5kIHRo
ZSBAYWxsb3dfc3ViZG9tYWlucyBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKyAqIElmIEBhbGxvd19z
dWJkb21haW5zIGlzICVUUlVFLCBzdWJkb21haW5zIG9mIEBob3N0IGZvciB0aGUgZ2l2ZW4gQHBy
b3RvY29sIGFyZSBhbHNvIGFsbG93ZWQgdG8KKyAqIGJlIGFjY2Vzc2VkIGZyb20gQG9yaWdpbi4K
KyAqCisgKiBTaW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9v
cmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biwgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgY2hhciogcHJvdG9jb2wsIGNv
bnN0IGNoYXIqIGhvc3QsIGdpbnQxNiBwb3J0LCBnYm9vbGVhbiBhbGxvd1N1YmRvbWFpbnMpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24p
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKG9yaWdpbik7CisgICAgZ19yZXR1cm5faWZfZmFpbCgh
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChwcm90b2NvbCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChwb3J0ID49IC0xKTsKKwor
ICAgIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQ7CisgICAgaWYgKCFwb3J0KQor
ICAgICAgICBkZXN0aW5hdGlvblBvcnQgPSBXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3Ry
aW5nOjpmcm9tVVRGOChwcm90b2NvbCkpOworICAgIGVsc2UgaWYgKHBvcnQgPiAwKQorICAgICAg
ICBkZXN0aW5hdGlvblBvcnQgPSBwb3J0OworCisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUt
PmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2Vj
dXJpdHlPcmlnaW4ob3JpZ2luKS50b1N0cmluZygpLCBTdHJpbmc6OmZyb21VVEY4KHByb3RvY29s
KSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSwgZGVzdGluYXRpb25Qb3J0LCBob3N0ID8gYWxsb3dT
dWJkb21haW5zIDogdHJ1ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9leHRlbnNpb25fcmVt
b3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5OgorICogQGV4dGVuc2lvbjogYSAjV2Vi
S2l0V2ViRXh0ZW5zaW9uCisgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgorICog
QHByb3RvY29sOiB0aGUgZGVzdGluYXRpb24gcHJvdG9jb2wKKyAqIEBob3N0OiAobnVsbGFibGUp
OiB0aGUgZGVzdGluYXRpb24gaG9zdCwgb3IgJU5VTEwgZm9yIGFueSBob3N0CisgKiBAcG9ydDog
dGhlIGRlc3RpbmF0aW9uIHBvcnQsIG9yIC0xIGZvciBhbnkgcG9ydCwgb3IgMCB0byBpbmRpY2F0
ZSB0aGUKKyAqICAgICAgICBkZWZhdWx0IHBvcnQgZm9yIEBwcm90b2NvbAorICogQGFsbG93X3N1
YmRvbWFpbnM6IHdoZXRoZXIgc3ViZG9tYWlucyB3ZXJlIGFsbG93ZWQgd2hlbiBAaG9zdCBpcyBu
b3QgJU5VTEwKKyAqCisgKiBSZW1vdmUgYSB3aGl0ZWxpc3QgZW50cnkgZm9yIG9yaWdpbiBwcmV2
aW91c2x5IGFkZGVkIHdpdGggd2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0X2VudHJ5KCkuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRf
d2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkoV2ViS2l0
V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IGNoYXIqIHByb3RvY29sLCBjb25zdCBjaGFyKiBob3N0LCBnaW50MTYgcG9ydCwgZ2Jvb2xl
YW4gYWxsb3dTdWJkb21haW5zKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW4pOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9y
aWdpbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocHJvdG9jb2wpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwocG9ydCA+PSAtMSk7CisKKyAgICBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Q
b3J0OworICAgIGlmICghcG9ydCkKKyAgICAgICAgZGVzdGluYXRpb25Qb3J0ID0gV1RGOjpkZWZh
dWx0UG9ydEZvclByb3RvY29sKFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpKTsKKyAgICBlbHNl
IGlmIChwb3J0ID4gMCkKKyAgICAgICAgZGVzdGluYXRpb25Qb3J0ID0gcG9ydDsKKworICAgIGV4
dGVuc2lvbi0+cHJpdi0+YnVuZGxlLT5yZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSh3
ZWJraXRTZWN1cml0eU9yaWdpbkdldFNlY3VyaXR5T3JpZ2luKG9yaWdpbikudG9TdHJpbmcoKSwg
U3RyaW5nOjpmcm9tVVRGOChwcm90b2NvbCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCksIGRlc3Rp
bmF0aW9uUG9ydCwgaG9zdCA/IGFsbG93U3ViZG9tYWlucyA6IHRydWUpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0czoKKyAq
IEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICoKKyAqIFJlbW92ZSBhbGwgd2hp
dGVsaXN0IGVudHJpZXMgcHJldmlvdXNseSBhZGRlZCB3aXRoIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSgpLgorICoKKyAqIFNpbmNlOiAyLjI0
CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0
ZWxpc3RzKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisKKyAgICBleHRlbnNp
b24tPnByaXYtPmJ1bmRsZS0+cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IDM0MTM2YTM3ZDI1Li40OTI5
NmZmM2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1cml0eU9yaWdp
bi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xT
CkBAIC03NiwxMSArNzcsMzAgQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9
OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9p
ZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X3BhZ2UgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAg
ICBwYWdlX2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRf
b3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpl
eHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy
ICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdp
bnQxNiAgICAgICAgICAgICAgICBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgYWxsb3df
c3ViZG9tYWlucyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fcmVt
b3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5IChXZWJLaXRXZWJFeHRlbnNpb24gICAq
ZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpob3N0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
aW50MTYgICAgICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgIGFsbG93
X3N1YmRvbWFpbnMpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jl
c2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cyAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAg
KmV4dGVuc2lvbik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQt
d2ViLWV4dGVuc2lvbi5oCmluZGV4IDFjOTVmMWQzYWVkLi4xNDY5MDg5NjYxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0
LXdlYi1leHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdEZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTY3JpcHRXb3JsZC5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJl
c3BvbnNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRX
ZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IGE2ZmZiNDg1MDQ4Li42ODYzZWUxNzU4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERl
ZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03NiwxMSArNzcsMzAg
QEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdU
eXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Ug
KFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lv
biAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICBwYWdlX2lkKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0
ZWxpc3RfZW50cnkgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2Nv
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQxNiAgICAgICAgICAgICAg
ICBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgYWxsb3dfc3ViZG9tYWlucyk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0X2VudHJ5IChXZWJLaXRXZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqcHJvdG9j
b2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50MTYgICAgICAgICAgICAg
ICAgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgIGFsbG93X3N1YmRvbWFpbnMpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0cyAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lvbik7CiAKIEdf
RU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3Bl
LXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dAppbmRleCBhMWQ2ODQ0ZGRjZi4uZmQyMDgz
YzRmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13
ZWJleHRlbnNpb25zLTAuMS1zZWN0aW9ucy50eHQKQEAgLTEzLDYgKzEzLDkgQEAgV2ViS2l0V2Vi
RXh0ZW5zaW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplRnVuY3Rpb24KIFdlYktpdFdl
YkV4dGVuc2lvbkluaXRpYWxpemVXaXRoVXNlckRhdGFGdW5jdGlvbgogd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3BhZ2UKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3do
aXRlbGlzdF9lbnRyeQord2Via2l0X3dlYl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNz
X3doaXRlbGlzdHMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJFeHRlbnNpb25D
bGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXggNzk2
YjIxZTQxZjEuLmFkZTRiOGRjZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEZyYW1lLmg+CiAjaW5jbHVkZSA8d3Bl
L1dlYktpdFNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFNlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0VVJJUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRWRpdG9yLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAppbmRleCAxZGJiZGNmZTQ5Ny4uY2RlZDkyYjI1ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMzkyLDE3ICszOTIsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGIK
ICAgICAgICAgKCppdGVyKS0+c2V0dGluZ3MoKS5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
ZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIE9w
dGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0
KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6QWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkgeyBzb3Vy
Y2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgZGVz
dGluYXRpb25Qb3J0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2Nv
bCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBvcnQsIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zIH0sIDApOwogCiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVt
b3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbkhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNv
dXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0
aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CisgICAgU2VjdXJpdHlQ
b2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IGRlc3RpbmF0aW9uSG9zdCwgZGVzdGluYXRpb25Qb3J0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9y
aWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBv
cnQsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zIH0sIDApOwogfQogCiB2b2lkIEluamVjdGVk
QnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRl
eCAyNTVjOWY1OTdjZi4uZDZkZjgwMWJlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0xMDksOCAr
MTA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoV2ViUGFn
ZUdyb3VwUHJveHkqLCBib29sKTsKICAgICB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkKFdlYlBhZ2VHcm91cFByb3h5KiwgYm9vbCk7CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsKLSAgICB2b2lkIGFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGJvb2wpOwotICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Cisg
ICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDx1aW50MTZfdD4sIGJvb2wpOworICAg
IHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8dWludDE2X3Q+LCBib29sKTsKICAg
ICB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogICAgIHZvaWQgc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsKICAg
ICBpbnQgbnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSosIGRvdWJsZSwgZG91YmxlKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkOWJhOTRkZDUzNy4u
MDkxNTlmMmE1NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxOS0wMS0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgd2ViIGV4dGVu
c2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0
IHRvIGNoZWNrIHRoZSBuZXcgQVBJLiBUaGlzIHBhdGNoIHJlZmFjdG9ycyBXZWJQcm9jZXNzIHRl
c3RzIHRvIHJlY2VpdmUgdGhlIFdlYktpdFdlYkV4dGVuc2lvbiBhcworICAgICAgICBwYXJhbWV0
ZXIgb2YgY3JlYXRlIGZ1bmN0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL0RPTUVsZW1lbnRUZXN0LmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnRUZXN0Ojpj
cmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JU
ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXRGcmFtZVRlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKE9y
aWdpbldoaXRlbGlzdFRlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChPcmlnaW5XaGl0ZWxpc3RUZXN0
OjpPcmlnaW5XaGl0ZWxpc3RUZXN0KToKKyAgICAgICAgKE9yaWdpbldoaXRlbGlzdFRlc3Q6OnRl
c3RXaGl0ZWxpc3QpOgorICAgICAgICAocmVnaXN0ZXJUZXN0cyk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKHRlc3RPcmlnaW5XaGl0ZWxpc3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAg
ICAgICAgKGFmdGVyQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvV2ViUHJvY2Vzc1Rlc3QuY3BwOgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3Q6OmFkZCk6Cisg
ICAgICAgIChXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAg
ICAgICAod2luZG93T2JqZWN0Q2xlYXJlZENhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcDoKKyAgICAgICAgKEF1
dG9jbGVhbnVwc1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NQ2xpZW50
UmVjdFRlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NTm9kZUZpbHRlclRl
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9N
Tm9kZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6OmNyZWF0ZSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0OjpjcmVhdGUpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dDoKKwogMjAxOS0wMS0y
NCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
bWFjT1MgSlNDIGJvdCBjb25maWd1cmF0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL0RPTUVsZW1lbnRUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5jcHAKaW5kZXggY2Q2MDNhYzJi
NTcuLjdhNWJjZDU3ZThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogY2xh
c3MgRE9NRWxlbWVudFRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IERPTUVsZW1lbnRUZXN0KCkpOyB9
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktp
dFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4o
bmV3IERPTUVsZW1lbnRUZXN0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0QXV0b0Zp
bGwoV2ViS2l0V2ViUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcAppbmRleCA1Zjc2M2U0YmJjZC4uODNjMjNiNDYw
M2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0
b3JUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRp
dG9yVGVzdC5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKIAogY2xhc3MgV2ViS2l0V2ViRWRpdG9yVGVz
dCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0V2ViRWRpdG9yVGVzdCgpKTsgfQorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNp
b24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRX
ZWJFZGl0b3JUZXN0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc2VsZWN0aW9u
Q2hhbmdlZENhbGxiYWNrKGJvb2wqIHNlbGVjdGlvbkNoYW5nZWQpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCmluZGV4IDJlNjdjMGE3
YTMyLi5lYTI5NDE4MDAwYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogY2xhc3MgV2ViS2l0
RnJhbWVUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRGcmFtZVRlc3QoKSk7IH0KKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0
ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2Vi
S2l0RnJhbWVUZXN0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0TWFpbkZyYW1lKFdl
YktpdFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0VGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhiNGIzNDAyMzk1Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3Qu
Y3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2lu
SW50ZXJuYWwuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdC5oIgorI2luY2x1ZGUgPGdpby9n
aW8uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisKK2NsYXNzIE9yaWdpbldo
aXRlbGlzdFRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgeworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNp
b24qIGV4dGVuc2lvbikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0Pihu
ZXcgT3JpZ2luV2hpdGVsaXN0VGVzdChleHRlbnNpb24pKTsgfQorCitwcml2YXRlOgorICAgIE9y
aWdpbldoaXRlbGlzdFRlc3QoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCisgICAgICAg
IDogbV9leHRlbnNpb24oZXh0ZW5zaW9uKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIHRlc3RX
aGl0ZWxpc3QoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIFdlYktpdFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ldygiaHR0cCIsICJm
b28uY29tIiwgMCk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2lu
Q2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6
Ly9mb28uY29tOjgwODAvcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2Vj
dXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmln
aW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdp
biwgImh0dHBzIiwgImZvby5jb20iLCAwLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9w
YWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJl
cXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tOjgwODAvcGFnZSIpKTsKKyAgICAgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6
Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5
T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwg
Imh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdp
biwgImh0dHBzIiwgImZvby5jb20iLCA0NDMsIEZBTFNFKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29t
L3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2Fu
UmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb206ODA4MC9wYWdlIikpOworICAgICAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0
cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJp
dHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworICAg
ICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2lu
LCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJfZXh0
ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lvbiwgb3Jp
Z2luLCAiaHR0cHMiLCAiZm9vLmNvbSIsIC0xLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNv
bS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2Fu
UmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb206ODA4MC9wYWdlIikpOworICAgICAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0
cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJp
dHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworICAg
ICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2lu
LCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJfZXh0
ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lvbiwg
b3JpZ2luLCAiaHR0cHMiLCAiZm9vLmNvbSIsIC0xLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9v
LmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdp
bkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tOjgwODAvcGFnZSIpKTsKKyAgICAg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwg
Imh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNl
Y3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsK
KyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9y
aWdpbiwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24s
IG9yaWdpbiwgImh0dHBzIiwgImZvby5jb20iLCAwLCBUUlVFKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28u
Y29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2lu
Q2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb206ODA4MC9wYWdlIikpOworICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAi
aHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2Vj
dXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmln
aW4sICJodHRwczovL2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9l
eHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9u
LCBvcmlnaW4sICJodHRwcyIsICJmb28uY29tIiwgMCwgVFJVRSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9v
LmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdp
bkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tOjgwODAvcGFnZSIpKTsKKyAgICAg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwg
Imh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNl
Y3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsK
KyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9y
aWdpbiwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24s
IG9yaWdpbiwgImh0dHAiLCAiYmFyLmNvbSIsIDAsIEZBTFNFKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28u
Y29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5D
YW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczov
L2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKwor
ICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dHMobV9leHRlbnNpb24pOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9y
aWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJo
dHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1
cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisK
KyAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0
X2VudHJ5KG1fZXh0ZW5zaW9uLCBvcmlnaW4sICJodHRwcyIsIG51bGxwdHIsIDAsIFRSVUUpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmln
aW4sICJodHRwczovL2Zvby5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2Ui
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0
KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5mb28u
Y29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2lu
X2FjY2Vzc193aGl0ZWxpc3RzKG1fZXh0ZW5zaW9uKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9w
YWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJl
cXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFy
LmNvbS9wYWdlIikpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wg
cnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSogcGFnZSkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghc3RyY21wKHRlc3ROYW1lLCAid2hpdGVsaXN0IikpCisg
ICAgICAgICAgICByZXR1cm4gdGVzdFdoaXRlbGlzdChwYWdlKTsKKworICAgICAgICBnX2Fzc2Vy
dF9ub3RfcmVhY2hlZCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBtX2V4dGVuc2lvbiB7IG51bGxwdHIgfTsKK307CisKK3N0YXRpYyB2
b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgcmVnaXN0ZXJUZXN0cygpCit7CisgICAg
UkVHSVNURVJfVEVTVChPcmlnaW5XaGl0ZWxpc3RUZXN0LCAiT3JpZ2luV2hpdGVsaXN0L3doaXRl
bGlzdCIpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi40MjhmOTczNjVmMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3JpZ2luV2hpdGVsaXN0LmNwcApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorCitzdGF0aWMgdm9p
ZCB0ZXN0T3JpZ2luV2hpdGVsaXN0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQor
eworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIk9yaWdpbldoaXRl
bGlzdCIsICJ3aGl0ZWxpc3QiKSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBXZWJW
aWV3VGVzdDo6YWRkKCJPcmlnaW5XaGl0ZWxpc3QiLCAid2hpdGVsaXN0IiwgdGVzdE9yaWdpbldo
aXRlbGlzdCk7Cit9CisKK3ZvaWQgYWZ0ZXJBbGwoKQoreworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXgg
ZjQ0MWE3MTlhODIuLjM3NzhmYjc1YTgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIAogc3RhdGljIEhhc2hTZXQ8R09iamVjdCo+IHNfd2F0Y2hlZE9iamVjdHM7CiAKLXR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nl
c3NUZXN0PiAoKT4+IFRlc3RzTWFwOwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjpmdW5j
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IChXZWJLaXRXZWJFeHRlbnNpb24q
KT4+IFRlc3RzTWFwOwogc3RhdGljIFRlc3RzTWFwJiB0ZXN0c01hcCgpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFRlc3RzTWFwPiBzX3Rlc3RzTWFwOwpAQCAtNDksNyArNDksNyBAQCBz
dGF0aWMgdm9pZCBjaGVja0xlYWtzKCkKICAgICBnX2Fzc2VydF90cnVlKHNfd2F0Y2hlZE9iamVj
dHMuaXNFbXB0eSgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzVGVzdDo6YWRkKGNvbnN0IFN0cmlu
ZyYgdGVzdE5hbWUsIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PiAoKT4gY2xvc3VyZSkKK3ZvaWQgV2ViUHJvY2Vzc1Rlc3Q6OmFkZChjb25zdCBTdHJpbmcmIHRl
c3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKFdl
YktpdFdlYkV4dGVuc2lvbiopPiBjbG9zdXJlKQogewogICAgIHRlc3RzTWFwKCkuYWRkKHRlc3RO
YW1lLCBXVEZNb3ZlKGNsb3N1cmUpKTsKIH0KQEAgLTYyLDE5ICs2MiwxOSBAQCB2b2lkIFdlYlBy
b2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdPYmplY3Qq
IG9iamVjdCkKICAgICB9LCBudWxscHRyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nl
c3NUZXN0PiBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpCitz
dGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpCiB7CiAg
ICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0c01hcCgpLmNvbnRhaW5zKHRlc3ROYW1lKSk7Ci0gICAgcmV0
dXJuIHRlc3RzTWFwKCkuZ2V0KHRlc3ROYW1lKSgpOworICAgIHJldHVybiB0ZXN0c01hcCgpLmdl
dCh0ZXN0TmFtZSkoZXh0ZW5zaW9uKTsKIH0KIAotc3RhdGljIGdib29sZWFuIHJ1blRlc3QoV2Vi
S2l0V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgY2hhciogdGVzdFBhdGgpCitzdGF0aWMgZ2Jvb2xl
YW4gcnVuVGVzdChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBjaGFyKiB0ZXN0UGF0aCwg
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCiB7CiAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfSVNfV0VCX1BBR0Uod2ViUGFnZSkpOwogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYlBhZ2UpKTsKICAgICBnX2Fz
c2VydF9ub25udWxsKHRlc3RQYXRoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4gdGVzdCA9IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCh0ZXN0
UGF0aCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gdGVzdCA9IFdlYlBy
b2Nlc3NUZXN0OjpjcmVhdGUoZXh0ZW5zaW9uLCBTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7
CiAgICAgcmV0dXJuIHRlc3QtPnJ1blRlc3QoZ19zdHJyc3RyKHRlc3RQYXRoLCAiLyIpICsgMSwg
d2ViUGFnZSk7CiB9CiAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgd2luZG93T2JqZWN0
Q2xlYXJlZENhbGxiYWNrKFdlYktpdFNjcmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSoK
ICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChjb250ZXh0LmdldCgpKSk7CiAgICAgYXV0byoganNDbGFzcyA9IGpzY19jb250
ZXh0X3JlZ2lzdGVyX2NsYXNzKGNvbnRleHQuZ2V0KCksICJXZWJQcm9jZXNzVGVzdFJ1bm5lciIs
IG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdlYlBy
b2Nlc3NUZXN0UnVubmVyRmluYWxpemUpKTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChqc0NsYXNzKSk7Ci0gICAganNj
X2NsYXNzX2FkZF9tZXRob2QoanNDbGFzcywgInJ1blRlc3QiLCBHX0NBTExCQUNLKHJ1blRlc3Qp
LCBOVUxMLCBOVUxMLCBHX1RZUEVfQk9PTEVBTiwgMSwgR19UWVBFX1NUUklORyk7CisgICAganNj
X2NsYXNzX2FkZF9tZXRob2QoanNDbGFzcywgInJ1blRlc3QiLCBHX0NBTExCQUNLKHJ1blRlc3Qp
LCBleHRlbnNpb24sIG51bGxwdHIsIEdfVFlQRV9CT09MRUFOLCAxLCBHX1RZUEVfU1RSSU5HKTsK
ICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB0ZXN0UnVubmVyID0gYWRvcHRHUmVmKGpzY192YWx1ZV9u
ZXdfb2JqZWN0KGNvbnRleHQuZ2V0KCksIGdfb2JqZWN0X3JlZih3ZWJQYWdlKSwganNDbGFzcykp
OwogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKHRlc3RSdW5uZXIuZ2V0KCkpKTsKICAgICBqc2NfY29udGV4dF9zZXRfdmFs
dWUoY29udGV4dC5nZXQoKSwgIldlYlByb2Nlc3NUZXN0UnVubmVyIiwgdGVzdFJ1bm5lci5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQ
cm9jZXNzVGVzdC5oCmluZGV4IDdhNDRjYjA1Y2Q0Li4wMWI1M2ViN2NlMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgK
QEAgLTM2LDggKzM2LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgYXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHT2JqZWN0Kik7CiAKLSAgICBzdGF0aWMgdm9pZCBh
ZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSwgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8
V2ViUHJvY2Vzc1Rlc3Q+ICgpPik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9j
ZXNzVGVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpOworICAgIHN0YXRpYyB2b2lk
IGFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0
cjxXZWJQcm9jZXNzVGVzdD4gKFdlYktpdFdlYkV4dGVuc2lvbiopPik7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbios
IGNvbnN0IFN0cmluZyYgdGVzdE5hbWUpOwogfTsKIAogI2RlZmluZSBSRUdJU1RFUl9URVNUKENs
YXNzTmFtZSwgVGVzdE5hbWUpIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVzdC5jcHAKaW5kZXggZjc5Y2YzNDUxODIuLjA1
ZDczZTJmNzBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9BdXRvY2xlYW51cHNUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcApAQCAtMjYsNyArMjYsNyBAQAogCiBjbGFzcyBB
dXRvY2xlYW51cHNUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBBdXRvY2xlYW51cHNUZXN0KCkpOyB9
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktp
dFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4o
bmV3IEF1dG9jbGVhbnVwc1Rlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRlc3RXZWJQ
cm9jZXNzQXV0b2NsZWFudXBzKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5j
cHAKaW5kZXggMWIzOWZhZmE3YTcuLjE2MDU5MjJkYTYyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwCkBA
IC0yNyw3ICsyNyw3IEBAIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogCiBjbGFz
cyBXZWJLaXRET01DbGllbnRSZWN0VGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkg
eyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERPTUNsaWVudFJlY3RUZXN0PihuZXcgV2Vi
S2l0RE9NQ2xpZW50UmVjdFRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFdlYktpdERPTUNsaWVudFJlY3RUZXN0PihuZXcgV2ViS2l0RE9NQ2xpZW50UmVj
dFRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjaGVja0NsaWVudFJlY3RQ
b3NpdGlvbihXZWJLaXRET01DbGllbnRSZWN0KiBjbGllbnRSZWN0KQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3Bw
CmluZGV4IGNjYTgyZmNlZTBjLi43OGRjMTU5NDNkOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcApAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRFbGVtZW50c05vSW5wdXRb
XSA9IHsgIkhUTUwiLCAiSEVBRCIsICJUSVRMRSIsICJCT0RZIgogCiBjbGFzcyBXZWJLaXRET01O
b2RlRmlsdGVyVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0RE9NTm9kZUZpbHRlclRlc3Qo
KSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUo
V2ViS2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NU
ZXN0PihuZXcgV2ViS2l0RE9NTm9kZUZpbHRlclRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBi
b29sIHRlc3RUcmVlV2Fsa2VyKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAKaW5kZXggYmE3ZmFi
OTljZjYuLmRiNGQxZTNlMTE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwCkBAIC0yOCw3ICsyOCw3IEBAIEdfR05VQ19CRUdJ
Tl9JR05PUkVfREVQUkVDQVRJT05TOwogCiBjbGFzcyBXZWJLaXRET01Ob2RlVGVzdCA6IHB1Ymxp
YyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERP
TU5vZGVUZXN0PihuZXcgV2ViS2l0RE9NTm9kZVRlc3QoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKikgeyBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYktpdERPTU5vZGVUZXN0PihuZXcgV2ViS2l0RE9NTm9k
ZVRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRlc3RIaWVyYXJjaHlOYXZpZ2F0aW9u
KFdlYktpdFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwCmluZGV4IDM1
ZWUzNTAzYTQwLi40N2VmYTAyOTkzYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKQEAg
LTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3hwYXRoX25zX3Jlc29sdmVyX2NsYXNz
X2luaXQoV2ViS2l0WFBhdGhOU1Jlc29sdmVyQ2xhc3MqKQogCiBjbGFzcyBXZWJLaXRET01YUGF0
aE5TUmVzb2x2ZXJUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRET01YUGF0aE5TUmVzb2x2
ZXJUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4g
Y3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQ
cm9jZXNzVGVzdD4obmV3IFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3QoKSk7IH0KIAogcHJp
dmF0ZToKICAgICB2b2lkIGV2YWx1YXRlRm9vQ2hpbGRUZXh0QW5kQ2hlY2tSZXN1bHQoV2ViS2l0
RE9NRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVy
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0IGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CmluZGV4IGVkYjhhMTM2MTAy
Li45ZGJjNTFlODM0NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtl
TGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dApA
QCAtNDMsNiArNDMsNyBAQCBzZXQoV2ViS2l0R0xpYkFQSVdlYlByb2Nlc3NUZXN0cwogICAgICR7
VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3Qu
Y3BwCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0
b3JUZXN0LmNwcAogICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvRnJhbWVUZXN0LmNwcAorICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0VGVzdC5jcHAKICAgICAke1RPT0xTX0RJUn0vVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcAogKQogCkBAIC0xNDQs
NiArMTQ1LDcgQEAgQUREX1dLMl9URVNUKFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgJHtU
T09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2kKIEFERF9XSzJfVEVTVChUZXN0V2Vi
c2l0ZURhdGEgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2Vic2l0ZURhdGEuY3BwKQogQUREX1dLMl9URVNUKFRlc3RDb25zb2xlTWVzc2FnZSAke1RPT0xT
X0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5j
cHApCiBBRERfV0syX1RFU1QoVGVzdERPTUVsZW1lbnQgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RE9NRWxlbWVudC5jcHApCitBRERfV0syX1RFU1QoVGVz
dE9yaWdpbldoaXRlbGlzdCAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwKQogCiAjIEZJWE1FOiBFbmFibGUgZm9yIFdQRQog
aWYgKFBPUlQgU1RSRVFVQUwgIkdUSyIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360112</attachid>
            <date>2019-01-25 07:12:06 -0800</date>
            <delta_ts>2019-01-28 01:06:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-origin-whitelist.diff</filename>
            <type>text/plain</type>
            <size>69509</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzOGE2NzY5ZTRlYS4uMTllNmEwOGY0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOS0wMS0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRv
IHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb25hbCBwb3J0IHBhcmFtZXRl
ciB0byBPcmlnaW5BY2Nlc3NFbnRyeS4gV2hlbiBwb3J0IGlzIFdURjo6bnVsbG9wdCBhbGwgcG9y
dHMgYXJlIGFsbG93ZWQgdG8ga2VlcAorICAgICAgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZG9tYWluSXNSZWdpc3RlcmFibGUgY29uc3QpOiBQYXNzIFdURjo6bnVsbG9wdCBhcyBwb3J0
IHRvIE9yaWdpbkFjY2Vzc0VudHJ5LgorICAgICAgICAqIHBhZ2UvT3JpZ2luQWNjZXNzRW50cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T3JpZ2luQWNjZXNzRW50cnk6Ok9yaWdpbkFjY2Vzc0Vu
dHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5BY2Nlc3NFbnRyeTo6bWF0
Y2hlc09yaWdpbiBjb25zdCk6IENoZWNrIHBvcnQgbWF0Y2hlcy4KKyAgICAgICAgKiBwYWdlL09y
aWdpbkFjY2Vzc0VudHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5BY2Nlc3NFbnRyeTo6
cG9ydCBjb25zdCk6IFJldHVybiB0aGUgcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PT0pOiBDaGVjayBhbHNvIHRoYXQgcG9ydHMgYXJlIGVxdWFsLgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6CisKIDIwMTktMDEtMjQgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdW01hcmdpbkNvbGxh
cHNpbmddIFJlZmFjdG9yIE1hcmdpbkNvbGxhcHNlOjp1cGRhdGVDb2xsYXBzZWRNYXJnaW5BZnRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWRiNzFmNTE2ZjYuLmZhZjhhNWI0MzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ5NDcsNyArNDk0Nyw3IEBAIGJvb2wgRG9jdW1l
bnQ6OmRvbWFpbklzUmVnaXN0ZXJhYmxlKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGlwQWRkcmVzc1NldHRpbmcgPSBzZXR0
aW5ncygpLnRyZWF0SVBBZGRyZXNzQXNEb21haW4oKSA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVh
dElQQWRkcmVzc0FzRG9tYWluIDogT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJ
UEFkZHJlc3M7Ci0gICAgT3JpZ2luQWNjZXNzRW50cnkgYWNjZXNzRW50cnkgeyBzZWN1cml0eU9y
aWdpbigpLnByb3RvY29sKCksIG5ld0RvbWFpbiwgT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3Vi
ZG9tYWlucywgaXBBZGRyZXNzU2V0dGluZyB9OworICAgIE9yaWdpbkFjY2Vzc0VudHJ5IGFjY2Vz
c0VudHJ5IHsgc2VjdXJpdHlPcmlnaW4oKS5wcm90b2NvbCgpLCBuZXdEb21haW4sIFdURjo6bnVs
bG9wdCwgT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucywgaXBBZGRyZXNzU2V0dGlu
ZyB9OwogICAgIGlmICghYWNjZXNzRW50cnkubWF0Y2hlc09yaWdpbihzZWN1cml0eU9yaWdpbigp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNj
ZXNzRW50cnkuY3BwCmluZGV4IDM3NjEwNGVjODJmLi5jMWE3MjE0OWFiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLU9y
aWdpbkFjY2Vzc0VudHJ5OjpPcmlnaW5BY2Nlc3NFbnRyeShjb25zdCBTdHJpbmcmIHByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGhvc3QsIFN1YmRvbWFpblNldHRpbmcgc3ViZG9tYWluU2V0dGluZywg
SVBBZGRyZXNzU2V0dGluZyBpcEFkZHJlc3NTZXR0aW5nKQorCitPcmlnaW5BY2Nlc3NFbnRyeTo6
T3JpZ2luQWNjZXNzRW50cnkoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBo
b3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgU3ViZG9tYWluU2V0dGluZyBzdWJkb21haW5T
ZXR0aW5nLCBJUEFkZHJlc3NTZXR0aW5nIGlwQWRkcmVzc1NldHRpbmcpCiAgICAgOiBtX3Byb3Rv
Y29sKHByb3RvY29sLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgLCBtX2hvc3QoaG9z
dC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQorICAgICwgbV9wb3J0KHBvcnQpCiAgICAgLCBt
X3N1YmRvbWFpblNldHRpbmdzKHN1YmRvbWFpblNldHRpbmcpCiAgICAgLCBtX2lwQWRkcmVzc1Nl
dHRpbmdzKGlwQWRkcmVzc1NldHRpbmcpCiAgICAgLCBtX2hvc3RJc0lQQWRkcmVzcyhVUkw6Omhv
c3RJc0lQQWRkcmVzcyhtX2hvc3QpKQpAQCAtNTIsMTEgKzUzLDE1IEBAIGJvb2wgT3JpZ2luQWNj
ZXNzRW50cnk6Om1hdGNoZXNPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29u
c3QKIAogICAgIGlmIChtX3Byb3RvY29sICE9IG9yaWdpbi5wcm90b2NvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKKyAgICAvLyBJZiBtX3BvcnQgaXMgV1RGOjpudWxsb3B0LCBp
dCBtZWFucyBhbnkgcG9ydCwgbm90IHRoZSBkZWZhdWx0IG9uZS4KKyAgICBpZiAobV9wb3J0ICYm
ICgob3JpZ2luLnBvcnQoKSAmJiBtX3BvcnQudmFsdWUoKSAhPSBvcmlnaW4ucG9ydCgpLnZhbHVl
KCkpIHx8ICghb3JpZ2luLnBvcnQoKSAmJiAhV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
bV9wb3J0LnZhbHVlKCksIG1fcHJvdG9jb2wpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIC8vIFNwZWNpYWwgY2FzZTogSW5jbHVkZSBzdWJkb21haW5zIGFuZCBlbXB0eSBob3N0IG1l
YW5zICJhbGwgaG9zdHMsIGluY2x1ZGluZyBpcCBhZGRyZXNzZXMiLgogICAgIGlmIChtX3N1YmRv
bWFpblNldHRpbmdzID09IEFsbG93U3ViZG9tYWlucyAmJiBtX2hvc3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogICAgIC8vIEV4YWN0IG1hdGNoLgogICAgIGlmICht
X2hvc3QgPT0gb3JpZ2luLmhvc3QoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmgKaW5kZXggZjU1ZjdkOTM4YzcuLjg3Mzc4M2ViYzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5oCkBAIC00OSwxNyArNDks
MTkgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBJZiBob3N0IGlzIGVtcHR5IHN0cmluZyBh
bmQgU3ViZG9tYWluU2V0dGluZyBpcyBBbGxvd1N1YmRvbWFpbnMsIHRoZSBlbnRyeSB3aWxsIG1h
dGNoIGFsbCBkb21haW5zIGluIHRoZSBzcGVjaWZpZWQgcHJvdG9jb2wuCi0gICAgT3JpZ2luQWNj
ZXNzRW50cnkoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBTdWJk
b21haW5TZXR0aW5nLCBJUEFkZHJlc3NTZXR0aW5nKTsKKyAgICBPcmlnaW5BY2Nlc3NFbnRyeShj
b25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQx
Nl90PiBwb3J0LCBTdWJkb21haW5TZXR0aW5nLCBJUEFkZHJlc3NTZXR0aW5nKTsKICAgICBib29s
IG1hdGNoZXNPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKIAogICAgIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CisgICAgT3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQ7IH0KICAgICBTdWJkb21haW5T
ZXR0aW5nIHN1YmRvbWFpblNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJkb21haW5TZXR0
aW5nczsgfQogICAgIElQQWRkcmVzc1NldHRpbmcgaXBBZGRyZXNzU2V0dGluZ3MoKSBjb25zdCB7
IHJldHVybiBtX2lwQWRkcmVzc1NldHRpbmdzOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
cHJvdG9jb2w7CiAgICAgU3RyaW5nIG1faG9zdDsKKyAgICBPcHRpb25hbDx1aW50MTZfdD4gbV9w
b3J0OwogICAgIFN1YmRvbWFpblNldHRpbmcgbV9zdWJkb21haW5TZXR0aW5nczsKICAgICBJUEFk
ZHJlc3NTZXR0aW5nIG1faXBBZGRyZXNzU2V0dGluZ3M7CiAgICAgYm9vbCBtX2hvc3RJc0lQQWRk
cmVzczsKQEAgLTY5LDYgKzcxLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmln
aW5BY2Nlc3NFbnRyeSYgYSwgY29uc3QgT3JpZ2luQWNjZXNzRW50cnkmIGIpCiB7CiAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5wcm90b2NvbCgpLCBiLnByb3RvY29sKCkpCiAg
ICAgICAgICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5ob3N0KCksIGIuaG9zdCgpKQorICAg
ICAgICAmJiBhLnBvcnQoKSA9PSBiLnBvcnQoKQogICAgICAgICAmJiBhLnN1YmRvbWFpblNldHRp
bmdzKCkgPT0gYi5zdWJkb21haW5TZXR0aW5ncygpCiAgICAgICAgICYmIGEuaXBBZGRyZXNzU2V0
dGluZ3MoKSA9PSBiLmlwQWRkcmVzc1NldHRpbmdzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhLi4xYzJhMzcyZWE1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBib29sIFNl
Y3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmln
aW4qIGFjdGl2ZU9yaWdpbgogICAgIHJldHVybiBpc0FjY2Vzc1doaXRlTGlzdGVkKGFjdGl2ZU9y
aWdpbiwgJnRhcmdldE9yaWdpbi5nZXQoKSk7CiB9CiAKLXZvaWQgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3ZvaWQg
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgT3B0aW9uYWw8dWludDE2X3Q+IGRl
c3RpbmF0aW9uUG9ydCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKICAgICBB
U1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlz
VW5pcXVlKCkpCkBAIC0xOTIsMTAgKzE5MiwxMCBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwog
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5B
Y2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwotICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nl
c3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDog
T3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6
OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKKyAgICBsaXN0LT5hcHBlbmQoT3JpZ2luQWNj
ZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGRlc3RpbmF0
aW9uUG9ydCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6
QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywg
T3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKIH0KIAotdm9p
ZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBy
b3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKQordm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9t
YWluLCBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkp
OwogICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2
b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTZWN1cml0eU9yaWdpbiYgc291cgogICAgICAgICByZXR1cm47CiAKICAgICBPcmlnaW5BY2Nl
c3NXaGl0ZUxpc3QmIGxpc3QgPSAqaXQtPnZhbHVlOwotICAgIE9yaWdpbkFjY2Vzc0VudHJ5IG9y
aWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRv
bWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nl
c3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcyk7CisgICAgT3JpZ2luQWNjZXNzRW50
cnkgb3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21h
aW4sIGRlc3RpbmF0aW9uUG9ydCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5B
Y2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93
U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3Mp
OwogICAgIGlmICghbGlzdC5yZW1vdmVGaXJzdChvcmlnaW5BY2Nlc3NFbnRyeSkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGlj
eS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCmluZGV4IDUzM2IxZDRm
YmRhLi40ZGQ5NGFiZDNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAt
NjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcmVzdHJpY3RBY2Nlc3NUb0xv
Y2FsKCk7CiAgICAgc3RhdGljIGJvb2wgYWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBhZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21h
aW4sIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvbkRvbWFpbiwgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3RpbmF0aW9uUG9ydCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0Fj
Y2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzZjcxMWVhYTNmOC4u
ODkwMjAzZWU5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTktMDEtMjUgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEgc2VjdXJp
dHkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTM0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBvc2UgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCks
IEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgpIGFuZAor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkgaW4g
R0xpYiBBUEkuIFRoaXMgcGF0Y2ggbW92ZXMgV2ViS2l0U2VjdXJpdHlPcmlnaW4gZnJvbSBVSVBy
b2Nlc3MKKyAgICAgICAgdG8gU2hhcmVkIGFuZCBtYWtlIGl0IGF2YWlsYWJsZSBmcm9tIHRoZSB3
ZWIgZXh0ZW5zaW9ucyBBUEkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IEFkZCBwb3J0
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3Zl
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjog
RGl0dG8uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQ
SS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcC4KKyAgICAgICAg
KHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdCk6IEludGVybmFsIGZ1bmN0aW9uIG9ubHkg
dXNlZCBieSB0ZXN0cy4KKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaC4KKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oLgor
ICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBQYXNzIFdURjo6bnVs
bG9wdCBhcyBwb3J0LgorICAgICAgICAoV0tCdW5kbGVSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lv
bkNyZWF0ZSk6IEtlZXAgYSByZWZlcmVuY2UgdG8gSW5qZWN0ZWRCdW5kbGUgaW4gV2ViS2l0V2Vi
RXh0ZW5zaW9uIHByaXZhdGUgc3RydWN0LgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25f
YWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRl
bnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Vi
a2l0LXdlYi1leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4
dDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0LXdl
Yi1leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IERpdHRvLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKwogMjAx
OS0wMS0yNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBpT1M6
IFNwbGl0IGtleWJvYXJkIHNob3VsZCBub3Qgc2hyaW5rIHZpc3VhbFZpZXdwb3J0LmhlaWdodApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBlNjM0MTQ3ZGViYS4uOWVjZTYyMzk5ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01OTUsMTQgKzU5NSwxNCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELAogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIE9wdGlvbmFsPHVp
bnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpOworICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0
aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGRlc3RpbmF0aW9uUG9ydCwgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBPcHRpb25hbDx1
aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQo
KSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBvcnQs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCAwODhkZThmZGVkMS4uNTgwZTZlNDAyMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTE5Niw4ICsxOTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckFsbEZyYW1lc09uUGFnZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlEKTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiB0b3BMZXZlbE9yaWdpbik7CiAKLSAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBPcHRpb25hbDx1
aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KTsKKyAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Q
b3J0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpOwogCiAgICAgc3RydWN0IFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBmMjQ1YmNhN2RjNi4uNmM3NGZiODBkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjIsOCArNjIsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgTG9nVXNlckludGVy
YWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHRvcExldmVsT3JpZ2luKQog
I2VuZGlmCiAKLSAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNl
T3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgUmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpOworICAgIEFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3Vy
Y2VPcmlnaW4sIFN0cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25I
b3N0LCBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKTsKKyAgICBSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShT
dHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRl
c3RpbmF0aW9uSG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3RpbmF0aW9uUG9ydCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgUmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7CiAKICAgICBHZXROZXR3b3JrTG9hZEluZm9ybWF0aW9uUmVxdWVzdCh1aW50NjRfdCBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QpIExlZ2FjeVN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDIyODEyNzRjZjBjLi43
NGUzOWEyNjllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04MjQsMTIgKzgyNCwxNCBA
QCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudS5jcHAKICAgICAgICAgICAgICR7V0VCS0lU
X0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKICAgICAgICAg
ICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3Bw
CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dl
YktpdFVSSVJlcXVlc3QuY3BwCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAKICAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaAogICAgICAgICAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0
ZW0uaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRI
aXRUZXN0UmVzdWx0LmgKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAgICAgICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaAogICAgICAgICAgICAgJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliLyouY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9y
aWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9y
aWdpbi5jcHAKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXgg
MmUwNzg5ZDQzMDEuLjJjNjg4MDZmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC02OCw2ICs2OCwx
MyBAQCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgd2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1
cml0eU9yaWdpbihXZWJLaXRTZWN1cml0eU9yaQogICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luLmdldCgpOwogfQogCisvLyBJbnRlcm5hbCBBUEkgb25seSB1c2VkIGZvciB0ZXN0aW5n
LgorYm9vbCB3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3QoV2ViS2l0U2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgY29uc3QgY2hhciogdXJsKQoreworICAgIEFTU0VSVChvcmlnaW4pOworICAg
IHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KFVSTChVUkwoKSwgU3Ry
aW5nOjpmcm9tVVRGOCh1cmwpKSk7Cit9CisKIC8qKgogICogd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9uZXc6CiAgKiBAcHJvdG9jb2w6IFRoZSBwcm90b2NvbCBmb3IgdGhlIG5ldyBvcmlnaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3Vy
aXR5T3JpZ2luSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uZGU5YTk4MmVlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFsLmgKQEAgLTAsMCArMSwyNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luLmgiCisKK2Jvb2wgd2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KFdlYktpdFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgY2hhciopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmln
aW5Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpblByaXZhdGUuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgK
cmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luUHJpdmF0ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCBhNzE4ODA1MTU5NC4uZjZhNjk0OGRk
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtNzAsNiArNzAsNyBAQCBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnUuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdENv
bnRleHRNZW51QWN0aW9ucy5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnVJdGVtLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0
UmVzdWx0LmNwcCBAbm8tdW5pZnkKK1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdp
bi5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgQG5v
LXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIEBuby11bmlmeQog
CkBAIC0xNjUsNyArMTY2LDYgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByaXZhdGUuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNp
b24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNjcmlwdERpYWxvZy5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNw
cCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAg
QG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwIEBuby11bmlm
eQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0CmluZGV4IDE2Yjg5OTMwOGZmLi45YTYwYmU0OTIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0CkBAIC02Nyw2ICs2Nyw3IEBAIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudS5j
cHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmNw
cCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIEBu
by11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIEBuby11bmlm
eQorU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFNo
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5CiAKQEAgLTE1MCw3ICsxNTEsNiBA
QCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJpdmF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2NyaXB0RGlhbG9nLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3BwIEBuby11bmlmeQotVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VUlDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCmluZGV4IDZkY2EyYjc3
ZWE2Li4yYTQ0M2Y4ODg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVk
KF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAm
JiAhZGVmaW5lZChfX1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJyb3IgIk9u
bHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDc1NmFhYTRkZTcyLi44NTlh
NjBiZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xNDUxLDYgKzE0
NTEsOSBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbkluaXRpYWxpemVG
dW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZVdpdGhVc2VyRGF0YUZ1bmN0aW9u
CiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZQord2Via2l0X3dlYl9leHRlbnNpb25fYWRk
X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1v
dmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jl
c2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdl
YktpdFdlYkV4dGVuc2lvbkNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKaW5kZXggODBlMDQ1MjNjN2YuLjQ0ZTNl
NjVjYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRTZWN1cml0eU9yaWdpbi5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChf
X1dFQktJVF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJyb3IgIk9ubHkgPHdwZS93ZWJr
aXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcAppbmRleCBiYzYyMWMwODBiYy4uZWI5OTYzYWY1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cApAQCAtMTk4LDEyICsxOTgsMTIgQEAgdm9pZCBXS0J1bmRsZVNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3UKIAogdm9pZCBX
S0J1bmRsZUFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdLQnVuZGxlUmVmIGJ1bmRsZVJl
ZiwgV0tTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoV2ViS2l0Ojp0b1dURlN0cmluZyhzb3VyY2VPcmlnaW4pLCBXZWJL
aXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCBXZWJLaXQ6OnRvV1RGU3RyaW5n
KGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChidW5kbGVSZWYpLT5hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXZWJL
aXQ6OnRvV1RGU3RyaW5nKHNvdXJjZU9yaWdpbiksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGlu
YXRpb25Qcm90b2NvbCksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgV1RG
OjpudWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgV0tCdW5k
bGVSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXS0J1bmRsZVJlZiBidW5kbGVSZWYs
IFdLU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgV0tTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFdlYktpdDo6dG9XVEZTdHJpbmcoc291cmNlT3JpZ2luKSwgV2Vi
S2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgV2ViS2l0Ojp0b1dURlN0cmlu
ZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
V2ViS2l0Ojp0b1dURlN0cmluZyhzb3VyY2VPcmlnaW4pLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRl
c3RpbmF0aW9uUHJvdG9jb2wpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCks
IFdURjo6bnVsbG9wdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIFdL
QnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggMDgyZDYw
OWE4N2IuLmQwNDk4ZjgxMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0
ZW5zaW9uLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIK
ICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZUJ1bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SVN0cmluZy5oIgorI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQ
YWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTExOCw2ICsxMTksNyBA
QCBlbnVtIHsKIHR5cGVkZWYgSGFzaE1hcDxXZWJQYWdlKiwgR1JlZlB0cjxXZWJLaXRXZWJQYWdl
PiA+IFdlYlBhZ2VNYXA7CiAKIHN0cnVjdCBfV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSB7Cisg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBidW5kbGU7CiAgICAgV2ViUGFnZU1hcCBwYWdlczsK
ICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgYm9vbCBnYXJiYWdlQ29sbGVjdE9uUGFn
ZURlc3Ryb3k7CkBAIC0xOTYsNiArMTk4LDcgQEAgcHJpdmF0ZToKIFdlYktpdFdlYkV4dGVuc2lv
biogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAg
ICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOworICAgIGV4dGVu
c2lvbi0+cHJpdi0+YnVuZGxlID0gYnVuZGxlOwogICAgIGJ1bmRsZS0+c2V0Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikp
OwogICAgIHJldHVybiBleHRlbnNpb247CiB9CkBAIC0yMjksMyArMjMyLDgzIEBAIFdlYktpdFdl
YlBhZ2UqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4dGVuc2lvbiog
ZXh0ZW5zaW9uLCBndWluCiAKICAgICByZXR1cm4gMDsKIH0KKworLyoqCisgKiB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnk6CisgKiBAZXh0ZW5z
aW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEBvcmlnaW46IGEgI1dlYktpdFNlY3VyaXR5
T3JpZ2luCisgKiBAcHJvdG9jb2w6IHRoZSBkZXN0aW5hdGlvbiBwcm90b2NvbAorICogQGhvc3Q6
IChudWxsYWJsZSk6IHRoZSBkZXN0aW5hdGlvbiBob3N0LCBvciAlTlVMTCBmb3IgYW55IGhvc3QK
KyAqIEBwb3J0OiB0aGUgZGVzdGluYXRpb24gcG9ydCwgb3IgLTEgZm9yIGFueSBwb3J0LCBvciAw
IHRvIGluZGljYXRlIHRoZQorICogICAgICAgIGRlZmF1bHQgcG9ydCBmb3IgQHByb3RvY29sCisg
KiBAYWxsb3dfc3ViZG9tYWluczogd2hldGhlciB0byBhbGxvdyBzdWJkb21haW5zIHdoZW4gQGhv
c3QgaXMgbm90ICVOVUxMCisgKgorICogQWRkIGEgd2hpdGVsaXN0IGVudHJ5IGZvciBvcmlnaW4g
dG8gYWxsb3cgY3Jvc3Mgb3JpZ2luIGFjY2VzcyB0byB0aGUgZ2l2ZW4gQHByb3RvY29sIGFuZCBA
aG9zdC4KKyAqIElmIEBob3N0IGlzICVOVUxMLCBhbGwgaG9zdHMgYXJlIGFsbG93ZWQgYW5kIHRo
ZSBAYWxsb3dfc3ViZG9tYWlucyBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKyAqIElmIEBhbGxvd19z
dWJkb21haW5zIGlzICVUUlVFLCBzdWJkb21haW5zIG9mIEBob3N0IGZvciB0aGUgZ2l2ZW4gQHBy
b3RvY29sIGFyZSBhbHNvIGFsbG93ZWQgdG8KKyAqIGJlIGFjY2Vzc2VkIGZyb20gQG9yaWdpbi4K
KyAqCisgKiBTaW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9v
cmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biwgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgY2hhciogcHJvdG9jb2wsIGNv
bnN0IGNoYXIqIGhvc3QsIGdpbnQxNiBwb3J0LCBnYm9vbGVhbiBhbGxvd1N1YmRvbWFpbnMpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24p
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKG9yaWdpbik7CisgICAgZ19yZXR1cm5faWZfZmFpbCgh
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChwcm90b2NvbCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChwb3J0ID49IC0xKTsKKwor
ICAgIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQ7CisgICAgaWYgKCFwb3J0KQor
ICAgICAgICBkZXN0aW5hdGlvblBvcnQgPSBXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3Ry
aW5nOjpmcm9tVVRGOChwcm90b2NvbCkpOworICAgIGVsc2UgaWYgKHBvcnQgPiAwKQorICAgICAg
ICBkZXN0aW5hdGlvblBvcnQgPSBwb3J0OworCisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUt
PmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2Vj
dXJpdHlPcmlnaW4ob3JpZ2luKS50b1N0cmluZygpLCBTdHJpbmc6OmZyb21VVEY4KHByb3RvY29s
KSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSwgZGVzdGluYXRpb25Qb3J0LCBob3N0ID8gYWxsb3dT
dWJkb21haW5zIDogdHJ1ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9leHRlbnNpb25fcmVt
b3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5OgorICogQGV4dGVuc2lvbjogYSAjV2Vi
S2l0V2ViRXh0ZW5zaW9uCisgKiBAb3JpZ2luOiBhICNXZWJLaXRTZWN1cml0eU9yaWdpbgorICog
QHByb3RvY29sOiB0aGUgZGVzdGluYXRpb24gcHJvdG9jb2wKKyAqIEBob3N0OiAobnVsbGFibGUp
OiB0aGUgZGVzdGluYXRpb24gaG9zdCwgb3IgJU5VTEwgZm9yIGFueSBob3N0CisgKiBAcG9ydDog
dGhlIGRlc3RpbmF0aW9uIHBvcnQsIG9yIC0xIGZvciBhbnkgcG9ydCwgb3IgMCB0byBpbmRpY2F0
ZSB0aGUKKyAqICAgICAgICBkZWZhdWx0IHBvcnQgZm9yIEBwcm90b2NvbAorICogQGFsbG93X3N1
YmRvbWFpbnM6IHdoZXRoZXIgc3ViZG9tYWlucyB3ZXJlIGFsbG93ZWQgd2hlbiBAaG9zdCBpcyBu
b3QgJU5VTEwKKyAqCisgKiBSZW1vdmUgYSB3aGl0ZWxpc3QgZW50cnkgZm9yIG9yaWdpbiBwcmV2
aW91c2x5IGFkZGVkIHdpdGggd2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0X2VudHJ5KCkuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRf
d2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkoV2ViS2l0
V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IGNoYXIqIHByb3RvY29sLCBjb25zdCBjaGFyKiBob3N0LCBnaW50MTYgcG9ydCwgZ2Jvb2xl
YW4gYWxsb3dTdWJkb21haW5zKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChvcmlnaW4pOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9y
aWdpbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocHJvdG9jb2wpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwocG9ydCA+PSAtMSk7CisKKyAgICBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Q
b3J0OworICAgIGlmICghcG9ydCkKKyAgICAgICAgZGVzdGluYXRpb25Qb3J0ID0gV1RGOjpkZWZh
dWx0UG9ydEZvclByb3RvY29sKFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpKTsKKyAgICBlbHNl
IGlmIChwb3J0ID4gMCkKKyAgICAgICAgZGVzdGluYXRpb25Qb3J0ID0gcG9ydDsKKworICAgIGV4
dGVuc2lvbi0+cHJpdi0+YnVuZGxlLT5yZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSh3
ZWJraXRTZWN1cml0eU9yaWdpbkdldFNlY3VyaXR5T3JpZ2luKG9yaWdpbikudG9TdHJpbmcoKSwg
U3RyaW5nOjpmcm9tVVRGOChwcm90b2NvbCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCksIGRlc3Rp
bmF0aW9uUG9ydCwgaG9zdCA/IGFsbG93U3ViZG9tYWlucyA6IHRydWUpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0czoKKyAq
IEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICoKKyAqIFJlbW92ZSBhbGwgd2hp
dGVsaXN0IGVudHJpZXMgcHJldmlvdXNseSBhZGRlZCB3aXRoIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSgpLgorICoKKyAqIFNpbmNlOiAyLjI0
CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0
ZWxpc3RzKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSk7CisKKyAgICBleHRlbnNp
b24tPnByaXYtPmJ1bmRsZS0+cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IDM0MTM2YTM3ZDI1Li40OTI5
NmZmM2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1cml0eU9yaWdp
bi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xT
CkBAIC03NiwxMSArNzcsMzAgQEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9
OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9p
ZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X3BhZ2UgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAg
ICBwYWdlX2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRf
b3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpl
eHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy
ICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdp
bnQxNiAgICAgICAgICAgICAgICBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgYWxsb3df
c3ViZG9tYWlucyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fcmVt
b3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5IChXZWJLaXRXZWJFeHRlbnNpb24gICAq
ZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpob3N0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
aW50MTYgICAgICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgIGFsbG93
X3N1YmRvbWFpbnMpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jl
c2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cyAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAg
KmV4dGVuc2lvbik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQt
d2ViLWV4dGVuc2lvbi5oCmluZGV4IDFjOTVmMWQzYWVkLi4xNDY5MDg5NjYxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0
LXdlYi1leHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdEZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTY3JpcHRXb3JsZC5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJl
c3BvbnNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRX
ZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oCmluZGV4IGE2ZmZiNDg1MDQ4Li42ODYzZWUxNzU4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERl
ZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0V2ViUGFnZS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03NiwxMSArNzcsMzAg
QEAgc3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb25DbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdU
eXBlCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Ug
KFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgcGFnZV9pZCk7Cit3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lv
biAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICBwYWdlX2lkKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0
ZWxpc3RfZW50cnkgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2Nv
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQxNiAgICAgICAgICAgICAg
ICBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgYWxsb3dfc3ViZG9tYWlucyk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0X2VudHJ5IChXZWJLaXRXZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRTZWN1cml0eU9yaWdpbiAqb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqcHJvdG9j
b2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50MTYgICAgICAgICAgICAg
ICAgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgIGFsbG93X3N1YmRvbWFpbnMpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0cyAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lvbik7CiAKIEdf
RU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3Bl
LXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dAppbmRleCBhMWQ2ODQ0ZGRjZi4uZmQyMDgz
YzRmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9kb2NzL3dwZS13
ZWJleHRlbnNpb25zLTAuMS1zZWN0aW9ucy50eHQKQEAgLTEzLDYgKzEzLDkgQEAgV2ViS2l0V2Vi
RXh0ZW5zaW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0aWFsaXplRnVuY3Rpb24KIFdlYktpdFdl
YkV4dGVuc2lvbkluaXRpYWxpemVXaXRoVXNlckRhdGFGdW5jdGlvbgogd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3BhZ2UKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3do
aXRlbGlzdF9lbnRyeQord2Via2l0X3dlYl9leHRlbnNpb25fcmVtb3ZlX29yaWdpbl9hY2Nlc3Nf
d2hpdGVsaXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNz
X3doaXRlbGlzdHMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJFeHRlbnNpb25D
bGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXggNzk2
YjIxZTQxZjEuLmFkZTRiOGRjZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEZyYW1lLmg+CiAjaW5jbHVkZSA8d3Bl
L1dlYktpdFNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFNlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0VVJJUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViRWRpdG9yLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAppbmRleCAxZGJiZGNmZTQ5Ny4uY2RlZDkyYjI1ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMzkyLDE3ICszOTIsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0
U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGIK
ICAgICAgICAgKCppdGVyKS0+c2V0dGluZ3MoKS5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
ZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIE9w
dGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0
KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6QWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkgeyBzb3Vy
Y2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgZGVz
dGluYXRpb25Qb3J0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2Nv
bCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBvcnQsIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zIH0sIDApOwogCiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVt
b3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbkhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNv
dXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkgeyBzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0
aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CisgICAgU2VjdXJpdHlQ
b2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IGRlc3RpbmF0aW9uSG9zdCwgZGVzdGluYXRpb25Qb3J0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9y
aWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBv
cnQsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zIH0sIDApOwogfQogCiB2b2lkIEluamVjdGVk
QnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRl
eCAyNTVjOWY1OTdjZi4uZDZkZjgwMWJlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0xMDksOCAr
MTA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoV2ViUGFn
ZUdyb3VwUHJveHkqLCBib29sKTsKICAgICB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkKFdlYlBhZ2VHcm91cFByb3h5KiwgYm9vbCk7CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsKLSAgICB2b2lkIGFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGJvb2wpOwotICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Cisg
ICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDx1aW50MTZfdD4sIGJvb2wpOworICAg
IHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8dWludDE2X3Q+LCBib29sKTsKICAg
ICB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogICAgIHZvaWQgc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsKICAg
ICBpbnQgbnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSosIGRvdWJsZSwgZG91YmxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCAyNDczOTFlZDUxYS4uYjQwODJlNDY3ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMS0yNSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0
eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3MgV1RGOjpudWxsb3B0IGFzIHBvcnQgdG8gT3JpZ2luQWNjZXNzRW50cnkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2FkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlvblByb3RvY29sOmRl
c3RpbmF0aW9uSG9zdDphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczpdKToKKyAgICAgICAgKCtb
V2ViVmlldyBfcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRoU291cmNlT3JpZ2lu
OmRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVzdGluYXRpb25Ib3N0OmFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zOl0pOgorCiAyMDE5LTAxLTI0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBBZCBDbGljayBBdHRyaWJ1dGlvbiBhcyBhbiBpbnRlcm5hbC9l
eHBlcmltZW50YWwgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IDdjNTA5MmU2Mjc4Li45MGMyMTIyNzlmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDY1NywxMiArNDY1NywxMiBAQCBJR05P
UkVfV0FSTklOR1NfRU5ECiAKICsgKHZvaWQpX2FkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVzdGluYXRpb25Qcm90
b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0aW9uSG9zdDooTlNT
dHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJPT0wp
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
c291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgV1RGOjpudWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKICsgKHZv
aWQpX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNT
dHJpbmcgKilzb3VyY2VPcmlnaW4gZGVzdGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0
aW5hdGlvblByb3RvY29sIGRlc3RpbmF0aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhv
c3QgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQo
KSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiku
Z2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgV1RGOjpudWxsb3B0
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKICsgKHZvaWQpX3Jlc2V0T3JpZ2lu
QWNjZXNzV2hpdGVsaXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDVhY2FkZjE4
NThlLi5mY2RjNjYzODg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE5LTAxLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hp
dGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBXVEY6Om51bGxvcHQgYXMgcG9ydCB0byBP
cmlnaW5BY2Nlc3NFbnRyeS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViVmlldzo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorCiAyMDE5LTAxLTI0ICBSb3NzIEtp
cnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBNb3ZlIEZpbGVTeXN0
ZW0gdG8gV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGUzMzEwNjNhMGJm
Li40NGVhMTRmMDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTcwNzQs
MTMgKzcwNzQsMTMgQEAgSFJFU1VMVCBXZWJWaWV3OjppbnZhbGlkYXRlQmFja2luZ1N0b3JlKF9J
bl8gY29uc3QgUkVDVCogcmVjdCkKIAogSFJFU1VMVCBXZWJWaWV3OjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShfSW5fIEJTVFIgc291cmNlT3JpZ2luLCBfSW5fIEJTVFIgZGVzdGluYXRp
b25Qcm90b2NvbCwgX0luXyBCU1RSIGRlc3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9TdHJpbmcoc291
cmNlT3JpZ2luKSkuZ2V0KCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wpLCB0b1N0cmlu
ZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2Vj
dXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNvdXJjZU9yaWdpbikpLmdldCgpLCB0b1N0cmlu
ZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgV1RGOjpu
dWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKIEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoX0lu
XyBCU1RSIHNvdXJjZU9yaWdpbiwgX0luXyBCU1RSIGRlc3RpbmF0aW9uUHJvdG9jb2wsIF9Jbl8g
QlNUUiBkZXN0aW5hdGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7
Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNvdXJjZU9yaWdpbikpLmdl
dCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJpbmcoZGVzdGluYXRpb25I
b3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5Ojpy
ZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyh0b1N0cmluZyhzb3VyY2VPcmlnaW4pKS5nZXQoKSwgdG9TdHJpbmcoZGVzdGluYXRp
b25Qcm90b2NvbCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIFdURjo6bnVsbG9wdCwgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDliYTk0ZGQ1Mzcu
LjA5MTU5ZjJhNTYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTktMDEtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIHdlYiBleHRl
bnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEgc2VjdXJpdHkgb3JpZ2luCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0ODkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdGVz
dCB0byBjaGVjayB0aGUgbmV3IEFQSS4gVGhpcyBwYXRjaCByZWZhY3RvcnMgV2ViUHJvY2VzcyB0
ZXN0cyB0byByZWNlaXZlIHRoZSBXZWJLaXRXZWJFeHRlbnNpb24gYXMKKyAgICAgICAgcGFyYW1l
dGVyIG9mIGNyZWF0ZSBmdW5jdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5jcHA6CisgICAgICAgIChET01FbGVtZW50VGVzdDo6
Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRpdG9y
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0OjpjcmVhdGUpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0RnJhbWVUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9PcmlnaW5XaGl0ZWxpc3RUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChP
cmlnaW5XaGl0ZWxpc3RUZXN0OjpjcmVhdGUpOgorICAgICAgICAoT3JpZ2luV2hpdGVsaXN0VGVz
dDo6T3JpZ2luV2hpdGVsaXN0VGVzdCk6CisgICAgICAgIChPcmlnaW5XaGl0ZWxpc3RUZXN0Ojp0
ZXN0V2hpdGVsaXN0KToKKyAgICAgICAgKHJlZ2lzdGVyVGVzdHMpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3JpZ2luV2hpdGVsaXN0LmNwcDogQWRkZWQu
CisgICAgICAgICh0ZXN0T3JpZ2luV2hpdGVsaXN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6Cisg
ICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0OjphZGQpOgor
ICAgICAgICAoV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChydW5UZXN0KToKKyAg
ICAgICAgKHdpbmRvd09iamVjdENsZWFyZWRDYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVzdC5jcHA6CisgICAgICAgIChB
dXRvY2xlYW51cHNUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTUNsaWVu
dFJlY3RUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTU5vZGVGaWx0ZXJU
ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RP
TU5vZGVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTU5vZGVUZXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRl
c3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVzdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQ6CisKIDIwMTktMDEt
MjQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRl
IG1hY09TIEpTQyBib3QgY29uZmlndXJhdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3BwCmluZGV4IGNkNjAzYWMy
YjU3Li43YTViY2Q1N2U4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL0RPTUVsZW1lbnRUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKIGNs
YXNzIERPTUVsZW1lbnRUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBET01FbGVtZW50VGVzdCgpKTsg
fQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJL
aXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
KG5ldyBET01FbGVtZW50VGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgdGVzdEF1dG9G
aWxsKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvRWRpdG9yVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvRWRpdG9yVGVzdC5jcHAKaW5kZXggNWY3NjNlNGJiY2QuLjgzYzIzYjQ2
MDNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRp
dG9yVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0Vk
aXRvclRlc3QuY3BwCkBAIC0yMyw3ICsyMyw3IEBACiAKIGNsYXNzIFdlYktpdFdlYkVkaXRvclRl
c3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdFdlYkVkaXRvclRlc3QoKSk7IH0KKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5z
aW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0
V2ViRWRpdG9yVGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHNlbGVjdGlv
bkNoYW5nZWRDYWxsYmFjayhib29sKiBzZWxlY3Rpb25DaGFuZ2VkKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcAppbmRleCAyZTY3YzBh
N2EzMi4uZWEyOTQxODAwMGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKIGNsYXNzIFdlYktp
dEZyYW1lVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0RnJhbWVUZXN0KCkpOyB9CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4
dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdl
YktpdEZyYW1lVGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgdGVzdE1haW5GcmFtZShX
ZWJLaXRXZWJQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YjRiMzQwMjM5NQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9PcmlnaW5XaGl0ZWxpc3RUZXN0
LmNwcApAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJLaXRTZWN1cml0eU9yaWdp
bkludGVybmFsLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3QuaCIKKyNpbmNsdWRlIDxnaW8v
Z2lvLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCitjbGFzcyBPcmlnaW5X
aGl0ZWxpc3RUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5z
aW9uKiBleHRlbnNpb24pIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4o
bmV3IE9yaWdpbldoaXRlbGlzdFRlc3QoZXh0ZW5zaW9uKSk7IH0KKworcHJpdmF0ZToKKyAgICBP
cmlnaW5XaGl0ZWxpc3RUZXN0KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQorICAgICAg
ICA6IG1fZXh0ZW5zaW9uKGV4dGVuc2lvbikKKyAgICB7CisgICAgfQorCisgICAgYm9vbCB0ZXN0
V2hpdGVsaXN0KFdlYktpdFdlYlBhZ2UqIHBhZ2UpCisgICAgeworICAgICAgICBXZWJLaXRTZWN1
cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0dHAiLCAi
Zm9vLmNvbSIsIDApOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdp
bkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRw
Oi8vZm9vLmNvbTo4MDgwL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNl
Y3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOwor
ICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3Jp
Z2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9leHRl
bnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9uLCBvcmln
aW4sICJodHRwcyIsICJmb28uY29tIiwgMCwgRkFMU0UpOworICAgICAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20v
cGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5S
ZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbTo4MDgwL3BhZ2UiKSk7CisgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRw
Oi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0
eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAg
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4s
ICJodHRwczovL2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9leHRl
bnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9uLCBvcmln
aW4sICJodHRwcyIsICJmb28uY29tIiwgNDQzLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNv
bS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNh
blJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tOjgwODAvcGFnZSIpKTsKKyAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0
dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3Vy
aXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdp
biwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9y
aWdpbiwgImh0dHBzIiwgImZvby5jb20iLCAtMSwgRkFMU0UpOworICAgICAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5j
b20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNh
blJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tOjgwODAvcGFnZSIpKTsKKyAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0
dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3Vy
aXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdp
biwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24s
IG9yaWdpbiwgImh0dHBzIiwgImZvby5jb20iLCAtMSwgRkFMU0UpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zv
by5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbTo4MDgwL3BhZ2UiKSk7CisgICAg
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4s
ICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRT
ZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7
CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChv
cmlnaW4sICJodHRwczovL2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dl
Yl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9u
LCBvcmlnaW4sICJodHRwcyIsICJmb28uY29tIiwgMCwgVFJVRSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9v
LmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdp
bkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tOjgwODAvcGFnZSIpKTsKKyAgICAg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwg
Imh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNl
Y3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3Jp
Z2luLCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lv
biwgb3JpZ2luLCAiaHR0cHMiLCAiZm9vLmNvbSIsIDAsIFRSVUUpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zv
by5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbTo4MDgwL3BhZ2UiKSk7CisgICAg
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4s
ICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRT
ZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7
CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChv
cmlnaW4sICJodHRwczovL2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dl
Yl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9u
LCBvcmlnaW4sICJodHRwIiwgImJhci5jb20iLCAwLCBGQUxTRSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9v
LmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2lu
Q2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6
Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5
T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5mb28uY29tL3BhZ2UiKSk7CisK
KyAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZWxp
c3RzKG1fZXh0ZW5zaW9uKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlP
cmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9wYWdlIikpOworICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAi
aHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2Vj
dXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOwor
CisgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlz
dF9lbnRyeShtX2V4dGVuc2lvbiwgb3JpZ2luLCAiaHR0cHMiLCBudWxscHRyLCAwLCBUUlVFKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3Jp
Z2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNvbS9wYWdl
IikpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVz
dChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuZm9v
LmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdp
bl9hY2Nlc3Nfd2hpdGVsaXN0cyhtX2V4dGVuc2lvbik7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20v
cGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5S
ZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jh
ci5jb20vcGFnZSIpKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29s
IHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdlYktpdFdlYlBhZ2UqIHBhZ2UpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0TmFtZSwgIndoaXRlbGlzdCIpKQor
ICAgICAgICAgICAgcmV0dXJuIHRlc3RXaGl0ZWxpc3QocGFnZSk7CisKKyAgICAgICAgZ19hc3Nl
cnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFdl
YktpdFdlYkV4dGVuc2lvbiogbV9leHRlbnNpb24geyBudWxscHRyIH07Cit9OworCitzdGF0aWMg
dm9pZCBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpIHJlZ2lzdGVyVGVzdHMoKQoreworICAg
IFJFR0lTVEVSX1RFU1QoT3JpZ2luV2hpdGVsaXN0VGVzdCwgIk9yaWdpbldoaXRlbGlzdC93aGl0
ZWxpc3QiKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0T3JpZ2luV2hpdGVsaXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0T3JpZ2luV2hpdGVsaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uNDI4Zjk3MzY1ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9yaWdpbldoaXRlbGlzdC5jcHAKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKworc3RhdGljIHZv
aWQgdGVzdE9yaWdpbldoaXRlbGlzdChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
K3sKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJPcmlnaW5XaGl0
ZWxpc3QiLCAid2hpdGVsaXN0IikpOworfQorCit2b2lkIGJlZm9yZUFsbCgpCit7CisgICAgV2Vi
Vmlld1Rlc3Q6OmFkZCgiT3JpZ2luV2hpdGVsaXN0IiwgIndoaXRlbGlzdCIsIHRlc3RPcmlnaW5X
aGl0ZWxpc3QpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwCmluZGV4
IGY0NDFhNzE5YTgyLi4zNzc4ZmI3NWE4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwCkBAIC0yOSw3ICsyOSw3
IEBACiAKIHN0YXRpYyBIYXNoU2V0PEdPYmplY3QqPiBzX3dhdGNoZWRPYmplY3RzOwogCi10eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9j
ZXNzVGVzdD4gKCk+PiBUZXN0c01hcDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6ZnVu
Y3Rpb248c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiAoV2ViS2l0V2ViRXh0ZW5zaW9u
Kik+PiBUZXN0c01hcDsKIHN0YXRpYyBUZXN0c01hcCYgdGVzdHNNYXAoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxUZXN0c01hcD4gc190ZXN0c01hcDsKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RhdGljIHZvaWQgY2hlY2tMZWFrcygpCiAgICAgZ19hc3NlcnRfdHJ1ZShzX3dhdGNoZWRPYmpl
Y3RzLmlzRW1wdHkoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Rlc3Q6OmFkZChjb25zdCBTdHJp
bmcmIHRlc3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVz
dD4gKCk+IGNsb3N1cmUpCit2b2lkIFdlYlByb2Nlc3NUZXN0OjphZGQoY29uc3QgU3RyaW5nJiB0
ZXN0TmFtZSwgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IChX
ZWJLaXRXZWJFeHRlbnNpb24qKT4gY2xvc3VyZSkKIHsKICAgICB0ZXN0c01hcCgpLmFkZCh0ZXN0
TmFtZSwgV1RGTW92ZShjbG9zdXJlKSk7CiB9CkBAIC02MiwxOSArNjIsMTkgQEAgdm9pZCBXZWJQ
cm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHT2JqZWN0
KiBvYmplY3QpCiAgICAgfSwgbnVsbHB0cik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9j
ZXNzVGVzdD4gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRlc3ROYW1lKQor
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRlc3ROYW1lKQogewog
ICAgIGdfYXNzZXJ0X3RydWUodGVzdHNNYXAoKS5jb250YWlucyh0ZXN0TmFtZSkpOwotICAgIHJl
dHVybiB0ZXN0c01hcCgpLmdldCh0ZXN0TmFtZSkoKTsKKyAgICByZXR1cm4gdGVzdHNNYXAoKS5n
ZXQodGVzdE5hbWUpKGV4dGVuc2lvbik7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiBydW5UZXN0KFdl
YktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IGNoYXIqIHRlc3RQYXRoKQorc3RhdGljIGdib29s
ZWFuIHJ1blRlc3QoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgY2hhciogdGVzdFBhdGgs
IFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewogICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpKTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJQYWdlKSk7CiAgICAgZ19h
c3NlcnRfbm9ubnVsbCh0ZXN0UGF0aCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IHRlc3QgPSBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgodGVz
dFBhdGgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IHRlc3QgPSBXZWJQ
cm9jZXNzVGVzdDo6Y3JlYXRlKGV4dGVuc2lvbiwgU3RyaW5nOjpmcm9tVVRGOCh0ZXN0UGF0aCkp
OwogICAgIHJldHVybiB0ZXN0LT5ydW5UZXN0KGdfc3RycnN0cih0ZXN0UGF0aCwgIi8iKSArIDEs
IHdlYlBhZ2UpOwogfQogCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHdpbmRvd09iamVj
dENsZWFyZWRDYWxsYmFjayhXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdlYlBhZ2Uq
CiAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QoY29udGV4dC5nZXQoKSkpOwogICAgIGF1dG8qIGpzQ2xhc3MgPSBqc2NfY29u
dGV4dF9yZWdpc3Rlcl9jbGFzcyhjb250ZXh0LmdldCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIi
LCBudWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pih3ZWJQ
cm9jZXNzVGVzdFJ1bm5lckZpbmFsaXplKSk7CiAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNDbGFzcykpOwotICAgIGpz
Y19jbGFzc19hZGRfbWV0aG9kKGpzQ2xhc3MsICJydW5UZXN0IiwgR19DQUxMQkFDSyhydW5UZXN0
KSwgTlVMTCwgTlVMTCwgR19UWVBFX0JPT0xFQU4sIDEsIEdfVFlQRV9TVFJJTkcpOworICAgIGpz
Y19jbGFzc19hZGRfbWV0aG9kKGpzQ2xhc3MsICJydW5UZXN0IiwgR19DQUxMQkFDSyhydW5UZXN0
KSwgZXh0ZW5zaW9uLCBudWxscHRyLCBHX1RZUEVfQk9PTEVBTiwgMSwgR19UWVBFX1NUUklORyk7
CiAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gdGVzdFJ1bm5lciA9IGFkb3B0R1JlZihqc2NfdmFsdWVf
bmV3X29iamVjdChjb250ZXh0LmdldCgpLCBnX29iamVjdF9yZWYod2ViUGFnZSksIGpzQ2xhc3Mp
KTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVCh0ZXN0UnVubmVyLmdldCgpKSk7CiAgICAganNjX2NvbnRleHRfc2V0X3Zh
bHVlKGNvbnRleHQuZ2V0KCksICJXZWJQcm9jZXNzVGVzdFJ1bm5lciIsIHRlc3RSdW5uZXIuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dl
YlByb2Nlc3NUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuaAppbmRleCA3YTQ0Y2IwNWNkNC4uMDFiNTNlYjdjZTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5o
CkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR09iamVjdCopOwogCi0gICAgc3RhdGljIHZvaWQg
YWRkKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUsIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFdlYlByb2Nlc3NUZXN0PiAoKT4pOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJv
Y2Vzc1Rlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRlc3ROYW1lKTsKKyAgICBzdGF0aWMgdm9p
ZCBhZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSwgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9w
dHI8V2ViUHJvY2Vzc1Rlc3Q+IChXZWJLaXRXZWJFeHRlbnNpb24qKT4pOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24q
LCBjb25zdCBTdHJpbmcmIHRlc3ROYW1lKTsKIH07CiAKICNkZWZpbmUgUkVHSVNURVJfVEVTVChD
bGFzc05hbWUsIFRlc3ROYW1lKSBcCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCmluZGV4IGY3OWNmMzQ1MTgyLi4w
NWQ3M2UyZjcwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvQXV0b2NsZWFudXBzVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVzdC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAogY2xhc3Mg
QXV0b2NsZWFudXBzVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgQXV0b2NsZWFudXBzVGVzdCgpKTsg
fQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJL
aXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
KG5ldyBBdXRvY2xlYW51cHNUZXN0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0V2Vi
UHJvY2Vzc0F1dG9jbGVhbnVwcyhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3QuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3Qu
Y3BwCmluZGV4IDFiMzlmYWZhN2E3Li4xNjA1OTIyZGE2MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcApA
QCAtMjcsNyArMjcsNyBAQCBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKIAogY2xh
c3MgV2ViS2l0RE9NQ2xpZW50UmVjdFRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgp
IHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRET01DbGllbnRSZWN0VGVzdD4obmV3IFdl
YktpdERPTUNsaWVudFJlY3RUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXRET01DbGllbnRSZWN0VGVzdD4obmV3IFdlYktpdERPTUNsaWVudFJl
Y3RUZXN0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY2hlY2tDbGllbnRSZWN0
UG9zaXRpb24oV2ViS2l0RE9NQ2xpZW50UmVjdCogY2xpZW50UmVjdCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNw
cAppbmRleCBjY2E4MmZjZWUwYy4uNzhkYzE1OTQzZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkRWxlbWVudHNOb0lucHV0
W10gPSB7ICJIVE1MIiwgIkhFQUQiLCAiVElUTEUiLCAiQk9EWSIKIAogY2xhc3MgV2ViS2l0RE9N
Tm9kZUZpbHRlclRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdERPTU5vZGVGaWx0ZXJUZXN0
KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRl
KFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4obmV3IFdlYktpdERPTU5vZGVGaWx0ZXJUZXN0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCB0ZXN0VHJlZVdhbGtlcihXZWJLaXRXZWJQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwCmluZGV4IGJhN2Zh
Yjk5Y2Y2Li5kYjRkMWUzZTExNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcApAQCAtMjgsNyArMjgsNyBAQCBHX0dOVUNfQkVH
SU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKIAogY2xhc3MgV2ViS2l0RE9NTm9kZVRlc3QgOiBwdWJs
aWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRE
T01Ob2RlVGVzdD4obmV3IFdlYktpdERPTU5vZGVUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRET01Ob2RlVGVzdD4obmV3IFdlYktpdERPTU5v
ZGVUZXN0KCkpOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0SGllcmFyY2h5TmF2aWdhdGlv
bihXZWJLaXRXZWJQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcAppbmRleCAz
NWVlMzUwM2E0MC4uNDdlZmEwMjk5M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF94cGF0aF9uc19yZXNvbHZlcl9jbGFz
c19pbml0KFdlYktpdFhQYXRoTlNSZXNvbHZlckNsYXNzKikKIAogY2xhc3MgV2ViS2l0RE9NWFBh
dGhOU1Jlc29sdmVyVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0RE9NWFBhdGhOU1Jlc29s
dmVyVGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+
IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0KCkpOyB9CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBldmFsdWF0ZUZvb0NoaWxkVGV4dEFuZENoZWNrUmVzdWx0KFdlYktp
dERPTURvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZl
cikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9DTWFrZUxpc3RzLnR4dAppbmRleCBlZGI4YTEzNjEw
Mi4uOWRiYzUxZTgzNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQK
QEAgLTQzLDYgKzQzLDcgQEAgc2V0KFdlYktpdEdMaWJBUElXZWJQcm9jZXNzVGVzdHMKICAgICAk
e1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0RPTUVsZW1lbnRUZXN0
LmNwcAogICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRp
dG9yVGVzdC5jcHAKICAgICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL0ZyYW1lVGVzdC5jcHAKKyAgICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL09yaWdpbldoaXRlbGlzdFRlc3QuY3BwCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKICkKIApAQCAtMTQ0
LDYgKzE0NSw3IEBAIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICR7
VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpCiBBRERfV0syX1RFU1QoVGVzdFdl
YnNpdGVEYXRhICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYnNpdGVEYXRhLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0Q29uc29sZU1lc3NhZ2UgJHtUT09M
U19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29uc29sZU1lc3NhZ2Uu
Y3BwKQogQUREX1dLMl9URVNUKFRlc3RET01FbGVtZW50ICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERPTUVsZW1lbnQuY3BwKQorQUREX1dLMl9URVNUKFRl
c3RPcmlnaW5XaGl0ZWxpc3QgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0T3JpZ2luV2hpdGVsaXN0LmNwcCkKIAogIyBGSVhNRTogRW5hYmxlIGZvciBXUEUK
IGlmIChQT1JUIFNUUkVRVUFMICJHVEsiKQo=
</data>
<flag name="review"
          id="376850"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360325</attachid>
            <date>2019-01-28 01:06:50 -0800</date>
            <delta_ts>2019-02-11 05:53:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk-origin-whitelist.diff</filename>
            <type>text/plain</type>
            <size>69498</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1N2M5MGFjMDA0MS4uNWU4MzZiZjcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOS0wMS0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRv
IHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE1pY2hhZWwgQ2F0YW56YXJvLgorCisgICAgICAgIEFkZCBvcHRpb25hbCBwb3J0IHBhcmFt
ZXRlciB0byBPcmlnaW5BY2Nlc3NFbnRyeS4gV2hlbiBwb3J0IGlzIFdURjo6bnVsbG9wdCBhbGwg
cG9ydHMgYXJlIGFsbG93ZWQgdG8ga2VlcAorICAgICAgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0
eS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZG9tYWluSXNSZWdpc3RlcmFibGUgY29uc3QpOiBQYXNzIFdURjo6bnVsbG9wdCBhcyBw
b3J0IHRvIE9yaWdpbkFjY2Vzc0VudHJ5LgorICAgICAgICAqIHBhZ2UvT3JpZ2luQWNjZXNzRW50
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3JpZ2luQWNjZXNzRW50cnk6Ok9yaWdpbkFjY2Vz
c0VudHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5BY2Nlc3NFbnRyeTo6
bWF0Y2hlc09yaWdpbiBjb25zdCk6IENoZWNrIHBvcnQgbWF0Y2hlcy4KKyAgICAgICAgKiBwYWdl
L09yaWdpbkFjY2Vzc0VudHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5BY2Nlc3NFbnRy
eTo6cG9ydCBjb25zdCk6IFJldHVybiB0aGUgcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPT0pOiBDaGVjayBhbHNvIHRoYXQgcG9ydHMgYXJlIGVxdWFsLgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOiBEaXR0
by4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6CisKIDIwMTktMDEtMjcgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGZpeCBXUEUvR1RLIGRlYnVnIGJ1aWxkcyBhZnRlciByMjQwNTU3CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA2ZDQ0M2U3ODY2Zi4uMTM1ZmYyY2MyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNDk0Nyw3ICs0OTQ3LDcgQEAgYm9vbCBEb2N1bWVudDo6ZG9tYWluSXNSZWdp
c3RlcmFibGUoY29uc3QgU3RyaW5nJiBuZXdEb21haW4pIGNvbnN0CiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGF1dG8gaXBBZGRyZXNzU2V0dGluZyA9IHNldHRpbmdzKCkudHJlYXRJUEFk
ZHJlc3NBc0RvbWFpbigpID8gT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNEb21h
aW4gOiBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzczsKLSAgICBP
cmlnaW5BY2Nlc3NFbnRyeSBhY2Nlc3NFbnRyeSB7IHNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2wo
KSwgbmV3RG9tYWluLCBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zLCBpcEFkZHJl
c3NTZXR0aW5nIH07CisgICAgT3JpZ2luQWNjZXNzRW50cnkgYWNjZXNzRW50cnkgeyBzZWN1cml0
eU9yaWdpbigpLnByb3RvY29sKCksIG5ld0RvbWFpbiwgV1RGOjpudWxsb3B0LCBPcmlnaW5BY2Nl
c3NFbnRyeTo6QWxsb3dTdWJkb21haW5zLCBpcEFkZHJlc3NTZXR0aW5nIH07CiAgICAgaWYgKCFh
Y2Nlc3NFbnRyeS5tYXRjaGVzT3JpZ2luKHNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNjZXNz
RW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAKaW5k
ZXggMzc2MTA0ZWM4MmYuLmMxYTcyMTQ5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdp
bkFjY2Vzc0VudHJ5LmNwcApAQCAtMzQsMTAgKzM0LDExIEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotT3JpZ2luQWNjZXNzRW50cnk6
Ok9yaWdpbkFjY2Vzc0VudHJ5KGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
aG9zdCwgU3ViZG9tYWluU2V0dGluZyBzdWJkb21haW5TZXR0aW5nLCBJUEFkZHJlc3NTZXR0aW5n
IGlwQWRkcmVzc1NldHRpbmcpCisKK09yaWdpbkFjY2Vzc0VudHJ5OjpPcmlnaW5BY2Nlc3NFbnRy
eShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0LCBTdWJkb21haW5TZXR0aW5nIHN1YmRvbWFpblNldHRpbmcsIElQQWRkcmVz
c1NldHRpbmcgaXBBZGRyZXNzU2V0dGluZykKICAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSkKICAgICAsIG1faG9zdChob3N0LmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkpCisgICAgLCBtX3BvcnQocG9ydCkKICAgICAsIG1fc3ViZG9tYWluU2V0dGlu
Z3Moc3ViZG9tYWluU2V0dGluZykKICAgICAsIG1faXBBZGRyZXNzU2V0dGluZ3MoaXBBZGRyZXNz
U2V0dGluZykKICAgICAsIG1faG9zdElzSVBBZGRyZXNzKFVSTDo6aG9zdElzSVBBZGRyZXNzKG1f
aG9zdCkpCkBAIC01MiwxMSArNTMsMTUgQEAgYm9vbCBPcmlnaW5BY2Nlc3NFbnRyeTo6bWF0Y2hl
c09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAogCiAgICAgaWYgKG1f
cHJvdG9jb2wgIT0gb3JpZ2luLnByb3RvY29sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKKworICAgIC8vIElmIG1fcG9ydCBpcyBXVEY6Om51bGxvcHQsIGl0IG1lYW5zIGFueSBwb3J0
LCBub3QgdGhlIGRlZmF1bHQgb25lLgorICAgIGlmIChtX3BvcnQgJiYgKChvcmlnaW4ucG9ydCgp
ICYmIG1fcG9ydC52YWx1ZSgpICE9IG9yaWdpbi5wb3J0KCkudmFsdWUoKSkgfHwgKCFvcmlnaW4u
cG9ydCgpICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUoKSwg
bV9wcm90b2NvbCkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gU3BlY2lhbCBj
YXNlOiBJbmNsdWRlIHN1YmRvbWFpbnMgYW5kIGVtcHR5IGhvc3QgbWVhbnMgImFsbCBob3N0cywg
aW5jbHVkaW5nIGlwIGFkZHJlc3NlcyIuCiAgICAgaWYgKG1fc3ViZG9tYWluU2V0dGluZ3MgPT0g
QWxsb3dTdWJkb21haW5zICYmIG1faG9zdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIAorCiAgICAgLy8gRXhhY3QgbWF0Y2guCiAgICAgaWYgKG1faG9zdCA9PSBvcmlnaW4u
aG9zdCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNj
ZXNzRW50cnkuaAppbmRleCBmNTVmN2Q5MzhjNy4uODczNzgzZWJjNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmgKQEAgLTQ5LDE3ICs0OSwxOSBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIC8vIElmIGhvc3QgaXMgZW1wdHkgc3RyaW5nIGFuZCBTdWJkb21haW5TZXR0
aW5nIGlzIEFsbG93U3ViZG9tYWlucywgdGhlIGVudHJ5IHdpbGwgbWF0Y2ggYWxsIGRvbWFpbnMg
aW4gdGhlIHNwZWNpZmllZCBwcm90b2NvbC4KLSAgICBPcmlnaW5BY2Nlc3NFbnRyeShjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIFN1YmRvbWFpblNldHRpbmcsIElQ
QWRkcmVzc1NldHRpbmcpOworICAgIE9yaWdpbkFjY2Vzc0VudHJ5KGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIFN1YmRv
bWFpblNldHRpbmcsIElQQWRkcmVzc1NldHRpbmcpOwogICAgIGJvb2wgbWF0Y2hlc09yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KICAgICBjb25zdCBTdHJpbmcmIGhvc3Qo
KSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KKyAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQogICAgIFN1YmRvbWFpblNldHRpbmcgc3ViZG9tYWlu
U2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N1YmRvbWFpblNldHRpbmdzOyB9CiAgICAgSVBB
ZGRyZXNzU2V0dGluZyBpcEFkZHJlc3NTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1faXBBZGRy
ZXNzU2V0dGluZ3M7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wcm90b2NvbDsKICAgICBT
dHJpbmcgbV9ob3N0OworICAgIE9wdGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7CiAgICAgU3ViZG9t
YWluU2V0dGluZyBtX3N1YmRvbWFpblNldHRpbmdzOwogICAgIElQQWRkcmVzc1NldHRpbmcgbV9p
cEFkZHJlc3NTZXR0aW5nczsKICAgICBib29sIG1faG9zdElzSVBBZGRyZXNzOwpAQCAtNjksNiAr
NzEsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9yaWdpbkFjY2Vzc0VudHJ5JiBh
LCBjb25zdCBPcmlnaW5BY2Nlc3NFbnRyeSYgYikKIHsKICAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShhLnByb3RvY29sKCksIGIucHJvdG9jb2woKSkKICAgICAgICAgJiYgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShhLmhvc3QoKSwgYi5ob3N0KCkpCisgICAgICAgICYmIGEucG9ydCgp
ID09IGIucG9ydCgpCiAgICAgICAgICYmIGEuc3ViZG9tYWluU2V0dGluZ3MoKSA9PSBiLnN1YmRv
bWFpblNldHRpbmdzKCkKICAgICAgICAgJiYgYS5pcEFkZHJlc3NTZXR0aW5ncygpID09IGIuaXBB
ZGRyZXNzU2V0dGluZ3MoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
aW5kZXggNDIzNDE4MjgwZWEuLjFjMmEzNzJlYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6Omlz
QWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2lu
CiAgICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0aXZlT3JpZ2luLCAmdGFyZ2V0T3Jp
Z2luLmdldCgpKTsKIH0KIAotdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWlu
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBTZWN1cml0eVBvbGljeTo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJj
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uRG9tYWluLCBPcHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVCghc291cmNlT3Jp
Z2luLmlzVW5pcXVlKCkpOwogICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKQEAgLTE5
MiwxMCArMTkyLDEwIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPCiAgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4o
KTsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7Ci0gICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRy
eTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NB
c0lQQWRkcmVzcykpOworICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5h
dGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgZGVzdGluYXRpb25Qb3J0LCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMg
OiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRy
eTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcykpOwogfQogCi12b2lkIFNlY3VyaXR5UG9saWN5
OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
Cit2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIE9wdGlvbmFsPHVp
bnQxNl90PiBkZXN0aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7CiAgICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSk7CiAgICAgaWYgKHNvdXJj
ZU9yaWdpbi5pc1VuaXF1ZSgpKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgU2VjdXJpdHlQb2xp
Y3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBzb3VyCiAgICAgICAgIHJldHVybjsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCYgbGlz
dCA9ICppdC0+dmFsdWU7Ci0gICAgT3JpZ2luQWNjZXNzRW50cnkgb3JpZ2luQWNjZXNzRW50cnko
ZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFj
Y2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFpbnMsIE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQ
QWRkcmVzc0FzSVBBZGRyZXNzKTsKKyAgICBPcmlnaW5BY2Nlc3NFbnRyeSBvcmlnaW5BY2Nlc3NF
bnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgZGVzdGluYXRpb25Q
b3J0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxv
d1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmln
aW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcyk7CiAgICAgaWYgKCFsaXN0
LnJlbW92ZUZpcnN0KG9yaWdpbkFjY2Vzc0VudHJ5KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggNTMzYjFkNGZiZGEuLjRkZDk0YWJkM2U5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCkBAIC02Miw4ICs2Miw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCByZXN0cmljdEFjY2Vzc1RvTG9jYWwoKTsKICAgICBzdGF0
aWMgYm9vbCBhbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBy
b3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgT3B0aW9uYWw8dWlu
dDE2X3Q+IGRlc3RpbmF0aW9uUG9ydCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBP
cHRpb25hbDx1aW50MTZfdD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKTsKIAogICAgIHN0YXRpYyBib29sIGlzQWNjZXNzV2hpdGVMaXN0ZWQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IHRhcmdldE9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5M2Y5MjIyODkyLi43NDAzMzk1Mjc2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxOS0wMS0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgd2ViIGV4dGVu
c2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0YW56YXJvLgorCisgICAgICAgIEV4cG9zZSBJbmpl
Y3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKSwgSW5qZWN0ZWRCdW5k
bGU6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCkgYW5kCisgICAgICAgIEluamVj
dGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKSBpbiBHTGliIEFQSS4gVGhp
cyBwYXRjaCBtb3ZlcyBXZWJLaXRTZWN1cml0eU9yaWdpbiBmcm9tIFVJUHJvY2VzcworICAgICAg
ICB0byBTaGFyZWQgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIGZyb20gdGhlIHdlYiBleHRlbnNpb25z
IEFQSS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogQWRkIHBvcnQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0
U2VjdXJpdHlPcmlnaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwLgorICAgICAgICAod2Via2l0U2VjdXJp
dHlPcmlnaW5DYW5SZXF1ZXN0KTogSW50ZXJuYWwgZnVuY3Rpb24gb25seSB1c2VkIGJ5IHRlc3Rz
LgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbkludGVybmFs
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNl
Y3VyaXR5T3JpZ2luUHJpdmF0ZS5oLgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRT
ZWN1cml0eU9yaWdpblByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmguCisgICAgICAgICogU291
cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVB
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6IFBhc3MgV1RGOjpudWxsb3B0IGFzIHBvcnQu
CisgICAgICAgIChXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRX
ZWJFeHRlbnNpb24uY3BwOgorICAgICAgICAod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKTogS2Vl
cCBhIHJlZmVyZW5jZSB0byBJbmplY3RlZEJ1bmRsZSBpbiBXZWJLaXRXZWJFeHRlbnNpb24gcHJp
dmF0ZSBzdHJ1Y3QuCisgICAgICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2Fj
Y2Vzc193aGl0ZWxpc3RfZW50cnkpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25fcmVt
b3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVu
c2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJL
aXRXZWJFeHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0wLjEtc2VjdGlvbnMudHh0OgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkpOiBBZGQgcG9ydC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJl
bW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCiAyMDE4LTEyLTE1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIG1hbnkgdXNlcyBv
ZiBTdHJpbmc6OmZvcm1hdCB3aXRoIG1vcmUgdHlwZS1zYWZlIGFsdGVybmF0aXZlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3NTM4ZTFkMzI1MS4uM2I3OGE1NTg3MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02NTIsMTQgKzY1MiwxNCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3Rp
bmF0aW9uUG9ydCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1
cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2Nv
bCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2Vj
dXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGRlc3RpbmF0aW9uSG9zdCwgZGVzdGluYXRpb25Qb3J0LCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92
ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0
aW5hdGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2Vj
dXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAg
IFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLmdldCgpLCBkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGRlc3RpbmF0aW9uUG9ydCwgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDQ0YzBhNWY3MTQzLi40ZWQxYjAzNmJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApA
QCAtMjAwLDggKzIwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGly
ZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHNvdXJjZVByaW1hcnlEb21haW4sIGNv
bnN0IFN0cmluZyYgdGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgdm9pZCByZXF1ZXN0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1VwZGF0ZSgpOwogCi0gICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgT3B0aW9uYWw8dWlu
dDE2X3Q+IGRlc3RpbmF0aW9uUG9ydCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CisgICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3RpbmF0aW9uUG9y
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgdm9pZCByZXNldE9yaWdp
bkFjY2Vzc1doaXRlbGlzdHMoKTsKIAogICAgIHN0cnVjdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggODQyMjg2YjE4MmYuLjRmN2E3YmFlZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY2LDggKzY2LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlcXVlc3RSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlKCk7CiAjZW5kaWYKIAotICAgIEFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0cmluZyBkZXN0aW5hdGlvblByb3Rv
Y29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKLSAgICBSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNl
T3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgQWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5nIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBkZXN0aW5h
dGlvblBvcnQsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0cmluZyBkZXN0
aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBPcHRpb25hbDx1aW50MTZf
dD4gZGVzdGluYXRpb25Qb3J0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAg
ICBSZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIAogICAgIEdldE5ldHdvcmtMb2FkSW5m
b3JtYXRpb25SZXF1ZXN0KHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpIC0+IChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkgTGVnYWN5U3luYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggMjI4MTI3NGNmMGMuLjc0ZTM5YTI2OWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTgyNCwxMiArODI0LDE0IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKICAg
ICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51
LmNwcAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnVJdGVtLmNwcAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2hh
cmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAogICAgICAgICAgICAgJHtXRUJL
SVRfRElSfS9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAKICAgICAgICAgICAg
ICR7V0VCS0lUX0RJUn0vU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAogICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVu
dS5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51QWN0aW9ucy5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaAorICAgICAgICAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5oCiAgICAg
ICAgICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3Qu
aAogICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklS
ZXNwb25zZS5oCiAgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvKi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcApzaW1pbGFyaXR5IGluZGV4IDk3JQpy
ZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAyZTA3ODlkNDMwMS4uMmM2ODgwNmZlNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTY4LDYgKzY4LDEzIEBAIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB3
ZWJraXRTZWN1cml0eU9yaWdpbkdldFNlY3VyaXR5T3JpZ2luKFdlYktpdFNlY3VyaXR5T3JpCiAg
ICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCk7CiB9CiAKKy8vIEludGVybmFs
IEFQSSBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCitib29sIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2Fu
UmVxdWVzdChXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBjaGFyKiB1cmwpCit7
CisgICAgQVNTRVJUKG9yaWdpbik7CisgICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4t
PmNhblJlcXVlc3QoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVybCkpKTsKK30KKwogLyoq
CiAgKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ldzoKICAqIEBwcm90b2NvbDogVGhlIHByb3Rv
Y29sIGZvciB0aGUgbmV3IG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZTlhOTgyZWUxZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luSW50
ZXJuYWwuaApAQCAtMCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW4uaCIK
KworYm9vbCB3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3QoV2ViS2l0U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBjaGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCnNpbWlsYXJpdHkgaW5k
ZXggMTAwJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU9yaWdpblByaXZhdGUuaApyZW5hbWUgdG8gU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cmlu
ZGV4IGE3MTg4MDUxNTk0Li5mNmE2OTQ4ZGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC03MCw2
ICs3MCw3IEBAIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudS5jcHAgQG5vLXVuaWZ5
CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmNwcCBAbm8tdW5pZnkK
IFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIEBuby11bmlmeQogU2hh
cmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIEBuby11bmlmeQorU2hhcmVkL0FQ
SS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5CiAKQEAgLTE2NSw3ICsxNjYsNiBAQCBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0UHJpdmF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0U2NyaXB0RGlhbG9nLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRTZXR0aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BF
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggMTZiODk5MzA4ZmYuLjlh
NjBiZTQ5MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTY3LDYgKzY3LDcgQEAgU2hhcmVkL0FQ
SS9nbGliL1dlYktpdENvbnRleHRNZW51LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dl
YktpdENvbnRleHRNZW51SXRlbS5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0
SGl0VGVzdFJlc3VsdC5jcHAgQG5vLXVuaWZ5CitTaGFyZWQvQVBJL2dsaWIvV2ViS2l0U2VjdXJp
dHlPcmlnaW4uY3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3Qu
Y3BwIEBuby11bmlmeQogU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcCBAbm8t
dW5pZnkKIApAQCAtMTUwLDcgKzE1MSw2IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2
YXRlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRSZXNwb25zZVBvbGlj
eURlY2lzaW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTY3JpcHRE
aWFsb2cuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5TWFu
YWdlci5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmln
aW4uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgQG5vLXVuaWZ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3Vy
aXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3Vy
aXR5T3JpZ2luLmgKaW5kZXggNmRjYTJiNzdlYTYuLjJhNDQzZjg4ODUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU9yaWdpbi5o
CkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwog
Ci0jaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZp
bmVkKFdFQktJVDJfQ09NUElMQVRJT04pICYmICFkZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJ
T05fSF9JTlNJREVfXykKICNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBp
bmNsdWRlZCBkaXJlY3RseS4iCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKaW5kZXggMWI3YjViODY1NjMuLmY5Yzk0M2NjYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1z
ZWN0aW9ucy50eHQKQEAgLTE0NTIsNiArMTQ1Miw5IEBAIFdlYktpdFdlYkV4dGVuc2lvbgogV2Vi
S2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uCiBXZWJLaXRXZWJFeHRlbnNpb25Jbml0
aWFsaXplV2l0aFVzZXJEYXRhRnVuY3Rpb24KIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdl
Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkK
K3dlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRy
eQord2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RzCiAK
IDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViRXh0ZW5zaW9uQ2xhc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4u
aAppbmRleCA4MGUwNDUyM2M3Zi4uNDRlM2U2NWNhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNlY3VyaXR5T3JpZ2luLmgKQEAgLTE3LDcg
KzE3LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVm
aW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9O
KQorI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pICYmICFkZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVf
XykKICNlcnJvciAiT25seSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHku
IgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGJjNjIxYzA4MGJjLi5lYjk5NjNh
ZjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC0xOTgsMTIgKzE5OCwxMiBAQCB2b2lkIFdL
QnVuZGxlU2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwg
V0tCdW5kbGVQYWdlR3JvdQogCiB2b2lkIFdLQnVuZGxlQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIFdL
U3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFdLU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBXZWJLaXQ6OnRvSW1w
bChidW5kbGVSZWYpLT5hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXZWJLaXQ6OnRvV1RG
U3RyaW5nKHNvdXJjZU9yaWdpbiksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Qcm90
b2NvbCksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOworICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdlYktpdDo6dG9XVEZTdHJpbmcoc291cmNlT3JpZ2luKSwg
V2ViS2l0Ojp0b1dURlN0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgV2ViS2l0Ojp0b1dURlN0
cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBXVEY6Om51bGxvcHQsIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKIH0KIAogdm9pZCBXS0J1bmRsZVJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBXS1N0
cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBXS1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3Qs
IGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
YnVuZGxlUmVmKS0+cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoV2ViS2l0Ojp0b1dU
RlN0cmluZyhzb3VyY2VPcmlnaW4pLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uUHJv
dG9jb2wpLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShXZWJLaXQ6OnRvV1RGU3RyaW5nKHNvdXJjZU9yaWdp
biksIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCksIFdlYktpdDo6dG9X
VEZTdHJpbmcoZGVzdGluYXRpb25Ib3N0KSwgV1RGOjpudWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgV0tCdW5kbGVSZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlz
dHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcAppbmRleCAwODJkNjA5YTg3Yi4uZDA0OThmODExNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRX
ZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAj
aW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlQnVu
ZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0U2Vj
dXJpdHlPcmlnaW5Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgpAQCAtMTE4LDYgKzExOSw3IEBAIGVudW0gewogdHlwZWRlZiBIYXNoTWFwPFdlYlBh
Z2UqLCBHUmVmUHRyPFdlYktpdFdlYlBhZ2U+ID4gV2ViUGFnZU1hcDsKIAogc3RydWN0IF9XZWJL
aXRXZWJFeHRlbnNpb25Qcml2YXRlIHsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGJ1bmRs
ZTsKICAgICBXZWJQYWdlTWFwIHBhZ2VzOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAg
ICBib29sIGdhcmJhZ2VDb2xsZWN0T25QYWdlRGVzdHJveTsKQEAgLTE5Niw2ICsxOTgsNyBAQCBw
cml2YXRlOgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5q
ZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhU
RU5TSU9OLCBOVUxMKSk7CisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUgPSBidW5kbGU7CiAg
ICAgYnVuZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3Rl
ZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KQEAg
LTIyOSwzICsyMzIsODMgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X3BhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGd1aW4KIAogICAgIHJldHVybiAw
OwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3do
aXRlbGlzdF9lbnRyeToKKyAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgorICog
QG9yaWdpbjogYSAjV2ViS2l0U2VjdXJpdHlPcmlnaW4KKyAqIEBwcm90b2NvbDogdGhlIGRlc3Rp
bmF0aW9uIHByb3RvY29sCisgKiBAaG9zdDogKG51bGxhYmxlKTogdGhlIGRlc3RpbmF0aW9uIGhv
c3QsIG9yICVOVUxMIGZvciBhbnkgaG9zdAorICogQHBvcnQ6IHRoZSBkZXN0aW5hdGlvbiBwb3J0
LCBvciAtMSBmb3IgYW55IHBvcnQsIG9yIDAgdG8gaW5kaWNhdGUgdGhlCisgKiAgICAgICAgZGVm
YXVsdCBwb3J0IGZvciBAcHJvdG9jb2wKKyAqIEBhbGxvd19zdWJkb21haW5zOiB3aGV0aGVyIHRv
IGFsbG93IHN1YmRvbWFpbnMgd2hlbiBAaG9zdCBpcyBub3QgJU5VTEwKKyAqCisgKiBBZGQgYSB3
aGl0ZWxpc3QgZW50cnkgZm9yIG9yaWdpbiB0byBhbGxvdyBjcm9zcyBvcmlnaW4gYWNjZXNzIHRv
IHRoZSBnaXZlbiBAcHJvdG9jb2wgYW5kIEBob3N0LgorICogSWYgQGhvc3QgaXMgJU5VTEwsIGFs
bCBob3N0cyBhcmUgYWxsb3dlZCBhbmQgdGhlIEBhbGxvd19zdWJkb21haW5zIHBhcmFtZXRlciBp
cyBpZ25vcmVkLgorICogSWYgQGFsbG93X3N1YmRvbWFpbnMgaXMgJVRSVUUsIHN1YmRvbWFpbnMg
b2YgQGhvc3QgZm9yIHRoZSBnaXZlbiBAcHJvdG9jb2wgYXJlIGFsc28gYWxsb3dlZCB0bworICog
YmUgYWNjZXNzZWQgZnJvbSBAb3JpZ2luLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQg
d2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBjaGFyKiBwcm90b2NvbCwgY29uc3QgY2hhciogaG9zdCwgZ2ludDE2IHBvcnQsIGdi
b29sZWFuIGFsbG93U3ViZG9tYWlucykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfRVhURU5TSU9OKGV4dGVuc2lvbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwob3JpZ2lu
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1
ZShvcmlnaW4pKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHByb3RvY29sKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKHBvcnQgPj0gLTEpOworCisgICAgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3RpbmF0
aW9uUG9ydDsKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIGRlc3RpbmF0aW9uUG9ydCA9IFdURjo6
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHByb3RvY29sKSk7CisgICAg
ZWxzZSBpZiAocG9ydCA+IDApCisgICAgICAgIGRlc3RpbmF0aW9uUG9ydCA9IHBvcnQ7CisKKyAg
ICBleHRlbnNpb24tPnByaXYtPmJ1bmRsZS0+YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
d2Via2l0U2VjdXJpdHlPcmlnaW5HZXRTZWN1cml0eU9yaWdpbihvcmlnaW4pLnRvU3RyaW5nKCks
IFN0cmluZzo6ZnJvbVVURjgocHJvdG9jb2wpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpLCBkZXN0
aW5hdGlvblBvcnQsIGhvc3QgPyBhbGxvd1N1YmRvbWFpbnMgOiB0cnVlKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50
cnk6CisgKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KKyAqIEBvcmlnaW46IGEg
I1dlYktpdFNlY3VyaXR5T3JpZ2luCisgKiBAcHJvdG9jb2w6IHRoZSBkZXN0aW5hdGlvbiBwcm90
b2NvbAorICogQGhvc3Q6IChudWxsYWJsZSk6IHRoZSBkZXN0aW5hdGlvbiBob3N0LCBvciAlTlVM
TCBmb3IgYW55IGhvc3QKKyAqIEBwb3J0OiB0aGUgZGVzdGluYXRpb24gcG9ydCwgb3IgLTEgZm9y
IGFueSBwb3J0LCBvciAwIHRvIGluZGljYXRlIHRoZQorICogICAgICAgIGRlZmF1bHQgcG9ydCBm
b3IgQHByb3RvY29sCisgKiBAYWxsb3dfc3ViZG9tYWluczogd2hldGhlciBzdWJkb21haW5zIHdl
cmUgYWxsb3dlZCB3aGVuIEBob3N0IGlzIG5vdCAlTlVMTAorICoKKyAqIFJlbW92ZSBhIHdoaXRl
bGlzdCBlbnRyeSBmb3Igb3JpZ2luIHByZXZpb3VzbHkgYWRkZWQgd2l0aCB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkoKS4KKyAqCisgKiBTaW5j
ZTogMi4yNAorICovCit2b2lkIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX3JlbW92ZV9vcmlnaW5fYWNj
ZXNzX3doaXRlbGlzdF9lbnRyeShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgY2hhciogcHJvdG9jb2wsIGNvbnN0IGNoYXIq
IGhvc3QsIGdpbnQxNiBwb3J0LCBnYm9vbGVhbiBhbGxvd1N1YmRvbWFpbnMpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pKTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKG9yaWdpbik7CisgICAgZ19yZXR1cm5faWZfZmFpbCghd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChw
cm90b2NvbCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChwb3J0ID49IC0xKTsKKworICAgIE9wdGlv
bmFsPHVpbnQxNl90PiBkZXN0aW5hdGlvblBvcnQ7CisgICAgaWYgKCFwb3J0KQorICAgICAgICBk
ZXN0aW5hdGlvblBvcnQgPSBXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nOjpmcm9t
VVRGOChwcm90b2NvbCkpOworICAgIGVsc2UgaWYgKHBvcnQgPiAwKQorICAgICAgICBkZXN0aW5h
dGlvblBvcnQgPSBwb3J0OworCisgICAgZXh0ZW5zaW9uLT5wcml2LT5idW5kbGUtPnJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KHdlYmtpdFNlY3VyaXR5T3JpZ2luR2V0U2VjdXJpdHlP
cmlnaW4ob3JpZ2luKS50b1N0cmluZygpLCBTdHJpbmc6OmZyb21VVEY4KHByb3RvY29sKSwgU3Ry
aW5nOjpmcm9tVVRGOChob3N0KSwgZGVzdGluYXRpb25Qb3J0LCBob3N0ID8gYWxsb3dTdWJkb21h
aW5zIDogdHJ1ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3Jp
Z2luX2FjY2Vzc193aGl0ZWxpc3RzOgorICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5z
aW9uCisgKgorICogUmVtb3ZlIGFsbCB3aGl0ZWxpc3QgZW50cmllcyBwcmV2aW91c2x5IGFkZGVk
IHdpdGggd2Via2l0X3dlYl9leHRlbnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2Vu
dHJ5KCkuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lv
bl9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdHMoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRl
bnNpb24pCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihl
eHRlbnNpb24pKTsKKworICAgIGV4dGVuc2lvbi0+cHJpdi0+YnVuZGxlLT5yZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9u
LmgKaW5kZXggMzQxMzZhMzdkMjUuLjQ5Mjk2ZmYzYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJFeHRlbnNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFNlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
ZWJQYWdlLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTc2LDExICs3NywzMCBAQCBzdHJ1Y3QgX1dl
YktpdFdlYkV4dGVuc2lvbkNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF90eXBlICh2b2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90
eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2Vi
S2l0V2ViUGFnZSAqCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAoV2ViS2l0V2ViRXh0
ZW5zaW9uICpleHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2
NCAgICAgICAgICAgICBwYWdlX2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSAg
ICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmln
aW4gKm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKnByb3RvY29sLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2ludDE2ICAgICAgICAgICAgICAgIHBvcnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi
b29sZWFuICAgICAgICAgICAgICBhbGxvd19zdWJkb21haW5zKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50
cnkgKFdlYktpdFdlYkV4dGVuc2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNlY3VyaXR5T3Jp
Z2luICpvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgICAgICAgICAgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQxNiAgICAgICAgICAgICAgICBwb3J0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
Ym9vbGVhbiAgICAgICAgICAgICAgYWxsb3dfc3ViZG9tYWlucyk7CisKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3dlYl9leHRlbnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RzICAg
ICAgIChXZWJLaXRXZWJFeHRlbnNpb24gICAqZXh0ZW5zaW9uKTsKIAogR19FTkRfREVDTFMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvd2Via2l0LXdlYi1leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKaW5kZXggMWM5NWYxZDNh
ZWQuLjE0NjkwODk2NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5z
aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRN
ZW51SXRlbS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RnJhbWUuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFNjcmlwdFdvcmxkLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFZlcnNpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvd3BlL1dlYktpdFdlYkV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvV2ViS2l0V2ViRXh0ZW5zaW9uLmgKaW5k
ZXggYTZmZmI0ODUwNDguLjY4NjNlZTE3NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRXZWJFeHRlbnNpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS9XZWJLaXRX
ZWJFeHRlbnNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRT
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJQYWdlLmg+CiAKIEdfQkVH
SU5fREVDTFMKQEAgLTc2LDExICs3NywzMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvbkNs
YXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90
eXBlICh2b2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViUGFnZSAqCi13ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZSAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICBwYWdl
X2lkKTsKK3dlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICAgKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAg
ICAgICAgICAgIHBhZ2VfaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfZXh0ZW5z
aW9uX2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeSAgICAoV2ViS2l0V2ViRXh0ZW5z
aW9uICAgKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgKnByb3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqaG9z
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2ludDE2ICAgICAgICAgICAgICAgIHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAg
ICBhbGxvd19zdWJkb21haW5zKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2V4dGVu
c2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkgKFdlYktpdFdlYkV4dGVu
c2lvbiAgICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICpwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmhv
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdpbnQxNiAgICAgICAgICAgICAgICBwb3J0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAg
ICAgYWxsb3dfc3ViZG9tYWlucyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl9leHRl
bnNpb25fcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RzICAgICAgIChXZWJLaXRXZWJFeHRl
bnNpb24gICAqZXh0ZW5zaW9uKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0
ZW5zaW9ucy0wLjEtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9ucy0wLjEtc2VjdGlvbnMudHh0
CmluZGV4IGExZDY4NDRkZGNmLi5mZDIwODNjNGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvZG9jcy93cGUtd2ViZXh0ZW5zaW9u
cy0wLjEtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvd3BlL2RvY3Mvd3BlLXdlYmV4dGVuc2lvbnMtMC4xLXNlY3Rpb25zLnR4dApA
QCAtMTMsNiArMTMsOSBAQCBXZWJLaXRXZWJFeHRlbnNpb24KIFdlYktpdFdlYkV4dGVuc2lvbklu
aXRpYWxpemVGdW5jdGlvbgogV2ViS2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZVdpdGhVc2VyRGF0
YUZ1bmN0aW9uCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZQord2Via2l0X3dlYl9leHRl
bnNpb25fYWRkX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5Cit3ZWJraXRfd2ViX2V4dGVu
c2lvbl9yZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkKK3dlYmtpdF93ZWJfZXh0
ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cwogCiA8U1VCU0VDVElPTiBTdGFu
ZGFyZD4KIFdlYktpdFdlYkV4dGVuc2lvbkNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL3dwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS93cGUvd2Via2l0
LXdlYi1leHRlbnNpb24uaAppbmRleCA3OTZiMjFlNDFmMS4uYWRlNGI4ZGNmZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvd3BlL3dlYmtp
dC13ZWItZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS93cGUvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgPHdwZS9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0RnJhbWUuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0U2NyaXB0V29ybGQuaD4KKyNpbmNsdWRl
IDx3cGUvV2ViS2l0U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdw
ZS9XZWJLaXRXZWJFZGl0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDFkYmJkY2ZlNDk3
Li5jZGVkOTJiMjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zOTIsMTcgKzM5MiwxNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoV2ViUGFn
ZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYgogICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNl
dFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1
bmRsZTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit2b2lkIElu
amVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IGRlc3RpbmF0aW9uUG9y
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGlj
eTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpBZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyB9LCAwKTsKKyAgICBT
ZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBvcnQsIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5IHsgc291cmNl
T3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGRlc3RpbmF0aW9u
UG9ydCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgfSwgMCk7CiAKIH0KIAotdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
Cit2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IGRl
c3RpbmF0aW9uUG9ydCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBT
ZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Q
cm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSB7IHNvdXJjZU9yaWdpbiwgZGVz
dGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyB9LCAwKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5n
ZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBkZXN0aW5hdGlvblBv
cnQsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZU9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5IHsgc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0
aW5hdGlvbkhvc3QsIGRlc3RpbmF0aW9uUG9ydCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMg
fSwgMCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVs
aXN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDI1NWM5ZjU5N2NmLi5kNmRmODAxYmUzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKQEAgLTEwOSw4ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
b3B1cEJsb2NraW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSosIGJvb2wpOwogICAgIHZvaWQg
c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqLCBib29sKTsK
ICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSos
IGJvb2wpOwotICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Ci0gICAgdm9pZCByZW1v
dmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE9wdGlv
bmFsPHVpbnQxNl90PiwgYm9vbCk7CisgICAgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRp
b25hbDx1aW50MTZfdD4sIGJvb2wpOwogICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7CiAgICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChXZWJQ
YWdlR3JvdXBQcm94eSosIGJvb2wpOwogICAgIGludCBudW1iZXJPZlBhZ2VzKFdlYkZyYW1lKiwg
ZG91YmxlLCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDAwMzU2MWVh
NzBkLi5mMDViNDdiYzc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE5LTAxLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hp
dGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgUGFzcyBXVEY6Om51bGxvcHQgYXMgcG9ydCB0
byBPcmlnaW5BY2Nlc3NFbnRyeS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKCtbV2ViVmlldyBfYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRoU291cmNl
T3JpZ2luOmRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVzdGluYXRpb25Ib3N0OmFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9yZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5h
dGlvbkhvc3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6CisKIDIwMTktMDEtMjcgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogSW50cm9k
dWNlIGEgc3RhdGljIGFjY2Vzc2liaWxpdHkgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGVhZWY4ZmYxNjBmLi4xZGJlNjM1MGNkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDY1MywxMiArNDY1
MywxMiBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKICsgKHZvaWQpX2FkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVz
dGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0
aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBTZWN1cml0eVBv
bGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVz
dGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQ
b2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRl
c3RpbmF0aW9uSG9zdCwgV1RGOjpudWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CiB9CiAKICsgKHZvaWQpX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJj
ZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVzdGluYXRpb25Qcm90b2NvbDooTlNT
dHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0aW9uSG9zdDooTlNTdHJpbmcgKilk
ZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJPT0wpYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNl
T3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNv
dXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwg
V1RGOjpudWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKICsgKHZvaWQp
X3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDVhY2FkZjE4NThlLi44OTNlMTBhM2NlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTAxLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9u
cyBBUEkgdG8gd2hpdGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgUGFzcyBXVEY6Om51bGxv
cHQgYXMgcG9ydCB0byBPcmlnaW5BY2Nlc3NFbnRyeS4KKworICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViVmlldzo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAg
ICAgICAoV2ViVmlldzo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorCiAyMDE5
LTAxLTI0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAg
ICBNb3ZlIEZpbGVTeXN0ZW0gdG8gV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IGUzMzEwNjNhMGJmLi40NGVhMTRmMDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKQEAgLTcwNzQsMTMgKzcwNzQsMTMgQEAgSFJFU1VMVCBXZWJWaWV3OjppbnZhbGlkYXRl
QmFja2luZ1N0b3JlKF9Jbl8gY29uc3QgUkVDVCogcmVjdCkKIAogSFJFU1VMVCBXZWJWaWV3Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShfSW5fIEJTVFIgc291cmNlT3JpZ2luLCBfSW5f
IEJTVFIgZGVzdGluYXRpb25Qcm90b2NvbCwgX0luXyBCU1RSIGRlc3RpbmF0aW9uSG9zdCwgQk9P
TCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcodG9TdHJpbmcoc291cmNlT3JpZ2luKSkuZ2V0KCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uUHJv
dG9jb2wpLCB0b1N0cmluZyhkZXN0aW5hdGlvbkhvc3QpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNvdXJjZU9yaWdpbikp
LmdldCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJpbmcoZGVzdGluYXRp
b25Ib3N0KSwgV1RGOjpudWxsb3B0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoX0luXyBCU1RSIHNvdXJjZU9yaWdpbiwgX0luXyBCU1RSIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIF9Jbl8gQlNUUiBkZXN0aW5hdGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvU3RyaW5nKHNv
dXJjZU9yaWdpbikpLmdldCgpLCB0b1N0cmluZyhkZXN0aW5hdGlvblByb3RvY29sKSwgdG9TdHJp
bmcoZGVzdGluYXRpb25Ib3N0KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNl
Y3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b1N0cmluZyhzb3VyY2VPcmlnaW4pKS5nZXQoKSwgdG9T
dHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCksIHRvU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCksIFdU
Rjo6bnVsbG9wdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJldHVybiBTX09L
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggN2Y5OTRiNThjM2YuLmJkYjUyMGFlOTRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTktMDEtMjUgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEgc2VjdXJp
dHkgb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTM0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKworICAg
ICAgICBBZGQgYSBuZXcgdGVzdCB0byBjaGVjayB0aGUgbmV3IEFQSS4gVGhpcyBwYXRjaCByZWZh
Y3RvcnMgV2ViUHJvY2VzcyB0ZXN0cyB0byByZWNlaXZlIHRoZSBXZWJLaXRXZWJFeHRlbnNpb24g
YXMKKyAgICAgICAgcGFyYW1ldGVyIG9mIGNyZWF0ZSBmdW5jdGlvbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5jcHA6CisgICAgICAg
IChET01FbGVtZW50VGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvRWRpdG9yVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFt
ZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RnJhbWVUZXN0OjpjcmVhdGUpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9PcmlnaW5XaGl0ZWxpc3RUZXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChPcmlnaW5XaGl0ZWxpc3RUZXN0OjpjcmVhdGUpOgorICAgICAgICAo
T3JpZ2luV2hpdGVsaXN0VGVzdDo6T3JpZ2luV2hpdGVsaXN0VGVzdCk6CisgICAgICAgIChPcmln
aW5XaGl0ZWxpc3RUZXN0Ojp0ZXN0V2hpdGVsaXN0KToKKyAgICAgICAgKHJlZ2lzdGVyVGVzdHMp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3JpZ2luV2hp
dGVsaXN0LmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0T3JpZ2luV2hpdGVsaXN0KToKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAgICAgICAgKFdlYlBy
b2Nlc3NUZXN0OjphZGQpOgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChydW5UZXN0KToKKyAgICAgICAgKHdpbmRvd09iamVjdENsZWFyZWRDYWxsYmFjayk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVz
dC5jcHA6CisgICAgICAgIChBdXRvY2xlYW51cHNUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdERPTUNsaWVudFJlY3RUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdERPTU5vZGVGaWx0ZXJUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTU5vZGVU
ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RP
TVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NWFBhdGhOU1Jlc29s
dmVyVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0
cy50eHQ6CisKIDIwMTgtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgbWFueSB1c2VzIG9mIFN0cmluZzo6Zm9ybWF0IHdpdGggbW9yZSB0eXBl
LXNhZmUgYWx0ZXJuYXRpdmVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvRE9NRWxlbWVudFRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL0RPTUVsZW1lbnRUZXN0LmNwcAppbmRleCBjZDYwM2FjMmI1Ny4uN2E1YmNk
NTdlOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9E
T01FbGVtZW50VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL0RPTUVsZW1lbnRUZXN0LmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiBjbGFzcyBET01FbGVt
ZW50VGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgRE9NRWxlbWVudFRlc3QoKSk7IH0KKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5z
aW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgRE9NRWxl
bWVudFRlc3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRlc3RBdXRvRmlsbChXZWJLaXRX
ZWJQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL0VkaXRvclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL0VkaXRvclRlc3QuY3BwCmluZGV4IDVmNzYzZTRiYmNkLi44M2MyM2I0NjAzZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0VkaXRvclRlc3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNw
cApAQCAtMjMsNyArMjMsNyBAQAogCiBjbGFzcyBXZWJLaXRXZWJFZGl0b3JUZXN0IDogcHVibGlj
IFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+KG5ldyBXZWJLaXRXZWJFZGl0b3JUZXN0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiopIHsgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdFdlYkVkaXRvclRl
c3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkQ2Fs
bGJhY2soYm9vbCogc2VsZWN0aW9uQ2hhbmdlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKaW5kZXggMmU2N2MwYTdhMzIuLmVhMjk0
MTgwMDBjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
RnJhbWVUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
RnJhbWVUZXN0LmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiBjbGFzcyBXZWJLaXRGcmFtZVRlc3Qg
OiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdEZyYW1lVGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRGcmFtZVRl
c3QoKSk7IH0KIAogcHJpdmF0ZToKICAgICBib29sIHRlc3RNYWluRnJhbWUoV2ViS2l0V2ViUGFn
ZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9PcmlnaW5XaGl0ZWxpc3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9PcmlnaW5XaGl0ZWxpc3RUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uOGI0YjM0MDIzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvT3JpZ2luV2hpdGVsaXN0VGVzdC5jcHAKQEAgLTAs
MCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworY2xhc3MgT3JpZ2luV2hpdGVsaXN0VGVz
dCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBPcmlnaW5X
aGl0ZWxpc3RUZXN0KGV4dGVuc2lvbikpOyB9CisKK3ByaXZhdGU6CisgICAgT3JpZ2luV2hpdGVs
aXN0VGVzdChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKKyAgICAgICAgOiBtX2V4dGVu
c2lvbihleHRlbnNpb24pCisgICAgeworICAgIH0KKworICAgIGJvb2wgdGVzdFdoaXRlbGlzdChX
ZWJLaXRXZWJQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3KCJodHRwIiwgImZvby5jb20iLCAw
KTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0
KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Zvby5jb206
ODA4MC9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdp
bkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBz
Oi8vYmFyLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9v
cmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lvbiwgb3JpZ2luLCAiaHR0cHMi
LCAiZm9vLmNvbSIsIDAsIEZBTFNFKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1
cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmln
aW4sICJodHRwczovL2Zvby5jb206ODA4MC9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jhci5jb20v
cGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5S
ZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9i
YXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2FkZF9v
cmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lvbiwgb3JpZ2luLCAiaHR0cHMi
LCAiZm9vLmNvbSIsIDQ0MywgRkFMU0UpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdFNl
Y3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20vcGFnZSIpKTsK
KyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9y
aWdpbiwgImh0dHBzOi8vZm9vLmNvbTo4MDgwL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNv
bS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNh
blJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczov
L2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25fYWRk
X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9uLCBvcmlnaW4sICJodHRw
cyIsICJmb28uY29tIiwgLTEsIEZBTFNFKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRT
ZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9y
aWdpbiwgImh0dHBzOi8vZm9vLmNvbTo4MDgwL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFyLmNv
bS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNh
blJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczov
L2Jhci5mb28uY29tL3BhZ2UiKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl9leHRlbnNpb25fcmVt
b3ZlX29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0X2VudHJ5KG1fZXh0ZW5zaW9uLCBvcmlnaW4sICJo
dHRwcyIsICJmb28uY29tIiwgLTEsIEZBTFNFKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2Ui
KSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVz
dChvcmlnaW4sICJodHRwczovL2Zvby5jb206ODA4MC9wYWdlIikpOworICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jh
ci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0
cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lvbiwgb3JpZ2luLCAi
aHR0cHMiLCAiZm9vLmNvbSIsIDAsIFRSVUUpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20vcGFnZSIp
KTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0
KG9yaWdpbiwgImh0dHBzOi8vZm9vLmNvbTo4MDgwL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwOi8vYmFy
LmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdp
bkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBz
Oi8vYmFyLmZvby5jb20vcGFnZSIpKTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9y
ZW1vdmVfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9leHRlbnNpb24sIG9yaWdpbiwg
Imh0dHBzIiwgImZvby5jb20iLCAwLCBUUlVFKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2Ui
KSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVz
dChvcmlnaW4sICJodHRwczovL2Zvby5jb206ODA4MC9wYWdlIikpOworICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jh
ci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0U2VjdXJpdHlPcmln
aW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0
cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2FkZF9vcmlnaW5fYWNjZXNzX3doaXRlbGlzdF9lbnRyeShtX2V4dGVuc2lvbiwgb3JpZ2luLCAi
aHR0cCIsICJiYXIuY29tIiwgMCwgRkFMU0UpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20vcGFnZSIp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qo
b3JpZ2luLCAiaHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmNvbS9w
YWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJl
cXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuZm9vLmNvbS9wYWdlIikpOworCisgICAgICAgIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVsaXN0cyhtX2V4dGVu
c2lvbik7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVx
dWVzdChvcmlnaW4sICJodHRwczovL2Zvby5jb20vcGFnZSIpKTsKKyAgICAgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHA6Ly9iYXIu
Y29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2lu
Q2FuUmVxdWVzdChvcmlnaW4sICJodHRwczovL2Jhci5jb20vcGFnZSIpKTsKKworICAgICAgICB3
ZWJraXRfd2ViX2V4dGVuc2lvbl9hZGRfb3JpZ2luX2FjY2Vzc193aGl0ZWxpc3RfZW50cnkobV9l
eHRlbnNpb24sIG9yaWdpbiwgImh0dHBzIiwgbnVsbHB0ciwgMCwgVFJVRSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0U2VjdXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBz
Oi8vZm9vLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1cml0
eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cDovL2Jhci5jb20vcGFnZSIpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAi
aHR0cHM6Ly9iYXIuY29tL3BhZ2UiKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0U2Vj
dXJpdHlPcmlnaW5DYW5SZXF1ZXN0KG9yaWdpbiwgImh0dHBzOi8vYmFyLmZvby5jb20vcGFnZSIp
KTsKKworICAgICAgICB3ZWJraXRfd2ViX2V4dGVuc2lvbl9yZXNldF9vcmlnaW5fYWNjZXNzX3do
aXRlbGlzdHMobV9leHRlbnNpb24pOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRTZWN1
cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9mb28uY29tL3BhZ2UiKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdFNlY3VyaXR5T3JpZ2luQ2FuUmVxdWVzdChvcmln
aW4sICJodHRwOi8vYmFyLmNvbS9wYWdlIikpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRTZWN1cml0eU9yaWdpbkNhblJlcXVlc3Qob3JpZ2luLCAiaHR0cHM6Ly9iYXIuY29tL3BhZ2Ui
KSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBydW5UZXN0KGNv
bnN0IGNoYXIqIHRlc3ROYW1lLCBXZWJLaXRXZWJQYWdlKiBwYWdlKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFzdHJjbXAodGVzdE5hbWUsICJ3aGl0ZWxpc3QiKSkKKyAgICAgICAgICAg
IHJldHVybiB0ZXN0V2hpdGVsaXN0KHBhZ2UpOworCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFj
aGVkKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJFeHRl
bnNpb24qIG1fZXh0ZW5zaW9uIHsgbnVsbHB0ciB9OworfTsKKworc3RhdGljIHZvaWQgX19hdHRy
aWJ1dGVfXygoY29uc3RydWN0b3IpKSByZWdpc3RlclRlc3RzKCkKK3sKKyAgICBSRUdJU1RFUl9U
RVNUKE9yaWdpbldoaXRlbGlzdFRlc3QsICJPcmlnaW5XaGl0ZWxpc3Qvd2hpdGVsaXN0Iik7Cit9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9y
aWdpbldoaXRlbGlzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdE9yaWdpbldoaXRlbGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjQyOGY5NzM2NWYyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcmlnaW5XaGl0ZWxpc3QuY3BwCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisKK3N0YXRpYyB2b2lkIHRlc3RPcmln
aW5XaGl0ZWxpc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiT3JpZ2luV2hpdGVsaXN0IiwgIndo
aXRlbGlzdCIpKTsKK30KKwordm9pZCBiZWZvcmVBbGwoKQoreworICAgIFdlYlZpZXdUZXN0Ojph
ZGQoIk9yaWdpbldoaXRlbGlzdCIsICJ3aGl0ZWxpc3QiLCB0ZXN0T3JpZ2luV2hpdGVsaXN0KTsK
K30KKwordm9pZCBhZnRlckFsbCgpCit7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcAppbmRleCBmNDQxYTcxOWE4
Mi4uMzc3OGZiNzVhODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBzdGF0
aWMgSGFzaFNldDxHT2JqZWN0Kj4gc193YXRjaGVkT2JqZWN0czsKIAotdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgp
Pj4gVGVzdHNNYXA7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKFdlYktpdFdlYkV4dGVuc2lvbiopPj4gVGVzdHNN
YXA7CiBzdGF0aWMgVGVzdHNNYXAmIHRlc3RzTWFwKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGVzdHNNYXA+IHNfdGVzdHNNYXA7CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lk
IGNoZWNrTGVha3MoKQogICAgIGdfYXNzZXJ0X3RydWUoc193YXRjaGVkT2JqZWN0cy5pc0VtcHR5
KCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NUZXN0OjphZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFt
ZSwgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgpPiBjbG9z
dXJlKQordm9pZCBXZWJQcm9jZXNzVGVzdDo6YWRkKGNvbnN0IFN0cmluZyYgdGVzdE5hbWUsIHN0
ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiAoV2ViS2l0V2ViRXh0
ZW5zaW9uKik+IGNsb3N1cmUpCiB7CiAgICAgdGVzdHNNYXAoKS5hZGQodGVzdE5hbWUsIFdURk1v
dmUoY2xvc3VyZSkpOwogfQpAQCAtNjIsMTkgKzYyLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Rlc3Q6
OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR09iamVjdCogb2JqZWN0KQog
ICAgIH0sIG51bGxwdHIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IFdl
YlByb2Nlc3NUZXN0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkKK3N0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShXZWJLaXRXZWJFeHRl
bnNpb24qIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkKIHsKICAgICBnX2Fzc2Vy
dF90cnVlKHRlc3RzTWFwKCkuY29udGFpbnModGVzdE5hbWUpKTsKLSAgICByZXR1cm4gdGVzdHNN
YXAoKS5nZXQodGVzdE5hbWUpKCk7CisgICAgcmV0dXJuIHRlc3RzTWFwKCkuZ2V0KHRlc3ROYW1l
KShleHRlbnNpb24pOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gcnVuVGVzdChXZWJLaXRXZWJQYWdl
KiB3ZWJQYWdlLCBjb25zdCBjaGFyKiB0ZXN0UGF0aCkKK3N0YXRpYyBnYm9vbGVhbiBydW5UZXN0
KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IGNoYXIqIHRlc3RQYXRoLCBXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbikKIHsKICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJf
UEFHRSh3ZWJQYWdlKSk7CiAgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViUGFnZSkpOwogICAgIGdfYXNzZXJ0X25vbm51
bGwodGVzdFBhdGgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0
ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6
OmNyZWF0ZShleHRlbnNpb24sIFN0cmluZzo6ZnJvbVVURjgodGVzdFBhdGgpKTsKICAgICByZXR1
cm4gdGVzdC0+cnVuVGVzdChnX3N0cnJzdHIodGVzdFBhdGgsICIvIikgKyAxLCB3ZWJQYWdlKTsK
IH0KIApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkQ2Fs
bGJhY2soV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkLCBXZWJLaXRXZWJQYWdlKgogICAgIFdlYlBy
b2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KGNvbnRleHQuZ2V0KCkpKTsKICAgICBhdXRvKiBqc0NsYXNzID0ganNjX2NvbnRleHRfcmVnaXN0
ZXJfY2xhc3MoY29udGV4dC5nZXQoKSwgIldlYlByb2Nlc3NUZXN0UnVubmVyIiwgbnVsbHB0ciwg
bnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4od2ViUHJvY2Vzc1Rlc3RS
dW5uZXJGaW5hbGl6ZSkpOwogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGpzQ2xhc3MpKTsKLSAgICBqc2NfY2xhc3NfYWRk
X21ldGhvZChqc0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FMTEJBQ0socnVuVGVzdCksIE5VTEwsIE5V
TEwsIEdfVFlQRV9CT09MRUFOLCAxLCBHX1RZUEVfU1RSSU5HKTsKKyAgICBqc2NfY2xhc3NfYWRk
X21ldGhvZChqc0NsYXNzLCAicnVuVGVzdCIsIEdfQ0FMTEJBQ0socnVuVGVzdCksIGV4dGVuc2lv
biwgbnVsbHB0ciwgR19UWVBFX0JPT0xFQU4sIDEsIEdfVFlQRV9TVFJJTkcpOwogICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IHRlc3RSdW5uZXIgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX25ld19vYmplY3Qo
Y29udGV4dC5nZXQoKSwgZ19vYmplY3RfcmVmKHdlYlBhZ2UpLCBqc0NsYXNzKSk7CiAgICAgV2Vi
UHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QodGVzdFJ1bm5lci5nZXQoKSkpOwogICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShjb250ZXh0
LmdldCgpLCAiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIiLCB0ZXN0UnVubmVyLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVz
dC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0
LmgKaW5kZXggN2E0NGNiMDVjZDQuLjAxYjUzZWI3Y2UwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaApAQCAtMzYsOCAr
MzYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdPYmplY3QqKTsKIAotICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBT
dHJpbmcmIHRlc3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4gKCk+KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBj
cmVhdGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSk7CisgICAgc3RhdGljIHZvaWQgYWRkKGNvbnN0
IFN0cmluZyYgdGVzdE5hbWUsIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nl
c3NUZXN0PiAoV2ViS2l0V2ViRXh0ZW5zaW9uKik+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5zaW9uKiwgY29uc3QgU3Ry
aW5nJiB0ZXN0TmFtZSk7CiB9OwogCiAjZGVmaW5lIFJFR0lTVEVSX1RFU1QoQ2xhc3NOYW1lLCBU
ZXN0TmFtZSkgXApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvQXV0b2NsZWFudXBzVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcAppbmRleCBmNzljZjM0NTE4Mi4uMDVkNzNlMmY3MGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVh
bnVwc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1
dG9jbGVhbnVwc1Rlc3QuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKIGNsYXNzIEF1dG9jbGVhbnVw
c1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IEF1dG9jbGVhbnVwc1Rlc3QoKSk7IH0KKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2ViS2l0V2ViRXh0ZW5z
aW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgQXV0b2Ns
ZWFudXBzVGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgdGVzdFdlYlByb2Nlc3NBdXRv
Y2xlYW51cHMoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcAppbmRleCAx
YjM5ZmFmYTdhNy4uMTYwNTkyMmRhNjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAKQEAgLTI3LDcgKzI3
LDcgQEAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAKIGNsYXNzIFdlYktpdERP
TUNsaWVudFJlY3RUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RE9NQ2xpZW50UmVjdFRlc3Q+KG5ldyBXZWJLaXRET01DbGll
bnRSZWN0VGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rl
c3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0RE9NQ2xpZW50UmVjdFRlc3Q+KG5ldyBXZWJLaXRET01DbGllbnRSZWN0VGVzdCgpKTsg
fQogCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNoZWNrQ2xpZW50UmVjdFBvc2l0aW9uKFdl
YktpdERPTUNsaWVudFJlY3QqIGNsaWVudFJlY3QpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5jcHAKaW5kZXggY2Nh
ODJmY2VlMGMuLjc4ZGMxNTk0M2Q4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZEVsZW1lbnRzTm9JbnB1dFtdID0geyAiSFRN
TCIsICJIRUFEIiwgIlRJVExFIiwgIkJPRFkiCiAKIGNsYXNzIFdlYktpdERPTU5vZGVGaWx0ZXJU
ZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBXZWJLaXRET01Ob2RlRmlsdGVyVGVzdCgpKTsgfQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJF
eHRlbnNpb24qKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+KG5ldyBX
ZWJLaXRET01Ob2RlRmlsdGVyVGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgdGVzdFRy
ZWVXYWxrZXIoV2ViS2l0V2ViUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcAppbmRleCBiYTdmYWI5OWNmNi4uZGI0
ZDFlM2UxMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L0RPTU5vZGVUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9ET01Ob2RlVGVzdC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAgR19HTlVDX0JFR0lOX0lHTk9SRV9E
RVBSRUNBVElPTlM7CiAKIGNsYXNzIFdlYktpdERPTU5vZGVUZXN0IDogcHVibGljIFdlYlByb2Nl
c3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NU
ZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RE9NTm9kZVRlc3Q+
KG5ldyBXZWJLaXRET01Ob2RlVGVzdCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShXZWJLaXRXZWJFeHRlbnNpb24qKSB7IHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8V2ViS2l0RE9NTm9kZVRlc3Q+KG5ldyBXZWJLaXRET01Ob2RlVGVzdCgpKTsg
fQogCiBwcml2YXRlOgogICAgIGJvb2wgdGVzdEhpZXJhcmNoeU5hdmlnYXRpb24oV2ViS2l0V2Vi
UGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKaW5kZXggMzVlZTM1MDNhNDAu
LjQ3ZWZhMDI5OTNjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcApAQCAtNTksNyArNTks
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfeHBhdGhfbnNfcmVzb2x2ZXJfY2xhc3NfaW5pdChXZWJL
aXRYUGF0aE5TUmVzb2x2ZXJDbGFzcyopCiAKIGNsYXNzIFdlYktpdERPTVhQYXRoTlNSZXNvbHZl
clRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4obmV3IFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3QoKSk7
IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoV2Vi
S2l0V2ViRXh0ZW5zaW9uKikgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0
PihuZXcgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyVGVzdCgpKTsgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVja1Jlc3VsdChXZWJLaXRET01Eb2N1bWVu
dCogZG9jdW1lbnQsIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKaW5kZXggZWRiOGExMzYxMDIuLjlkYmM1MWU4
MzQ0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CkBAIC00Myw2ICs0
Myw3IEBAIHNldChXZWJLaXRHTGliQVBJV2ViUHJvY2Vzc1Rlc3RzCiAgICAgJHtUT09MU19ESVJ9
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9ET01FbGVtZW50VGVzdC5jcHAKICAgICAk
e1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0VkaXRvclRlc3QuY3Bw
CiAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRl
c3QuY3BwCisgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9P
cmlnaW5XaGl0ZWxpc3RUZXN0LmNwcAogICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwCiApCiAKQEAgLTE0NCw2ICsxNDUsNyBA
QCBBRERfV0syX1RFU1QoVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAke1RPT0xTX0RJUn0v
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaQogQUREX1dLMl9URVNUKFRlc3RXZWJzaXRlRGF0YSAk
e1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0
YS5jcHApCiBBRERfV0syX1RFU1QoVGVzdENvbnNvbGVNZXNzYWdlICR7VE9PTFNfRElSfS9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcCkKIEFERF9X
SzJfVEVTVChUZXN0RE9NRWxlbWVudCAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RET01FbGVtZW50LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0T3JpZ2luV2hp
dGVsaXN0ICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9y
aWdpbldoaXRlbGlzdC5jcHApCiAKICMgRklYTUU6IEVuYWJsZSBmb3IgV1BFCiBpZiAoUE9SVCBT
VFJFUVVBTCAiR1RLIikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361675</attachid>
            <date>2019-02-11 05:41:27 -0800</date>
            <delta_ts>2019-02-11 05:52:42 -0800</delta_ts>
            <desc>Try to fix mac builds</desc>
            <filename>wpe-bg-color.diff</filename>
            <type>text/plain</type>
            <size>73008</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNWU2Njc2Y2Q4MS4uMGRjN2IyNjZiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAg
ICAgQWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBi
YWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVu
dCB3aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVu
dCBpZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tn
cm91bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBp
biBub24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRy
YW5zcGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDItMTAgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBGaXggc3BlbGxpbmcgZXJy
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGE0ZjgzYjI3ZjBiLi42N2M0YjNhMWExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1l
OjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRD
b2xvciwKICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3Qm
IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQsIFNjcm9s
bGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGJvb2wgaG9yaXpvbnRhbExvY2ssCiAg
ICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIGJvb2wgdmVydGljYWxMb2Nr
KQpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5zcGFyZW50LAogCiAgICAgc2V0VmlldyhmcmFtZVZp
ZXcuY29weVJlZigpKTsKIAotICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2
ZWx5KHRyYW5zcGFyZW50KTsKKyAgICBmcmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBm
cmFtZVZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggOGFk
MTNkNmUxY2MuLjc4NDFhZDU2MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdpdGhTaW1wbGVIVE1MRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZpZXcoUmVmUHRyPEZyYW1lVmlldz4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5zcGFyZW50
LAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgY29u
c3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIGNvbnN0IEludFNp
emUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVudFJl
Y3QsCiAgICAgICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQgPSBmYWxzZSwgU2Nyb2xsYmFyTW9kZSA9
IFNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBmYWxzZSwKICAgICAgICAgU2Ny
b2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8sIGJvb2wgdmVydGljYWxMb2NrID0gZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDliMjQ3NzdkMGJmLi5lMTg4MjdmMjExMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzk4LDcgKzM5OCwxMCBAQCB2b2lkIEZy
YW1lVmlldzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV91c2VzRGFya0FwcGVhcmFuY2UgPSB1c2luZ0RhcmtBcHBlYXJhbmNlOwotICAg
IHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShtX2lzVHJhbnNwYXJlbnQpOworICAgIE9wdGlv
bmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKG1faXNUcmFuc3BhcmVudCkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICB1
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIH0KICNlbmRpZgog
CkBAIC0yOTkzLDE4ICsyOTk2LDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgc2V0TmVlZHNDb21wb3Np
dGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJh
Y2tncm91bmRSZWN1cnNpdmVseShib29sIHRyYW5zcGFyZW50KQordm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91
bmRDb2xvcikKIHsKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykgJiYgUExBVEZPUk0oTUFDKQot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFy
ZW50IDogUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVT
eXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgQ29sb3Ig
YmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9yKFJlbmRlclRoZW1l
OjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tn
cm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICNlbHNlCi0gICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gdHJhbnNwYXJlbnQgPyBDb2xvcjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hpdGU7
CisgICAgQ29sb3IgYmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9y
KENvbG9yOjp3aGl0ZSk7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2ZyYW1l
LnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1l
LnB0cigpKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkg
ewotICAgICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQodHJhbnNwYXJlbnQpOwotICAgICAg
ICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAg
ICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQoIWJhc2VCYWNrZ3JvdW5kQ29sb3IuaXNWaXNp
YmxlKCkpOworICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYXNlQmFj
a2dyb3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmICh2aWV3LT5uZWVkc0xheW91dCgpKQogICAg
ICAgICAgICAgICAgIHZpZXctPmxheW91dENvbnRleHQoKS5zY2hlZHVsZUxheW91dCgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyMTczZGFjM2QyOC4uYWM5M2ZkODQz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CiAKICAgICBlbnVt
IEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFja2dyb3Vu
ZE1vZGVOb25lICAgICAgICAgID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA3MjllOWNmMjQ4OS4uNmI3OGUwM2RkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE3MjEsNyArMTcyMSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5h
bHM6OnNldFZpZXdJc1RyYW5zcGFyZW50KGJvb2wgdHJhbnNwYXJlbnQpCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwotICAgIGRvY3VtZW50LT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eSh0cmFuc3BhcmVudCk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAodHJhbnNwYXJlbnQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzYWJkOTU3NTEzMy4uYTJlYTQ2NjkzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAK
KzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BF
XSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgSW4gdGhlIGNh
c2Ugb2YgV1BFIHdlIG5lZWQgdG8gc2VuZCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgd2Vi
IHByb2Nlc3MgdG8gYmUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorICAgICAgICB0
aGUgcGFnZS4gVGhpcyBwYXRjaCBhZGFwdHMgdGhlIEdUSysgaW1wbGVtZW50YXRpb24gdG8gZG8g
dGhlIHNhbWUsIHNpbmNlIGl0J3MgYSBsb3Qgc2ltcGxlci4gVGhlIHBhdGNoIGFsc28KKyAgICAg
ICAgcmVtb3ZlcyB0aGUgU2V0RHJhd3NCYWNrZ3JvdW5kIG1lc3NhZ2UgaW4gZmF2b3Igb2YgdGhl
IG5ldyBTZXRCYWNrZ3JvdW5kQ29sb3IgbWVzc2FnZSB0aGF0IHJlY2VpdmVzIGFuIG9wdGlvbmFs
CisgICAgICAgIGNvbG9yLgorCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IEFkZCBuZXcg
V1BFIEFQSSBmb3IgV2ViS2l0Q29sb3IgYm94ZWQgdHlwZS4KKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KTogUmVtb3ZlIGJhY2tncm91bmQgcmVuZGVyaW5nIGFuZCBvcGFjaXR5IGhhbmRsaW5nLgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSk6IFJlbW92ZSBkcmF3c0Jha2dyb3VuZCBhbmQgYWx3
YXlzIGNsZWFyIHRoZSBjb250ZXh0IHdpdGgKKyAgICAgICAgdHJhbnNwYXJlbnQgY29sb3IuCisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KTogUmVwbGFjZSBkcmF3c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29s
b3IuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdHdGsuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9y
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdF9jb2xvcl9jb3B5KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9mcmVlKToKKyAgICAg
ICAgKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0Q29sb3JGaWxs
RnJvbVdlYkNvcmVDb2xvcik6CisgICAgICAgICh3ZWJraXRfY29sb3JfcGFyc2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6IEltcGxlbWVudCB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2JhY2tncm91bmRfY29sb3IgQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXdXUEUuY3BwOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tn
cm91bmRfY29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1z
ZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tn
cm91bmQpOiBTZXQgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gZmFsc2UgaXMg
cGFzc2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xv
cik6IFNlbmQgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBSZXBsYWNlIGRyYXdzQmFj
a2dyb3VuZCB3aXRoIGJhY2tncm91bmRDb2xvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd3NCYWNrZ3JvdW5k
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUpOiBSZW1v
dmUgR1RLKyBjb2RlIHRvIGhhbmRsZSBiYWNrZ3JvdW5kIGNvbG9yLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaDogTWFrZSBwYWludCgpIHB1cmUgdmlydHVh
bCBhbmQgcmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQpOiBEb3Qgbm90IGNhbGwgQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KCkgbm93IHRoYXQgaXMgcHVyZSB2aXJ0dWFsLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UpOiBVc2UgYmFja2dyb3VuZCBjb2xvciBhcyBwcm92aWRlZCBi
eSB0aGUKKyAgICAgICAgVUlQcm9jZXNzIHdoZW4gY3JlYXRpbmcgdGhlIEZyYW1lVmlldy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheSk6IFJlbW92ZSBzcGVjaWFsIGNhc2UgZm9yIHRyYW5z
cGFyZW50IGJhY2tncm91bmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcik6IE5ldyBBUEkgZm9yIGJh
Y2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbi4gUHJveGllcyB0byBGcmFtZVZpZXcgYW5kIERy
YXdpbmdBcmVhLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJhY2tncm91bmRDb2xvciBjb25zdCk6IFJlYWQtb25seSBh
Y2Nlc3MgdG8gdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBjb2xvci4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogUmVwbGFjZSBTZXREcmF3c0JhY2tncm91
bmQgbWVzc2FnZSB3aXRoIFNldEJhY2tncm91bmRDb2xvci4KKwogMjAxOS0wMS0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0
eSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IGRmMTU5NGY3YzgyLi4yNTgzYTBi
ZGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05OCw2ICs5OCw3IEBAIHNldChXUEVf
QVBJX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDcmVkZW50aWFsLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGE1ZjE1ZjAxYTUwLi5kYTJmOGE1MjdkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwbHlTdGF0ZUNoYW5nZXMoY29uc3Qg
VmVjdG9yPENvb3JkaW5hdGVkR3JhcGhpYwogICAgICAgICBjb21taXRTY2VuZVN0YXRlKHN0YXRl
Lm5pY29zaWEpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3Mg
UGFpbnRGbGFncykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVu
dEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBGbG9h
dFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCiB7
CiAgICAgdXBkYXRlU2NlbmVTdGF0ZSgpOwogCkBAIC03OCwxOCArNzgsOCBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaQogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZyhQYWludEZs
YWdzKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBjbGlwUmVjdCk7CiAKLSAgICBpZiAoZHJhd3NCYWNrZ3JvdW5kKSB7Ci0gICAgICAgIFJH
QkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoYmFja2dyb3VuZENvbG9yLnJlZCgpLAot
ICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVl
KCksCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSAqIG9wYWNpdHkpOwotICAg
ICAgICBtX3RleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKGNsaXBSZWN0LCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBDb2xvcihyZ2JhKSwgdHJ1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
dGV4dHVyZU1hcHBlci0+Y2xlYXJDb2xvcihtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAg
aWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290
TGF5ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkgewotICAgICAgICBjdXJyZW50Um9vdExheWVy
LT5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT50cmFuc2Zv
cm0oKSAhPSBtYXRyaXgpCiAgICAgICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRyYW5zZm9ybSht
YXRyaXgpOwotICAgIH0KIAogICAgIGN1cnJlbnRSb290TGF5ZXItPnBhaW50KCk7CiAgICAgbV9m
cHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkoKm1fdGV4dHVyZU1hcHBlciwgY2xpcFJlY3Qu
bG9jYXRpb24oKSwgbWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
CmluZGV4IGQ0YmI1ODI2OGZlLi4yZTZiMzM1ZGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKIAogICAgIHZvaWQgYXBwbHlTdGF0ZUNoYW5nZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4mKTsKLSAgICB2
b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludFRvQ3VycmVudEdM
Q29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgPSAwKTsK
ICAgICB2b2lkIGRldGFjaCgpOwogCiAgICAgLy8gVGhlIHBhaW50aW5nIHRocmVhZCBtdXN0IGxv
Y2sgdGhlIG1haW4gdGhyZWFkIHRvIHVzZSBiZWxvdyB0d28gbWV0aG9kcywgYmVjYXVzZSB0d28g
bWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0aGF0IHRoZSBtYWluIHRocmVhZCBtYW5hZ2VzLiBTZWUg
bV9jbGllbnQuCkBAIC04Miw5ICs4Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0
aXZlKSB7IG1faXNBY3RpdmUgPSBhY3RpdmU7IH0KIAotICAgIHZvaWQgc2V0Vmlld0JhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV92aWV3QmFja2dyb3VuZENv
bG9yID0gY29sb3I7IH0KLSAgICBXZWJDb3JlOjpDb2xvciB2aWV3QmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3QmFja2dyb3VuZENvbG9yOyB9Ci0KIHByaXZhdGU6CiAgICAg
dm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZTo6Tmljb3NpYVN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVTY2VuZVN0YXRlKCk7CkBAIC0x
MTMsNyArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyPiBtX3Jvb3RMYXllcjsKIAogICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5
ZXI6OkxheWVySUQgbV9yb290TGF5ZXJJRCB7IDAgfTsKLSAgICBXZWJDb3JlOjpDb2xvciBtX3Zp
ZXdCYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKIAogICAgIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApp
bmRleCA3NTIyZjg0ZWE4Zi4uODA1ZjIzMzBjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMTU2LDEzICsx
NTYsNiBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbAogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCi12b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQotewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKLSAgICBtX2F0dHJpYnV0ZXMuZHJhd3NCYWNrZ3JvdW5k
ID0gZHJhd3NCYWNrZ3JvdW5kOwotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVw
ZGF0ZSgpOwotfQotCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQoKQog
ewogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTk0LDgg
KzE4Nyw4IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAg
IFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplOwogICAgIFdlYkNvcmU6OkludFBvaW50IHNj
cm9sbFBvc2l0aW9uOwogICAgIGZsb2F0IHNjYWxlRmFjdG9yOwotICAgIGJvb2wgZHJhd3NCYWNr
Z3JvdW5kOwogICAgIGJvb2wgbmVlZHNSZXNpemU7CisKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBzdGF0ZXM7CiAKICAgICB7CkBAIC0yMDMsNyArMTk2LDYg
QEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgICAgIHZp
ZXdwb3J0U2l6ZSA9IG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemU7CiAgICAgICAgIHNjcm9sbFBv
c2l0aW9uID0gbV9hdHRyaWJ1dGVzLnNjcm9sbFBvc2l0aW9uOwogICAgICAgICBzY2FsZUZhY3Rv
ciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKLSAgICAgICAgZHJhd3NCYWNrZ3JvdW5kID0g
bV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZDsKICAgICAgICAgbmVlZHNSZXNpemUgPSBtX2F0
dHJpYnV0ZXMubmVlZHNSZXNpemU7CiAKICAgICAgICAgc3RhdGVzID0gV1RGTW92ZShtX2F0dHJp
YnV0ZXMuc3RhdGVzKTsKQEAgLTI0NywxNCArMjM5LDExIEBAIHZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIHZpZXdwb3J0VHJhbnNmb3JtLnNjYWxlKHNjYWxl
RmFjdG9yKTsKICAgICB2aWV3cG9ydFRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9sbFBvc2l0aW9u
LngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSk7CiAKLSAgICBpZiAoIWRyYXdzQmFja2dyb3VuZCkg
ewotICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgfQorICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsK
KyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwogCiAgICAgbV9zY2VuZS0+YXBwbHlT
dGF0ZUNoYW5nZXMoc3RhdGVzKTsKLSAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4
dCh2aWV3cG9ydFRyYW5zZm9ybSwgMSwgRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IH0sIHZpZXdw
b3J0U2l6ZSB9LAotICAgICAgICBDb2xvcjo6dHJhbnNwYXJlbnQsICFkcmF3c0JhY2tncm91bmQs
IG1fcGFpbnRGbGFncyk7CisgICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmll
d3BvcnRUcmFuc2Zvcm0sIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9ydFNpemUg
fSwgbV9wYWludEZsYWdzKTsKIAogICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAppbmRleCA2ZDcwNTM4NTBkYS4uYjYzMWZjMDM1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBAIC03MCw3ICs3MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgZmxvYXQgc2NhbGUpOwog
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBmbG9hdCBz
Y2FsZSk7Ci0gICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKICAgICB2b2lkIHVw
ZGF0ZVNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7
CiAKQEAgLTExMiw5ICsxMTEsNyBAQCBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpJbnRTaXpl
IHZpZXdwb3J0U2l6ZTsKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb247
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwotICAgICAgICBib29sIGRyYXdzQmFj
a2dyb3VuZCB7IHRydWUgfTsKICAgICAgICAgYm9vbCBuZWVkc1Jlc2l6ZSB7IGZhbHNlIH07Ci0K
ICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVz
OwogCiAgICAgICAgIGJvb2wgY2xpZW50UmVuZGVyc05leHRGcmFtZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGIxNjRjYWQ3Y2U2Li4xMjUxOWI3MTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgdm9p
ZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgc3RvcmU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRy
YXdpbmdBcmVhVHlwZSk7CiAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXBEYXRhOwotICAgIGVuY29k
ZXIgPDwgZHJhd3NCYWNrZ3JvdW5kOwogICAgIGVuY29kZXIgPDwgaXNFZGl0YWJsZTsKICAgICBl
bmNvZGVyIDw8IHVuZGVybGF5Q29sb3I7CiAgICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsK
QEAgLTEyMiw2ICsxMjEsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CiAjZW5kaWYKKyAgICBlbmNv
ZGVyIDw8IGJhY2tncm91bmRDb2xvcjsKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKQEAgLTE0MCw4ICsxNDAsNiBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghcGFnZUdyb3VwRGF0YSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBXVEZNb3ZlKCpwYWdlR3JvdXBEYXRhKTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNFZGl0YWJsZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpKQpAQCAtMzU0LDYgKzM1MiwxMiBA
QCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIHBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0
cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMpOwogI2VuZGlmCiAKKyAgICBPcHRpb25hbDxP
cHRpb25hbDxXZWJDb3JlOjpDb2xvcj4+IGJhY2tncm91bmRDb2xvcjsKKyAgICBkZWNvZGVyID4+
IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1v
dmUoKmJhY2tncm91bmRDb2xvcik7CisKICAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGQxYjAzMDNkNzJmLi42ZmFlMzdlODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNzMsNyArNzMsNiBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRy
YXdpbmdBcmVhVHlwZTsKICAgICBXZWJQYWdlR3JvdXBEYXRhIHBhZ2VHcm91cERhdGE7CiAKLSAg
ICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29sIGlzRWRpdGFibGU7CiAKICAgICBXZWJD
b3JlOjpDb2xvciB1bmRlcmxheUNvbG9yOwpAQCAtMTkwLDYgKzE4OSw4IEBAIHN0cnVjdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpD
b2xvcj4gYmFja2dyb3VuZENvbG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzV1BFLnR4dAppbmRleCA1YTA4ZTVkZmI4OC4uNDFiYzYxNDhmZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BF
LnR4dApAQCAtMTcwLDYgKzE3MCw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFu
YWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVy
LmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNjcmlwdERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDI2ZDhjYTA1
MWJjLi40YjQwMDgyYWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC02ODcsNyArNjg3LDggQEAgc3RhdGljIHZvaWQgdmFsaWRhdGUo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIAogICAgIF9wYWdlID0gW19j
b250ZW50VmlldyBwYWdlXTsKICAgICBbc2VsZiBfZGlzcGF0Y2hTZXREZXZpY2VPcmllbnRhdGlv
bjpkZXZpY2VPcmllbnRhdGlvbigpXTsKLSAgICBfcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHNl
bGYub3BhcXVlKTsKKyAgICBpZiAoIXNlbGYub3BhcXVlKQorICAgICAgICBfcGFnZS0+c2V0QmFj
a2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCkp
OwogCiAgICAgW19jb250ZW50VmlldyBsYXllcl0uYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsK
ICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107CkBAIC0yNTAyLDcgKzI1MDMsMTAg
QEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNldChXZWJD
b3JlOjpGbG9hdFBvaW50IGNvbnRlbnRPZmYKICAgICBpZiAoIV9wYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBfcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKG9wYXF1ZSk7CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIW9wYXF1ZSkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Q29sb3IoV2ViQ29yZTo6Q29sb3I6OnRy
YW5zcGFyZW50KQorICAgIF9wYWdlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9y
KTsKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4
IGU0MTNmYmEzZTQ3Li5iZmQ5YjYwMzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTM5ODgsNzQgKzM5ODgsNiBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzVGVybWluYXRlZChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRXZWJQcm9jZXNzVAogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFs
c1tXRUJfUFJPQ0VTU19URVJNSU5BVEVEXSwgMCwgcmVhc29uKTsKIH0KIAotI2lmIFBMQVRGT1JN
KEdUSykKLS8qKgotICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgotICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Ci0gKiBAcmdiYTogYSAjR2RrUkdCQQotICoKLSAq
IFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBi
YWNrZ3JvdW5kIGJlZm9yZQotICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5v
dGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmlldwotICogc3BlY2lmaWVz
IGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJn
YmEgY29sb3IuCi0gKiBCeSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBp
cyBvcGFxdWUgd2hpdGUuCi0gKiBOb3RlIHRoYXQgdGhlIHBhcmVudCB3aW5kb3cgbXVzdCBoYXZl
IGEgUkdCQSB2aXN1YWwgYW5kCi0gKiAjR3RrV2lkZ2V0OmFwcC1wYWludGFibGUgcHJvcGVydHkg
c2V0IHRvICVUUlVFIGZvciBiYWNrZ3JvdW5kcyBjb2xvcnMgdG8gd29yay4KLSAqCi0gKiA8aW5m
b3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KLSAqIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2lu
ZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yIChCcm93c2VyV2luZG93ICp3aW5kb3csCi0gKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2RrUkdC
QSAqcmdiYSkKLSAqIHsKLSAqICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldzsKLSAqICAgICBH
ZGtTY3JlZW4gKnNjcmVlbiA9IGd0a193aW5kb3dfZ2V0X3NjcmVlbiAoR1RLX1dJTkRPVyAod2lu
ZG93KSk7Ci0gKiAgICAgR2RrVmlzdWFsICpyZ2JhX3Zpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3Jn
YmFfdmlzdWFsIChzY3JlZW4pOwotICoKLSAqICAgICBpZiAoIXJnYmFfdmlzdWFsKQotICogICAg
ICAgICAgcmV0dXJuOwotICoKLSAqICAgICBndGtfd2lkZ2V0X3NldF92aXN1YWwgKEdUS19XSURH
RVQgKHdpbmRvdyksIHJnYmFfdmlzdWFsKTsKLSAqICAgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFp
bnRhYmxlIChHVEtfV0lER0VUICh3aW5kb3cpLCBUUlVFKTsKLSAqCi0gKiAgICAgd2ViX3ZpZXcg
PSBicm93c2VyX3dpbmRvd19nZXRfd2ViX3ZpZXcgKHdpbmRvdyk7Ci0gKiAgICAgd2Via2l0X3dl
Yl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICh3ZWJfdmlldywgcmdiYSk7Ci0gKiB9Ci0gKiA8
L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgotICoKLSAqIFNpbmNlOiAyLjgKLSAq
Lwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgY29uc3QgR2RrUkdCQSogcmdiYSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChyZ2Jh
KTsKLQotICAgIENvbG9yIGNvbG9yKCpyZ2JhKTsKLSAgICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3
ZWJWaWV3KTsKLSAgICBpZiAocGFnZS5iYWNrZ3JvdW5kQ29sb3IoKSA9PSBjb2xvcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotICAgIHBh
Z2Uuc2V0RHJhd3NCYWNrZ3JvdW5kKGNvbG9yID09IENvbG9yOjp3aGl0ZSk7Ci19Ci0KLS8qKgot
ICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yOgotICogQHdlYl92aWV3OiBh
ICNXZWJLaXRXZWJWaWV3Ci0gKiBAcmdiYTogKG91dCk6IGEgI0dka1JHQkEgdG8gZmlsbCBpbiB3
aXRoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yCi0gKgotICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1
c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQotICogdGhlIGFjdHVh
bCBjb250ZW50cyBhcmUgcmVuZGVyZWQuCi0gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxz
byB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKQotICoKLSAqIFNpbmNlOiAy
LjgKLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgR2RrUkdCQSogcmdiYSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChyZ2Jh
KTsKLQotICAgICpyZ2JhID0gZ2V0UGFnZSh3ZWJWaWV3KS5iYWNrZ3JvdW5kQ29sb3IoKTsKLX0K
LSNlbmRpZiAvLyBQTEFURk9STShHVEspCi0KIC8qCiAgKiB3ZWJraXRfd2ViX3ZpZXdfaXNfZWRp
dGFibGU6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IGJjODIx
Nzk5MTI4Li43Nzk5ZmI4MWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0U2NyaXB0RGlhbG9nSW1wbC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+CkBAIC0zNTksMyArMzYwLDY1IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92
aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFVzZXJDb250ZW50TWFuYWdl
CiAKICAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwgbnVsbHB0cikp
OwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJnYmE6IGEgI0dka1JHQkEKKyAqCisg
KiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcg
YmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBO
b3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKKyAqIHNwZWNpZmll
cyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIEBy
Z2JhIGNvbG9yLgorICogQnkgZGVmYXVsdCB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgY29sb3Ig
aXMgb3BhcXVlIHdoaXRlLgorICogTm90ZSB0aGF0IHRoZSBwYXJlbnQgd2luZG93IG11c3QgaGF2
ZSBhIFJHQkEgdmlzdWFsIGFuZAorICogI0d0a1dpZGdldDphcHAtcGFpbnRhYmxlIHByb3BlcnR5
IHNldCB0byAlVFJVRSBmb3IgYmFja2dyb3VuZHMgY29sb3JzIHRvIHdvcmsuCisgKgorICogPGlu
Zm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBzdGF0aWMgdm9pZCBicm93c2VyX3dp
bmRvd19zZXRfYmFja2dyb3VuZF9jb2xvciAoQnJvd3NlcldpbmRvdyAqd2luZG93LAorICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdka1JH
QkEgKnJnYmEpCisgKiB7CisgKiAgICAgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXc7CisgKiAgICAg
R2RrU2NyZWVuICpzY3JlZW4gPSBndGtfd2luZG93X2dldF9zY3JlZW4gKEdUS19XSU5ET1cgKHdp
bmRvdykpOworICogICAgIEdka1Zpc3VhbCAqcmdiYV92aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9y
Z2JhX3Zpc3VhbCAoc2NyZWVuKTsKKyAqCisgKiAgICAgaWYgKCFyZ2JhX3Zpc3VhbCkKKyAqICAg
ICAgICAgIHJldHVybjsKKyAqCisgKiAgICAgZ3RrX3dpZGdldF9zZXRfdmlzdWFsIChHVEtfV0lE
R0VUICh3aW5kb3cpLCByZ2JhX3Zpc3VhbCk7CisgKiAgICAgZ3RrX3dpZGdldF9zZXRfYXBwX3Bh
aW50YWJsZSAoR1RLX1dJREdFVCAod2luZG93KSwgVFJVRSk7CisgKgorICogICAgIHdlYl92aWV3
ID0gYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl92aWV3ICh3aW5kb3cpOworICogICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAod2ViX3ZpZXcsIHJnYmEpOworICogfQorICog
PC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqCisgKiBTaW5jZTogMi44Cisg
Ki8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdi
YSk7CisKKyAgICBhdXRvJiBwYWdlID0gKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShyZWludGVy
cHJldF9jYXN0PFdlYktpdFdlYlZpZXdCYXNlKj4od2ViVmlldykpOworICAgIHBhZ2Uuc2V0QmFj
a2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yKCpyZ2JhKSk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRX
ZWJWaWV3CisgKiBAcmdiYTogKG91dCk6IGEgI0dka1JHQkEgdG8gZmlsbCBpbiB3aXRoIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yCisgKgorICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRvIGRy
YXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBjb250ZW50
cyBhcmUgcmVuZGVyZWQuCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKQorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwor
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgR2RrUkdCQSogcmdiYSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKKworICAg
IGF1dG8mIHBhZ2UgPSAqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViS2l0V2ViVmlld0Jhc2UqPih3ZWJWaWV3KSk7CisgICAgKnJnYmEgPSBwYWdlLmJhY2tncm91
bmRDb2xvcigpLnZhbHVlT3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI4MThmOTVhMzA5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAKQEAgLTAsMCAr
MSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yLmgiCisKKyNpbmNsdWRlICJXZWJLaXRD
b2xvclByaXZhdGUuaCIKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDb2xvcgorICogQFNob3J0
X2Rlc2NyaXB0aW9uOiBBIGJveGVkIHR5cGUgcmVwcmVzZW50aW5nIGEgUkdCQSBjb2xvcgorICog
QFRpdGxlOiBXZWJLaXRDb2xvcgorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldy4KKyAqCisg
KiBBIFdlYktpdENvbG9yIGlzIGEgYm94ZWQgdHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9y
LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY29weToK
KyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBNYWtlIGEgY29weSBvZiBAY29sb3Iu
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIGluICNX
ZWJLaXRDb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitXZWJLaXRDb2xvciogd2Via2l0
X2NvbG9yX2NvcHkoV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGNvbG9yLCBudWxscHRyKTsKKworICAgIFdlYktpdENvbG9yKiBjb3B5ID0gc3RhdGljX2Nh
c3Q8V2ViS2l0Q29sb3IqPihmYXN0WmVyb2VkTWFsbG9jKHNpemVvZihXZWJLaXRDb2xvcikpKTsK
KyAgICBjb3B5LT5yZWQgPSBjb2xvci0+cmVkOworICAgIGNvcHktPmdyZWVuID0gY29sb3ItPmdy
ZWVuOworICAgIGNvcHktPmJsdWUgPSBjb2xvci0+Ymx1ZTsKKyAgICBjb3B5LT5hbHBoYSA9IGNv
bG9yLT5hbHBoYTsKKyAgICByZXR1cm4gY29weTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3Jf
ZnJlZToKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBGcmVlIHRoZSAjV2ViS2l0
Q29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfY29sb3JfZnJlZShX
ZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChjb2xvcik7CisKKyAg
ICBmYXN0RnJlZShjb2xvcik7Cit9CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0Q29sb3Is
IHdlYmtpdF9jb2xvciwgd2Via2l0X2NvbG9yX2NvcHksIHdlYmtpdF9jb2xvcl9mcmVlKTsKKwor
Y29uc3QgV2ViQ29yZTo6Q29sb3Igd2Via2l0Q29sb3JUb1dlYkNvcmVDb2xvcihXZWJLaXRDb2xv
ciogY29sb3IpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbG9yKHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvci0+cmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5ncmVlbiksCisgICAgICAg
IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Ymx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xv
ci0+YWxwaGEpKTsKK30KKwordm9pZCB3ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiB3ZWJDb3JlQ29sb3IsIFdlYktpdENvbG9yKiBjb2xvcikKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVCh3ZWJDb3JlQ29sb3IuaXNWYWxpZCgpKTsKKworICAgIGRvdWJs
ZSByLCBnLCBiLCBhOworICAgIHdlYkNvcmVDb2xvci5nZXRSR0JBKHIsIGcsIGIsIGEpOworICAg
IGNvbG9yLT5yZWQgPSByOworICAgIGNvbG9yLT5ncmVlbiA9IGc7CisgICAgY29sb3ItPmJsdWUg
PSBiOworICAgIGNvbG9yLT5hbHBoYSA9IGE7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX3Bh
cnNlOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvciB0byBmaWxsIGluCisgKiBAY29sb3Jfc3Ry
aW5nOiBjb2xvciByZXByZXNlbnRhdGlvbiBhcyBjb2xvciBuaWNrbmFtZSBvciBIRVggc3RyaW5n
CisgKgorICogQ3JlYXRlIGEgbmV3ICNXZWJLaXRDb2xvciBmb3IgdGhlIGdpdmVuIEBjb2xvcl9z
dHJpbmcKKyAqIHJlcHJlc2VudGF0aW9uLiBUaGVyZSBhcmUgdHdvIHZhbGlkIHJlcHJlc2VudGF0
aW9uIHR5cGVzOiBzdGFuZGFyZCBjb2xvcgorICogbmFtZXMgKHNlZSBodHRwczovL2h0bWxjb2xv
cmNvZGVzLmNvbS9jb2xvci1uYW1lcy8gZm9yIGluc3RhbmNlKSBvciBIRVgKKyAqIHZhbHVlcy4K
KyAqCisgKiBSZXR1cm5zOiBhICNnYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBAY29sb3Igd2Fz
IGNvcnJlY3RseSBmaWxsZWQgaW4gb3Igbm90LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK2di
b29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3IsIGNvbnN0IGdjaGFy
KiBjb2xvclN0cmluZykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xvciwgRkFMU0Up
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7CisKKyAgICBh
dXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNvbG9yKGNvbG9yU3RyaW5nKTsKKyAgICBpZiAo
IXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHdl
YmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3Iod2ViQ29yZUNvbG9yLCBjb2xvcik7CisgICAg
cmV0dXJuIFRSVUU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dENvbG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYyNmQwOTE2
MDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRDb2xvci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJl
IGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdENvbG9yX2gKKyNk
ZWZpbmUgV2ViS2l0Q29sb3JfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRl
IDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKy8qKgorICogV2ViS2l0
Q29sb3I6CisgKiBAcmVkOiBSZWQgY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNp
dmUKKyAqIEBncmVlbjogR3JlZW4gY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNp
dmUKKyAqIEBibHVlOiBCbHVlIGNoYW5uZWwsIGJldHdlZW4gMC4wIGFuZCAxLjAgaW5jbHVzaXZl
CisgKiBAYWxwaGE6IEFscGhhIGNoYW5uZWwsIGJldHdlZW4gMC4wIGFuZCAxLjAgaW5jbHVzaXZl
CisgKgorICogQSBXZWJLaXRDb2xvciBpcyBhIGJveGVkIHR5cGUgcmVwcmVzZW50aW5nIGEgUkdC
QSBjb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitzdHJ1Y3QgX1dlYktpdENvbG9yIHsK
KyAgICBnZG91YmxlIHJlZDsKKyAgICBnZG91YmxlIGdyZWVuOworICAgIGdkb3VibGUgYmx1ZTsK
KyAgICBnZG91YmxlIGFscGhhOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yIFdl
YktpdENvbG9yOworCisjZGVmaW5lIFdFQktJVF9UWVBFX0NPTE9SICh3ZWJraXRfY29sb3JfZ2V0
X3R5cGUoKSkKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2NvbG9yX2dldF90eXBlICAgICAo
dm9pZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9jb2xvcl9wYXJzZSAgICAgICAg
KFdlYktpdENvbG9yICpjb2xvciwgY29uc3QgZ2NoYXIgKmNvbG9yX3N0cmluZyk7CisKK0dfRU5E
X0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJLaXRDb2xvcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjM5YTExNjAzNDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yLmgi
CisKK3ZvaWQgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYsIFdlYktpdENvbG9yKik7Citjb25zdCBXZWJDb3JlOjpDb2xvciB3ZWJraXRDb2xvclRv
V2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQxMDJhNzUyNmQ2Li4yYTRhNjIwNDIzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgK
QEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJW
aWV3QmFja2VuZC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRDb2xvci5oPgogI2luY2x1ZGUgPHdw
ZS9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdpbmRv
d1Byb3BlcnRpZXMuaD4KIApAQCAtNTE3LDYgKzUxOCwxMyBAQCBXRUJLSVRfQVBJIHZvaWQKIHdl
YmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAg
ICAgIGlkKTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91
bmRfY29sb3IgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0Q29sb3IgICAgICAgICAgICAgICAgICpjb2xvcik7CitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAgICAg
ICAgICAgICAgKmNvbG9yKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRleCBh
MzQ5NWU4NTJlMS4uOWU1Y2U1YzM4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAorI2luY2x1ZGUg
IldlYktpdENvbG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgi
CiAKIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBdXRoZW50aWNhdGUoV2ViS2l0V2ViVmlldyosIFdl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCopCkBAIC0xNzgsMyArMTc5LDQ0IEBAIFdlYktpdFdl
YlZpZXcqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcihXZWJL
aXRXZWJWaWV3QmFja2VuCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250
ZW50TWFuYWdlciwKICAgICAgICAgbnVsbHB0cikpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
dmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dworICogQGJhY2tncm91bmRDb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBTZXRzIHRoZSBj
b2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBi
ZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBOb3RlIHRoYXQgaWYg
dGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKKyAqIHNwZWNpZmllcyBhIGJhY2tncm91
bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGJhY2tncm91bmQgY29s
b3IuCisgKiBCeSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFx
dWUgd2hpdGUuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3Iq
IGJhY2tncm91bmRDb2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChiYWNrZ3JvdW5kQ29sb3IpOwor
CisgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOworICAgIHBh
Z2Uuc2V0QmFja2dyb3VuZENvbG9yKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2Nv
bG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAcmdiYTogKG91dCk6IGEg
I1dlYktpdENvbG9yIHRvIGZpbGwgaW4gd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvcgorICoKKyAq
IEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dy
b3VuZCBiZWZvcmUgdGhlCisgKiBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBGb3IgbW9y
ZSBpbmZvcm1hdGlvbiBzZWUgYWxzbworICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5k
X2NvbG9yKCkuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3Iq
IGNvbG9yKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CisK
KyAgICBhdXRvJiB3ZWJDb3JlQ29sb3IgPSBwYWdlLmJhY2tncm91bmRDb2xvcigpOworICAgIHdl
YmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3Iod2ViQ29yZUNvbG9yLnZhbHVlT3IoV2ViQ29y
ZTo6Q29sb3I6OndoaXRlKSwgY29sb3IpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CmluZGV4IGE1ZWNm
ZTQ2MzdmLi5lNjVhNzgxODZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dApAQCAtMjA3LDYgKzIwNyw4
IEBAIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUKIHdlYmtpdF93ZWJfdmll
d19nZXRfbWFpbl9yZXNvdXJjZQogd2Via2l0X3dlYl92aWV3X2FkZF9mcmFtZV9kaXNwbGF5ZWRf
Y2FsbGJhY2sKIHdlYmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNr
Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IKK3dlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcgogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtMjY3LDYgKzI2OSwxNiBAQCB3ZWJraXRfd2Vi
X3ZpZXdfYmFja2VuZF9uZXcKIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX2dldF90eXBlCiA8L1NF
Q1RJT04+CiAKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0Q29sb3I8L0ZJTEU+CitXRUJLSVRfVFlQ
RV9DT0xPUgorV2ViS2l0Q29sb3IKK3dlYmtpdF9jb2xvcl9wYXJzZQorCis8U1VCU0VDVElPTiBQ
cml2YXRlPgord2Via2l0X2NvbG9yX2dldF90eXBlCis8L1NFQ1RJT04+CisKIDxTRUNUSU9OPgog
PEZJTEU+V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PC9GSUxFPgogV2ViS2l0QXV0aGVudGlj
YXRpb25SZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCmluZGV4IGExOWYzNjljNjA4Li43ZGE3MzU4Y2VjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTE0NTQsNyArMTQ1NCwxMCBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiB7Ci0gICAgbV9wYWdlLT5z
ZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKTsKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghZHJhd3NCYWNrZ3JvdW5kKQorICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJh
bnNwYXJlbnQpOworICAgIG1fcGFnZS0+c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cik7CiAKICAgICAvLyBNYWtlIHN1cmUgdXBkYXRlTGF5ZXIgZ2V0cyBjYWxsZWQgb24gdGhlIHdl
YiB2aWV3LgogICAgIFttX3ZpZXcgc2V0TmVlZHNEaXNwbGF5OllFU107CkBAIC0xNDYyLDcgKzE0
NjUsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0Jh
Y2tncm91bmQpCiAKIGJvb2wgV2ViVmlld0ltcGw6OmRyYXdzQmFja2dyb3VuZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CisgICAgYXV0byYgYmFja2dy
b3VuZENvbG9yID0gbV9wYWdlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICByZXR1cm4gIWJhY2tn
cm91bmRDb2xvciB8fCBiYWNrZ3JvdW5kQ29sb3IudmFsdWUoKS5pc1Zpc2libGUoKTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKE5TQ29sb3IgKmJhY2tncm91bmRD
b2xvcikKQEAgLTE0ODYsNyArMTQ5MCw3IEBAIE5TQ29sb3IgKldlYlZpZXdJbXBsOjpiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAogCiBib29sIFdlYlZpZXdJbXBsOjppc09wYXF1ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CisgICAgcmV0dXJuIGRyYXdz
QmFja2dyb3VuZCgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRTaG91bGRTdXBwcmVzc0Zp
cnN0UmVzcG9uZGVyQ2hhbmdlcyhib29sIHNob3VsZFN1cHByZXNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNzc5MjY0ZGU3MmEuLjExNmI5MGRkM2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQyNyw3ICs0Mjcs
NiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9jcHVMaW1pdChtX2NvbmZpZ3Vy
YXRpb24tPmNwdUxpbWl0KCkpCiAgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3dhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRN
b3ZlVG9XaW5kb3cobV9jb25maWd1cmF0aW9uLT53YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92
ZVRvV2luZG93KCkpCi0gICAgLCBtX2RyYXdzQmFja2dyb3VuZChtX2NvbmZpZ3VyYXRpb24tPmRy
YXdzQmFja2dyb3VuZCgpKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9jb250cm9s
bGVkQnlBdXRvbWF0aW9uKG1fY29uZmlndXJhdGlvbi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KCkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00NDYsNiArNDQ1LDkgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCB1aW4KIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25z
dHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CiAKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+
ZHJhd3NCYWNrZ3JvdW5kKCkpCisgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50KTsKKwogICAgIG1fd2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5hZGRP
YnNlcnZlcihtX3Zpc2l0ZWRMaW5rU3RvcmUpOwogICAgIG1fd2ViUHJvY2Vzc0xpZmV0aW1lVHJh
Y2tlci5hZGRPYnNlcnZlcihtX3dlYnNpdGVEYXRhU3RvcmUpOwogCkBAIC0xNTM5LDE1ICsxNTQx
LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKICAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdldChwYWdlVGFyZ2V0SWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgY29s
b3IpCiB7Ci0gICAgaWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09IGRyYXdzQmFja2dyb3VuZCkKKyAg
ICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZHJhd3NCYWNrZ3JvdW5kID0gZHJhd3NCYWNrZ3JvdW5kOwotCisgICAgbV9iYWNrZ3JvdW5k
Q29sb3IgPSBjb2xvcjsKICAgICBpZiAoaXNWYWxpZCgpKQotICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERyYXdzQmFja2dyb3VuZChkcmF3c0JhY2tncm91bmQp
LCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKQEAgLTY3ODgsNyAr
Njc4OSw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlv
blBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5kcmF3aW5n
QXJlYVR5cGUgPSBtX2RyYXdpbmdBcmVhLT50eXBlKCk7CiAgICAgcGFyYW1ldGVycy5zdG9yZSA9
IHByZWZlcmVuY2VzU3RvcmUoKTsKICAgICBwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBtX3Bh
Z2VHcm91cC0+ZGF0YSgpOwotICAgIHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kID0gbV9kcmF3
c0JhY2tncm91bmQ7CiAgICAgcGFyYW1ldGVycy5pc0VkaXRhYmxlID0gbV9pc0VkaXRhYmxlOwog
ICAgIHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvciA9IG1fdW5kZXJsYXlDb2xvcjsKICAgICBwYXJh
bWV0ZXJzLnVzZUZpeGVkTGF5b3V0ID0gbV91c2VGaXhlZExheW91dDsKQEAgLTY4ODgsNiArNjg4
OCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAjZW5kaWYKIAogICAgIHBhcmFtZXRlcnMu
bmVlZHNGb250QXR0cmlidXRlcyA9IG1fbmVlZHNGb250QXR0cmlidXRlczsKKyAgICBwYXJhbWV0
ZXJzLmJhY2tncm91bmRDb2xvciA9IG1fYmFja2dyb3VuZENvbG9yOwogCiAgICAgcHJvY2Vzcy5h
ZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShtX3VzZXJDb250ZW50Q29udHJvbGxlciwg
cGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZDM4NGNkN2MwMzQuLmMyZjBmZGZhMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNTIwLDkgKzUyMCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgYm9vbCBkcmF3c0JhY2tncm91
bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQmFja2dyb3VuZDsgfQotICAgIHZvaWQgc2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wpOwotCiAgICAgU3RyaW5nIGN1cnJlbnRVUkwoKSBjb25zdDsKIAog
ICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wQ29udGVudElu
c2V0OyB9CkBAIC03NjQsMTEgKzc2MSwxMiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgpOwotICAgIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsg
fQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
cikgeyBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9CiAgICAgYm9vbCBtYWtlR0xDb250ZXh0
Q3VycmVudCgpOwogI2VuZGlmCiAKKyAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4m
IGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
Jik7CisKICNpZiBQTEFURk9STShXSU4pCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgp
OwogI2VuZGlmCkBAIC0yMTA4LDggKzIxMDYsNiBAQCBwcml2YXRlOgogCiAgICAgTGF5ZXJIb3N0
aW5nTW9kZSBtX2xheWVySG9zdGluZ01vZGUgeyBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3Mg
fTsKIAotICAgIGJvb2wgbV9kcmF3c0JhY2tncm91bmQgeyB0cnVlIH07Ci0KICAgICBXZWJDb3Jl
OjpDb2xvciBtX3VuZGVybGF5Q29sb3I7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3I7CiAKQEAgLTIyMDgsOSArMjIwNCwxMCBAQCBwcml2YXRlOgogCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlQbHVnSUQ7Ci0gICAg
V2ViQ29yZTo6Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUg
fTsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IG1fYmFja2dyb3VuZENv
bG9yOworCiAgICAgdW5zaWduZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291
bnQgeyAwIH07CiAKICAgICBib29sIG1fbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcAppbmRleCBlMTExYzJiMzk4Ni4uMTgyOTRkMzdmZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAK
QEAgLTM3LDEwICszNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2lu
Y2x1ZGUgPGNhaXJvLmg+CiAKLSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8Z3RrL2d0ay5o
PgotI2VuZGlmCi0KICNpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1gxMSkKICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+CkBA
IC05NywyNCArOTMsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hh
cmVhYmxlQml0bWFwKiBiaXRtYXAsIGNvbnN0IFVwZGF0ZUluZm8mCiAgICAgZm9yIChjb25zdCBh
dXRvJiB1cGRhdGVSZWN0IDogdXBkYXRlSW5mby51cGRhdGVSZWN0cykgewogICAgICAgICBJbnRS
ZWN0IHNyY1JlY3QgPSB1cGRhdGVSZWN0OwogICAgICAgICBzcmNSZWN0Lm1vdmUoLXVwZGF0ZVJl
Y3RMb2NhdGlvbi54KCksIC11cGRhdGVSZWN0TG9jYXRpb24ueSgpKTsKLSNpZiBQTEFURk9STShH
VEspCi0gICAgICAgIGlmICghbV93ZWJQYWdlUHJveHkuZHJhd3NCYWNrZ3JvdW5kKCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gbV93ZWJQYWdlUHJveHkuYmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgICAgICAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBhcHBsaWNhdGlvbiBzZXRzIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHRocm91Z2ggbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCksIHdlIHVwZGF0
ZSB0aGUgc3VyZmFjZSBpbiAyIHN0ZXBzLgotICAgICAgICAgICAgICAgIC8vICAgMS4gRmlsbCB0
aGUgc3VyZmFjZSBieSBtX3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKS4KLSAgICAgICAg
ICAgICAgICAvLyAgIDIuIENvbXBvc2l0ZSB3ZWJwYWdlJ3MgYml0bWFwIHdoaWNoIGhhcyBhIHRy
YW5zcGFyZW50IGJhY2tncm91bmQuCi0gICAgICAgICAgICAgICAgLy8gSW4gc3RlcCAxLCB3ZSB1
c2UgQ29tcG9zaXRlQ29weSBhcyBtX3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKSBtYXkg
bm90IGJlIG9wYXF1ZS4KLSAgICAgICAgICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgaW4g
c3RlcCAyLCBiaXRtYXAgc2hvdWxkIGJlIGNvbXBvc2l0ZWQgYnkgQ29tcG9zaXRlU291cmNlT3Zl
cgotICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgc2hvdWxkIGJlIGJsZW5kZWQgd2l0aCBt
X3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKS4KLSAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZmlsbFJlY3Qoc3JjUmVjdCwgY29sb3IpOwotICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oV2ViQ29yZTo6Q29tcG9zaXRlU291cmNl
T3Zlcik7Ci0gICAgICAgICAgICAgICAgYml0bWFwLT5wYWludChncmFwaGljc0NvbnRleHQsIGRl
dmljZVNjYWxlRmFjdG9yKCksIHVwZGF0ZVJlY3QubG9jYXRpb24oKSwgc3JjUmVjdCk7Ci0gICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihXZWJDb3Jl
OjpDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250
ZXh0LCBkZXZpY2VTY2FsZUZhY3RvcigpLCB1cGRhdGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3Qp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGVjZjM0NWY4MGY4Li5lYjYyZDZkNjU0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmUuY3BwCkBAIC01OSwyNiArNTksNCBAQCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZTo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQogewogfQog
Ci1ib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjciwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpCi17Ci0gICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IgPSBtX3dlYlBhZ2UuYmFja2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKCFjb2xvci5pc09wYXF1
ZSgpKSB7Ci0gICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVj
dC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY2Fp
cm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0gICAgICAgIGNhaXJv
X2ZpbGwoY3IpOwotICAgIH0KLQotICAgIGlmIChjb2xvci5pc1Zpc2libGUoKSkgewotICAgICAg
ICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7Ci0gICAgICAgIGNhaXJvX3NldF9v
cGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICAgICAgY2Fpcm9fcmVjdGFu
Z2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xp
cFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjYWlyb19maWxsKGNyKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IGUz
NTA1MDdhYWNjLi40OGRiNTMzNDRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
CisgICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSB7IHJldHVybiBm
YWxzZTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCmluZGV4IGYw
MWJhYjNiNDAxLi42MGY1Y2E3MTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAg
LTExMCw3ICsxMTAsNiBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFp
bnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBjYWlyb19zYXZlKGNyKTsKLSAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZTo6cGFpbnQoY3IsIGNsaXBSZWN0KTsKIAogI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDE2LCAw
KQogICAgIGlmIChtX2dka0dMQ29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKaW5kZXggMjdk
NzJjMWM0N2UuLjgyY2U4YzZiNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTE4Niw3ICsx
ODYsNiBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWludChjYWlyb190KiBj
ciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGNhaXJvX3NhdmUoY3IpOwotICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludChjciwg
Y2xpcFJlY3QpOwogCiAgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB3
ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAogICAgIC8vIGFzIGRpcnR5IHRv
IGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMg
cG9zc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggMGY5
ZjlkNGVmZDUuLmE5ZTQxODU3ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCkBAIC00NTEsNyArNDUxLDggQEAgTFJFU1VMVCBXZWJWaWV3OjpvbktleUV2ZW50KEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmEKIAogc3Rh
dGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBSRUNUJiByZWN0KQogewotICAgIGlmICghcGFnZS0+ZHJhd3NCYWNrZ3JvdW5k
KCkpCisgICAgYXV0byYgYmFja2dyb3VuZENvbG9yID0gcGFnZS0+YmFja2dyb3VuZENvbG9yKCk7
CisgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IgfHwgYmFja2dyb3VuZENvbG9yLnZhbHVlKCkuaXNW
aXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6RmlsbFJlY3QoZGMsICZyZWN0LCBy
ZWludGVycHJldF9jYXN0PEhCUlVTSD4oQ09MT1JfV0lORE9XICsgMSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOTM4Y2FkZGJmNmMuLjUxMGIwM2I4NTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE0MDYsNyArMTQwNiw2IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
IFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAKICAgICBib29sIGlzTWFpbkZy
YW1lID0gbV9mcmFtZS0+aXNNYWluRnJhbWUoKTsKLSAgICBib29sIGlzVHJhbnNwYXJlbnQgPSAh
d2ViUGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExheW91
dCA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9vbCBz
aG91bGREaXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5GcmFt
ZUlzU2Nyb2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91bGRE
aXNhYmxlU2Nyb2xsaW5nOwpAQCAtMTQzMSw3ICsxNDMwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBob3Jp
em9udGFsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdlYlBhZ2UtPmFsd2F5c1Nob3dz
SG9yaXpvbnRhbFNjcm9sbGVyKCk7CiAgICAgYm9vbCB2ZXJ0aWNhbExvY2sgPSBzaG91bGRIaWRl
U2Nyb2xsYmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoKTsKIAot
ICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwgaXNU
cmFuc3BhcmVudCwKKyAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQYWdl
LT5zaXplKCksIHdlYlBhZ2UtPmJhY2tncm91bmRDb2xvcigpLAogICAgICAgICB3ZWJQYWdlLT5m
aXhlZExheW91dFNpemUoKSwgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QsIHNob3VsZFVzZUZpeGVk
TGF5b3V0LAogICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgaG9yaXpvbnRhbExvY2ss
IHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgdmVydGljYWxMb2NrKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmNwcAppbmRleCBlZGZlNDZiMjE4ZS4uMmU3NGFlOGY3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwCkBAIC05MywxNCArOTMsNiBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnNjcm9s
bChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzYwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhzY3JvbGxSZWN0KTsK
IH0KIAotdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKQotewotICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgZWxz
ZSBpZiAobV9wcmV2aW91c0xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fcHJldmlvdXNMYXllclRy
ZWVIb3N0LT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLX0KLQogdm9pZCBB
Y2NlbGVyYXRlZERyYXdpbmdBcmVhOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgaXNG
cm96ZW4pCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbiA9PSBpc0Zyb3plbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuaAppbmRleCAwOTI3ZDQ0ZDAwNC4uZjdlZjlmNmY1MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhLmgKQEAgLTQzLDcgKzQzLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bERlbHRhKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hh
bmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29s
KSBvdmVycmlkZTsKICAgICBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW47IH0KICAgICBMYXllclRyZWVI
b3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclRyZWVI
b3N0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTUyMGY1MjBkYWMuLjkzYjdhMmRkZTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCkBAIC0yMjQsMTAgKzIyNCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogICAgIG1fd2ViUGFnZS5jb3JlUGFn
ZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEZXZpY2VTY2FsZUZhY3Rvcigp
OwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCkKLXsKLX0KLQogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiAm
bV9jb29yZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDBhOGJlYzhhMzk4Li5lYTk3NDUzMTU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
CkBAIC01NSw3ICs1NSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldmlj
ZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tn
cm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCByZW5k
ZXJOZXh0RnJhbWUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDgyM2I3ZmEy
YWM3Li4xMDBmYzY0YTYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE4NCwxNyAr
MTg0LDYgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKICAgICBtX2NvbXBvc2l0b3ItPnNldFNjYWxlRmFjdG9y
KG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpICogbV92aWV3cG9ydENvbnRyb2xsZXIucGFn
ZVNjYWxlRmFjdG9yKCkpOwogfQogCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQotewotICAgIGlmIChtX2lz
RGlzY2FyZGFibGUpIHsKLSAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmFkZChEaXNj
YXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgbV9jb21wb3NpdG9yLT5zZXREcmF3c0JhY2tncm91bmQo
bV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsKQEAgLTI4Niw5ICsyNzUsNiBAQCB2b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKGJvb2wgZGlzY2Fy
ZGFibGUpCiAgICAgaWYgKG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuY29udGFpbnMo
RGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlQmFja2dyb3VuZCkpCi0gICAgICAgIHBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotCiAgICAgaWYgKG1fZGlzY2FyZGFibGVT
eW5jQWN0aW9ucy5jb250YWlucyhEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVTaXplKSkg
ewogICAgICAgICAvLyBTaXplIGNoYW5nZXMgYWxyZWFkeSBzZXRzIHRoZSBzY2FsZSBmYWN0b3Ig
YW5kIHVwZGF0ZXMgdGhlIHZpZXdwb3J0LgogICAgICAgICBzaXplRGlkQ2hhbmdlKG1fd2ViUGFn
ZS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI3ODQ2ODE2NzliLi4yMjg3NjE2
MmU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTcsNyArNTcsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJl
bmN5Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdw
b3J0QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CkBA
IC0xNDMsOCArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIERpc2NhcmRhYmxlU3lu
Y0FjdGlvbnMgewogICAgICAgICBVcGRhdGVTaXplID0gMSA8PCAxLAogICAgICAgICBVcGRhdGVW
aWV3cG9ydCA9IDEgPDwgMiwKLSAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMsCi0gICAgICAg
IFVwZGF0ZUJhY2tncm91bmQgPSAxIDw8IDQKKyAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMK
ICAgICB9OwogCiAgICAgQ29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA3ZWUy
MjhjZTE4YS4uZmQ3OTI5ZjA0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtODAsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgPSAwOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5k
VHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQo
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bihib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDZhODZiMDAyYjg2Li4wODlhYzIwYmY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwCkBAIC00MTAsOCArNDEwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBk
YXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICB1cGRhdGVJbmZvLnZpZXdTaXplID0gbV93ZWJQYWdl
LnNpemUoKTsKICAgICB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNv
cmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAKLSAgICAvLyBBbHdheXMgcmVuZGVyIHRo
ZSB3aG9sZSBwYWdlIHdoZW4gd2UgZG9uJ3QgcmVuZGVyIHRoZSBiYWNrZ3JvdW5kLgotICAgIElu
dFJlY3QgYm91bmRzID0gbV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpID8gbV9kaXJ0eVJlZ2lv
bi5ib3VuZHMoKSA6IG1fd2ViUGFnZS5ib3VuZHMoKTsKKyAgICBJbnRSZWN0IGJvdW5kcyA9IG1f
ZGlydHlSZWdpb24uYm91bmRzKCk7CiAgICAgQVNTRVJUKG1fd2ViUGFnZS5ib3VuZHMoKS5jb250
YWlucyhib3VuZHMpKTsKIAogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7
CkBAIC00MjQsMTYgKzQyMywxMSBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRh
dGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIGlmICghYml0bWFwLT5jcmVhdGVIYW5kbGUodXBkYXRl
SW5mby5iaXRtYXBIYW5kbGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8SW50UmVj
dD4gcmVjdHM7Ci0gICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkgewotICAgICAg
ICByZWN0cyA9IG1fZGlydHlSZWdpb24ucmVjdHMoKTsKLQotICAgICAgICBpZiAoc2hvdWxkUGFp
bnRCb3VuZHNSZWN0KGJvdW5kcywgcmVjdHMpKSB7Ci0gICAgICAgICAgICByZWN0cy5jbGVhcigp
OwotICAgICAgICAgICAgcmVjdHMuYXBwZW5kKGJvdW5kcyk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7Cisg
ICAgaWYgKHNob3VsZFBhaW50Qm91bmRzUmVjdChib3VuZHMsIHJlY3RzKSkgeworICAgICAgICBy
ZWN0cy5jbGVhcigpOwogICAgICAgICByZWN0cy5hcHBlbmQoYm91bmRzKTsKKyAgICB9CiAKICAg
ICB1cGRhdGVJbmZvLnNjcm9sbFJlY3QgPSBtX3Njcm9sbFJlY3Q7CiAgICAgdXBkYXRlSW5mby5z
Y3JvbGxPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA4NWRkNDU4ZTAxOC4uNTNjMzk4Mjk5
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0LmgKQEAgLTc0LDcgKzc0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJl
cGFpbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNr
SUQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdl
QmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGF1c2VSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIwMjNm
ZTQxOGQwLi4zZjYwZTQxYzBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTUxNSw4ICs1MTUsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAg
ICBzZXRVc2VGaXhlZExheW91dChwYXJhbWV0ZXJzLnVzZUZpeGVkTGF5b3V0KTsKIAotICAgIHNl
dERyYXdzQmFja2dyb3VuZChwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCk7Ci0KICAgICBzZXRV
bmRlcmxheUNvbG9yKHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvcik7CiAKICAgICBzZXRQYWdpbmF0
aW9uTW9kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25Nb2RlKTsKQEAgLTY0Myw2ICs2NDEsOCBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRTaG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKHRydWUpOwog
I2VuZGlmCisKKyAgICBzZXRCYWNrZ3JvdW5kQ29sb3IocGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29s
b3IpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCkBAIC0yOTAxLDE5ICsyOTAxLDE2IEBAIHZv
aWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiB9CiAjZW5kaWYKIAot
dm9pZCBXZWJQYWdlOjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCit2
b2lkIFdlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpD
b2xvcj4mIGJhY2tncm91bmRDb2xvcikKIHsKLSAgICBpZiAobV9kcmF3c0JhY2tncm91bmQgPT0g
ZHJhd3NCYWNrZ3JvdW5kKQorICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5k
Q29sb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHJhd3NCYWNrZ3JvdW5kID0gZHJhd3NC
YWNrZ3JvdW5kOworICAgIG1fYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOwogCi0g
ICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7Ci0gICAgICAg
IGJvb2wgaXNUcmFuc3BhcmVudCA9ICFkcmF3c0JhY2tncm91bmQ7Ci0gICAgICAgIGZyYW1lVmll
dy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGlzVHJhbnNwYXJlbnQpOwotICAgIH0KKyAg
ICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpCisgICAgICAgIGZy
YW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAK
LSAgICBtX2RyYXdpbmdBcmVhLT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsK
ICAgICBtX2RyYXdpbmdBcmVhLT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUyNDYwY2JkMjdkLi5iMTdkMGMy
MWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NTAxLDggKzUwMSw2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHBvc3RJbmplY3RlZEJ1bmRs
ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmKTsKIAot
ICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0JhY2tncm91
bmQ7IH0KLQogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpIHsgbV91bmRlcmxheUNvbG9yID0gY29sb3I7IH0KICAgICBXZWJDb3JlOjpDb2xvciB1
bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9yOyB9CiAKQEAgLTEx
NDYsNiArMTE0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHkoKSwg
SVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwog
ICAgIH0KIAorICAgIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
IApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEluZGljYXRpbmco
Ym9vbCk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOworICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRUb3BDb250ZW50SW5zZXRGZW5j
ZWQoZmxvYXQsIElQQzo6QXR0YWNobWVudCk7CkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1N1c3BlbmRlZFVuZGVyTG9jayB7IGZhbHNlIH07CiAKICAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0
b21Db250ZW50UHJvdmlkZXJzOwotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9y
IHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
IG1fYmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAKICAgICBIYXNo
U2V0PHVuc2lnbmVkPiBtX2FjdGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW5zOwogICAgIHVu
c2lnbmVkIG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4geyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCBhOGM2MTc2OWU1ZS4uMTYzYTE3NjljZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBY3Rpdml0eVN0
YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRl
LCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZl
Y3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQogICAgIFNldExheWVySG9zdGlu
Z01vZGUoZW51bTp1aW50OF90IFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKQogCi0gICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQorICAg
IFNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gY29sb3IpCiAKICAg
ICBBZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBlbnVtOnVpbnQ4X3QgSlNDOjpN
ZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VMZXZl
bCBtZXNzYWdlTGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAg
U2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggZTkwY2YxYWMyMGYuLjE3MGFiYTI4NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBBUEkgZm9yIHdlYnZpZXcg
YmFja2dyb3VuZCBjb2xvciBjb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMDUKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNo
YWVsIENhdGFuemFyby4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKTogQ3JlYXRlCisgICAgICAgIEZyYW1lVmlldyB3aXRoIGJhY2tn
cm91bmQgY29sb3IuCisKIDIwMTktMDItMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN0YW5kYXJkaXplIG9uIENvbnRyb2xLZXkgaW5zdGVhZCBvZiBDdHJs
S2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzE0NTJlODRmMzcuLjExNTk1
YjJmNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05ODUsMTAgKzk4NSwx
MiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JO
ZXdQYWdlKCkKIAogICAgIFJFQ1QgcGl4ZWxSZWN0OwogICAgIHZpZXctPmZyYW1lUmVjdCgmcGl4
ZWxSZWN0KTsKLSAgICBib29sIHRyYW5zcGFyZW50ID0gdmlldy0+dHJhbnNwYXJlbnQoKTsKKyAg
ICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICh2aWV3LT50cmFuc3Bh
cmVudCgpKQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpOwogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWUocGl4ZWxSZWN0KTsKICAgICBsb2dpY2Fs
RnJhbWUuc2NhbGUoMS4wZiAvIHZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvcmUo
bV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUpLnNp
emUoKSwgdHJhbnNwYXJlbnQsIC8qIGZpeGVkTGF5b3V0U2l6ZSAqLyB7IH0sIC8qIGZpeGVkVmlz
aWJsZUNvbnRlbnRSZWN0ICovIHsgfSk7CisgICAgY29yZShtX3dlYkZyYW1lKS0+Y3JlYXRlVmll
dyhlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxGcmFtZSkuc2l6ZSgpLCBiYWNrZ3JvdW5kQ29sb3Is
IC8qIGZpeGVkTGF5b3V0U2l6ZSAqLyB7IH0sIC8qIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ICov
IHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNo
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggMDRiNmZlYTNjYjQuLjRh
ZDMxNjYwMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMDg5LDcg
KzIwODksMTAgQEAgdm9pZCBXZWJGcmFtZTo6dXBkYXRlQmFja2dyb3VuZCgpCiAgICAgaWYgKCFj
b3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
b3JlRnJhbWUtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KHdlYlZpZXcoKS0+
dHJhbnNwYXJlbnQoKSk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAod2ViVmlldygpLT50cmFuc3BhcmVudCgpKQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3Ig
PSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGNvcmVGcmFtZS0+dmlldygpLT51cGRh
dGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIH0KIAogLy8gSVdlYkZy
YW1lMgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDBmZGRlMWVjMjczLi5lNDkzZTQ3ZjE4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTAxLTE4ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQgQVBJ
IGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUv
bWFpbi5jcHA6CisgICAgICAgIChtYWluKTogQWRkIGEgbmV3IG9wdGlvbiB0byBjb25maWd1cmUg
dGhlIHdlYnZpZXcgYmFja2dyb3VuZAorICAgICAgICBjb2xvci4gRXhhbXBsZTogLS1iZy1jb2xv
cj10cmFuc3BhcmVudC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29s
b3IpOiBFbmFibGUgYmFja2dyb3VuZCBjb2xvciBBUEkgdGVzdHMgZm9yIFdQRS4KKyAgICAgICAg
KGJlZm9yZUFsbCk6IERpdHRvLgorCiAyMDE5LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5z
aW9ucyBBUEkgdG8gd2hpdGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIv
d3BlL21haW4uY3BwCmluZGV4IDEzMWEwZjM4NzA5Li4yNWNjODg0OTNmZiAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dw
ZS9tYWluLmNwcApAQCAtNDIsNiArNDIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gaWdub3JlVExTRXJy
b3JzOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIq
IGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7Citjb25zdCBjaGFyKiBi
Z0NvbG9yOwogCiBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1td
ID0KIHsKQEAgLTUzLDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5k
TGluZU9wdGlvbnNbXSA9CiAgICAgeyAicHJveHkiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5H
LCAmcHJveHksICJTZXQgcHJveHkiLCAiUFJPWFkiIH0sCiAgICAgeyAiaWdub3JlLWhvc3QiLCAw
LCAwLCBHX09QVElPTl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkg
aWdub3JlIGhvc3RzIiwgIkhPU1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwg
MCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9y
cyIsIG51bGxwdHIgfSwKKyAgICB7ICJiZy1jb2xvciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJ
TkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91bmQgY29sb3IuIERlZmF1bHQ6IHdoaXRlIiwg
IkNPTE9SIiB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdf
RklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7
IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyIH0KIH07CkBAIC0yMTMsNiArMjE1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJDb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19Q
T0xJQ1lfSUdOT1JFKTsKIAorICAgIFdlYktpdENvbG9yIGNvbG9yOworICAgIGlmIChiZ0NvbG9y
ICYmIHdlYmtpdF9jb2xvcl9wYXJzZSgmY29sb3IsIGJnQ29sb3IpKQorICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3Iod2ViVmlldywgJmNvbG9yKTsKKwogICAgIGlm
ICh1cmlBcmd1bWVudHMpIHsKICAgICAgICAgR0ZpbGUqIGZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9j
b21tYW5kbGluZV9hcmcodXJpQXJndW1lbnRzWzBdKTsKICAgICAgICAgY2hhciogdXJsID0gZ19m
aWxlX2dldF91cmkoZmlsZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1NGYxOTdiODgzMy4u
ZDA1MzFiNDlmMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTEzMywxMSArMTEzMywxNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJf
dmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCi0jaWYgUExBVEZP
Uk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBD
b2xvclR5cGUgR2RrUkdCQQorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBDb2xvclR5cGUg
V2ViS2l0Q29sb3IKKyNlbmRpZgorCiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFja2dy
b3VuZC4KLSAgICBHZGtSR0JBIHJnYmE7CisgICAgQ29sb3JUeXBlIHJnYmE7CiAgICAgd2Via2l0
X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywgJnJnYmEpOwog
ICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEucmVkLCA9PSwgMSk7CiAgICAgZ19hc3NlcnRfY21w
ZmxvYXQocmdiYS5ncmVlbiwgPT0sIDEpOwpAQCAtMTE1NSwxMCArMTE2MCwyMyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKICAgICBn
X2Fzc2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwgMC41KTsKIAorI2lmIFBMQVRGT1JNKFdQ
RSkKKyAgICBDb2xvclR5cGUgY29sb3I7CisgICAgZ19hc3NlcnQod2Via2l0X2NvbG9yX3BhcnNl
KCZjb2xvciwgInJlZCIpKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5yZWQsID09LCAx
KTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJW
aWV3LCAmY29sb3IpOworICAgIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0
ZXN0LT5tX3dlYlZpZXcsICZyZ2JhKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLnJlZCwg
PT0sIDEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuZ3JlZW4sID09LCAwKTsKKyAgICBn
X2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9h
dChyZ2JhLmFscGhhLCA9PSwgMSk7CisjZW5kaWYKKwogICAgIC8vIFRoZSBhY3R1YWwgcmVuZGVy
aW5nIGNhbid0IGJlIHRlc3RlZCB1c2luZyB1bml0IHRlc3RzLCB1c2UKICAgICAvLyBNaW5pQnJv
d3NlciAtLWJnLWNvbG9yPSI8Y29sb3ItdmFsdWU+IiBmb3IgbWFudWFsbHkgdGVzdGluZyB0aGlz
IEFQSS4KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UHJl
ZmVycmVkU2l6ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0
LT5sb2FkSHRtbCgiPGh0bWwgc3R5bGU9J3dpZHRoOiAzMjVweDsgaGVpZ2h0OiA2MTVweCc+PC9o
dG1sPiIsIG51bGxwdHIpOwpAQCAtMTM2Myw4ICsxMzgxLDggQEAgdm9pZCBiZWZvcmVBbGwoKQog
ICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZp
Y2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3RpZmlj
YXRpb25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOwogI2VuZGlmCiAgICAgSXNQbGF5aW5n
QXVkaW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8i
LCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKTsKLSNpZiBQTEFURk9STShHVEspCiAgICAgV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgdGVzdFdl
YlZpZXdCYWNrZ3JvdW5kQ29sb3IpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInByZWZlcnJlZC1zaXplIiwgdGVzdFdlYlZpZXdQcmVm
ZXJyZWRTaXplKTsKICNlbmRpZgogICAgIFdlYlZpZXdUaXRsZVRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJ0aXRsZS1jaGFuZ2UiLCB0ZXN0V2ViVmlld1RpdGxlQ2hhbmdlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>