<?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>17331</bug_id>
          
          <creation_ts>2008-02-12 12:41:02 -0800</creation_ts>
          <short_desc>Change postMessage/MessageEvent to match HTML5 wrt. exposing origin vs. domain/uri</short_desc>
          <delta_ts>2008-04-26 19:00:39 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>17352</dependson>
          <blocked>18725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>collinj</cc>
    
    <cc>darin</cc>
    
    <cc>ian</cc>
    
    <cc>jwalden+bwo</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>70428</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-12 12:41:02 -0800</bug_when>
    <thetext>The HTML5 working draft recently changed the MessageEvent interface for security reasons. The interface no longer has the &apos;domain&apos; and &apos;uri&apos; properties, and instead has an &apos;origin&apos; property. From Hixie&apos;s email explaining the change &lt;http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2008-February/013943.html&gt;:

&gt; While going through the feedback for postMessage(), I noticed a couple of 
&gt; security problems that nobody had raised:
&gt; 
&gt; * message.domain isn&apos;t actually enough to verify any security, given that 
&gt;   on shared hosts one IP address can map to several hostnames and thus 
&gt;   people can end up running servers on different ports that respond to 
&gt;   requests from domains they don&apos;t own.
&gt; 
&gt; * message.uri can leak information, e.g. if the user&apos;s password is in the 
&gt;   query component of the URI.
&gt; 
&gt; Basically, .domain is too little, and .uri is too much.
&gt; 
&gt; I&apos;ve replaced both with .origin, which is intended to return the 
&gt; scheme://hostname/ or scheme://hostname:port/ (when the port is 
&gt; non-standard) of the origin of the source document.
&gt; 
&gt; It&apos;s still vague for data: URIs, etc; I have outstanding feedback on that 
&gt; matter and will address that when I respond to that feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70429</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-12 12:41:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/5738341&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70439</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-12 14:21:27 -0800</bug_when>
    <thetext>See &lt;http://html5.org/tools/web-apps-tracker?from=1213&amp;to=1216&gt; for the change to the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70453</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-12 15:45:44 -0800</bug_when>
    <thetext>The postMessage() API has also been updated to take an origin parameter. &lt;http://html5.org/tools/web-apps-tracker?from=1216&amp;to=1217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70562</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-13 13:54:33 -0800</bug_when>
    <thetext>The MessageEvent interface is defined at &lt;http://www.whatwg.org/specs/web-apps/current-work/#messageevent&gt;, and the postMessage() API is defined at &lt;http://www.whatwg.org/specs/web-apps/current-work/#postmessage&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70577</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-13 15:13:52 -0800</bug_when>
    <thetext>Step 2.2 of the postMessage() algorithm says:

&gt; If the origin of the target document is not a scheme/host/port tuple, then abort these steps silently.

We don&apos;t currently support non-scheme/host/port tuple origins. Bug 17352 covers that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70582</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-13 16:02:49 -0800</bug_when>
    <thetext>It looks like SecurityOrigin::canAccess [1] is what we should use in place of the substeps of step 2 of the postMessage() API.

1. http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/platform/SecurityOrigin.cpp?rev=30184#L129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70583</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-13 16:04:18 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; It looks like SecurityOrigin::canAccess [1] is what we should use in place of
&gt; the substeps of step 2 of the postMessage() API.

One reason for this is that this will allow scripts in Documents with file: URIs to send messages to Documents with http: URIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70664</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-14 07:31:40 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; It looks like SecurityOrigin::canAccess [1] is what we should use in place of
&gt; the substeps of step 2 of the postMessage() API.

I&apos;m now no longer sure this is correct. The purpose of the origin argument and step 2 of the postMessage() API is to allow the script calling postMessage() to specify the one and only origin the message should be delivered to. The motivation for the origin argument was presented by Collin Jackson to the WHATWG mailing list (substituting &quot;domain&quot; and &quot;uri&quot; for &quot;origin&quot;) &lt;http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2008-January/013808.html&gt;:

&gt; For non-security-sensitive messages, like &quot;change your font color to
&gt; red&quot;, confidentiality might not be needed. However, if the message
&gt; you&apos;re trying to send contains a password, it would be nice to be able
&gt; to specify which domain you&apos;re trying to send it to.
&gt; 
&gt; The postMessage API could be extended to provide confidentiality by
&gt; adding some optional arguments:

&gt; void postMessage(in DOMString message, [optional] in DOMString domain,
&gt; [optional] in DOMString uri);
&gt; 
&gt; If &quot;domain&quot; or &quot;uri&quot; are specified, the browser would only deliver the
&gt; message if the recipient&apos;s location matches the specified domain and/or
&gt; URI. (Being able to specify the URI allows sites to differentiate
&gt; between http and https URIs.) If &quot;domain&quot; and &quot;uri&quot; are not defined,
&gt; the message would be delivered regardless of who the recipient is,
&gt; making this change backwards compatible for sites that aren&apos;t aware
&gt; of the optional parameters.

Given this, I think we really do want to ensure that the scheme/host/port of the target Document is identical to the scheme/host/port of the passed-in origin string. If we were to use canAccess then passing a file: URI as the origin argument would be identical to passing no origin argument at all, since we allow file: URIs to access any Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70669</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-14 09:26:41 -0800</bug_when>
    <thetext>Maybe what we really want is the same logic that&apos;s in SecurityOrigin::canAccess, but with the additional restriction that the schemes must always match (SecurityOrigin::canAccess allows the schemes to be different if the SecurityOrigin you call canAccess on has a &quot;local&quot; scheme).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70679</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-02-14 11:49:16 -0800</bug_when>
    <thetext>One subtlety you should be careful about is that Step 9 requires comparing the desired host with the host of the target document, ignoring the document.domain value of the target document.  On the other hand, canAccess takes the document.domain value (and whether the value has been set) into account.

Additionally, the host() property of SecurityOrigin is actually the document.domain value for that origin (which can differ from the host if document.domain has been modified).  It might be a good idea to add a domain() property to SecurityOrigin that holds the document.domain value and change host() to hold the actual host value.  I&apos;d be happy to review this part of the patch to make sure the canAccess check remains correct.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70683</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-14 11:57:04 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; One subtlety you should be careful about is that Step 9 requires comparing the
&gt; desired host with the host of the target document, ignoring the document.domain
&gt; value of the target document.

Well, there&apos;s an ISSUE in the postMessage() algorithm steps:

&gt; Define &apos;origin&apos; more exactly -- IDN vs no IDN, effect of window.document.domain on its value, etc

So I don&apos;t think it&apos;s clear whether document.domain should be taken into account or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70684</commentid>
    <comment_count>12</comment_count>
    <who name="Jeff Walden (remove +bwo to email)">jwalden+bwo</who>
    <bug_when>2008-02-14 12:18:08 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; So I don&apos;t think it&apos;s clear whether document.domain should be taken into
&gt; account or not.

My #webkit 2008-01-11 logs have Hixie saying (pre-origin change) that document.domain isn&apos;t considered when determining uri/domain; I don&apos;t see a reason why this should change post-origin:

[2008-01-11 20:33:45] &lt;Hixie&gt; abarth, collinj_: updated hte spec to be better
[2008-01-11 20:33:51] &lt;Hixie&gt; and more well-defined
[2008-01-11 20:36:51] &lt;abarth&gt; Hixie: so it should be the initial value of document.domain, regardless of whether it had been modified by the page?
[2008-01-11 20:37:28] &lt;abarth&gt; Hixie: i.e. www.facebook.com on http://www.facebook.com/ (even though document.domain == &quot;facebook.com&quot;)
[2008-01-11 20:42:26] &lt;Hixie&gt; abarth: right</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70696</commentid>
    <comment_count>13</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2008-02-14 14:01:28 -0800</bug_when>
    <thetext>Yeah I don&apos;t think we want document.domain to let a document lie, here. Normally document.domain isn&apos;t exposed to other people, it&apos;s just to let people communicate if they want to. Here, they can anyway, without any change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71567</commentid>
    <comment_count>14</comment_count>
      <attachid>19288</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-23 00:56:04 -0800</bug_when>
    <thetext>Created attachment 19288
Updates postMessage implementation to match HTML 5 specification

Here is a patch that:
1) Adds origin parameter to postMessage.
2) Removes domain and uri attributes of MessageEvent in favor of origin attribute.

Also included are 3 updated tests and 1 new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71571</commentid>
    <comment_count>15</comment_count>
      <attachid>19291</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-23 01:44:48 -0800</bug_when>
    <thetext>Created attachment 19291
Updates postMessage implementation to match HTML 5 specification

Added console message to help developers debug postMessage origin mismatch errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71574</commentid>
    <comment_count>16</comment_count>
      <attachid>19293</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-23 02:52:26 -0800</bug_when>
    <thetext>Created attachment 19293
Updates postMessage implementation to match HTML 5 specification

Changed behavior to match spec for syntax errors in the optional origin argument.

Added a test case for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71643</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-23 14:44:00 -0800</bug_when>
    <thetext>I think this patch would be better if more of the implementation of postMessage was in DOMWindow instead of JSDOMWindow.  More constructively, in JSDOMWindow::postMessage, you should pretty much just become

JSValue* JSDOMWindow::postMessage(ExecState* exec, const List&amp; args)
{
    DOMWindow* window = impl();

    String message = args[0]-&gt;toString(exec);
    if (exec-&gt;hadException())
        return jsUndefined();
    String origin = valueToStringWithUndefinedOrNullCheck(exec, args[0]);
    if (exec-&gt;hadException())
        return jsUndefined();

    ExceptionCode ec = 0;
    window-&gt;postMessage(message, origin, source, ec);
    setDOMException(exec, ec);
    return jsUndefined();
}

or something similar (did not actually compile that code).  This might make reporting the error in the right place more difficult. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71677</commentid>
    <comment_count>18</comment_count>
      <attachid>19311</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-23 22:32:41 -0800</bug_when>
    <thetext>Created attachment 19311
Updated patch with origin check moved to DOMWindow

This patch moves more of the implementation (checking the desired target origin against the actual target origin) into DOMWindow.cpp and out of JSDOMWindowCustom.cpp. There are also more syntax error tests. The file:// URL behavior now matches Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71697</commentid>
    <comment_count>19</comment_count>
      <attachid>19311</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-24 00:03:28 -0800</bug_when>
    <thetext>Comment on attachment 19311
Updated patch with origin check moved to DOMWindow

There are a few remaining but this looks really good. 

There is a tab here
+            String message = String::format(&quot;Unable to post message to %s. Recipient has origin %s.\n&quot;, 
+	        origin.utf8().data(), actualTargetOrigin.utf8().data());

This should have a raises(DOMException);
+        [DoNotCheckDomainSecurity, Custom] void postMessage(in DOMString message, in [Optional] DOMString origin);

This method could be made more efficient by calling reserveCapacity on the result vector.
+String KURL::origin() const

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71779</commentid>
    <comment_count>20</comment_count>
      <attachid>19311</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-24 13:40:19 -0800</bug_when>
    <thetext>Comment on attachment 19311
Updated patch with origin check moved to DOMWindow

+    Vector&lt;UChar&gt; result;
+    append(result, protocol());
+    append(result, &quot;://&quot;);
+    append(result, host());

I worry that this is relying on some strange implicit casting, since protocol() and host() return Strings, but you&apos;re appending to a Vector&lt;UChar&gt;. It might be better to figure out if you need to append the port first, then do:

if (needsPort)
    return String::format(&quot;%s://%s:%u&quot;, protocol(), host(), port());
else
    return String::format(&quot;%s://%s&quot;, protocol(), host());

or something like that.

+        String desiredTargetOrigin = desiredTargetURL.origin();
+        String actualTargetOrigin = m_frame-&gt;loader()-&gt;url().origin();
+        if (desiredTargetOrigin.isNull() || desiredTargetOrigin != actualTargetOrigin) {

It seems like it would be better to use our SecurityOrigin class for a case like this. Teaching KURL about what an origin is seems a little strange to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71781</commentid>
    <comment_count>21</comment_count>
      <attachid>19327</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-24 13:47:46 -0800</bug_when>
    <thetext>Created attachment 19327
Updated patch that addresses Sam&apos;s comments

Sam, thanks for your comments.

This patch addresses the tab issue, IDL issue, and reserveCapacity suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71789</commentid>
    <comment_count>22</comment_count>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-24 14:09:09 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; It seems like it would be better to use our SecurityOrigin class for a case
&gt; like this. Teaching KURL about what an origin is seems a little strange to me.

Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71800</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-24 17:33:18 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; +    Vector&lt;UChar&gt; result;
&gt; +    append(result, protocol());
&gt; +    append(result, &quot;://&quot;);
&gt; +    append(result, host());
&gt; 
&gt; I worry that this is relying on some strange implicit casting, since protocol()
&gt; and host() return Strings, but you&apos;re appending to a Vector&lt;UChar&gt;.

It&apos;s not. PlatformString.h defines:

    void append(Vector&lt;UChar&gt;&amp;, const String&amp;);

That&apos;s what&apos;s being used here.

&gt; It might be
&gt; better to figure out if you need to append the port first, then do:
&gt; 
&gt; if (needsPort)
&gt;     return String::format(&quot;%s://%s:%u&quot;, protocol(), host(), port());
&gt; else
&gt;     return String::format(&quot;%s://%s&quot;, protocol(), host());
&gt; 
&gt; or something like that.

String::format does not have a format specifier that works with other strings. The %s one works with char*, not String. This approach is not practical unless we make some enhancements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71833</commentid>
    <comment_count>24</comment_count>
      <attachid>19338</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-24 21:55:23 -0800</bug_when>
    <thetext>Created attachment 19338
Updated patch that addresses aroben&apos;s comments

Generating these strings from the SecurityOrigin class required reorganizing the SecurityOrigin class to understand the difference between hosts and domains. There are now three ways to compare security origins:

1) equalIgnoringDomain compares hosts, and is used for postMessage
2) equal compares all aspects of the security origin, and is used for hash keys
3) canAccess understands the semantics of schemes such as file:// and data:// URLs, and should be used for scripting access checks.

We changed SecurityOrigin::toString() and SecurityOrigin::stringIdentifier() to generate identifiers that are suitable for being used as a MessageEvent&apos;s origin property. In the future, SecurityOrigin::toString() could be used for the Access-Control-Origin header as well. We&apos;re now re-using KURL parser to parse serialized SecurityOrigins.

I took Darin&apos;s suggestion of using append() rather than String::format() in SecurityOrigin::toString().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71879</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-25 08:36:17 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=19338) [edit]
&gt; Updated patch that addresses aroben&apos;s comments
&gt; 
&gt; Generating these strings from the SecurityOrigin class required reorganizing
&gt; the SecurityOrigin class to understand the difference between hosts and
&gt; domains. There are now three ways to compare security origins:
&gt; 
&gt; 1) equalIgnoringDomain compares hosts, and is used for postMessage

Should we just call this isSameSchemeHostPort to match HTML 5&apos;s terminology?

&gt; 2) equal compares all aspects of the security origin, and is used for hash keys

Maybe we should get rid of this method entirely and put the implementation in SecurityOriginHash. It seems like it will only confuse people to have this public method on SecurityOrigin that you&apos;re never supposed to call.

&gt; We changed SecurityOrigin::toString() and SecurityOrigin::stringIdentifier() to
&gt; generate identifiers that are suitable for being used as a MessageEvent&apos;s
&gt; origin property.

Will these changes interfere with any existing uses of SecurityOrigin::toString or SecurityOrigin::stringIdentifier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71895</commentid>
    <comment_count>26</comment_count>
      <attachid>19353</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-02-25 11:51:02 -0800</bug_when>
    <thetext>Created attachment 19353
Updated patch that matches HTML 5 terminology

(In reply to comment #25)
&gt; &gt; 1) equalIgnoringDomain compares hosts, and is used for postMessage
&gt; 
&gt; Should we just call this isSameSchemeHostPort to match HTML 5&apos;s terminology?

Done.

&gt; &gt; 2) equal compares all aspects of the security origin, and is used for hash keys
&gt; 
&gt; Maybe we should get rid of this method entirely and put the implementation in
&gt; SecurityOriginHash. It seems like it will only confuse people to have this
&gt; public method on SecurityOrigin that you&apos;re never supposed to call.

I am open to the idea of removing equal(), but it seems like it might be useful for something. Sam and I were discussing whether it might make sense to use it for isSecureTransitionTo. I think it might be better to leave it in for the next few weeks until Sam has had a chance to implement data: URLs with GUIDs. I added a FIXME comment describing your suggestion, but I can refactor it out now in this patch if you prefer.

&gt; &gt; We changed SecurityOrigin::toString() and SecurityOrigin::stringIdentifier() to
&gt; &gt; generate identifiers that are suitable for being used as a MessageEvent&apos;s
&gt; &gt; origin property.
&gt; 
&gt; Will these changes interfere with any existing uses of SecurityOrigin::toString
&gt; or SecurityOrigin::stringIdentifier?

The main consequence of this change will be that we lose track of any pre-existing storage databases. Since there doesn&apos;t seem to be anyone shipping a version of WebKit that supports databases yet, I don&apos;t think this change will have a major impact. The advantage is that we remove redundant code: HTML 5 requires the scheme://host:port way of representing origins for postMessage, so there&apos;s no reason to have another way of doing it as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72789</commentid>
    <comment_count>27</comment_count>
      <attachid>19545</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-03-05 01:12:57 -0800</bug_when>
    <thetext>Created attachment 19545
Updated patch to fix bit rot

This version resolves a conflict with recent changes to JSDOMWindowCustom.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74091</commentid>
    <comment_count>28</comment_count>
      <attachid>19311</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-03-17 07:35:55 -0700</bug_when>
    <thetext>Comment on attachment 19311
Updated patch with origin check moved to DOMWindow

Clearing review flag to get this out of the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76405</commentid>
    <comment_count>29</comment_count>
      <attachid>20357</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-04-05 19:18:11 -0700</bug_when>
    <thetext>Created attachment 20357
Updated patch that fixes postMessage without changing database identifiers

Now that the database API is shipping with Safari 3.1, changing the database security origin identifier syntax requires dealing with backwards compatibility. To avoid delaying the postMessage fix, let&apos;s defer the unification of toString and database identifiers for a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76406</commentid>
    <comment_count>30</comment_count>
      <attachid>20358</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-04-05 19:32:17 -0700</bug_when>
    <thetext>Created attachment 20358
Updated patch that fixes postMessage without changing database identifiers

Adding change logs to previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76407</commentid>
    <comment_count>31</comment_count>
      <attachid>20359</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-04-05 19:38:52 -0700</bug_when>
    <thetext>Created attachment 20359
Updated patch with better change log explanation

Updated the change log to better describe the status of the database string identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76666</commentid>
    <comment_count>32</comment_count>
      <attachid>20418</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-04-08 17:58:20 -0700</bug_when>
    <thetext>Created attachment 20418
Updated patch to address compile issues

I tried re-running the layout tests today and ran into some compile issues (a typo in Document.cpp and a wrong symbol in WebCore.base.exp). I&apos;m not sure why these issues didn&apos;t manifest before, but it might have been that I needed to do a clean build. Anyway, here&apos;s an updated patch that should fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77710</commentid>
    <comment_count>33</comment_count>
      <attachid>20562</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-04-15 11:21:23 -0700</bug_when>
    <thetext>Created attachment 20562
Updated patch to fix bit rot

I&apos;ve updated the patch to fix a conflict in JSDOMWindowCustom.cpp introduced by changeset 31746.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77794</commentid>
    <comment_count>34</comment_count>
      <attachid>20562</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-16 08:57:43 -0700</bug_when>
    <thetext>Comment on attachment 20562
Updated patch to fix bit rot

The changes here look good.

I think the changes to WebSecurityOrigin in WebKit/mac will break Safari 3.1, since it won&apos;t be able to find the -domain method. The WebKit/win changes should be fine because you&apos;re just renaming the function, not relocating it in the vtable.

The same changes you&apos;ve made to DRT/mac need to be made to DRT/win.

It would be a little clearer to rename the origin argument to postMessage to &quot;targetOrigin&quot;. It looks like HTML 5 is headed in this direction as well (see &lt;http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2008-April/014414.html&gt;).

If you are feeling up to it, it would be nice to see this patch broken up into smaller independent changes. Some pieces that I think could be broken off:

1. Removal of the m_portSet member from SecurityOrigin.
2. Renaming stringIdentifier -&gt; databaseIdentifier
3. Adding m_domain and domain()
4. Changing SecurityOrigin constructor to take a KURL

This isn&apos;t required, but would make reviewing easier.

r- so that we can address the WebSecurityOrigin/DRT issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77953</commentid>
    <comment_count>35</comment_count>
      <attachid>20631</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-04-17 11:45:42 -0700</bug_when>
    <thetext>Created attachment 20631
Updated patch to address aroben&apos;s comments

Restored deprecated &quot;domain&quot; API to WebSecurityOrigin.mm
Renamed &quot;origin&quot; argument to &quot;targetOrigin&quot; in DOMWindow and JSDOMWindowCustom

There aren&apos;t any changes required for DumpRenderTree/win because it doesn&apos;t implement setDatabaseQuota. (It probably should... do we have a bug for that?)

Bitrot fixes:
Updated the new SecurityOrigin constructors to handle the new ThreadSafeShared behavior in r31971.
The addMessageToConsole method disappeared in r31951, changed to call Console::addMessage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78120</commentid>
    <comment_count>36</comment_count>
      <attachid>20631</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-04-18 10:05:56 -0700</bug_when>
    <thetext>Comment on attachment 20631
Updated patch to address aroben&apos;s comments

r31975 added protocolHostAndPortAreEqual to KURL.h. Should we use that instead of adding SecurityOrigin::isSameSchemeHostPort?

+    // Sender is not allowed to see exceptions other than syntax errors
+    ExceptionCode ec; 
+    document()-&gt;dispatchEvent(new MessageEvent(message, sourceOrigin, source), ec, true);

Should ec be initialized to 0?

+        [DoNotCheckDomainSecurity, Custom] void postMessage(in DOMString message, in [Optional] DOMString origin)

Let&apos;s call it targetOrigin here as well.

+    if (m_port) {
+      append(result, &quot;:&quot;);
+      append(result, String::number(m_port));
+    }

Looks like the indentation got messed up here.

+        // Okay deleted value because &quot;invalid-protocol&quot; is not a valid protocol.

What makes it invalid?

You should use svn cp when renaming the tests so that the history is preserved (maybe  you already did this and it didn&apos;t come through in the diff).

r=me, but feel free to fix the above. You may also want to get Sam Weinig to give this a quick once-over before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78319</commentid>
    <comment_count>37</comment_count>
      <attachid>20703</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-04-20 12:54:43 -0700</bug_when>
    <thetext>Created attachment 20703
Updated patch to address aroben&apos;s comments

(In reply to comment #36)
&gt; (From update of attachment 20631 [edit])
&gt; r31975 added protocolHostAndPortAreEqual to KURL.h. Should
&gt; we use that instead of adding SecurityOrigin::isSameSchemeHostPort?

What is protocolHostAndPortAreEqual supposed to be used for? Right now it doesn&apos;t seem to be called anywhere. It seems better to have origin-related security checks be done by the SecurityOrigin class.

&gt; +    // Sender is not allowed to see exceptions other than syntax errors
&gt; +    ExceptionCode ec; 
&gt; +    document()-&gt;dispatchEvent(new MessageEvent(message, sourceOrigin, source),
&gt; ec, true);
&gt; 
&gt; Should ec be initialized to 0?

Since it&apos;s just a placeholder for a return value that we throw away, I don&apos;t think it needs to be initialized. There are other examples of this pattern in WebKit.

&gt; +        [DoNotCheckDomainSecurity, Custom] void postMessage(in DOMString
&gt; message, in [Optional] DOMString origin)
&gt; 
&gt; Let&apos;s call it targetOrigin here as well.

Fixed.

&gt; +    if (m_port) {
&gt; +      append(result, &quot;:&quot;);
&gt; +      append(result, String::number(m_port));
&gt; +    }
&gt; 
&gt; Looks like the indentation got messed up here.

Fixed.

&gt; +        // Okay deleted value because &quot;invalid-protocol&quot; is not a valid
&gt; protocol.
&gt; 
&gt; What makes it invalid?

Only convention. We tightened up the interface to make it hard to construct nonsense security origins, but SecurityOriginHash wants a nonsense security origin anyway. The code was relying on a different convention (file URLs don&apos;t have non-zero ports) before, but it&apos;s no longer possible to construct that security origin, so we went with a nonsense scheme instead.

I&apos;ve changed the comment to the following: 
// Ok deleted value assuming &quot;invalid-protocol&quot; is not a valid protocol

&gt; You should use svn cp when renaming the tests so that the history is preserved
&gt; (maybe  you already did this and it didn&apos;t come through in the diff).

Fixed.

I think this patch is ready to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78843</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-04-24 17:55:12 -0700</bug_when>
    <thetext>Ian has updated the HTML5 spec to make postMessage asynchronous.

http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2008-April/014551.html

It probably makes sense to land this change as is and handle the sync -&gt; async conversion in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79013</commentid>
    <comment_count>39</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-04-26 19:00:39 -0700</bug_when>
    <thetext>Fix landed (finally, sorry guys) in r32597.  </thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19288</attachid>
            <date>2008-02-23 00:56:04 -0800</date>
            <delta_ts>2008-02-23 01:44:48 -0800</delta_ts>
            <desc>Updates postMessage implementation to match HTML 5 specification</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>31815</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDgtMDItMjMgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorCisgICAg
ICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggSFRNTCA1IHNw
ZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFtZXRlciB0byBwb3N0TWVz
c2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBhdHRyaWJ1dGVzIG9mIE1l
c3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4gYXR0cmlidXRlLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogZG9tL01l
c3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpvcmlnaW4pOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAg
ICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6b3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6CisgICAgICAg
ICogcGxhdGZvcm0vS1VSTC5oOgorICAgICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNw
cDoKKwogMjAwOC0wMi0yMiAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAzMDUxNSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTAsMTYgKzE1MCwyNCBAQCBib29sIEpTRE9NV2luZG93OjpjdXN0b21HZXRQcm9wZXJ0eU5h
bWVzCiBKU1ZhbHVlKiBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBMaXN0JiBhcmdzKQogewogICAgIERPTVdpbmRvdyogd2luZG93ID0gaW1wbCgpOwotICAg
IAotICAgIERPTVdpbmRvdyogc291cmNlID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihleGVj
LT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IHNv
dXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLmhvc3QoKTsKLSAgICBTdHJpbmcgdXJpID0g
c291cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CisKICAgICBTdHJpbmcg
bWVzc2FnZSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpOwotICAgIAogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAg
d2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBkb21haW4sIHVyaSwgc291cmNlKTsKKyAgICBp
ZiAoIWFyZ3NbMV0tPmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgS1VSTCBkZXNpcmVk
VGFyZ2V0KGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAg
aWYgKGRlc2lyZWRUYXJnZXQub3JpZ2luKCkgIT0gd2luZG93LT5mcmFtZSgpLT5sb2FkZXIoKS0+
dXJsKCkub3JpZ2luKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9
CisKKyAgICBET01XaW5kb3cqIHNvdXJjZSA9IEtKUzo6V2luZG93OjpyZXRyaWV2ZUFjdGl2ZShl
eGVjKS0+aW1wbCgpOworICAgIFN0cmluZyBvcmlnaW4gPSBzb3VyY2UtPmZyYW1lKCktPmxvYWRl
cigpLT51cmwoKS5vcmlnaW4oKTsKKyAgICAKKyAgICB3aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3Nh
Z2UsIG9yaWdpbiwgc291cmNlKTsKICAgICAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
SW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTAgQEAgTWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IHVyaSwgRE9NV2luZG93KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkK
ICAgICA6IEV2ZW50KG1lc3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAgICAsIG1fZGF0YShkYXRh
KQotICAgICwgbV9kb21haW4oZG9tYWluKQotICAgICwgbV91cmkodXJpKQorICAgICwgbV9vcmln
aW4ob3JpZ2luKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpAQCAtNTQsNyArNTMsNyBA
QCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVu
dDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBk
b21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK3ZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudChjb25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSk7CiAgICAgCiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2RvbWFpbiA9IGRvbWFpbjsK
LSAgICBtX3VyaSA9IHVyaTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBtX3NvdXJjZSA9
IHNvdXJjZTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9uIDMwNTE1KQorKysgV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNz
YWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNl
KTsKICAgICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwg
Y29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmko
KSBjb25zdCB7IHJldHVybiBtX3VyaTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc01lc3NhZ2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZTogICAgCiAgICAg
ICAgIFN0cmluZyBtX2RhdGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgU3Ry
aW5nIG1fdXJpOworICAgICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgICAgIFJlZlB0cjxET01X
aW5kb3c+IG1fc291cmNlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkocmV2aXNp
b24gMzA1MTUpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxMSArMjksMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFtDb25k
aXRpb25hbD1DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gTWVz
c2FnZUV2ZW50IDogRXZlbnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgZGF0YTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21haW47Ci0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdyBzb3VyY2U7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZl
bnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29s
ZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgZG9t
YWluQXJnLCBpbiBET01TdHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKKyAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29s
ZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcg
ZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7
CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDEwICsyMjAsMTAg
QEAgQ29uc29sZSogRE9NV2luZG93Ojpjb25zb2xlKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShD
Uk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1
cmksIERPTVdpbmRvdyogc291cmNlKSBjb25zdAordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyog
c291cmNlKSBjb25zdAogewogICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgIGRvY3VtZW50KCktPmRp
c3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudChtZXNzYWdlLCBkb21haW4sIHVyaSwgc291cmNl
KSwgZWMsIHRydWUpOworICAgZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2
ZW50KG1lc3NhZ2UsIG9yaWdpbiwgc291cmNlKSwgZWMsIHRydWUpOwogfQogI2VuZGlmCiAKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBDb25zb2xlKiBjb25zb2xlKCkgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShD
Uk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmks
IERPTVdpbmRvdyogc291cmNlKSBjb25zdDsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJj
ZSkgY29uc3Q7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBpbnQgeSkg
Y29uc3Q7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIG1vZHVs
ZSB3aW5kb3cgewogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5H
KQogICAgICAgICAvLyBjcm9zcy1kb2N1bWVudCBtZXNzYWdpbmcKLSAgICAgICAgW0RvTm90Q2hl
Y2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBt
ZXNzYWdlKTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lk
IHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmlu
ZyBvcmlnaW4pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmlu
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpAQCAt
Nzg0LDYgKzc4NSwzNSBAQCBTdHJpbmcgS1VSTDo6cHJldHR5VVJMKCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQogCitTdHJpbmcgS1VSTDo6b3JpZ2luKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nOworCisg
ICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CisKKyAgICBhcHBlbmQocmVzdWx0LCBwcm90b2NvbCgp
KTsKKyAgICByZXN1bHQuYXBwZW5kKCc6Jyk7CisKKyAgICBWZWN0b3I8VUNoYXI+IGF1dGhvcml0
eTsKKworICAgIGlmIChob3N0RW5kUG9zICE9IHBhc3N3b3JkRW5kUG9zKSB7CisgICAgICAgIGFw
cGVuZChhdXRob3JpdHksIGhvc3QoKSk7CisgICAgICAgIGlmIChwb3J0KCkgIT0gMCAmJiAhaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQoKSwgcHJvdG9jb2woKSkpIHsKKyAgICAgICAgICAg
IGF1dGhvcml0eS5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgIGFwcGVuZChhdXRob3JpdHksIFN0
cmluZzo6bnVtYmVyKHBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFhdXRo
b3JpdHkuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCgnLycpOworICAgICAgICByZXN1bHQuYXBwZW5kKGF1dGhvcml0eSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKK30KKwogU3RyaW5nIGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0cikKIHsKICAgICByZXR1cm4g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHN0ciwgVVRGOEVuY29kaW5nKCkpOwpAQCAtMTI5MCw2
ICsxMzIwLDIxIEBAIGJvb2wgZXF1YWxJZ25vcmluZ1JlZihjb25zdCBLVVJMJiBhLCBjb24KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zaWdu
ZWQgc2hvcnQgcG9ydCwgU3RyaW5nIHByb3RvY29sKQoreworICAgIGlmIChwcm90b2NvbC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBIYXNoTWFwPFN0cmlu
ZywgdW5zaWduZWQ+IGRlZmF1bHRQb3J0czsKKyAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHko
KSkgeworICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOworICAgICAgICBkZWZh
dWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0
cCIsIDIxKTsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7CisgICAgfQor
ICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OworfQorCiBTdHJp
bmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29kZWRT
dHJpbmcpCiB7CiAgICAgQ1N0cmluZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vS1VSTC5oCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
UmVmKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJldHR5VVJMKCkgY29uc3Q7CisgICAgU3RyaW5n
IG9yaWdpbigpIGNvbnN0OwogICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0OwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVSTCdzIHByb3RvY29sIGlzIHRoZSBz
YW1lIGFzIHRoZSBudWxsLQpAQCAtMTk2LDYgKzE5Nyw4IEBAIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHJpbmcmLCBjb25zdCBLVVIKIAogYm9vbCBlcXVhbElnbm9yaW5nUmVmKGNvbnN0IEtVUkwm
LCBjb25zdCBLVVJMJik7CiAKK2Jvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVk
IHNob3J0IHBvcnQsIFN0cmluZyBwcm90b2NvbCk7CisKIGNvbnN0IEtVUkwmIGJsYW5rVVJMKCk7
CiAKIC8vIEZ1bmN0aW9ucyB0byBkbyBVUkwgb3BlcmF0aW9ucyBvbiBzdHJpbmdzLgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIxICsz
OCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgaXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIFN0cmluZyBwcm90b2NvbCkKLXsKLSAg
ICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBz
dGF0aWMgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBkZWZhdWx0UG9ydHM7Ci0gICAgaWYgKGRl
ZmF1bHRQb3J0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiaHR0cCIs
IDgwKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiaHR0cHMiLCA0NDMpOwotICAgICAgICBk
ZWZhdWx0UG9ydHMuc2V0KCJmdHAiLCAyMSk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0
cHMiLCA5OTApOwotICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdFBvcnRzLmdldChwcm90b2NvbCkg
PT0gcG9ydDsKLX0KLQogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCkKICAg
ICA6IG1fcHJvdG9jb2wocHJvdG9jb2wuaXNOdWxsKCkgPyAiIiA6IHByb3RvY29sLmxvd2VyKCkp
CiAgICAgLCBtX2hvc3QoaG9zdC5pc051bGwoKSA/ICIiIDogaG9zdC5sb3dlcigpKQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMzA1MTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNyBAQAorMjAwOC0wMi0yMyAgQWRhbSBCYXJ0aCAgPGhrOTU2NUBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIExheW91dFRlc3RzIGZvciBuZXcgcG9zdE1lc3NhZ2UgQVBJLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFp
bi1tZXNzYWdlLXJlY2VpdmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZh
c2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2Vu
ZHMtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWw6
IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWw6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmkt
dW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZl
Y3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL3RhcmdldC1vcmlnaW4uaHRtbDogQWRkZWQuCisKIDIwMDgtMDItMjMgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICAtIHVuZG8gYW4gYWNjaWRlbnRhbCBjaGFu
Z2UgdG8gYSB0ZXN0J3MgZXhwZWN0ZWQgcmVzdWx0cyBmcm9tIHIzMDQzMS4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5n
L2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMDUxNSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdl
LXNlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMiBAQAogCi1kYXRh
OiBTb21ldGhpbmcgdXJpOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWVzc2FnaW5nL2Nyb3NzLWRv
bWFpbi1tZXNzYWdlLXNlbmQuaHRtbCBkb21haW46IDEyNy4wLjAuMQorZGF0YTogU29tZXRoaW5n
IG9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNl
cy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwJKHJldmlzaW9uIDMwNTE1KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1t
ZXNzYWdlLXJlY2VpdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDcgQEAKIGZ1bmN0
aW9uIHJlY2VpdmVyKGUpIHsKICAgICB2YXIgcmVzdWx0ID0gIiI7CiAgICAgcmVzdWx0ICs9ICJk
YXRhOiAiICsgZS5kYXRhICsgIlxuIjsKLSAgICByZXN1bHQgKz0gInVyaTogIiArIGUudXJpICsg
IlxuIjsKLSAgICByZXN1bHQgKz0gImRvbWFpbjogIiArIGUuZG9tYWluICsgIlxuIjsKKyAgICBy
ZXN1bHQgKz0gIm9yaWdpbjogIiArIGUub3JpZ2luICsgIlxuIjsKICAgICBlLnNvdXJjZS5wb3N0
TWVzc2FnZShyZXN1bHQpOyAgIAogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWct
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICswLDAgQEAKLXdpbmRvdy5sb2NhdGlv
bi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAotCi1SZWNlaXZlZCBtZXNzYWdl
OiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBkb21haW49IjEyNy4wLjAuMSIgdXJpPSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5h
ZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFn
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHJldmlz
aW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiByZWN2KGUpIHsKLSAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOwotCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
cmVjdiwgZmFsc2UpOwotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHZhciBpZnJhbWUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKLSAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRl
bnRXaW5kb3c7Ci0gICAgd2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Ci19
Ci08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KLTxib2R5
PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2lu
ZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZyYW1lIHNyYz0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1l
c3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCi0gIGlkPSJjaGlsZCIgd2lkdGg9
IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgotPC9p
ZnJhbWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4K
LTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4uaHRtbAotZG9jdW1lbnQuZG9tYWluID0gMC4wLjEKLQotUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9tIHBhcmVudCIgZG9tYWluPSIxMjcuMC4wLjEiIHVy
aT0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1k
b21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCShy
ZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiByZWN2KGUpIHsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOwotCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgcmVjdiwgZmFsc2UpOwotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHZhciBpZnJhbWUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKLSAgICB2YXIgd2luID0gaWZyYW1lLmNv
bnRlbnRXaW5kb3c7Ci0gICAgd2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7
Ci19Ci0KLWRvY3VtZW50LmRvbWFpbiA9ICIwLjAuMSI7Ci08L3NjcmlwdD4KLTxib2R5PgotPGRp
dj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93Lmxv
Y2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgotPGRpdj5kb2N1bWVudC5kb21haW4gPSA8c2Ny
aXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2
PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
cmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4
MDAiIGhlaWdodD0iMzAwIgotICBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IiBvbmxv
YWQ9InRlc3QoKSI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4u
LjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBh
Z2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iSGVs
bG8gZnJvbSBjaGlsZCIgZG9tYWluPSJsb2NhbGhvc3QiIHVyaT0iaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2Fn
ZS1zZW5kZXIuaHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNj
cmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMxICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVu
Y3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSIn
ICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSAr
ICciJzsKLQotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxk
LmRhdGEgPSBtc2c7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLTwvc2NyaXB0PgotPGJh
c2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5s
b2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5o
cmVmKTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3Nh
Z2Utc2VuZGVyLmh0bWwiCi0gIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0
eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgotPC9pZnJhbWU+PC9kaXY+Ci08ZGl2IGlk
PSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Ut
c3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1z
ZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
b3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACit3aW5kb3cu
bG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKworUmVjZWl2ZWQgbWVz
c2FnZTogZGF0YT0iSGVsbG8gZnJvbSBjaGlsZCIgb3JpZ2luPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ph
dmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1z
dGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNl
bmRzLWRvbWFpbi5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICB2YXIgbXNn
ID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBl
LmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKKworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJl
Y3YsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUu
Y29tLyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3Vt
ZW50LndyaXRlKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48
aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jl
c291cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKKyAgaWQ9ImNoaWxk
IiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ph
dmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcg
QEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogfQogCiBmdW5jdGlvbiByZWN2
KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEg
KyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworICAg
IHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIG9yaWdp
bj0iJyArIGUub3JpZ2luICsgJyInOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzIEBACit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRh
Zy5odG1sCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9y
aWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzA1MTUpCShm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFu
ZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9
IGUuZGF0YTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAg
dmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVz
c2FnZSBmcm9tIHBhcmVudCcpOworfQorPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3
LmV4YW1wbGUuY29tLyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2Ny
aXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4K
KzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVz
c2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgp
IgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0
aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQt
ZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFp
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAord2luZG93LmxvY2F0aW9u
LmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2lu
LXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKK2RvY3VtZW50LmRvbWFpbiA9IDAu
MC4xCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9yaWdp
bj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCShyZXZpc2lv
biAzMDUxNSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDozMDUxNSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitm
dW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
Zmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2lu
LnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9CisKK2RvY3VtZW50LmRvbWFp
biA9ICIwLjAuMSI7Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJl
ZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0
PjwvZGl2PgorPGRpdj5kb2N1bWVudC5kb21haW4gPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRv
Y3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2Fn
ZS1saXN0ZW5lci5odG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIgorICBz
dHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IiBvbmxvYWQ9InRlc3QoKSI+Cis8L2lmcmFt
ZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90
YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBA
Cit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9w
b3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKword2FpdGluZy4uLgorUmVjZWl2ZWQgbWVz
c2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAiIG9yaWdpbj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9y
aWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9z
dDo4MDAwL2ZvbyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNz
YWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyIiBv
cmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRy
eWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6IiBvcmlnaW49Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmln
aW49aHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIgb3JpZ2luPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvdGFyZ2V0LW9yaWdpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZSh3aW4sIG9y
aWdpbikgeworICAgIHdpbi5wb3N0TWVzc2FnZSgiVHJ5aW5nIG9yaWdpbj0iICsgb3JpZ2luLCBv
cmlnaW4pOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRX
aW5kb3c7CisKKyAgICAvLyBTaG91bGQgc3VjY2VlZDoKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4s
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2ZvbyIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9mb28/YmFyIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0
cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIpOworCisgICAgLy8gU2hv
dWxkIGZhaWw6CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo5MDkw
Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdCIpOworICAgIHRy
eVBvc3RNZXNzYWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0Iik7CisgICAgdHJ5UG9zdE1lc3Nh
Z2Uod2luLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMCIpOworCisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8
c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rp
dj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVz
dCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53
YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0
ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCShyZXZpc2lv
biAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
cmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
LDcgKzQsNyBAQAogPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQu
d3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgogPHNjcmlwdD4KIGZ1
bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0i
JyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkg
KyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRh
ICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7CiAgICAgdG9wLnBvc3RNZXNzYWdlKG1z
Zyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19291</attachid>
            <date>2008-02-23 01:44:48 -0800</date>
            <delta_ts>2008-02-23 02:52:26 -0800</delta_ts>
            <desc>Updates postMessage implementation to match HTML 5 specification</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>32973</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDgtMDItMjMgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorCisgICAg
ICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggSFRNTCA1IHNw
ZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFtZXRlciB0byBwb3N0TWVz
c2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBhdHRyaWJ1dGVzIG9mIE1l
c3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4gYXR0cmlidXRlLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogZG9tL01l
c3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpvcmlnaW4pOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAg
ICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6b3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6CisgICAgICAg
ICogcGxhdGZvcm0vS1VSTC5oOgorICAgICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNw
cDoKKwogMjAwOC0wMi0yMiAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAzMDUxNSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKIAogI2luY2x1ZGUgIkF0
b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAg
LTE1MCwxNiArMTUxLDMyIEBAIGJvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdldFByb3BlcnR5TmFt
ZXMKIEpTVmFsdWUqIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IExpc3QmIGFyZ3MpCiB7CiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBpbXBsKCk7Ci0gICAg
Ci0gICAgRE9NV2luZG93KiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKLSAgICBTdHJpbmcgZG9tYWluID0gc291
cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuaG9zdCgpOwotICAgIFN0cmluZyB1cmkgPSBz
b3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKTsKKwogICAgIFN0cmluZyBt
ZXNzYWdlID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7Ci0gICAgCiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAKLSAgICB3
aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UsIGRvbWFpbiwgdXJpLCBzb3VyY2UpOworICAgIGlm
ICghYXJnc1sxXS0+aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBTdHJpbmcgZGVzaXJl
ZFRhcmdldCA9IEtVUkwoYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykpLm9yaWdpbigpOworICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKworICAgICAgICBTdHJpbmcgYWN0dWFsVGFyZ2V0ID0gd2luZG93LT5mcmFtZSgpLT5s
b2FkZXIoKS0+dXJsKCkub3JpZ2luKCk7CisgICAgICAgIGlmIChkZXNpcmVkVGFyZ2V0ICE9IGFj
dHVhbFRhcmdldCkgeworICAgICAgICAgICAgLy8gVGhlIHNlbmRlciBpcyBub3QgYWxsb3dlZCB0
byBmaW5kIG91dCB0aGUgb3JpZ2luIG9mCisgICAgICAgICAgICAvLyB0aGUgcmVjaXBpZW50LCBz
byB3ZSBmYWlsIHNpbGVudGx5IGFuZCBsb2cgYSBtZXNzYWdlCisgICAgICAgICAgICAvLyB0byB0
aGUgY29uc29sZS4KKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQo
IlVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gb3JpZ2luICVzLiBSZWNpcGllbnQgaGFzIG9yaWdp
biAlcy5cbiIsIAorICAgICAgICAgICAgICAgIGRlc2lyZWRUYXJnZXQudXRmOCgpLmRhdGEoKSwg
YWN0dWFsVGFyZ2V0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgV2luZG93OjpyZXRyaWV2
ZUFjdGl2ZShleGVjKS0+cHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKwl9CisgICAgfQorCisgICAgRE9NV2luZG93KiBzb3VyY2Ug
PSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5pbXBsKCk7CisgICAgU3RyaW5nIG9yaWdp
biA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLm9yaWdpbigpOworICAgIAorICAg
IHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgb3JpZ2luLCBzb3VyY2UpOwogICAgIAogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCShyZXZpc2lv
biAzMDUxNSkKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDExICs0MSwxMCBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgpCiB7CiB9CiAK
LU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK01lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIERPTVdpbmRvdyogc291cmNlKQogICAgIDogRXZlbnQobWVzc2FnZUV2ZW50LCB0cnVl
LCB0cnVlKQogICAgICwgbV9kYXRhKGRhdGEpCi0gICAgLCBtX2RvbWFpbihkb21haW4pCi0gICAg
LCBtX3VyaSh1cmkpCisgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX3NvdXJjZShzb3Vy
Y2UpCiB7CiB9CkBAIC01NCw3ICs1Myw3IEBAIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgp
CiB7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdp
bmRvdyogc291cmNlKQordm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkK
IHsKICAgICBpZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02Miw4ICs2MSw3
IEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnMKICAgICBpbml0RXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKTsKICAgICAKICAgICBtX2RhdGEgPSBkYXRh
OwotICAgIG1fZG9tYWluID0gZG9tYWluOwotICAgIG1fdXJpID0gdXJpOworICAgIG1fb3JpZ2lu
ID0gb3JpZ2luOwogICAgIG1fc291cmNlID0gc291cmNlOwogfQogCkluZGV4OiBXZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMjIgKzM5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBNZXNzYWdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgTWVz
c2FnZUV2ZW50KCk7Ci0gICAgICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2Up
OworICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpOwogICAgICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZl
bnQoKTsKIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBz
b3VyY2UpOworICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSk7CiAgICAgICAgIAog
ICAgICAgICBjb25zdCBTdHJpbmcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLSAg
ICAgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQot
ICAgICAgICBjb25zdCBTdHJpbmcmIHVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJpOyB9CisgICAg
ICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAg
ICAgICAgRE9NV2luZG93KiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsg
fQogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOiAgICAKICAgICAgICAgU3RyaW5nIG1fZGF0YTsKLSAgICAgICAgU3Ry
aW5nIG1fZG9tYWluOwotICAgICAgICBTdHJpbmcgbV91cmk7CisgICAgICAgIFN0cmluZyBtX29y
aWdpbjsKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7CiAgICAgfTsKIApJbmRl
eDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaWRsCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwxMCBAQCBtb2R1bGUgZXZl
bnRzIHsKICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUNST1NTX0RPQ1VNRU5UX01FU1NBR0lO
RyxHZW5lcmF0ZUNvbnN0cnVjdG9yXSBNZXNzYWdlRXZlbnQgOiBFdmVudCB7CiAKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkYXRhOwotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGRvbWFpbjsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB1cmk7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgb3JpZ2luOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHNvdXJjZTsKICAgICAgICAgCi0g
ICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9v
bGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5n
IGRhdGFBcmcsIGluIERPTVN0cmluZyBkb21haW5BcmcsIGluIERPTVN0cmluZyB1cmlBcmcsIGlu
IERPTVdpbmRvdyBzb3VyY2VBcmcpOworICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4g
RE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNh
bmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJn
LCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKIAogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjAsMTAgKzIyMCwxMCBAQCBDb25zb2xlKiBET01XaW5kb3c6OmNvbnNvbGUo
KSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENST1NTX0RPQ1VNRU5UX01FU1NBR0lORykKLXZvaWQg
RE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpIGNvbnN0Cit2
b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpIGNvbnN0CiB7CiAgICBFeGNlcHRpb25D
b2RlIGVjOwotICAgZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1l
c3NhZ2UsIGRvbWFpbiwgdXJpLCBzb3VyY2UpLCBlYywgdHJ1ZSk7CisgICBkb2N1bWVudCgpLT5k
aXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVzc2FnZSwgb3JpZ2luLCBzb3VyY2UpLCBl
YywgdHJ1ZSk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMzA1MTUpCisr
KyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUoKSBjb25z
dDsKICAgICAgICAgCiAjaWYgRU5BQkxFKENST1NTX0RPQ1VNRU5UX01FU1NBR0lORykKLSAgICAg
ICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpIGNvbnN0OworICAg
ICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKSBjb25zdDsKICNlbmRpZgogCiAgICAgICAgIHZv
aWQgc2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsNyArMTM2LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICNpZiBkZWZpbmVkKEVOQUJM
RV9DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCiAgICAgICAgIC8vIGNyb3NzLWRvY3VtZW50IG1l
c3NhZ2luZwotICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQg
cG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UpOworICAgICAgICBbRG9Ob3RDaGVja0Rv
bWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3Nh
Z2UsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG9yaWdpbik7CiAjZW5kaWYKIAogI2lmIGRlZmlu
ZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkocmV2aXNpb24gMzA1MTUp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAK
ICNpZiBVU0UoSUNVX1VOSUNPREUpCkBAIC03ODQsNiArNzg1LDM1IEBAIFN0cmluZyBLVVJMOjpw
cmV0dHlVUkwoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CiB9CiAK
K1N0cmluZyBLVVJMOjpvcmlnaW4oKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAg
ICAgICByZXR1cm4gbV9zdHJpbmc7CisKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKKworICAg
IGFwcGVuZChyZXN1bHQsIHByb3RvY29sKCkpOworICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKKwor
ICAgIFZlY3RvcjxVQ2hhcj4gYXV0aG9yaXR5OworCisgICAgaWYgKGhvc3RFbmRQb3MgIT0gcGFz
c3dvcmRFbmRQb3MpIHsKKyAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwgaG9zdCgpKTsKKyAgICAg
ICAgaWYgKHBvcnQoKSAhPSAwICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCgpLCBw
cm90b2NvbCgpKSkgeworICAgICAgICAgICAgYXV0aG9yaXR5LmFwcGVuZCgnOicpOworICAgICAg
ICAgICAgYXBwZW5kKGF1dGhvcml0eSwgU3RyaW5nOjpudW1iZXIocG9ydCgpKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoIWF1dGhvcml0eS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLycpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcvJyk7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoYXV0aG9yaXR5KTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9w
dChyZXN1bHQpOworfQorCiBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0
cmluZyYgc3RyKQogewogICAgIHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc3RyLCBV
VEY4RW5jb2RpbmcoKSk7CkBAIC0xMjkwLDYgKzEzMjAsMjEgQEAgYm9vbCBlcXVhbElnbm9yaW5n
UmVmKGNvbnN0IEtVUkwmIGEsIGNvbgogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIGlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbCh1bnNpZ25lZCBzaG9ydCBwb3J0LCBTdHJpbmcgcHJvdG9jb2wp
Cit7CisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gZGVmYXVsdFBvcnRzOworICAg
IGlmIChkZWZhdWx0UG9ydHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQo
Imh0dHAiLCA4MCk7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0dHBzIiwgNDQzKTsKKyAg
ICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwIiwgMjEpOworICAgICAgICBkZWZhdWx0UG9ydHMu
c2V0KCJmdHBzIiwgOTkwKTsKKyAgICB9CisgICAgcmV0dXJuIGRlZmF1bHRQb3J0cy5nZXQocHJv
dG9jb2wpID09IHBvcnQ7Cit9CisKIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2Vz
KGNvbnN0IFN0cmluZyYgbm90RW5jb2RlZFN0cmluZykKIHsKICAgICBDU3RyaW5nIGFzVVRGOCA9
IG5vdEVuY29kZWRTdHJpbmcudXRmOCgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDMwNTE1KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZWYoKSBjb25zdDsKIAogICAgIFN0cmluZyBwcmV0
dHlVUkwoKSBjb25zdDsKKyAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAgICAgU3RyaW5nIGZp
bGVTeXN0ZW1QYXRoKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJl
bnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCkBAIC0xOTYsNiArMTk3
LDggQEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUgogCiBib29sIGVx
dWFsSWdub3JpbmdSZWYoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKTsKIAorYm9vbCBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hvcnQgcG9ydCwgU3RyaW5nIHByb3RvY29sKTsK
KwogY29uc3QgS1VSTCYgYmxhbmtVUkwoKTsKIAogLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVy
YXRpb25zIG9uIHN0cmluZ3MuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAko
cmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMjEgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hvcnQgcG9y
dCwgU3RyaW5nIHByb3RvY29sKQotewotICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+
IGRlZmF1bHRQb3J0czsKLSAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHkoKSkgewotICAgICAg
ICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOwotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0
KCJodHRwcyIsIDQ0Myk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0cCIsIDIxKTsKLSAg
ICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7Ci0gICAgfQotICAgIHJldHVybiBk
ZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OwotfQotCiBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0
LCB1bnNpZ25lZCBzaG9ydCBwb3J0KQogICAgIDogbV9wcm90b2NvbChwcm90b2NvbC5pc051bGwo
KSA/ICIiIDogcHJvdG9jb2wubG93ZXIoKSkKICAgICAsIG1faG9zdChob3N0LmlzTnVsbCgpID8g
IiIgOiBob3N0Lmxvd2VyKCkpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMDUxOSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDA4LTAyLTIz
ICBBZGFtIEJhcnRoICA8aGs5NTY1QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgTGF5b3V0VGVzdHMgZm9yIG5ldyBwb3N0
TWVzc2FnZSBBUEkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21h
aW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lc3Nh
Z2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJh
c2UtdGFnLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4u
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9t
YWluLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmln
aW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3Qt
bWVzc2FnZS1saXN0ZW5lci5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sOiBBZGRlZC4K
KwogMjAwOC0wMi0yMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IC0gdW5kbyBhbiBhY2NpZGVudGFsIGNoYW5nZSB0byBhIHRlc3QncyBleHBlY3RlZCByZXN1bHRz
IGZyb20gcjMwNDMxLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jv
c3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNz
YWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMiArMSwyIEBACiAKLWRhdGE6IFNvbWV0aGluZyB1cmk6IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC5odG1sIGRvbWFpbjog
MTI3LjAuMC4xCitkYXRhOiBTb21ldGhpbmcgb3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1k
b21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUu
aHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2lu
Zy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC05LDggKzksNyBAQAogZnVuY3Rpb24gcmVjZWl2ZXIoZSkgewogICAgIHZhciByZXN1
bHQgPSAiIjsKICAgICByZXN1bHQgKz0gImRhdGE6ICIgKyBlLmRhdGEgKyAiXG4iOwotICAgIHJl
c3VsdCArPSAidXJpOiAiICsgZS51cmkgKyAiXG4iOwotICAgIHJlc3VsdCArPSAiZG9tYWluOiAi
ICsgZS5kb21haW4gKyAiXG4iOworICAgIHJlc3VsdCArPSAib3JpZ2luOiAiICsgZS5vcmlnaW4g
KyAiXG4iOwogICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHJlc3VsdCk7ICAgCiB9CiAKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11
cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11
bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJp
LXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRh
Zy5odG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIGRv
bWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwiCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQt
dXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnkt
YmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3Yo
ZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRh
dGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwot
ICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2Uo
J01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0cDov
L3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0g
PHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9k
aXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRl
c3QoKSIKLSAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRl
cjogMXB4IHNvbGlkIGJsYWNrOyI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+
d2FpdGluZy4uLjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3Vt
ZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1k
b21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQt
ZG9tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLXdpbmRv
dy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCi1kb2N1bWVudC5k
b21haW4gPSAwLjAuMQotCi1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFy
ZW50IiBkb21haW49IjEyNy4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwi
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1
bWVudC1kb21haW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJl
Y3YoZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxk
LmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRl
c3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcp
OwotICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3Nh
Z2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLQotZG9jdW1lbnQuZG9tYWluID0gIjAuMC4x
IjsKLTwvc2NyaXB0PgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlw
dD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08
ZGl2PmRvY3VtZW50LmRvbWFpbiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9t
YWluKTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVy
Lmh0bWwiIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiCi0gIHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsiIG9ubG9hZD0idGVzdCgpIj4KLTwvaWZyYW1lPjwvZGl2Pgot
PGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0
aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3Rp
bGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICswLDAg
QEAKLXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAotCi1S
ZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJIZWxsbyBmcm9tIGNoaWxkIiBkb21haW49ImxvY2FsaG9z
dCIgdXJpPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3Vy
Y2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0
bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiByZWN2KGUpIHsKLSAgICB2YXIgbXNnID0g
J1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRv
bWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOwotCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKLQotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKLX0KLQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3Ys
IGZhbHNlKTsKLQotPC9zY3JpcHQ+Ci08YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29t
LyI+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50
LndyaXRlKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZy
YW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291
cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKLSAgaWQ9ImNoaWxkIiB3
aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+
Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgotPC9i
b2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ph
dmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1v
cmlnaW4uaHRtbAorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJIZWxsbyBmcm9tIGNoaWxkIiBv
cmlnaW49Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdp
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCShyZXZpc2lv
biAzMDUxNSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWw6MzA1MTUpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1z
dGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIHJlY3YoZSkgeworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyAr
IGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAn
Iic7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5k
YXRhID0gbXNnOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCis8L3NjcmlwdD4KKzxiYXNl
IGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KKzxib2R5PgorPGRpdj53aW5kb3cubG9j
YXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQubG9jYXRpb24uaHJl
Zik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdl
LXNlbmRlci5odG1sIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHls
ZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0i
cmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0
aWxsLXNlbmRzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdp
bi5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CiB9CiAKIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIg
dXJpPSInICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBk
YXRhPSInICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7CiAKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOwog
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdp
bi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVk
LWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10
YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK3dpbmRvdy5sb2Nh
dGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29y
aWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKKworUmVjZWl2ZWQgbWVzc2FnZTogZGF0
YT0iTWVzc2FnZSBmcm9tIHBhcmVudCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11
bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRh
Zy5odG1sCShyZXZpc2lvbiAzMDUxNSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0
bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFs
c2UpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7
CisgICAgd2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9Cis8L3Njcmlw
dD4KKzxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KKzxib2R5PgorPGRpdj53
aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0
aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlz
dGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVp
Z2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9k
aXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmln
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZm
ZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0IEBACit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4u
aHRtbAorZG9jdW1lbnQuZG9tYWluID0gMC4wLjEKKworUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0i
TWVzc2FnZSBmcm9tIHBhcmVudCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9j
dW1lbnQtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7CisKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJh
bWUuY29udGVudFdpbmRvdzsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJl
bnQnKTsKK30KKworZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsKKzwvc2NyaXB0PgorPGJvZHk+
Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5k
b3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PmRvY3VtZW50LmRvbWFpbiA9
IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWluKTs8L3NjcmlwdD48L2Rpdj4K
KzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVz
c2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIGlkPSJjaGlsZCIgd2lk
dGg9IjgwMCIgaGVpZ2h0PSIzMDAiCisgIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsi
IG9ubG9hZD0idGVzdCgpIj4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0
aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFy
Z2V0LW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5h
YmxlIHRvIHBvc3QgbWVzc2FnZSB0byBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo5MDkwLiBSZWNp
cGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIG9yaWdpbiBodHRwOi8vbG9jYWxo
b3N0LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAxOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIG9yaWdpbiBodHRw
czovL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAw
LgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBv
cmlnaW4gaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDov
L2xvY2FsaG9zdDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKword2FpdGlu
Zy4uLgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxo
b3N0OjgwMDAiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2Fn
ZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvIiBvcmlnaW49Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmln
aW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2ZvbyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9mb28/YmFyIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVk
IG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9i
YXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6
IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/
YmFyI2JheiIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Rh
cmdldC1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorCitkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitmdW5jdGlvbiB0cnlQ
b3N0TWVzc2FnZSh3aW4sIG9yaWdpbikgeworICAgIHdpbi5wb3N0TWVzc2FnZSgiVHJ5aW5nIG9y
aWdpbj0iICsgb3JpZ2luLCBvcmlnaW4pOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZh
ciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKKyAgICB2YXIgd2lu
ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisKKyAgICAvLyBTaG91bGQgc3VjY2VlZDoKKyAgICB0
cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKTsKKyAgICB0cnlQb3N0
TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAvIik7CisgICAgdHJ5UG9zdE1lc3Nh
Z2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2ZvbyIpOworICAgIHRyeVBvc3RNZXNzYWdl
KHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyIik7CisgICAgdHJ5UG9zdE1lc3Nh
Z2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5UG9z
dE1lc3NhZ2Uod2luLCAiaHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2Jh
eiIpOworCisgICAgLy8gU2hvdWxkIGZhaWw6CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0
cDovL2xvY2FsaG9zdDo5MDkwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xv
Y2FsaG9zdCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0Iik7
CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMCIpOworCisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93
LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5o
cmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVy
Lmh0bWwiIG9ubG9hZD0idGVzdCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0i
MzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2Pgor
PGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2Vz
L3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0
ZW5lci5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9
IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0Pjwv
ZGl2PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2
ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsg
JyIgdXJpPSInICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdl
OiBkYXRhPSInICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7CiAgICAg
dG9wLnBvc3RNZXNzYWdlKG1zZyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19293</attachid>
            <date>2008-02-23 02:52:26 -0800</date>
            <delta_ts>2008-02-23 22:32:41 -0800</delta_ts>
            <desc>Updates postMessage implementation to match HTML 5 specification</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>34780</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDgtMDItMjMgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorCisgICAg
ICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggSFRNTCA1IHNw
ZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFtZXRlciB0byBwb3N0TWVz
c2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBhdHRyaWJ1dGVzIG9mIE1l
c3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4gYXR0cmlidXRlLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3Jp
Z2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQt
b3JpZ2luLmh0bWwKKworICAgICAgICAqIENoYW5nZUxvZzoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Om9yaWdpbik6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
cGxhdGZvcm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpvcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppc1ZhbGlkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHA6CisKIDIwMDgtMDItMjIgIEp1c3RpbiBHYXJj
aWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJDU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0xNTAsMTYgKzE1MSwzOCBAQCBib29sIEpTRE9N
V2luZG93OjpjdXN0b21HZXRQcm9wZXJ0eU5hbWVzCiBKU1ZhbHVlKiBKU0RPTVdpbmRvdzo6cG9z
dE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQogewogICAgIERPTVdp
bmRvdyogd2luZG93ID0gaW1wbCgpOwotICAgIAotICAgIERPTVdpbmRvdyogc291cmNlID0gc3Rh
dGljX2Nhc3Q8SlNET01XaW5kb3cqPihleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCk7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgp
Lmhvc3QoKTsKLSAgICBTdHJpbmcgdXJpID0gc291cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJs
KCkuc3RyaW5nKCk7CisKICAgICBTdHJpbmcgbWVzc2FnZSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4
ZWMpOwotICAgIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBk
b21haW4sIHVyaSwgc291cmNlKTsKKyAgICBpZiAoIWFyZ3NbMV0tPmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgS1VSTCBkZXNpcmVkVVJMKGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKTsK
KyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIGlmICghZGVzaXJlZFVSTC5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTWU5UQVhfRVJSKTsKKyAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9ICAKKworICAgICAgICBTdHJpbmcgZGVzaXJl
ZFRhcmdldCA9IGRlc2lyZWRVUkwub3JpZ2luKCk7CisgICAgICAgIFN0cmluZyBhY3R1YWxUYXJn
ZXQgPSB3aW5kb3ctPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5vcmlnaW4oKTsKKworICAgICAg
ICBpZiAoZGVzaXJlZFRhcmdldCAhPSBhY3R1YWxUYXJnZXQpIHsKKyAgICAgICAgICAgIC8vIFRo
ZSBzZW5kZXIgaXMgbm90IGFsbG93ZWQgdG8gZmluZCBvdXQgdGhlIG9yaWdpbiBvZgorICAgICAg
ICAgICAgLy8gdGhlIHJlY2lwaWVudCwgc28gd2UgZmFpbCBzaWxlbnRseSBhbmQgbG9nIGEgbWVz
c2FnZQorICAgICAgICAgICAgLy8gdG8gdGhlIGNvbnNvbGUuCisgICAgICAgICAgICBTdHJpbmcg
bWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIG9yaWdp
biAlcy4gUmVjaXBpZW50IGhhcyBvcmlnaW4gJXMuXG4iLCAKKyAgICAgICAgICAgICAgICBkZXNp
cmVkVGFyZ2V0LnV0ZjgoKS5kYXRhKCksIGFjdHVhbFRhcmdldC51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPnByaW50RXJyb3JNZXNzYWdl
KG1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisJfQorICAgIH0K
KworICAgIERPTVdpbmRvdyogc291cmNlID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+
aW1wbCgpOworICAgIFN0cmluZyBvcmlnaW4gPSBzb3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51
cmwoKS5vcmlnaW4oKTsKKyAgICAKKyAgICB3aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UsIG9y
aWdpbiwgc291cmNlKTsKICAgICAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KSW5kZXg6
IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTAgQEAgTWVzc2FnZUV2ZW50
OjpNZXNzYWdlRXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwg
RE9NV2luZG93KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkKICAgICA6
IEV2ZW50KG1lc3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAgICAsIG1fZGF0YShkYXRhKQotICAg
ICwgbV9kb21haW4oZG9tYWluKQotICAgICwgbV91cmkodXJpKQorICAgICwgbV9vcmlnaW4ob3Jp
Z2luKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpAQCAtNTQsNyArNTMsNyBAQCBNZXNz
YWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK3ZvaWQgTWVzc2FnZUV2ZW50
Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3Nh
Z2VFdmVudChjb25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7
CiAgICAgCiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2RvbWFpbiA9IGRvbWFpbjsKLSAgICBt
X3VyaSA9IHVyaTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBtX3NvdXJjZSA9IHNvdXJj
ZTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZl
bnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5n
JiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKTsKICAg
ICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2lu
ZG93KiBzb3VyY2UpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmkoKSBjb25z
dCB7IHJldHVybiBtX3VyaTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc01lc3NhZ2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZTogICAgCiAgICAgICAgIFN0
cmluZyBtX2RhdGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgU3RyaW5nIG1f
dXJpOworICAgICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+
IG1fc291cmNlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkocmV2aXNpb24gMzA1
MTUpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwxMSArMjksMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25h
bD1DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gTWVzc2FnZUV2
ZW50IDogRXZlbnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0
YTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21haW47Ci0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdp
bmRvdyBzb3VyY2U7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4g
RE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNh
bmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgZG9tYWluQXJn
LCBpbiBET01TdHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKKyAgICAgICAg
dm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNh
bkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFy
ZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CiAKICAg
ICB9OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDEwICsyMjAsMTAgQEAgQ29u
c29sZSogRE9NV2luZG93Ojpjb25zb2xlKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDUk9TU19E
T0NVTUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERP
TVdpbmRvdyogc291cmNlKSBjb25zdAordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNl
KSBjb25zdAogewogICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgIGRvY3VtZW50KCktPmRpc3BhdGNo
RXZlbnQobmV3IE1lc3NhZ2VFdmVudChtZXNzYWdlLCBkb21haW4sIHVyaSwgc291cmNlKSwgZWMs
IHRydWUpOworICAgZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1l
c3NhZ2UsIG9yaWdpbiwgc291cmNlKSwgZWMsIHRydWUpOwogfQogI2VuZGlmCiAKSW5kZXg6IFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBDb25zb2xlKiBjb25zb2xlKCkgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShDUk9TU19E
T0NVTUVOVF9NRVNTQUdJTkcpCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdp
bmRvdyogc291cmNlKSBjb25zdDsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkgY29u
c3Q7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3Q7
CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIG1vZHVsZSB3aW5k
b3cgewogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HKQogICAg
ICAgICAvLyBjcm9zcy1kb2N1bWVudCBtZXNzYWdpbmcKLSAgICAgICAgW0RvTm90Q2hlY2tEb21h
aW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdl
KTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RN
ZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBvcmln
aW4pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
S1VSTC5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpAQCAtNzg0LDYg
Kzc4NSwzNSBAQCBTdHJpbmcgS1VSTDo6cHJldHR5VVJMKCkgY29uc3QKICAgICByZXR1cm4gU3Ry
aW5nOjphZG9wdChyZXN1bHQpOwogfQogCitTdHJpbmcgS1VSTDo6b3JpZ2luKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgVmVj
dG9yPFVDaGFyPiByZXN1bHQ7CisKKyAgICBhcHBlbmQocmVzdWx0LCBwcm90b2NvbCgpKTsKKyAg
ICByZXN1bHQuYXBwZW5kKCc6Jyk7CisKKyAgICBWZWN0b3I8VUNoYXI+IGF1dGhvcml0eTsKKwor
ICAgIGlmIChob3N0RW5kUG9zICE9IHBhc3N3b3JkRW5kUG9zKSB7CisgICAgICAgIGFwcGVuZChh
dXRob3JpdHksIGhvc3QoKSk7CisgICAgICAgIGlmIChwb3J0KCkgIT0gMCAmJiAhaXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKHBvcnQoKSwgcHJvdG9jb2woKSkpIHsKKyAgICAgICAgICAgIGF1dGhv
cml0eS5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgIGFwcGVuZChhdXRob3JpdHksIFN0cmluZzo6
bnVtYmVyKHBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFhdXRob3JpdHku
aXNFbXB0eSgpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgnLycpOworICAgICAgICByZXN1bHQuYXBwZW5kKGF1dGhvcml0eSk7CisgICAgfQor
CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKK30KKwogU3RyaW5nIGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0cikKIHsKICAgICByZXR1cm4gZGVjb2Rl
VVJMRXNjYXBlU2VxdWVuY2VzKHN0ciwgVVRGOEVuY29kaW5nKCkpOwpAQCAtMTI5MCw2ICsxMzIw
LDIxIEBAIGJvb2wgZXF1YWxJZ25vcmluZ1JlZihjb25zdCBLVVJMJiBhLCBjb24KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hv
cnQgcG9ydCwgU3RyaW5nIHByb3RvY29sKQoreworICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgdW5z
aWduZWQ+IGRlZmF1bHRQb3J0czsKKyAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHkoKSkgewor
ICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOworICAgICAgICBkZWZhdWx0UG9y
dHMuc2V0KCJodHRwcyIsIDQ0Myk7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0cCIsIDIx
KTsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7CisgICAgfQorICAgIHJl
dHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OworfQorCiBTdHJpbmcgZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29kZWRTdHJpbmcp
CiB7CiAgICAgQ1N0cmluZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
S1VSTC5oCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlz
IFVSTCBoYXMgYSBwYXRoLiBOb3RlIHRoYXQgImh0dHA6Ly9mb28uY29tLyIgaGFzIGEKICAgICAv
LyBwYXRoIG9mICIvIiwgc28gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0cnVlLiBPbmx5IGlu
dmFsaWQgb3IKQEAgLTEwNSw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZWYoKSBj
b25zdDsKIAogICAgIFN0cmluZyBwcmV0dHlVUkwoKSBjb25zdDsKKyAgICBTdHJpbmcgb3JpZ2lu
KCkgY29uc3Q7CiAgICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMg
dGhlIG51bGwtCkBAIC0xOTYsNiArMTk4LDggQEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEtVUgogCiBib29sIGVxdWFsSWdub3JpbmdSZWYoY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmKTsKIAorYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hvcnQg
cG9ydCwgU3RyaW5nIHByb3RvY29sKTsKKwogY29uc3QgS1VSTCYgYmxhbmtVUkwoKTsKIAogLy8g
RnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjEgKzM4LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wodW5zaWduZWQgc2hvcnQgcG9ydCwgU3RyaW5nIHByb3RvY29sKQotewotICAgIGlmIChw
cm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRpYyBI
YXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IGRlZmF1bHRQb3J0czsKLSAgICBpZiAoZGVmYXVsdFBv
cnRzLmlzRW1wdHkoKSkgewotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOwot
ICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7Ci0gICAgICAgIGRlZmF1bHRQ
b3J0cy5zZXQoImZ0cCIsIDIxKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5
MCk7Ci0gICAgfQotICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0
OwotfQotCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KQogICAgIDogbV9w
cm90b2NvbChwcm90b2NvbC5pc051bGwoKSA/ICIiIDogcHJvdG9jb2wubG93ZXIoKSkKICAgICAs
IG1faG9zdChob3N0LmlzTnVsbCgpID8gIiIgOiBob3N0Lmxvd2VyKCkpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAzMDUxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMwIEBACisyMDA4LTAyLTIzICBBZGFtIEJhcnRoICA8aGs5NTY1QGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
TGF5b3V0VGVzdHMgZm9yIG5ldyBwb3N0TWVzc2FnZSBBUEkuCisKKyAgICAgICAgKiBDaGFuZ2VM
b2c6CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Ut
c2VuZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3Vy
Y2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVj
dGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGls
bC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFp
bi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1w
YWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1k
b21haW4uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29y
aWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1i
YXNlLXRhZy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVj
dGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9z
dC1tZXNzYWdlLWxpc3RlbmVyLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWw6IEFkZGVk
LgorCiAyMDA4LTAyLTIzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgLSB1bmRvIGFuIGFjY2lkZW50YWwgY2hhbmdlIHRvIGEgdGVzdCdzIGV4cGVjdGVkIHJlc3Vs
dHMgZnJvbSByMzA0MzEuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9j
cm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21l
c3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwyICsxLDIgQEAKIAotZGF0YTogU29tZXRoaW5nIHVyaTogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLmh0bWwgZG9tYWlu
OiAxMjcuMC4wLjEKK2RhdGE6IFNvbWV0aGluZyBvcmlnaW46IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3Nz
LWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2
ZS5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2Fn
aW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTksOCArOSw3IEBACiBmdW5jdGlvbiByZWNlaXZlcihlKSB7CiAgICAgdmFyIHJl
c3VsdCA9ICIiOwogICAgIHJlc3VsdCArPSAiZGF0YTogIiArIGUuZGF0YSArICJcbiI7Ci0gICAg
cmVzdWx0ICs9ICJ1cmk6ICIgKyBlLnVyaSArICJcbiI7Ci0gICAgcmVzdWx0ICs9ICJkb21haW46
ICIgKyBlLmRvbWFpbiArICJcbiI7CisgICAgcmVzdWx0ICs9ICJvcmlnaW46ICIgKyBlLm9yaWdp
biArICJcbiI7CiAgICAgZS5zb3VyY2UucG9zdE1lc3NhZ2UocmVzdWx0KTsgICAKIH0KIApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5k
LXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJp
LXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMDUxNSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11
cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2Ut
dGFnLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9tIHBhcmVudCIg
ZG9tYWluPSIxMjcuMC4wLjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbCIKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFu
ZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1i
eS1iYXNlLXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gcmVj
dihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQu
ZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQotZnVuY3Rpb24gdGVz
dCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7
Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAgIHdpbi5wb3N0TWVzc2Fn
ZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotPC9zY3JpcHQ+Ci08YmFzZSBocmVmPSJodHRw
Oi8vd3d3LmV4YW1wbGUuY29tLyI+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYg
PSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48
L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9w
b3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0i
dGVzdCgpIgotICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9y
ZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0
Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9j
dW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzAsMCBAQAotd2lu
ZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKLWRvY3VtZW50
LmRvbWFpbiA9IDAuMC4xCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBw
YXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRt
bCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRv
Y3VtZW50LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24g
cmVjdihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hp
bGQuZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQotZnVuY3Rpb24g
dGVzdCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxk
Jyk7Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAgIHdpbi5wb3N0TWVz
c2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotCi1kb2N1bWVudC5kb21haW4gPSAiMC4w
LjEiOwotPC9zY3JpcHQ+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2Ny
aXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4K
LTxkaXY+ZG9jdW1lbnQuZG9tYWluID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5k
b21haW4pOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVu
ZXIuaHRtbCIgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIKLSAgc3R5bGU9ImJv
cmRlcjogMXB4IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCkiPgotPC9pZnJhbWU+PC9kaXY+
Ci08ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1v
cmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJv
d3MtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2Vw
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDU6IEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyCisKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1v
cmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2Vw
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworcG9zdE1l
c3NhZ2UoIkhlbGxvIiwgImFzZGYiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
ZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRp
b24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZh
c2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTog
ZGF0YT0iSGVsbG8gZnJvbSBjaGlsZCIgZG9tYWluPSJsb2NhbGhvc3QiIHVyaT0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9qYXZhc2NyaXB0LXBv
c3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMDUx
NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNj
cmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMx
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LX0KLQotZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdl
OiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9Iicg
KyBlLnVyaSArICciJzsKLQotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5m
aXJzdENoaWxkLmRhdGEgPSBtc2c7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLTwvc2Ny
aXB0PgotPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2
PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5s
b2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1w
b3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCi0gIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0
PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgotPC9pZnJhbWU+PC9kaXY+
Ci08ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KLQpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2Ny
aXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3Rp
bGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBA
Cit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKworUmVj
ZWl2ZWQgbWVzc2FnZTogZGF0YT0iSGVsbG8gZnJvbSBjaGlsZCIgb3JpZ2luPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3Jp
cHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2lu
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAg
ICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21h
aW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKKworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIHJlY3YsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3
LmV4YW1wbGUuY29tLyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2Ny
aXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2
PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL3Jlc291cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKKyAg
aWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNv
bGlkIGJsYWNrOyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4u
LjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24g
MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ph
dmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw3ICs4LDcgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogfQogCiBmdW5j
dGlvbiByZWN2KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Iicg
KyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsg
JyInOworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSAr
ICciIG9yaWdpbj0iJyArIGUub3JpZ2luICsgJyInOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKIApJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1i
YXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1i
eS1iYXNlLXRhZy5odG1sCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBw
YXJlbnQiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24g
MzA1MTUpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOjMwNTE1KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1iYXNlLXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24g
cmVjdihlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hp
bGQuZGF0YSA9IGUuZGF0YTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxk
Jyk7CisgICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVz
c2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOworfQorPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJo
dHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhy
ZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3Njcmlw
dD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9h
ZD0idGVzdCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVz
dWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3Vt
ZW50LWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAord2luZG93
LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKK2RvY3VtZW50LmRv
bWFpbiA9IDAuMC4xCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJl
bnQiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1s
CShyZXZpc2lvbiAzMDUxNSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDozMDUx
NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2lu
LXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFs
c2UpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7
CisgICAgd2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9CisKK2RvY3Vt
ZW50LmRvbWFpbiA9ICIwLjAuMSI7Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9j
YXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYp
Ozwvc2NyaXB0PjwvZGl2PgorPGRpdj5kb2N1bWVudC5kb21haW4gPSA8c2NyaXB0PmRvY3VtZW50
LndyaXRlKGRvY3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3Jj
PSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bv
c3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0i
MzAwIgorICBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IiBvbmxvYWQ9InRlc3QoKSI+
Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuYWJsZSB0byBwb3N0IG1lc3Nh
Z2UgdG8gb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC4gUmVjaXBpZW50IGhhcyBvcmlnaW4g
aHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5hYmxl
IHRvIHBvc3QgbWVzc2FnZSB0byBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhh
cyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBvcmlnaW4gaHR0cHM6Ly9sb2NhbGhvc3QuIFJl
Y2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gb3JpZ2luIGh0dHBzOi8vbG9j
YWxob3N0OjgwMDAuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4K
Kword2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCisKK3dhaXRpbmcuLi4KK1JlY2VpdmVkIG1l
c3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwIiBvcmlnaW49
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBv
cmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwLyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9mb28iIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVz
c2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciIg
b3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJU
cnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIgb3JpZ2luPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3Jp
Z2luPWh0dHA6Ly91c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiIG9yaWdpbj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL3RhcmdldC1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJI
VE1MICs9ICI8YnI+IiArIGUuZGF0YTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2Uod2luLCBv
cmlnaW4pIHsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBvcmlnaW49IiArIG9yaWdpbiwg
b3JpZ2luKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50
V2luZG93OworCisgICAgLy8gU2hvdWxkIHN1Y2NlZWQ6CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2lu
LCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0
cDovL2xvY2FsaG9zdDo4MDAwLyIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9mb28iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9j
YWxob3N0OjgwMDAvZm9vP2JhciIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0
dHA6Ly91c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiKTsKKworICAgIC8vIFNo
b3VsZCBmYWlsOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6OTA5
MCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3QiKTsKKyAgICB0
cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczovL2xvY2FsaG9zdCIpOworICAgIHRyeVBvc3RNZXNz
YWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0OjgwMDAiKTsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKzwvc2NyaXB0PgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0g
PHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9k
aXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRl
c3QoKSIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRl
cjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+
d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlz
dGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkocmV2aXNp
b24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NCw3ICs0LDcgQEAKIDxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50
LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KIDxzY3JpcHQ+CiBm
dW5jdGlvbiByZWN2KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9
IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJp
ICsgJyInOworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0
YSArICciIG9yaWdpbj0iJyArIGUub3JpZ2luICsgJyInOwogICAgIHRvcC5wb3N0TWVzc2FnZSht
c2cpOwogfQogCg==
</data>
<flag name="review"
          id="8428"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19311</attachid>
            <date>2008-02-23 22:32:41 -0800</date>
            <delta_ts>2008-03-17 07:35:55 -0700</delta_ts>
            <desc>Updated patch with origin check moved to DOMWindow</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>38211</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDgtMDItMjMgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorCisgICAg
ICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggSFRNTCA1IHNw
ZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFtZXRlciB0byBwb3N0TWVz
c2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBhdHRyaWJ1dGVzIG9mIE1l
c3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4gYXR0cmlidXRlLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3Jp
Z2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQt
b3JpZ2luLmh0bWwKKworICAgICAgICAqIENoYW5nZUxvZzoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Om9yaWdpbik6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
cGxhdGZvcm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpvcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppc1ZhbGlkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHA6CisKIDIwMDgtMDItMjIgIEp1c3RpbiBHYXJj
aWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDE3ICsxNTAsMTkgQEAgYm9vbCBKU0RP
TVdpbmRvdzo6Y3VzdG9tR2V0UHJvcGVydHlOYW1lcwogSlNWYWx1ZSogSlNET01XaW5kb3c6OnBv
c3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKIHsKICAgICBET01X
aW5kb3cqIHdpbmRvdyA9IGltcGwoKTsKLSAgICAKLSAgICBET01XaW5kb3cqIHNvdXJjZSA9IHN0
YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1w
bCgpOwotICAgIFN0cmluZyBkb21haW4gPSBzb3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwo
KS5ob3N0KCk7Ci0gICAgU3RyaW5nIHVyaSA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVy
bCgpLnN0cmluZygpOworCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzWzBdLT50b1N0cmluZyhl
eGVjKTsKLSAgICAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZSwg
ZG9tYWluLCB1cmksIHNvdXJjZSk7Ci0gICAgCisgICAgU3RyaW5nIG9yaWdpbiA9IHZhbHVlVG9T
dHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJnc1sxXSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAg
IERPTVdpbmRvdyogc291cmNlID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+aW1wbCgp
OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2luZG93LT5wb3N0TWVzc2FnZSht
ZXNzYWdlLCBvcmlnaW4sIHNvdXJjZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTAgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcm
IGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93
KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkKICAgICA6IEV2ZW50KG1l
c3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAgICAsIG1fZGF0YShkYXRhKQotICAgICwgbV9kb21h
aW4oZG9tYWluKQotICAgICwgbV91cmkodXJpKQorICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAg
ICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpAQCAtNTQsNyArNTMsNyBAQCBNZXNzYWdlRXZlbnQ6
On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0
cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9N
V2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChj
b25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7CiAgICAgCiAg
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2RvbWFpbiA9IGRvbWFpbjsKLSAgICBtX3VyaSA9IHVy
aTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKIH0KIApJ
bmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERP
TVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKTsKICAgICAgICAgdmly
dHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1
cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3Vy
Y2UpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1
cm4gbV9kb21haW47IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmkoKSBjb25zdCB7IHJldHVy
biBtX3VyaTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3Nh
Z2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZTogICAgCiAgICAgICAgIFN0cmluZyBtX2Rh
dGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgU3RyaW5nIG1fdXJpOworICAg
ICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNl
OwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkocmV2aXNpb24gMzA1MTUpCisrKyBX
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjks
MTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1DUk9TU19E
T0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gTWVzc2FnZUV2ZW50IDogRXZl
bnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21haW47Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBzb3Vy
Y2U7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5n
IHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVB
cmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgZG9tYWluQXJnLCBpbiBET01T
dHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKKyAgICAgICAgdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFy
ZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9N
U3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CiAKICAgICB9OwogCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKICNp
bmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1
ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01TZWxlY3Rp
b24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtMjIwLDEwICsyMjIsMzggQEAg
Q29uc29sZSogRE9NV2luZG93Ojpjb25zb2xlKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDUk9T
U19ET0NVTUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmks
IERPTVdpbmRvdyogc291cmNlKSBjb25zdAordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291
cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikgY29uc3QKIHsKLSAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVz
c2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSksIGVjLCB0cnVlKTsKKyAgICBpZiAoIW1fZnJhbWUp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghb3JpZ2luLmlzTnVsbCgpKSB7CisgICAgICAg
IEtVUkwgZGVzaXJlZFRhcmdldFVSTChvcmlnaW4pOworICAgICAgICBpZiAoIWRlc2lyZWRUYXJn
ZXRVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBlY0ZvclNlbmRlciA9IFNZTlRBWF9FUlI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgZGVzaXJl
ZFRhcmdldE9yaWdpbiA9IGRlc2lyZWRUYXJnZXRVUkwub3JpZ2luKCk7CisgICAgICAgIFN0cmlu
ZyBhY3R1YWxUYXJnZXRPcmlnaW4gPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkub3JpZ2luKCk7
CisgICAgICAgIGlmIChkZXNpcmVkVGFyZ2V0T3JpZ2luLmlzTnVsbCgpIHx8IGRlc2lyZWRUYXJn
ZXRPcmlnaW4gIT0gYWN0dWFsVGFyZ2V0T3JpZ2luKSB7CisgICAgICAgICAgICAvLyBUaGUgc2Vu
ZGVyIGlzIG5vdCBhbGxvd2VkIHRvIGZpbmQgb3V0IHRoZSBvcmlnaW4gb2YKKyAgICAgICAgICAg
IC8vIHRoZSByZWNpcGllbnQsIHNvIHdlIGZhaWwgc2lsZW50bHkgYW5kIGxvZyBhIG1lc3NhZ2UK
KyAgICAgICAgICAgIC8vIHRvIHRoZSBjb25zb2xlLgorICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAlcy4gUmVjaXBp
ZW50IGhhcyBvcmlnaW4gJXMuXG4iLCAKKwkgICAgICAgIG9yaWdpbi51dGY4KCkuZGF0YSgpLCBh
Y3R1YWxUYXJnZXRPcmlnaW4udXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBQYWdlKiBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAgICAg
ICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgU3RyaW5nIHNvdXJjZU9yaWdpbiA9IHNvdXJj
ZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLm9yaWdpbigpOworCisgICAgLy8gU2VuZGVyIGlz
IG5vdCBhbGxvd2VkIHRvIHNlZSBleGNlcHRpb25zIG90aGVyIHRoYW4gc3ludGF4IGVycm9ycwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7IAorICAgIGRvY3VtZW50KCktPmRpc3BhdGNoRXZlbnQobmV3
IE1lc3NhZ2VFdmVudChtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSksIGVjLCB0cnVlKTsK
IH0KICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29uc29sZSogY29uc29sZSgpIGNvbnN0OwogICAgICAg
ICAKICNpZiBFTkFCTEUoQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HKQotICAgICAgICB2b2lkIHBv
c3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNv
bnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkgY29uc3Q7CisgICAgICAgIHZvaWQg
cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjRm9yU2VuZGVyKSBjb25zdDsKICNl
bmRpZgogCiAgICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAK
ICNpZiBkZWZpbmVkKEVOQUJMRV9DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCiAgICAgICAgIC8v
IGNyb3NzLWRvY3VtZW50IG1lc3NhZ2luZwotICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3Vy
aXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UpOworICAg
ICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2Uo
aW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG9yaWdpbik7CiAj
ZW5kaWYKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vS1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNw
cAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAi
VGV4dEVuY29kaW5nLmgiCiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCkBAIC03ODQsNiArNzg1LDMw
IEBAIFN0cmluZyBLVVJMOjpwcmV0dHlVUkwoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6OmFk
b3B0KHJlc3VsdCk7CiB9CiAKK1N0cmluZyBLVVJMOjpvcmlnaW4oKSBjb25zdAoreworICAgIGlm
ICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAocHJvdG9j
b2xJcygiZmlsZSIpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCJmaWxlOi8vIik7CisKKyAgICBp
ZiAocHJvdG9jb2woKS5pc0VtcHR5KCkgfHwgaG9zdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CisgICAgYXBwZW5kKHJl
c3VsdCwgcHJvdG9jb2woKSk7CisgICAgYXBwZW5kKHJlc3VsdCwgIjovLyIpOworICAgIGFwcGVu
ZChyZXN1bHQsIGhvc3QoKSk7CisKKyAgICBpZiAocG9ydCgpICE9IDAgJiYgIWlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChwb3J0KCksIHByb3RvY29sKCkpKSB7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoJzonKTsKKyAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIocG9ydCgpKSk7
CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKK30KKwogU3RyaW5n
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0cikKIHsKICAgICByZXR1
cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHN0ciwgVVRGOEVuY29kaW5nKCkpOwpAQCAtMTI5
MCw2ICsxMzE1LDIxIEBAIGJvb2wgZXF1YWxJZ25vcmluZ1JlZihjb25zdCBLVVJMJiBhLCBjb24K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5z
aWduZWQgc2hvcnQgcG9ydCwgU3RyaW5nIHByb3RvY29sKQoreworICAgIGlmIChwcm90b2NvbC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgdW5zaWduZWQ+IGRlZmF1bHRQb3J0czsKKyAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1w
dHkoKSkgeworICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOworICAgICAgICBk
ZWZhdWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQo
ImZ0cCIsIDIxKTsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7CisgICAg
fQorICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OworfQorCiBT
dHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29k
ZWRTdHJpbmcpCiB7CiAgICAgQ1N0cmluZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0Zjgo
KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vS1VSTC5oCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VS
TC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGlzIFVSTCBoYXMgYSBwYXRoLiBOb3RlIHRoYXQgImh0dHA6Ly9mb28uY29tLyIgaGFz
IGEKICAgICAvLyBwYXRoIG9mICIvIiwgc28gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0cnVl
LiBPbmx5IGludmFsaWQgb3IKQEAgLTEwNSw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNSZWYoKSBjb25zdDsKIAogICAgIFN0cmluZyBwcmV0dHlVUkwoKSBjb25zdDsKKyAgICBTdHJp
bmcgb3JpZ2luKCkgY29uc3Q7CiAgICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhl
IHNhbWUgYXMgdGhlIG51bGwtCkBAIC0xOTYsNiArMTk4LDggQEAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0cmluZyYsIGNvbnN0IEtVUgogCiBib29sIGVxdWFsSWdub3JpbmdSZWYoY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmKTsKIAorYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zaWdu
ZWQgc2hvcnQgcG9ydCwgU3RyaW5nIHByb3RvY29sKTsKKwogY29uc3QgS1VSTCYgYmxhbmtVUkwo
KTsKIAogLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjEg
KzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hvcnQgcG9ydCwgU3RyaW5nIHByb3RvY29sKQotewot
ICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHN0YXRpYyBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IGRlZmF1bHRQb3J0czsKLSAgICBpZiAo
ZGVmYXVsdFBvcnRzLmlzRW1wdHkoKSkgewotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRw
IiwgODApOwotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7Ci0gICAgICAg
IGRlZmF1bHRQb3J0cy5zZXQoImZ0cCIsIDIxKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgi
ZnRwcyIsIDk5MCk7Ci0gICAgfQotICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29s
KSA9PSBwb3J0OwotfQotCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KQog
ICAgIDogbV9wcm90b2NvbChwcm90b2NvbC5pc051bGwoKSA/ICIiIDogcHJvdG9jb2wubG93ZXIo
KSkKICAgICAsIG1faG9zdChob3N0LmlzTnVsbCgpID8gIiIgOiBob3N0Lmxvd2VyKCkpCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAzMDUxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDA4LTAyLTIzICBBZGFtIEJhcnRoICA8aGs5NTY1QGdt
YWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgTGF5b3V0VGVzdHMgZm9yIG5ldyBwb3N0TWVzc2FnZSBBUEkuCisKKyAgICAgICAg
KiBDaGFuZ2VMb2c6CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWlu
LW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdp
bmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4
Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNl
bmRzLWRvbWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2
YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGls
bC1zZW5kcy1kb21haW4uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10
YWcuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdp
bi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9t
YWluLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNv
dXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0
bWw6IEFkZGVkLgorCiAyMDA4LTAyLTIzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgLSB1bmRvIGFuIGFjY2lkZW50YWwgY2hhbmdlIHRvIGEgdGVzdCdzIGV4cGVj
dGVkIHJlc3VsdHMgZnJvbSByMzA0MzEuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21l
c3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2Fn
ZS1zZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKIAotZGF0YTogU29tZXRoaW5nIHVyaTogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLmh0
bWwgZG9tYWluOiAxMjcuMC4wLjEKK2RhdGE6IFNvbWV0aGluZyBvcmlnaW46IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3Vy
Y2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3Nh
Z2UtcmVjZWl2ZS5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw3IEBACiBmdW5jdGlvbiByZWNlaXZlcihlKSB7CiAg
ICAgdmFyIHJlc3VsdCA9ICIiOwogICAgIHJlc3VsdCArPSAiZGF0YTogIiArIGUuZGF0YSArICJc
biI7Ci0gICAgcmVzdWx0ICs9ICJ1cmk6ICIgKyBlLnVyaSArICJcbiI7Ci0gICAgcmVzdWx0ICs9
ICJkb21haW46ICIgKyBlLmRvbWFpbiArICJcbiI7CisgICAgcmVzdWx0ICs9ICJvcmlnaW46ICIg
KyBlLm9yaWdpbiArICJcbiI7CiAgICAgZS5zb3VyY2UucG9zdE1lc3NhZ2UocmVzdWx0KTsgICAK
IH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9k
b21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAz
MDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVk
LWJ5LWJhc2UtdGFnLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9t
IHBhcmVudCIgZG9tYWluPSIxMjcuMC4wLjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcu
aHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11
cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5h
ZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVu
Y3Rpb24gcmVjdihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZp
cnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQot
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQotZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NoaWxkJyk7Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAgIHdpbi5w
b3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotPC9zY3JpcHQ+Ci08YmFzZSBo
cmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0
aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8
L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwi
IG9ubG9hZD0idGVzdCgpIgotICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBz
dHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBp
ZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0
ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5
LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1i
eS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzAs
MCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwK
LWRvY3VtZW50LmRvbWFpbiA9IDAuMC4xCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3Nh
Z2UgZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1k
b21haW4uaHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4t
dW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVj
dGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQot
ZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0K
LQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQot
ZnVuY3Rpb24gdGVzdCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NoaWxkJyk7Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAgIHdp
bi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotCi1kb2N1bWVudC5kb21h
aW4gPSAiMC4wLjEiOwotPC9zY3JpcHQ+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9uLmhy
ZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3Njcmlw
dD48L2Rpdj4KLTxkaXY+ZG9jdW1lbnQuZG9tYWluID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShk
b2N1bWVudC5kb21haW4pOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZyYW1lIHNyYz0iaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3Nh
Z2UtbGlzdGVuZXIuaHRtbCIgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIKLSAg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCkiPgotPC9pZnJh
bWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
aW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9y
aWdpbi10aHJvd3MtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhy
b3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGFzZGY6
LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6LiBSZWNpcGll
bnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIC90bXAvZm9vLiBSZWNpcGllbnQgaGFz
IG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAw
OiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIC8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9y
aWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRo
cm93cy1leGNlcHRpb24uaHRtbAorCit3YWl0aW5nLi4uCitFbmNvdW50ZXJlZCBleGNlcHRpb24g
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIgd2hpbGUgcG9zdGluZyBtZXNzYWdl
IHRvICcnLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhj
ZXB0aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnYXNkZicuCitQb3N0ZWQgbWVzc2Fn
ZSB0byAnYXNkZjonIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAn
aHR0cDonIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAnL3RtcC9m
b28nIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAnLy9sb2NhbGhv
c3QnIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmln
aW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPiIgKyBl
LmRhdGE7Cit9CisgCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwg
ZmFsc2UpOworCitmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZShvcmlnaW4pIHsKKyAgdHJ5IHsKKyAg
ICB3aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBvcmlnaW49IiArIG9yaWdpbiwgb3JpZ2luKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+UG9z
dGVkIG1lc3NhZ2UgdG8gJyIgKyBvcmlnaW4gKyAiJyB3aXRob3V0IGFueSBleGNlcHRpb25zLiI7
CisgIH0gY2F0Y2goZXgpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJIVE1MICs9ICI8YnI+RW5jb3VudGVyZWQgZXhjZXB0aW9uICIgKyBleCArICIgd2hpbGUg
cG9zdGluZyBtZXNzYWdlIHRvICciICsgb3JpZ2luICsgIicuIjsKKyAgfQorfQorCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hp
bGQnKTsKKyAgICB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKworICAgIC8vIE5vbi1VUkxz
IHNob3VsZCBmYWlsIHdpdGggYSBzeW50YXggZXJyb3IuCisgICAgdHJ5UG9zdE1lc3NhZ2UoIiIp
OworICAgIHRyeVBvc3RNZXNzYWdlKCJhc2RmIik7CisKKyAgICAvLyBVUkxzIHdpdGhvdXQgYW4g
b3JpZ2luIHNob3VsZCBmYWlsIHdpdGhvdXQgZ2VuZXJhdGluZyBhbnkgZXJyb3JzLgorICAgIHRy
eVBvc3RNZXNzYWdlKCJhc2RmOiIpOworICAgIHRyeVBvc3RNZXNzYWdlKCJodHRwOiIpOworCisg
ICAgLy8gV2ViS2l0IGNvbnZlcnRzIFVSTHMgdGhhdCBzdGFydCB3aXRoIC8gdG8gZmlsZTovLyBV
UkxzLiBUaGV5IGRvbid0IG1hdGNoIHRoZSB0YXJnZXQgZnJhbWUsIHNvIHRoZXkgZmFpbCBzaWxl
bnRseS4KKyAgICB0cnlQb3N0TWVzc2FnZSgiL3RtcC9mb28iKTsKKyAgICB0cnlQb3N0TWVzc2Fn
ZSgiLy9sb2NhbGhvc3QiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0
PgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53
cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUg
c3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2Vz
L3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxk
IiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtZG9tYWluLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iSGVsbG8gZnJvbSBj
aGlsZCIgZG9tYWluPSJsb2NhbGhvc3QiIHVyaT0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIu
aHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNl
bmRzLWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMxICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gcmVj
dihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRh
ICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKLQot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBt
c2c7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0i
aHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5o
cmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTs8L3Nj
cmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVy
Lmh0bWwiCi0gIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsiPgotPC9pZnJhbWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQi
PndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2Vu
ZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmln
aW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACit3aW5kb3cubG9jYXRpb24u
aHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2Ny
aXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKworUmVjZWl2ZWQgbWVzc2FnZTogZGF0
YT0iSGVsbG8gZnJvbSBjaGlsZCIgb3JpZ2luPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5k
cy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFp
bi5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICB2YXIgbXNnID0gJ1JlY2Vp
dmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiAr
ICciIHVyaT0iJyArIGUudXJpICsgJyInOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNl
KTsKKworPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+Cis8
Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRl
KGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNy
Yz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9q
YXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0i
ODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lm
cmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGls
bC1zZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogfQogCiBmdW5jdGlvbiByZWN2KGUpIHsKLSAg
ICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21h
aW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworICAgIHZhciBtc2cg
PSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIG9yaWdpbj0iJyArIGUu
b3JpZ2luICsgJyInOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZp
cnN0Q2hpbGQuZGF0YSA9IG1zZzsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdp
bi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzIEBACit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCisK
K1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9yaWdpbj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2lu
LXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5h
ZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsK
KworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIg
aWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9
IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9t
IHBhcmVudCcpOworfQorPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUu
Y29tLyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3Vt
ZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlm
cmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNv
dXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgpIgorICBpZD0i
Y2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKK2RvY3VtZW50LmRvbWFpbiA9IDAuMC4xCisKK1Jl
Y2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9yaWdpbj0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29y
aWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMDUxNSkJ
KGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4t
dW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDozMDUxNSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9j
dW1lbnQtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBy
ZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGls
ZC5kYXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQn
KTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2luLnBvc3RNZXNz
YWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9CisKK2RvY3VtZW50LmRvbWFpbiA9ICIwLjAu
MSI7Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3Jp
cHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2Pgor
PGRpdj5kb2N1bWVudC5kb21haW4gPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50LmRv
bWFpbik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0
OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5l
ci5odG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIgorICBzdHlsZT0iYm9y
ZGVyOiAxcHggc29saWQgYmxhY2s7IiBvbmxvYWQ9InRlc3QoKSI+Cis8L2lmcmFtZT48L2Rpdj4K
KzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3Jp
Z2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQt
b3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL2xvY2Fs
aG9zdDo5MDkwLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6
Ly9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4K
KworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0
cHM6Ly9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8g
aHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2Fs
aG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVz
c2FnZSB0byBodHRwOi8vd3d3LmV4YW1wbGUuY29tLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRw
Oi8vbG9jYWxob3N0OjgwMDAuCisKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAorCit3YWl0
aW5nLi4uCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNz
YWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iIG9yaWdpbj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9y
aWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2Fs
aG9zdDo4MDAwL2Zvbz9iYXIiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2
ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9v
P2JhciNiYXoiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2Fn
ZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vdXNlcjpwYXNzQGxvY2FsaG9zdDo4MDAwL2Zv
bz9iYXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3Nh
Z2U6IGRhdGE9IlRyeWluZyBvcmlnaW49bnVsbCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPXVuZGVmaW5lZCIgb3Jp
Z2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4u
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5p
bm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2Uo
d2luLCBvcmlnaW4pIHsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBvcmlnaW49IiArIG9y
aWdpbiwgb3JpZ2luKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlmcmFtZS5j
b250ZW50V2luZG93OworCisgICAgLy8gU2hvdWxkIHN1Y2NlZWQ6CisgICAgdHJ5UG9zdE1lc3Nh
Z2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2lu
LCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdp
biwgImh0dHA6Ly91c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiKTsKKyAgICB0
cnlQb3N0TWVzc2FnZSh3aW4sIG51bGwpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgdW5kZWZp
bmVkKTsKKworICAgIC8vIFNob3VsZCBmYWlsOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0
dHA6Ly9sb2NhbGhvc3Q6OTA5MCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9s
b2NhbGhvc3QiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczovL2xvY2FsaG9zdCIp
OworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0OjgwMDAiKTsKKyAg
ICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9j
YXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYp
Ozwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRt
bCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAi
IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2
IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3Qt
bWVzc2FnZS1saXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5o
dG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC00LDcgKzQsNyBAQAogPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3Jp
cHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2Pgog
PHNjcmlwdD4KIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVz
c2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJp
PSInICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRh
PSInICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7CiAgICAgdG9wLnBv
c3RNZXNzYWdlKG1zZyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19327</attachid>
            <date>2008-02-24 13:47:46 -0800</date>
            <delta_ts>2008-02-24 21:55:23 -0800</delta_ts>
            <desc>Updated patch that addresses Sam&apos;s comments</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>38293</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDgtMDItMjMgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorCisgICAg
ICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggSFRNTCA1IHNw
ZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFtZXRlciB0byBwb3N0TWVz
c2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBhdHRyaWJ1dGVzIG9mIE1l
c3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4gYXR0cmlidXRlLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3Jp
Z2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQt
b3JpZ2luLmh0bWwKKworICAgICAgICAqIENoYW5nZUxvZzoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Om9yaWdpbik6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
cGxhdGZvcm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpvcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9LVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppc1ZhbGlkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHA6CisKIDIwMDgtMDItMjIgIEp1c3RpbiBHYXJj
aWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDE3ICsxNTAsMTkgQEAgYm9vbCBKU0RP
TVdpbmRvdzo6Y3VzdG9tR2V0UHJvcGVydHlOYW1lcwogSlNWYWx1ZSogSlNET01XaW5kb3c6OnBv
c3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKIHsKICAgICBET01X
aW5kb3cqIHdpbmRvdyA9IGltcGwoKTsKLSAgICAKLSAgICBET01XaW5kb3cqIHNvdXJjZSA9IHN0
YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1w
bCgpOwotICAgIFN0cmluZyBkb21haW4gPSBzb3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwo
KS5ob3N0KCk7Ci0gICAgU3RyaW5nIHVyaSA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVy
bCgpLnN0cmluZygpOworCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzWzBdLT50b1N0cmluZyhl
eGVjKTsKLSAgICAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZSwg
ZG9tYWluLCB1cmksIHNvdXJjZSk7Ci0gICAgCisgICAgU3RyaW5nIG9yaWdpbiA9IHZhbHVlVG9T
dHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJnc1sxXSk7CisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAg
IERPTVdpbmRvdyogc291cmNlID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+aW1wbCgp
OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2luZG93LT5wb3N0TWVzc2FnZSht
ZXNzYWdlLCBvcmlnaW4sIHNvdXJjZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTAgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcm
IGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93
KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkKICAgICA6IEV2ZW50KG1l
c3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAgICAsIG1fZGF0YShkYXRhKQotICAgICwgbV9kb21h
aW4oZG9tYWluKQotICAgICwgbV91cmkodXJpKQorICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAg
ICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpAQCAtNTQsNyArNTMsNyBAQCBNZXNzYWdlRXZlbnQ6
On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0
cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9N
V2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChj
b25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7CiAgICAgCiAg
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2RvbWFpbiA9IGRvbWFpbjsKLSAgICBtX3VyaSA9IHVy
aTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKIH0KIApJ
bmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERP
TVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKTsKICAgICAgICAgdmly
dHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1
cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3Vy
Y2UpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1
cm4gbV9kb21haW47IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmkoKSBjb25zdCB7IHJldHVy
biBtX3VyaTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3Nh
Z2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZTogICAgCiAgICAgICAgIFN0cmluZyBtX2Rh
dGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgU3RyaW5nIG1fdXJpOworICAg
ICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNl
OwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkocmV2aXNpb24gMzA1MTUpCisrKyBX
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjks
MTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1DUk9TU19E
T0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gTWVzc2FnZUV2ZW50IDogRXZl
bnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21haW47Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBzb3Vy
Y2U7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5n
IHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVB
cmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgZG9tYWluQXJnLCBpbiBET01T
dHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKKyAgICAgICAgdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFy
ZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9N
U3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CiAKICAgICB9OwogCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKICNp
bmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1
ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01TZWxlY3Rp
b24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtMjIwLDEwICsyMjIsMzggQEAg
Q29uc29sZSogRE9NV2luZG93Ojpjb25zb2xlKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDUk9T
U19ET0NVTUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmks
IERPTVdpbmRvdyogc291cmNlKSBjb25zdAordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291
cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikgY29uc3QKIHsKLSAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVz
c2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSksIGVjLCB0cnVlKTsKKyAgICBpZiAoIW1fZnJhbWUp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghb3JpZ2luLmlzTnVsbCgpKSB7CisgICAgICAg
IEtVUkwgZGVzaXJlZFRhcmdldFVSTChvcmlnaW4pOworICAgICAgICBpZiAoIWRlc2lyZWRUYXJn
ZXRVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBlY0ZvclNlbmRlciA9IFNZTlRBWF9FUlI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgZGVzaXJl
ZFRhcmdldE9yaWdpbiA9IGRlc2lyZWRUYXJnZXRVUkwub3JpZ2luKCk7CisgICAgICAgIFN0cmlu
ZyBhY3R1YWxUYXJnZXRPcmlnaW4gPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkub3JpZ2luKCk7
CisgICAgICAgIGlmIChkZXNpcmVkVGFyZ2V0T3JpZ2luLmlzTnVsbCgpIHx8IGRlc2lyZWRUYXJn
ZXRPcmlnaW4gIT0gYWN0dWFsVGFyZ2V0T3JpZ2luKSB7CisgICAgICAgICAgICAvLyBUaGUgc2Vu
ZGVyIGlzIG5vdCBhbGxvd2VkIHRvIGZpbmQgb3V0IHRoZSBvcmlnaW4gb2YKKyAgICAgICAgICAg
IC8vIHRoZSByZWNpcGllbnQsIHNvIHdlIGZhaWwgc2lsZW50bHkgYW5kIGxvZyBhIG1lc3NhZ2UK
KyAgICAgICAgICAgIC8vIHRvIHRoZSBjb25zb2xlLgorICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAlcy4gUmVjaXBp
ZW50IGhhcyBvcmlnaW4gJXMuXG4iLCAKKyAgICAgICAgICAgICAgICBvcmlnaW4udXRmOCgpLmRh
dGEoKSwgYWN0dWFsVGFyZ2V0T3JpZ2luLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgICAgIGlmIChwYWdlKQorICAgICAg
ICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIFN0cmluZygpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFN0cmluZyBzb3VyY2VPcmlnaW4g
PSBzb3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5vcmlnaW4oKTsKKworICAgIC8vIFNl
bmRlciBpcyBub3QgYWxsb3dlZCB0byBzZWUgZXhjZXB0aW9ucyBvdGhlciB0aGFuIHN5bnRheCBl
cnJvcnMKKyAgICBFeGNlcHRpb25Db2RlIGVjOyAKKyAgICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2
ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVzc2FnZSwgc291cmNlT3JpZ2luLCBzb3VyY2UpLCBlYywg
dHJ1ZSk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMzA1MTUpCisrKyBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUoKSBjb25zdDsK
ICAgICAgICAgCiAjaWYgRU5BQkxFKENST1NTX0RPQ1VNRU5UX01FU1NBR0lORykKLSAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZG9t
YWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpIGNvbnN0OworICAgICAg
ICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikgY29u
c3Q7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3Q7
CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw4IEBAIG1vZHVsZSB3aW5k
b3cgewogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HKQogICAg
ICAgICAvLyBjcm9zcy1kb2N1bWVudCBtZXNzYWdpbmcKLSAgICAgICAgW0RvTm90Q2hlY2tEb21h
aW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdl
KTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RN
ZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBvcmln
aW4pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCiAjaWYgZGVm
aW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lvbiAzMDUx
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
IAogI2lmIFVTRShJQ1VfVU5JQ09ERSkKQEAgLTc4NCw2ICs3ODUsMzEgQEAgU3RyaW5nIEtVUkw6
OnByZXR0eVVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKIH0K
IAorU3RyaW5nIEtVUkw6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChwcm90b2NvbElzKCJmaWxlIikpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoImZpbGU6Ly8iKTsKKworICAgIGlmIChwcm90b2NvbCgpLmlz
RW1wdHkoKSB8fCBob3N0KCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KHBv
cnRFbmRQb3MpOworICAgIGFwcGVuZChyZXN1bHQsIHByb3RvY29sKCkpOworICAgIGFwcGVuZChy
ZXN1bHQsICI6Ly8iKTsKKyAgICBhcHBlbmQocmVzdWx0LCBob3N0KCkpOworCisgICAgaWYgKHBv
cnQoKSAhPSAwICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCgpLCBwcm90b2NvbCgp
KSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCc6Jyk7CisgICAgICAgIGFwcGVuZChyZXN1bHQs
IFN0cmluZzo6bnVtYmVyKHBvcnQoKSkpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmFk
b3B0KHJlc3VsdCk7Cit9CisKIFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3Qg
U3RyaW5nJiBzdHIpCiB7CiAgICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhzdHIs
IFVURjhFbmNvZGluZygpKTsKQEAgLTEyOTAsNiArMTMxNiwyMSBAQCBib29sIGVxdWFsSWdub3Jp
bmdSZWYoY29uc3QgS1VSTCYgYSwgY29uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIFN0cmluZyBwcm90b2Nv
bCkKK3sKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBkZWZhdWx0UG9ydHM7Cisg
ICAgaWYgKGRlZmF1bHRQb3J0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNl
dCgiaHR0cCIsIDgwKTsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiaHR0cHMiLCA0NDMpOwor
ICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJmdHAiLCAyMSk7CisgICAgICAgIGRlZmF1bHRQb3J0
cy5zZXQoImZ0cHMiLCA5OTApOworICAgIH0KKyAgICByZXR1cm4gZGVmYXVsdFBvcnRzLmdldChw
cm90b2NvbCkgPT0gcG9ydDsKK30KKwogU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMoY29uc3QgU3RyaW5nJiBub3RFbmNvZGVkU3RyaW5nKQogewogICAgIENTdHJpbmcgYXNVVEY4
ID0gbm90RW5jb2RlZFN0cmluZy51dGY4KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkocmV2aXNpb24gMzA1MTUp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
aXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlk
OyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBVUkwgaGFzIGEgcGF0aC4gTm90ZSB0
aGF0ICJodHRwOi8vZm9vLmNvbS8iIGhhcyBhCiAgICAgLy8gcGF0aCBvZiAiLyIsIHNvIHRoaXMg
ZnVuY3Rpb24gd2lsbCByZXR1cm4gdHJ1ZS4gT25seSBpbnZhbGlkIG9yCkBAIC0xMDUsNiArMTA2
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVmKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJl
dHR5VVJMKCkgY29uc3Q7CisgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwogICAgIFN0cmluZyBm
aWxlU3lzdGVtUGF0aCgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJy
ZW50IFVSTCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQpAQCAtMTk2LDYgKzE5
OCw4IEBAIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVIKIAogYm9vbCBl
cXVhbElnbm9yaW5nUmVmKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7CiAKK2Jvb2wgaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIFN0cmluZyBwcm90b2NvbCk7
CisKIGNvbnN0IEtVUkwmIGJsYW5rVVJMKCk7CiAKIC8vIEZ1bmN0aW9ucyB0byBkbyBVUkwgb3Bl
cmF0aW9ucyBvbiBzdHJpbmdzLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJ
KHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDIxICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBv
cnQsIFN0cmluZyBwcm90b2NvbCkKLXsKLSAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
PiBkZWZhdWx0UG9ydHM7Ci0gICAgaWYgKGRlZmF1bHRQb3J0cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgZGVmYXVsdFBvcnRzLnNldCgiaHR0cCIsIDgwKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNl
dCgiaHR0cHMiLCA0NDMpOwotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJmdHAiLCAyMSk7Ci0g
ICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0cHMiLCA5OTApOwotICAgIH0KLSAgICByZXR1cm4g
ZGVmYXVsdFBvcnRzLmdldChwcm90b2NvbCkgPT0gcG9ydDsKLX0KLQogU2VjdXJpdHlPcmlnaW46
OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9z
dCwgdW5zaWduZWQgc2hvcnQgcG9ydCkKICAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wuaXNOdWxs
KCkgPyAiIiA6IHByb3RvY29sLmxvd2VyKCkpCiAgICAgLCBtX2hvc3QoaG9zdC5pc051bGwoKSA/
ICIiIDogaG9zdC5sb3dlcigpKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzA1MTkpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAwOC0wMi0y
MyAgQWRhbSBCYXJ0aCAgPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3RzIGZvciBuZXcgcG9z
dE1lc3NhZ2UgQVBJLgorCisgICAgICAgICogQ2hhbmdlTG9nOgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2Fn
ZS1yZWNlaXZlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1h
bmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3Vt
ZW50LWRvbWFpbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4u
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRo
cm93cy1leGNlcHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGls
bC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4u
aHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5k
LXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11
bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdp
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sOiBBZGRlZC4KKwogMjAwOC0wMi0yMyAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIC0gdW5kbyBhbiBhY2NpZGVudGFs
IGNoYW5nZSB0byBhIHRlc3QncyBleHBlY3RlZCByZXN1bHRzIGZyb20gcjMwNDMxLgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2Vu
ZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNz
YWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMw
NTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1l
c3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACiAK
LWRhdGE6IFNvbWV0aGluZyB1cmk6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9tZXNzYWdpbmcvY3Jv
c3MtZG9tYWluLW1lc3NhZ2Utc2VuZC5odG1sIGRvbWFpbjogMTI3LjAuMC4xCitkYXRhOiBTb21l
dGhpbmcgb3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVz
b3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAkocmV2aXNpb24gMzA1MTUp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9t
YWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksNyBAQAog
ZnVuY3Rpb24gcmVjZWl2ZXIoZSkgewogICAgIHZhciByZXN1bHQgPSAiIjsKICAgICByZXN1bHQg
Kz0gImRhdGE6ICIgKyBlLmRhdGEgKyAiXG4iOwotICAgIHJlc3VsdCArPSAidXJpOiAiICsgZS51
cmkgKyAiXG4iOwotICAgIHJlc3VsdCArPSAiZG9tYWluOiAiICsgZS5kb21haW4gKyAiXG4iOwor
ICAgIHJlc3VsdCArPSAib3JpZ2luOiAiICsgZS5vcmlnaW4gKyAiXG4iOwogICAgIGUuc291cmNl
LnBvc3RNZXNzYWdlKHJlc3VsdCk7ICAgCiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFn
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10
YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotd2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCi0KLVJlY2VpdmVkIG1l
c3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVy
aS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAko
cmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZhciB3aW4gPSBpZnJhbWUu
Y29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQn
KTsKLX0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgot
PGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0
ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3Jj
PSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bv
c3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKLSAgaWQ9ImNoaWxkIiB3
aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+
Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgotPC9i
b2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVk
LWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCi1kb2N1bWVudC5kb21haW4gPSAwLjAuMQotCi1SZWNl
aXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBkb21haW49IjEyNy4wLjAu
MSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWlu
LXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3Vt
ZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0
bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7Ci0KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZhciB3aW4gPSBpZnJh
bWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJl
bnQnKTsKLX0KLQotZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsKLTwvc2NyaXB0PgotPGJvZHk+
Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5k
b3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PmRvY3VtZW50LmRvbWFpbiA9
IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWluKTs8L3NjcmlwdD48L2Rpdj4K
LTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVz
c2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIGlkPSJjaGlsZCIgd2lk
dGg9IjgwMCIgaGVpZ2h0PSIzMDAiCi0gIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsi
IG9ubG9hZD0idGVzdCgpIj4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0
aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxl
IHRvIHBvc3QgbWVzc2FnZSB0byBhc2RmOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xv
Y2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3Qg
bWVzc2FnZSB0byBodHRwOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4
MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0
byAvdG1wL2Zvby4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgor
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAvL2xv
Y2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCit3
aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKKword2FpdGluZy4u
LgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9u
IDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnJy4KK0VuY291bnRlcmVkIGV4Y2VwdGlvbiBF
cnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiB3aGlsZSBwb3N0aW5nIG1lc3NhZ2Ug
dG8gJ2FzZGYnLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2FzZGY6JyB3aXRob3V0IGFueSBleGNlcHRp
b25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2h0dHA6JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgor
UG9zdGVkIG1lc3NhZ2UgdG8gJy90bXAvZm9vJyB3aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9z
dGVkIG1lc3NhZ2UgdG8gJy8vbG9jYWxob3N0JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9y
aWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0
aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0
PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3Nh
Z2Uob3JpZ2luKSB7CisgIHRyeSB7CisgICAgd2luLnBvc3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2lu
PSIgKyBvcmlnaW4sIG9yaWdpbik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVySFRNTCArPSAiPGJyPlBvc3RlZCBtZXNzYWdlIHRvICciICsgb3JpZ2luICsgIicg
d2l0aG91dCBhbnkgZXhjZXB0aW9ucy4iOworICB9IGNhdGNoKGV4KSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPkVuY291bnRlcmVkIGV4
Y2VwdGlvbiAiICsgZXggKyAiIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnIiArIG9yaWdpbiAr
ICInLiI7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgd2luID0gaWZyYW1lLmNvbnRlbnRX
aW5kb3c7CisKKyAgICAvLyBOb24tVVJMcyBzaG91bGQgZmFpbCB3aXRoIGEgc3ludGF4IGVycm9y
LgorICAgIHRyeVBvc3RNZXNzYWdlKCIiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSgiYXNkZiIpOwor
CisgICAgLy8gVVJMcyB3aXRob3V0IGFuIG9yaWdpbiBzaG91bGQgZmFpbCB3aXRob3V0IGdlbmVy
YXRpbmcgYW55IGVycm9ycy4KKyAgICB0cnlQb3N0TWVzc2FnZSgiYXNkZjoiKTsKKyAgICB0cnlQ
b3N0TWVzc2FnZSgiaHR0cDoiKTsKKworICAgIC8vIFdlYktpdCBjb252ZXJ0cyBVUkxzIHRoYXQg
c3RhcnQgd2l0aCAvIHRvIGZpbGU6Ly8gVVJMcy4gVGhleSBkb24ndCBtYXRjaCB0aGUgdGFyZ2V0
IGZyYW1lLCBzbyB0aGV5IGZhaWwgc2lsZW50bHkuCisgICAgdHJ5UG9zdE1lc3NhZ2UoIi90bXAv
Zm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2UoIi8vbG9jYWxob3N0Iik7CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24u
aHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2Ny
aXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25s
b2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxl
PSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJy
ZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxs
LXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
ZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1k
b21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotd2luZG93
LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCi0KLVJlY2VpdmVkIG1l
c3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRvbWFpbj0ibG9jYWxob3N0IiB1cmk9Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNj
cmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21h
aW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAkocmV2aXNp
b24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwzMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIg
dXJpPSInICsgZS51cmkgKyAnIic7Ci0KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwot
fQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwot
Ci08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KLTxib2R5
PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9j
dW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFz
Y3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgotICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAi
IGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KLTwvaWZyYW1l
PjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0
bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2Ny
aXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1w
YWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1s
CisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIG9yaWdpbj0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9q
YXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDMwNTE1KQko
ZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3Jp
cHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihl
KSB7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsg
JyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBtc2c7
CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPGJhc2UgaHJlZj0iaHR0
cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTs8L3Njcmlw
dD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0
bWwiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6
IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndh
aXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
b3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHJl
dmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTgsNyArOCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIH0K
IAogZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBk
YXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBl
LnVyaSArICciJzsKKyAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBl
LmRhdGEgKyAnIiBvcmlnaW49IicgKyBlLm9yaWdpbiArICciJzsKIAogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBtc2c7CiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10
YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYg
PSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdl
IGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQt
YnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHJl
dmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbDozMDUxNSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5m
aXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1
bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICB3aW4u
cG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKK30KKzwvc2NyaXB0PgorPGJhc2Ug
aHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2Nh
dGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7
PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1s
IiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYg
aWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVj
dGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1i
eS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAK
K3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCitkb2N1
bWVudC5kb21haW4gPSAwLjAuMQorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZy
b20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21h
aW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0
bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKKworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJl
Y3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50
V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOworfQor
Citkb2N1bWVudC5kb21haW4gPSAiMC4wLjEiOworPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2lu
ZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlv
bi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+ZG9jdW1lbnQuZG9tYWluID0gPHNjcmlwdD5k
b2N1bWVudC53cml0ZShkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZy
YW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291
cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBo
ZWlnaHQ9IjMwMCIKKyAgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0
ZXN0KCkiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2lu
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9z
dCBtZXNzYWdlIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC4gUmVjaXBpZW50IGhhcyBvcmlnaW4g
aHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxl
IHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9yaWdp
biBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFi
bGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9y
aWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBV
bmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxob3N0OjgwMDAuIFJlY2lwaWVu
dCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL3d3dy5leGFtcGxlLmNvbS4g
UmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCit3aW5kb3cubG9j
YXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS90
YXJnZXQtb3JpZ2luLmh0bWwKKword2FpdGluZy4uLgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0i
VHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAiIG9yaWdpbj0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8v
bG9jYWxob3N0OjgwMDAvIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVk
IG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2ZvbyIg
b3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJU
cnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyIiBvcmlnaW49Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49
aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL3Vz
ZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIgb3JpZ2luPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPW51bGwiIG9y
aWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5
aW5nIG9yaWdpbj11bmRlZmluZWQiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3Jp
Z2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+IiArIGUuZGF0YTsKK30K
KyAKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisK
K2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKHdpbiwgb3JpZ2luKSB7CisgICAgd2luLnBvc3RNZXNz
YWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcp
OworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKworICAgIC8vIFNob3VsZCBz
dWNjZWVkOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIp
OworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iKTsKKyAg
ICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vIik7CisgICAg
dHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIiKTsKKyAg
ICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoi
KTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vdXNlcjpwYXNzQGxvY2FsaG9zdDo4
MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCBudWxsKTsKKyAgICB0
cnlQb3N0TWVzc2FnZSh3aW4sIHVuZGVmaW5lZCk7CisKKyAgICAvLyBTaG91bGQgZmFpbDoKKyAg
ICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjkwOTAiKTsKKyAgICB0cnlQ
b3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uo
d2luLCAiaHR0cHM6Ly9sb2NhbGhvc3QiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
czovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL3d3
dy5leGFtcGxlLmNvbSIpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+
Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50Lndy
aXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBz
cmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMv
cG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgpIgorICBpZD0iY2hpbGQi
IHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7
Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNl
cy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3Nh
Z2UtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIDxkaXY+d2lu
ZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlv
bi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KIDxzY3JpcHQ+CiBmdW5jdGlvbiByZWN2KGUpIHsKLSAg
ICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21h
aW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworICAgIHZhciBtc2cg
PSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIG9yaWdpbj0iJyArIGUu
b3JpZ2luICsgJyInOwogICAgIHRvcC5wb3N0TWVzc2FnZShtc2cpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19338</attachid>
            <date>2008-02-24 21:55:23 -0800</date>
            <delta_ts>2008-02-25 11:51:02 -0800</delta_ts>
            <desc>Updated patch that addresses aroben&apos;s comments</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>56641</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDU1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMDgtMDItMjQgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorICAgICAg
ICBGaXhlcyBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDgK
KyAgICAgICAgCisgICAgICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8g
bWF0Y2ggSFRNTCA1IHNwZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFt
ZXRlciB0byBwb3N0TWVzc2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBh
dHRyaWJ1dGVzIG9mIE1lc3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4g
YXR0cmlidXRlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY29ycmVjdGx5LCB3ZSBu
ZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gaG9zdHMgYW5kIGRvbWFpbnMKKyAgICAgICAgaW4g
dGhlIFNlY3VyaXR5T3JpZ2luIGNsYXNzLiBUaGVyZSBhcmUgbm93IHRocmVlIHdheXMgdG8gY29t
cGFyZSBzZWN1cml0eSBvcmlnaW5zOgorICAgICAgICAxKSBlcXVhbElnbm9yaW5nRG9tYWluIGNv
bXBhcmVzIGhvc3RzLCBhbmQgaXMgdXNlZCBmb3IgcG9zdE1lc3NhZ2UKKyAgICAgICAgMikgZXF1
YWwgY29tcGFyZXMgYWxsIGFzcGVjdHMgb2YgdGhlIHNlY3VyaXR5IG9yaWdpbiwgYW5kIGlzIHVz
ZWQgZm9yIGhhc2gga2V5cworICAgICAgICAzKSBjYW5BY2Nlc3MgdW5kZXJzdGFuZHMgdGhlIHNl
bWFudGljcyBvZiBzY2hlbWVzIHN1Y2ggYXMgZmlsZTovLyBhbmQgZGF0YTovLyBVUkxzLAorICAg
ICAgICAgICBhbmQgc2hvdWxkIGJlIHVzZWQgZm9yIHNjcmlwdGluZyBhY2Nlc3MgY2hlY2tzLgor
CisgICAgICAgIENoYW5nZWQgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgYW5kIFNlY3VyaXR5
T3JpZ2luOjpzdHJpbmdJZGVudGlmaWVyKCkgdG8gCisgICAgICAgIGdlbmVyYXRlIGlkZW50aWZp
ZXJzIHRoYXQgYXJlIHN1aXRhYmxlIGZvciBiZWluZyB1c2VkIGFzIGEgTWVzc2FnZUV2ZW50J3Mg
b3JpZ2luIAorICAgICAgICBwcm9wZXJ0eS4gSW4gdGhlIGZ1dHVyZSwgdGhpcyBjb3VsZCBiZSB1
c2VkIGZvciB0aGUgQWNjZXNzLUNvbnRyb2wtT3JpZ2luIGhlYWRlciBhcyAKKyAgICAgICAgd2Vs
bC4gUmUtdXNlZCBLVVJMIHBhcnNlciB0byBwYXJzZSBzZXJpYWxpemVkIFNlY3VyaXR5T3JpZ2lu
cy4KKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nv
bi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4KKyAgICAgICAgCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRo
cm93cy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2lu
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmRvbWFpbik6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRv
bS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6b3JpZ2lu
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppc1ZhbGlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OnNldERvbWFpbkZyb21ET00pOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhbkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6aXNTZWN1cmVUcmFuc2l0aW9uVG8pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c3RyaW5n
SWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpob3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpkb21haW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplcXVhbElnbm9yaW5n
RG9tYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luVHJhaXRzOjpkZWxldGVkVmFsdWUpOgorCiAyMDA4
LTAyLTI0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzMDUxNSkKKysrIFdl
YkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw4IEBA
IF9fWk43V2ViQ29yZTE0RHJhZ0NvbnRyb2xsZXI5ZHJhZ0VuZGVkRXYKIF9fWk43V2ViQ29yZTE0
UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9h
ZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTlzZXRT
aG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJL
TlNfNlN0cmluZ0VTM190UFMwXworX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZjcmVhdGVF
UktOU180S1VSTEVQUzBfCitfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjVlcXVhbEVQUzBf
CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5
SXRlbUUKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTBzZXRFbmFibGVkRWIKIF9fWk43
V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFjdXJyZW50SXRlbUV2CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwLDE3ICsxNTAsMTkgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9tR2V0UHJvcGVydHlOYW1l
cwogSlNWYWx1ZSogSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTGlzdCYgYXJncykKIHsKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGltcGwoKTsKLSAgICAK
LSAgICBET01XaW5kb3cqIHNvdXJjZSA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZXhlYy0+
ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwotICAgIFN0cmluZyBkb21haW4gPSBzb3Vy
Y2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5ob3N0KCk7Ci0gICAgU3RyaW5nIHVyaSA9IHNv
dXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpOworCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKLSAgICAKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHdp
bmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSk7Ci0gICAgCisg
ICAgU3RyaW5nIG9yaWdpbiA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
ZXhlYywgYXJnc1sxXSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIERPTVdpbmRvdyogc291cmNlID0gV2luZG93Ojpy
ZXRyaWV2ZUFjdGl2ZShleGVjKS0+aW1wbCgpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBvcmlnaW4sIHNvdXJjZSwgZWMpOwor
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIyLDcgKzI2MjIsNyBAQCBTdHJp
bmcgRG9jdW1lbnQ6OnJlZmVycmVyKCkgY29uc3QKIAogU3RyaW5nIERvY3VtZW50Ojpkb21haW4o
KSBjb25zdAogewotICAgIHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLT5ob3N0KCk7CisgICAgcmV0
dXJuIG1fc2VjdXJpdHlPcmlnaW4tPmRvbWFpbigpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRE
b21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pCkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAJKHJl
dmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTEgKzQxLDEwIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKIHsK
IH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKQor
TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiAgICAgOiBFdmVudChtZXNzYWdlRXZlbnQs
IHRydWUsIHRydWUpCiAgICAgLCBtX2RhdGEoZGF0YSkKLSAgICAsIG1fZG9tYWluKGRvbWFpbikK
LSAgICAsIG1fdXJpKHVyaSkKKyAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fc291cmNl
KHNvdXJjZSkKIHsKIH0KQEAgLTU0LDcgKzUzLDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2
ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwg
RE9NV2luZG93KiBzb3VyY2UpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291
cmNlKQogewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDgg
KzYxLDcgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29ucwogICAgIGlu
aXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpOwogICAgIAogICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgbV9kb21haW4gPSBkb21haW47Ci0gICAgbV91cmkgPSB1cmk7CisgICAgbV9v
cmlnaW4gPSBvcmlnaW47CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIE1lc3NhZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBNZXNzYWdlRXZlbnQoKTsKLSAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNv
dXJjZSk7CisgICAgICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSk7CiAgICAgICAgIHZpcnR1YWwgfk1lc3Nh
Z2VFdmVudCgpOwogCi0gICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5k
b3cqIHNvdXJjZSk7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKTsKICAgICAg
ICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsg
fQotICAgICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9tYWlu
OyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJpKCkgY29uc3QgeyByZXR1cm4gbV91cmk7IH0K
KyAgICAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsg
fQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdl
dCgpOyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBj
b25zdDsKIAogICAgIHByaXZhdGU6ICAgIAogICAgICAgICBTdHJpbmcgbV9kYXRhOwotICAgICAg
ICBTdHJpbmcgbV9kb21haW47Ci0gICAgICAgIFN0cmluZyBtX3VyaTsKKyAgICAgICAgU3RyaW5n
IG1fb3JpZ2luOwogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3NvdXJjZTsKICAgICB9Owog
CkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5pZGwJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDEwIEBAIG1vZHVs
ZSBldmVudHMgewogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9Q1JPU1NfRE9DVU1FTlRfTUVT
U0FHSU5HLEdlbmVyYXRlQ29uc3RydWN0b3JdIE1lc3NhZ2VFdmVudCA6IEV2ZW50IHsKIAogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRhdGE7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgZG9tYWluOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHVyaTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBvcmln
aW47CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgc291cmNlOwogICAgICAg
ICAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBp
biBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01T
dHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIGRvbWFpbkFyZywgaW4gRE9NU3RyaW5nIHVyaUFy
ZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVu
dChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xl
YW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGluIERPTVN0cmluZyBvcmln
aW5BcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcpOwogCiAgICAgfTsKIApJbmRleDogV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMyBAQAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTIyMCwxMCArMjIyLDM4IEBAIENvbnNvbGUqIERP
TVdpbmRvdzo6Y29uc29sZSgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1JPU1NfRE9DVU1FTlRf
TUVTU0FHSU5HKQotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cq
IHNvdXJjZSkgY29uc3QKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0
aW9uQ29kZSYgZWNGb3JTZW5kZXIpIGNvbnN0CiB7Ci0gICBFeGNlcHRpb25Db2RlIGVjOwotICAg
ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1lc3NhZ2UsIGRvbWFp
biwgdXJpLCBzb3VyY2UpLCBlYywgdHJ1ZSk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIW9yaWdpbi5pc051bGwoKSkgeworICAgICAgICBLVVJMIGRlc2ly
ZWRUYXJnZXRVUkwob3JpZ2luKTsKKyAgICAgICAgaWYgKCFkZXNpcmVkVGFyZ2V0VVJMLmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgZWNGb3JTZW5kZXIgPSBTWU5UQVhfRVJSOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBk
ZXNpcmVkVGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkZXNpcmVkVGFyZ2V0
VVJMLCAwKTsKKyAgICAgICAgU2VjdXJpdHlPcmlnaW4qIGFjdHVhbFRhcmdldE9yaWdpbiA9IGRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIGlmIChkZXNpcmVkVGFyZ2V0T3Jp
Z2luLT5pc0VtcHR5KCkgfHwgIWRlc2lyZWRUYXJnZXRPcmlnaW4tPmVxdWFsSWdub3JpbmdEb21h
aW4oYWN0dWFsVGFyZ2V0T3JpZ2luKSkgeworICAgICAgICAgICAgLy8gVGhlIHNlbmRlciBpcyBu
b3QgYWxsb3dlZCB0byBmaW5kIG91dCB0aGUgb3JpZ2luIG9mCisgICAgICAgICAgICAvLyB0aGUg
cmVjaXBpZW50LCBzbyB3ZSBmYWlsIHNpbGVudGx5IGFuZCBsb2cgYSBtZXNzYWdlCisgICAgICAg
ICAgICAvLyB0byB0aGUgY29uc29sZS4KKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3Ry
aW5nOjpmb3JtYXQoIlVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gJXMuIFJlY2lwaWVudCBoYXMg
b3JpZ2luICVzLlxuIiwgCisgICAgICAgICAgICAgICAgb3JpZ2luLnV0ZjgoKS5kYXRhKCksIGFj
dHVhbFRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgICAgICAgICBpZiAocGFnZSkKKyAg
ICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3Nh
Z2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCBTdHJpbmcoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTdHJpbmcgc291cmNlT3Jp
Z2luID0gc291cmNlLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwor
CisgICAgLy8gU2VuZGVyIGlzIG5vdCBhbGxvd2VkIHRvIHNlZSBleGNlcHRpb25zIG90aGVyIHRo
YW4gc3ludGF4IGVycm9ycworICAgIEV4Y2VwdGlvbkNvZGUgZWM7IAorICAgIGRvY3VtZW50KCkt
PmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudChtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNv
dXJjZSksIGVjLCB0cnVlKTsKIH0KICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAz
MDUxNSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMTQz
LDcgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29uc29sZSogY29uc29s
ZSgpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5H
KQotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkgY29u
c3Q7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjRm9y
U2VuZGVyKSBjb25zdDsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IHgsIGlu
dCB5KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDggQEAg
bW9kdWxlIHdpbmRvdyB7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9DUk9TU19ET0NVTUVOVF9NRVNT
QUdJTkcpCiAgICAgICAgIC8vIGNyb3NzLWRvY3VtZW50IG1lc3NhZ2luZwotICAgICAgICBbRG9O
b3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3Ry
aW5nIG1lc3NhZ2UpOworICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21d
IHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gRE9N
U3RyaW5nIG9yaWdpbikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2VuZGlm
CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJl
dmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9u
IDMwNTE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDYgKzg1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNWYWxpZDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgVVJMIGhhcyBhIHBhdGgu
IE5vdGUgdGhhdCAiaHR0cDovL2Zvby5jb20vIiBoYXMgYQogICAgIC8vIHBhdGggb2YgIi8iLCBz
byB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRydWUuIE9ubHkgaW52YWxpZCBvcgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
CisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNTMsMTEgKzU0LDEwIEBAIHN0
YXRpYyBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1bnMKICAgICByZXR1cm4gZGVmYXVs
dFBvcnRzLmdldChwcm90b2NvbCkgPT0gcG9ydDsKIH0KIAotU2VjdXJpdHlPcmlnaW46OlNlY3Vy
aXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5z
aWduZWQgc2hvcnQgcG9ydCkKLSAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wuaXNOdWxsKCkgPyAi
IiA6IHByb3RvY29sLmxvd2VyKCkpCi0gICAgLCBtX2hvc3QoaG9zdC5pc051bGwoKSA/ICIiIDog
aG9zdC5sb3dlcigpKQotICAgICwgbV9wb3J0KHBvcnQpCi0gICAgLCBtX3BvcnRTZXQocG9ydCkK
K1NlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCisgICAgOiBt
X3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5s
b3dlcigpKQorICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0
KCkubG93ZXIoKSkKKyAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQogICAgICwgbV9ub0FjY2Vzcyhm
YWxzZSkKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCiB7CkBAIC02OSwxMSArNjks
MjEgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cgogICAgIGlmICht
X3Byb3RvY29sID09ICJkYXRhIikKICAgICAgICAgbV9ub0FjY2VzcyA9IHRydWU7CiAKKyAgICAv
LyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFzIG1faG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhl
IERPTS4KKyAgICBtX2RvbWFpbiA9IG1faG9zdDsKIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkgeworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkKICAgICAgICAgbV9wb3J0ID0gMDsKLSAgICAg
ICAgbV9wb3J0U2V0ID0gZmFsc2U7Ci0gICAgfSAgIAorfQorCitTZWN1cml0eU9yaWdpbjo6U2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG90aGVyKQorICAgIDogbV9wcm90b2NvbChvdGhl
ci0+bV9wcm90b2NvbC5jb3B5KCkpCisgICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC5jb3B5KCkp
CisgICAgLCBtX2RvbWFpbihvdGhlci0+bV9kb21haW4uY29weSgpKQorICAgICwgbV9wb3J0KG90
aGVyLT5tX3BvcnQpCisgICAgLCBtX25vQWNjZXNzKG90aGVyLT5tX25vQWNjZXNzKQorICAgICwg
bV9kb21haW5XYXNTZXRJbkRPTShvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKK3sKIH0KIAog
Ym9vbCBTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CkBAIC04MSw5ICs5MSw5IEBAIGJv
b2wgU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBtX3Byb3RvY29s
LmlzRW1wdHkoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVu
c2lnbmVkIHNob3J0IHBvcnQsIFNlY3VyaXR5T3JpZ2luKiBvd25lckZyYW1lT3JpZ2luKQorUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBLVVJM
JiB1cmwsIFNlY3VyaXR5T3JpZ2luKiBvd25lckZyYW1lT3JpZ2luKQogewotICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbmV3IFNlY3VyaXR5T3JpZ2luKHByb3RvY29sLCBob3N0
LCBwb3J0KTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG5ldyBTZWN1cml0
eU9yaWdpbih1cmwpOwogCiAgICAgLy8gSWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdmdWwg
b3JpZ2luIGZyb20gdGhlIFVSTCwgdGhlbiB3ZSB0cnkgdG8gZmluZCBvbmUKICAgICAvLyB2aWEg
dGhlIGZyYW1lIGhpZXJhcmNoeS4KQEAgLTk4LDEwICsxMDgsMTAgQEAgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaQogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAgICAgIHJldHVy
biBjcmVhdGUoS1VSTCgpLCAwKTsKIAogICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+
bG9hZGVyKCk7Ci0gICAgS1VSTCB1cmwgPSBsb2FkZXItPnVybCgpOworICAgIGNvbnN0IEtVUkwm
IHVybCA9IGxvYWRlci0+dXJsKCk7CiAKICAgICBGcmFtZSogb3duZXJGcmFtZSA9IGZyYW1lLT50
cmVlKCktPnBhcmVudCgpOwogICAgIGlmICghb3duZXJGcmFtZSkKQEAgLTExMSwxOSArMTIxLDE4
IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2kKICAgICBpZiAob3du
ZXJGcmFtZSAmJiBvd25lckZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBvd25lckZyYW1lT3Jp
Z2luID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIHJl
dHVybiBjcmVhdGUodXJsLnByb3RvY29sKCksIHVybC5ob3N0KCksIHVybC5wb3J0KCksIG93bmVy
RnJhbWVPcmlnaW4pOworICAgIHJldHVybiBjcmVhdGUodXJsLCBvd25lckZyYW1lT3JpZ2luKTsK
IH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNvcHkoKQog
ewotICAgIHJldHVybiBjcmVhdGUobV9wcm90b2NvbC5jb3B5KCksIG1faG9zdC5jb3B5KCksIG1f
cG9ydCwgMCk7CisgICAgcmV0dXJuIG5ldyBTZWN1cml0eU9yaWdpbih0aGlzKTsKIH0KIAotCiB2
b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9t
YWluKQogewogICAgIG1fZG9tYWluV2FzU2V0SW5ET00gPSB0cnVlOwotICAgIG1faG9zdCA9IG5l
d0RvbWFpbi5sb3dlcigpOworICAgIG1fZG9tYWluID0gbmV3RG9tYWluLmxvd2VyKCk7CiB9CiAK
IGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWN1cml0eU9yaWdpbiogb3Ro
ZXIsIFJlYXNvbiYgcmVhc29uKSBjb25zdApAQCAtMTY2LDcgKzE3NSw3IEBAIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWMKICAgICAgICAgICAgIGlmIChtX2hvc3QgPT0g
b3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1fcG9ydCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYm
IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0ID09
IG90aGVyLT5tX2hvc3QpCisgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXItPm1fZG9t
YWluKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKG1faG9zdCA9PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhlci0+
bV9wb3J0KSB7CkBAIC0xODYsNTUgKzE5NSw2OSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc1Nl
Y3VyZVRyYW5zaXRpb25UCiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBpZiAoRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0U2NoZW1lQXNMb2NhbChtX3Byb3Rv
Y29sKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nh
c2UobV9ob3N0LCBTdHJpbmcodXJsLmhvc3QoKSkpICYmIGVxdWFsSWdub3JpbmdDYXNlKG1fcHJv
dG9jb2wsIFN0cmluZyh1cmwucHJvdG9jb2woKSkpICYmIG1fcG9ydCA9PSB1cmwucG9ydCgpOwor
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3RoZXIgPSBuZXcgU2VjdXJpdHlPcmlnaW4odXJs
KTsKKyAgICBSZWFzb24gcmVhc29uOworICAgIHJldHVybiBjYW5BY2Nlc3Mob3RoZXIuZ2V0KCks
IHJlYXNvbik7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3Byb3RvY29sICsgIjoiICsgbV9ob3N0ICsgIjoiICsgU3RyaW5nOjpu
dW1iZXIobV9wb3J0KTsKLX0KKyAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLXN0YXRpYyBjb25zdCBjaGFyIFNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKKyAg
ICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBTdHJpbmcoImZpbGU6
Ly8iKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2Fw
YWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKKyAgICBh
cHBlbmQocmVzdWx0LCBtX3Byb3RvY29sKTsKKyAgICBhcHBlbmQocmVzdWx0LCAiOi8vIik7Cisg
ICAgYXBwZW5kKHJlc3VsdCwgbV9ob3N0KTsKKworICAgIGlmIChtX3BvcnQpIHsKKyAgICAgIGFw
cGVuZChyZXN1bHQsICI6Iik7CisgICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51bWJlciht
X3BvcnQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworfQog
CiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJpbmdJZGVudGlmaWVyKQoteyAKLSAgICAvLyBNYWtl
IHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgotICAgIGludCBzZXBhcmF0b3IxID0gc3Ry
aW5nSWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rlcik7Ci0gICAgaWYgKHNlcGFyYXRv
cjEgPT0gLTEpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKLSAgICAgICAg
Ci0gICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCi0gICAgaW50IHNl
cGFyYXRvcjIgPSBzdHJpbmdJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyLCBzZXBh
cmF0b3IxICsgMSk7Ci0gICAgaWYgKHNlcGFyYXRvcjIgPT0gLTEpCi0gICAgICAgIHJldHVybiBj
cmVhdGUoIiIsICIiLCAwLCAwKTsKLSAgICAgICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3Mg
bm90IGEgdGhpcmQgc2VwYXJhdG9yCi0gICAgaWYgKHN0cmluZ0lkZW50aWZpZXIucmV2ZXJzZUZp
bmQoU2VwYXJhdG9yQ2hhcmFjdGVyKSAhPSBzZXBhcmF0b3IyKQotICAgICAgICByZXR1cm4gY3Jl
YXRlKCIiLCAiIiwgMCwgMCk7Ci0gICAgICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBz
ZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdAotICAgIGJvb2wg
cG9ydE9rYXk7Ci0gICAgaW50IHBvcnQgPSBzdHJpbmdJZGVudGlmaWVyLnJpZ2h0KHN0cmluZ0lk
ZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKLSAg
ICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRvcjIgKyAxID09IHN0YXRpY19jYXN0PGludD4oc3Ry
aW5nSWRlbnRpZmllci5sZW5ndGgoKSkpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAw
LCAwKTsKLSAgICAKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDY1NTM1KQotICAgICAgICBy
ZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7Ci0gICAgICAgIAotICAgIC8vIFNwbGl0IG91dCB0
aGUgMyBzZWN0aW9ucyBvZiBkYXRhCi0gICAgU3RyaW5nIHByb3RvY29sID0gc3RyaW5nSWRlbnRp
Zmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7Ci0gICAgU3RyaW5nIGhvc3QgPSBzdHJpbmdJ
ZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRv
cjEgLSAxKTsKLSAgICByZXR1cm4gY3JlYXRlKHByb3RvY29sLCBob3N0LCBwb3J0LCAwKTsKK3sK
KyAgICByZXR1cm4gbmV3IFNlY3VyaXR5T3JpZ2luKEtVUkwoc3RyaW5nSWRlbnRpZmllcikpOyAg
IAogfQotICAgIAotICAgIAorCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnN0cmluZ0lkZW50aWZp
ZXIoKSBjb25zdCAKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHNlcGFyYXRvclN0cmluZyA9IFN0cmlu
ZygmU2VwYXJhdG9yQ2hhcmFjdGVyLCAxKTsKLSAgICByZXR1cm4gbV9wcm90b2NvbCArIHNlcGFy
YXRvclN0cmluZyArIG1faG9zdCArIHNlcGFyYXRvclN0cmluZyArIFN0cmluZzo6bnVtYmVyKG1f
cG9ydCk7IAorICAgIHJldHVybiB0b1N0cmluZygpOworfQorCitib29sIFNlY3VyaXR5T3JpZ2lu
OjplcXVhbChTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0IAoreworICAgIGlmICghZXF1YWxJ
Z25vcmluZ0RvbWFpbihvdGhlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICht
X2RvbWFpbldhc1NldEluRE9NICE9IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBtX2RvbWFp
biAhPSBvdGhlci0+bV9kb21haW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFNlY3VyaXR5T3JpZ2luOjplcXVhbElnbm9yaW5nRG9tYWluKFNl
Y3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QgCit7CisgICAgaWYgKG1faG9zdCAhPSBvdGhlci0+
bV9ob3N0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9wcm90b2NvbCAhPSBv
dGhlci0+bV9wcm90b2NvbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fcG9y
dCAhPSBvdGhlci0+bV9wb3J0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJp
dHlPcmlnaW4uaAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEzICs0NCwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gY3JlYXRlRm9yRnJhbWUoRnJhbWUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCwgU2Vj
dXJpdHlPcmlnaW4qIG93bmVyRnJhbWVPcmlnaW4pOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTZWN1cml0eU9yaWdpbiogb3du
ZXJGcmFtZU9yaWdpbik7CisgICAgICAgIC8vc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzaG9ydCwg
U2VjdXJpdHlPcmlnaW4qKSB7IGludCogeCA9IDA7ICp4ID0gNTsgcmV0dXJuIDA7IH0KIAogICAg
ICAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjb3B5KCk7CiAKICAgICAgICAgdm9pZCBz
ZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKLSAgICAgICAgU3RyaW5n
IGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KICAgICAgICAgU3RyaW5nIHByb3RvY29s
KCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQorICAgICAgICBTdHJpbmcgaG9zdCgpIGNv
bnN0IHsgcmV0dXJuIG1faG9zdDsgfQorICAgICAgICBTdHJpbmcgZG9tYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb21haW47IH0KICAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fcG9ydDsgfQogICAgICAgICAKICAgICAgICAgZW51bSBSZWFzb24gIHsKQEAgLTY1
LDE2ICs2NywyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBTdHJp
bmcgc3RyaW5nSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgICAgIC8vIGRvIG5vdCB1c2UgdGhp
cyBmb3IgYWNjZXNzIGNoZWNrcywgaXQncyB0aGVyZSBvbmx5IGZvciB1c2luZyB0aGlzIGFzIGEg
aGFzaHRhYmxlIGtleQotICAgICAgICBib29sIGVxdWFsKFNlY3VyaXR5T3JpZ2luKiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9wcm90b2NvbCA9PSBvdGhlci0+bV9wcm90b2NvbCAmJiBtX2hvc3Qg
PT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1fcG9ydDsgfQorICAgICAgICAv
LyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgZXF1YWxpdHkgYmV0d2VlbiBTZWN1cml0eU9yaWdp
bnMsIG5vdCB3aGV0aGVyCisgICAgICAgIC8vIG9uZSBvcmlnaW4gY2FuIGFjY2VzcyBhbm90aGVy
LiAgSXQgaXMgdXNlZCBmb3IgaGFzaCB0YWJsZSBrZXlzLgorICAgICAgICAvLyBGb3IgYWNjZXNz
IGNoZWNrcywgdXNlIGNhbkFjY2VzcygpLgorICAgICAgICBib29sIGVxdWFsKFNlY3VyaXR5T3Jp
Z2luKiBvdGhlcikgY29uc3Q7CisKKyAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9y
IGVxdWFsaXR5LCBpZ25vcmluZyB0aGUgdmFsdWUgb2YgZG9jdW1lbnQuZG9tYWluCisgICAgICAg
IC8vIChhbmQgd2hldGhlciBpdCB3YXMgc2V0KSBidXQgY29uc2lkZXJpbmcgdGhlIGhvc3QuIEl0
IGlzIHVzZWQgZm9yIHBvc3RNZXNzYWdlLgorICAgICAgICBib29sIGVxdWFsSWdub3JpbmdEb21h
aW4oU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdDsKICAgICAgICAgCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3Ry
aW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KTsKKyAgICAgICAgZXhwbGljaXQgU2VjdXJp
dHlPcmlnaW4oY29uc3QgS1VSTCYpOworICAgICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihT
ZWN1cml0eU9yaWdpbiopOwogCiAgICAgICAgIFN0cmluZyBtX3Byb3RvY29sOwogICAgICAgICBT
dHJpbmcgbV9ob3N0OworICAgICAgICBTdHJpbmcgbV9kb21haW47CiAgICAgICAgIHVuc2lnbmVk
IHNob3J0IG1fcG9ydDsKLSAgICAgICAgYm9vbCBtX3BvcnRTZXQ7CiAgICAgICAgIGJvb2wgbV9u
b0FjY2VzczsKICAgICAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NOwogICAgIH07CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luSGFzaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmgJKHJldmlzaW9uIDMwNTE1KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2lmbmRlZiBTZWN1cml0eU9yaWdpbkhhc2hfaAogI2RlZmluZSBTZWN1
cml0eU9yaWdpbkhhc2hfaAogCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC02MCw4ICs2MSw4IEBAIHN0
cnVjdCBTZWN1cml0eU9yaWdpblRyYWl0cyA6IFdURjo6R2VuZXIKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiYgZGVsZXRlZFZhbHVlKCkgCiAgICAgeyAKLSAgICAgICAgLy8gT2theSBk
ZWxldGVkIHZhbHVlIGJlY2F1c2UgZmlsZTogcHJvdG9jb2xzIHNob3VsZCBhbHdheXMgaGF2ZSBw
b3J0IDAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW5EZWxldGVkVmFsdWUgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJmaWxlIiwgIiIs
IDEsIDApOyAgICAKKyAgICAgICAgLy8gT2theSBkZWxldGVkIHZhbHVlIGJlY2F1c2UgImludmFs
aWQtcHJvdG9jb2wiIGlzIG5vdCBhIHZhbGlkIHByb3RvY29sLgorICAgICAgICBzdGF0aWMgY29u
c3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbkRlbGV0ZWRWYWx1ZSA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTCgiaW52YWxpZC1wcm90b2NvbDoiKSwgMCk7CiAgICAg
ICAgIHJldHVybiBzZWN1cml0eU9yaWdpbkRlbGV0ZWRWYWx1ZTsgCiAgICAgfQogCkluZGV4OiBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMzA1NTQpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDA4LTAyLTI0IEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCBXZWJTZWN1cml0eU9yaWdpbiB0byBtYXRjaCBuZXcgU2VjdXJpdHlPcmlnaW4gQVBJLgorCisg
ICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtpdEBjb2xsaW5qYWNrc29uLmNvbT4g
YWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisgICAgICAgICogU3RvcmFnZS9XZWJT
ZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gaG9zdF0pOgor
ICAgICAgICAqIFN0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg6CisKIDIwMDgtMDIt
MjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbS4KSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlz
aW9uIDMwNTE1KQorKysgV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwyNCArMzAsMTkgQEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3Jp
Z2luSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvS1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3Vy
aXR5T3JpZ2luCi0KLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wg
ZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbgotewotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFBy
b3RvY29sOnByb3RvY29sIGRvbWFpbjpkb21haW4gcG9ydDowXTsKLX0KLQotLSAoaWQpaW5pdFdp
dGhQcm90b2NvbDooTlNTdHJpbmcgKilwcm90b2NvbCBkb21haW46KE5TU3RyaW5nICopZG9tYWlu
IHBvcnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQKKy0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVy
bAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbCwgZG9tYWluLCBwb3J0LCAwKTsKKworICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJM
KFt1cmwgYWJzb2x1dGVVUkxdKSwgMCk7CiAgICAgb3JpZ2luLT5yZWYoKTsKICAgICBfcHJpdmF0
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKj4ob3JpZ2luLmdl
dCgpKTsKIApAQCAtNTksNyArNTQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cHJvdG9j
b2woKTsKIH0KIAotLSAoTlNTdHJpbmcqKWRvbWFpbgorLSAoTlNTdHJpbmcqKWhvc3QKIHsKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+aG9z
dCgpOwogfQpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpblBy
aXZhdGUuaAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJp
dHlPcmlnaW5Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMCBAQAogICAg
IFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqX3ByaXZhdGU7CiB9CiAKLS0gKGlkKWluaXRXaXRo
UHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbjsK
LS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0
cmluZyAqKWRvbWFpbiBwb3J0Oih1bnNpZ25lZCBzaG9ydClwb3J0OworLSAoaWQpaW5pdFdpdGhV
Ukw6KE5TVVJMICopdXJsOwogCiAtIChOU1N0cmluZyopcHJvdG9jb2w7Ci0tIChOU1N0cmluZyop
ZG9tYWluOworLSAoTlNTdHJpbmcqKWhvc3Q7CiAKIC8vIFJldHVybnMgemVybyBpZiB0aGUgcG9y
dCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgcHJvdG9jb2wsIG5vbi16ZXJvIG90aGVyd2lz
ZQogLSAodW5zaWduZWQgc2hvcnQpcG9ydDsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAzMDU1NCkKKysrIFdl
YktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgt
MDItMjQgIEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCAiZG9tYWluIiBtZXRob2QgdG8g
Imhvc3QiIHRvIG1hdGNoIFNlY3VyaXR5T3JpZ2luLgorCisgICAgICAgICogSW50ZXJmYWNlcy9J
V2ViU2VjdXJpdHlPcmlnaW4uaWRsOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoK
KyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpob3N0KToKKyAgICAgICAgKiBXZWJTZWN1cml0
eU9yaWdpbi5oOgorCiAyMDA4LTAyLTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0uCkluZGV4OiBXZWJLaXQvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNw
cAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlNlY3VyaXR5T3JpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaWdpbjo6ZG9tYWluKCAKK0hSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmlnaW46Omhvc3QoIAogICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQpJbmRleDogV2ViS2l0
L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViU2Vj
dXJpdHlPcmlnaW4uaAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJLaXQvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcm90b2NvbCggCiAgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKICAgICAgICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRvbWFpbiggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGhvc3QoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJl
c3VsdCk7CiAgICAgICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBw
b3J0KCAKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4u
aWRsCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJp
dHlPcmlnaW4uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGltcG9ydCAib2Np
ZGwuaWRsIjsKIGludGVyZmFjZSBJV2ViU2VjdXJpdHlPcmlnaW4gOiBJVW5rbm93bgogewogICAg
IEhSRVNVTFQgcHJvdG9jb2woW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwotICAgIEhSRVNV
TFQgZG9tYWluKFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKKyAgICBIUkVTVUxUIGhvc3Qo
W291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogICAgIEhSRVNVTFQgcG9ydChbb3V0LCByZXR2
YWxdIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpOwogCiAgICAgSFJFU1VMVCB1c2FnZShbb3V0LCBy
ZXR2YWxdIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0KTsKSW5kZXg6IFdlYktpdFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMw
NTU0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMDgtMDItMjQgIEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlcyBMYXlvdXRU
ZXN0Q29udHJvbGxlciB0byB1c2UgaG9zdCBpbnN0ZWFkIG9mIGRvbWFpbi4KKworICAgICAgICBD
b2xsaW4gSmFja3NvbiA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29u
dHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmZyYW1lOmV4Y2VlZGVkRGF0
YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFiYXNlOl0pOgorCiAyMDA4LTAyLTIzICBK
YW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B1bnBsdWdnYWJsZS5jb20+CiAKICAgICAgICAg
UnViYmVyIHN0YW1wZWQgYnkgRGFyaW4uCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lv
biAzMDUxNSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7ICAgIAot
ICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9j
XSBpbml0V2l0aFByb3RvY29sOkAiZmlsZSIgZG9tYWluOm5pbF07CisgICAgV2ViU2VjdXJpdHlP
cmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy8iXV07CiAgICAgW29yaWdpbiBzZXRRdW90YTpx
dW90YV07CiAgICAgW29yaWdpbiByZWxlYXNlXTsKIH0KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksNyArMTI5LDcgQEAgRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gKmRyYWdnaW5nSW5m
bwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lIGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbiBkYXRhYmFzZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIKIHsK
ICAgICBpZiAoIWRvbmUgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBEYXRhYmFzZUNhbGxi
YWNrcygpKQotICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBl
eGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gZGF0YWJh
c2U6JXNcbiIsIFtbb3JpZ2luIHByb3RvY29sXSBVVEY4U3RyaW5nXSwgW1tvcmlnaW4gZG9tYWlu
XSBVVEY4U3RyaW5nXSwgCisgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FM
TEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnslcywgJXMsICVp
fSBkYXRhYmFzZTolc1xuIiwgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBbW29yaWdp
biBob3N0XSBVVEY4U3RyaW5nXSwgCiAgICAgICAgICAgICBbb3JpZ2luIHBvcnRdLCBbZGF0YWJh
c2VJZGVudGlmaWVyIFVURjhTdHJpbmddKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
b25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OyAgICAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDMwNTU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDgtMDItMjQgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBMYXlvdXRUZXN0cyBmb3IgbmV3IHBvc3RNZXNzYWdlIEFQSS4KKworICAgICAgICBDb2xsaW4g
SmFja3NvbiA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0
ZWQgdG8gdGhpcyBwYXRjaC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3Nz
LWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMv
bWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11
bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQt
YnktYmFzZS10YWcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRo
cm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZh
c2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1z
dGlsbC1zZW5kcy1kb21haW4uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbDogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBh
Z2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2lu
LXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5
LWJhc2UtdGFnLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3Vt
ZW50LWRvbWFpbi5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9y
aWdpbi5odG1sOiBBZGRlZC4KKwogMjAwOC0wMi0yNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcv
Y3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMwNTE1KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Ut
c2VuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACiAKLWRhdGE6
IFNvbWV0aGluZyB1cmk6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9tZXNzYWdpbmcvY3Jvc3MtZG9t
YWluLW1lc3NhZ2Utc2VuZC5odG1sIGRvbWFpbjogMTI3LjAuMC4xCitkYXRhOiBTb21ldGhpbmcg
b3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2Vz
L2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1l
c3NhZ2UtcmVjZWl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksNyBAQAogZnVuY3Rp
b24gcmVjZWl2ZXIoZSkgewogICAgIHZhciByZXN1bHQgPSAiIjsKICAgICByZXN1bHQgKz0gImRh
dGE6ICIgKyBlLmRhdGEgKyAiXG4iOwotICAgIHJlc3VsdCArPSAidXJpOiAiICsgZS51cmkgKyAi
XG4iOwotICAgIHJlc3VsdCArPSAiZG9tYWluOiAiICsgZS5kb21haW4gKyAiXG4iOworICAgIHJl
c3VsdCArPSAib3JpZ2luOiAiICsgZS5vcmlnaW4gKyAiXG4iOwogICAgIGUuc291cmNlLnBvc3RN
ZXNzYWdlKHJlc3VsdCk7ICAgCiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotd2luZG93LmxvY2F0aW9u
LmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWlu
LWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6
IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFm
ZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNp
b24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBy
ZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVu
dFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0K
LTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+
Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5k
b3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVz
c2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKLSAgaWQ9ImNoaWxkIiB3aWR0aD0i
ODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Ci08L2lm
cmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgotPC9ib2R5Pgot
PC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9k
b21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRv
Y3VtZW50LWRvbWFpbi5odG1sCi1kb2N1bWVudC5kb21haW4gPSAwLjAuMQotCi1SZWNlaXZlZCBt
ZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBkb21haW49IjEyNy4wLjAuMSIgdXJp
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZm
ZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRv
bWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHJl
dmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZhciB3aW4gPSBpZnJhbWUuY29u
dGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsK
LX0KLQotZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsKLTwvc2NyaXB0PgotPGJvZHk+Ci08ZGl2
PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9j
YXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PmRvY3VtZW50LmRvbWFpbiA9IDxzY3Jp
cHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWluKTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+
PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9y
ZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIGlkPSJjaGlsZCIgd2lkdGg9Ijgw
MCIgaGVpZ2h0PSIzMDAiCi0gIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiIG9ubG9h
ZD0idGVzdCgpIj4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4u
PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBv
c3QgbWVzc2FnZSB0byBhc2RmOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9z
dDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2Fn
ZSB0byBodHRwOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgor
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAvdG1w
L2Zvby4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAvL2xvY2FsaG9z
dC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCit3aW5kb3cu
bG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKKword2FpdGluZy4uLgorRW5j
b3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyIHdo
aWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnJy4KK0VuY291bnRlcmVkIGV4Y2VwdGlvbiBFcnJvcjog
U1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiB3aGlsZSBwb3N0aW5nIG1lc3NhZ2UgdG8gJ2Fz
ZGYnLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2FzZGY6JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgor
UG9zdGVkIG1lc3NhZ2UgdG8gJ2h0dHA6JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVk
IG1lc3NhZ2UgdG8gJy90bXAvZm9vJyB3aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1l
c3NhZ2UgdG8gJy8vbG9jYWxob3N0JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10
aHJvd3MtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorCis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
ckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2Uob3Jp
Z2luKSB7CisgIHRyeSB7CisgICAgd2luLnBvc3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBv
cmlnaW4sIG9yaWdpbik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVySFRNTCArPSAiPGJyPlBvc3RlZCBtZXNzYWdlIHRvICciICsgb3JpZ2luICsgIicgd2l0aG91
dCBhbnkgZXhjZXB0aW9ucy4iOworICB9IGNhdGNoKGV4KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPkVuY291bnRlcmVkIGV4Y2VwdGlv
biAiICsgZXggKyAiIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnIiArIG9yaWdpbiArICInLiI7
CisgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7
CisKKyAgICAvLyBOb24tVVJMcyBzaG91bGQgZmFpbCB3aXRoIGEgc3ludGF4IGVycm9yLgorICAg
IHRyeVBvc3RNZXNzYWdlKCIiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSgiYXNkZiIpOworCisgICAg
Ly8gVVJMcyB3aXRob3V0IGFuIG9yaWdpbiBzaG91bGQgZmFpbCB3aXRob3V0IGdlbmVyYXRpbmcg
YW55IGVycm9ycy4KKyAgICB0cnlQb3N0TWVzc2FnZSgiYXNkZjoiKTsKKyAgICB0cnlQb3N0TWVz
c2FnZSgiaHR0cDoiKTsKKworICAgIC8vIFdlYktpdCBjb252ZXJ0cyBVUkxzIHRoYXQgc3RhcnQg
d2l0aCAvIHRvIGZpbGU6Ly8gVVJMcy4gVGhleSBkb24ndCBtYXRjaCB0aGUgdGFyZ2V0IGZyYW1l
LCBzbyB0aGV5IGZhaWwgc2lsZW50bHkuCisgICAgdHJ5UG9zdE1lc3NhZ2UoIi90bXAvZm9vIik7
CisgICAgdHJ5UG9zdE1lc3NhZ2UoIi8vbG9jYWxob3N0Iik7CisKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9
IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0Pjwv
ZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0
ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQi
PndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWlu
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotd2luZG93LmxvY2F0
aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2
YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6
IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRvbWFpbj0ibG9jYWxob3N0IiB1cmk9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1w
b3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAkocmV2aXNpb24gMzA1
MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFz
Y3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwz
MSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2Fn
ZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSIn
ICsgZS51cmkgKyAnIic7Ci0KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
Zmlyc3RDaGlsZC5kYXRhID0gbXNnOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1k
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwotCi08L3Nj
cmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KLTxib2R5PgotPGRp
dj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQu
bG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFzY3JpcHQt
cG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgotICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdo
dD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2
PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNj
cmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBh
Z2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0
aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBA
QAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCisKK1Jl
Y2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIG9yaWdpbj0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2Ny
aXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdp
bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7Cisg
ICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9t
YWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBtc2c7CisKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3
dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNj
cmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rp
dj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCisg
IGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBz
b2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcu
Li48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2lu
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHJldmlzaW9u
IDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9q
YXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTgsNyArOCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIH0KIAogZnVu
Y3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSIn
ICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSAr
ICciJzsKKyAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEg
KyAnIiBvcmlnaW49IicgKyBlLm9yaWdpbiArICciJzsKIAogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBtc2c7CiAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnkt
YmFzZS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQt
YnktYmFzZS10YWcuaHRtbAorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20g
cGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHJldmlzaW9u
IDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbDozMDUxNSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENo
aWxkLmRhdGEgPSBlLmRhdGE7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGls
ZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICB3aW4ucG9zdE1l
c3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKK30KKzwvc2NyaXB0PgorPGJhc2UgaHJlZj0i
aHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5o
cmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3Jp
cHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxv
YWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9
ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJl
c3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5
LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1
bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK3dpbmRv
dy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCitkb2N1bWVudC5k
b21haW4gPSAwLjAuMQorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFy
ZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRt
bAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWw6MzA1
MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdp
bi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZh
bHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93
OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOworfQorCitkb2N1
bWVudC5kb21haW4gPSAiMC4wLjEiOworPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVm
KTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+ZG9jdW1lbnQuZG9tYWluID0gPHNjcmlwdD5kb2N1bWVu
dC53cml0ZShkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNy
Yz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9w
b3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9
IjMwMCIKKyAgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCki
PgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNz
YWdlIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDov
L2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBv
c3QgbWVzc2FnZSB0byBodHRwOi8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRw
Oi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8g
cG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBo
dHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUg
dG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxob3N0OjgwMDAuIFJlY2lwaWVudCBoYXMg
b3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6
IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL3d3dy5leGFtcGxlLmNvbS4gUmVjaXBp
ZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24u
aHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQt
b3JpZ2luLmh0bWwKKword2FpdGluZy4uLgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5n
IG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxo
b3N0OjgwMDAvIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3Nh
Z2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2ZvbyIgb3JpZ2lu
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcg
b3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyIiBvcmlnaW49Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDov
L2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL3VzZXI6cGFz
c0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPW51bGwiIG9yaWdpbj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9y
aWdpbj11bmRlZmluZWQiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS90YXJnZXQtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+IiArIGUuZGF0YTsKK30KKyAKK2Rv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0
aW9uIHRyeVBvc3RNZXNzYWdlKHdpbiwgb3JpZ2luKSB7CisgICAgd2luLnBvc3RNZXNzYWdlKCJU
cnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAg
IHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKworICAgIC8vIFNob3VsZCBzdWNjZWVk
OgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpOworICAg
IHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iKTsKKyAgICB0cnlQ
b3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vIik7CisgICAgdHJ5UG9z
dE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIiKTsKKyAgICB0cnlQ
b3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiKTsKKyAg
ICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vdXNlcjpwYXNzQGxvY2FsaG9zdDo4MDAwL2Zv
bz9iYXIjYmF6Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCBudWxsKTsKKyAgICB0cnlQb3N0
TWVzc2FnZSh3aW4sIHVuZGVmaW5lZCk7CisKKyAgICAvLyBTaG91bGQgZmFpbDoKKyAgICB0cnlQ
b3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjkwOTAiKTsKKyAgICB0cnlQb3N0TWVz
c2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAi
aHR0cHM6Ly9sb2NhbGhvc3QiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczovL2xv
Y2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL3d3dy5leGFt
cGxlLmNvbSIpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9k
eT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdp
bmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1t
ZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgpIgorICBpZD0iY2hpbGQiIHdpZHRo
PSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwv
aWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0
LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlz
dGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIDxkaXY+d2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVm
KTs8L3NjcmlwdD48L2Rpdj4KIDxzY3JpcHQ+CiBmdW5jdGlvbiByZWN2KGUpIHsKLSAgICB2YXIg
bXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49Iicg
KyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworICAgIHZhciBtc2cgPSAnUmVj
ZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIG9yaWdpbj0iJyArIGUub3JpZ2lu
ICsgJyInOwogICAgIHRvcC5wb3N0TWVzc2FnZShtc2cpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19353</attachid>
            <date>2008-02-25 11:51:02 -0800</date>
            <delta_ts>2008-03-05 01:12:57 -0800</delta_ts>
            <desc>Updated patch that matches HTML 5 terminology</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>56779</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDU1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMDgtMDItMjQgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorICAgICAg
ICBGaXhlcyBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDgK
KyAgICAgICAgCisgICAgICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8g
bWF0Y2ggSFRNTCA1IHNwZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFt
ZXRlciB0byBwb3N0TWVzc2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBh
dHRyaWJ1dGVzIG9mIE1lc3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4g
YXR0cmlidXRlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY29ycmVjdGx5LCB3ZSBu
ZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gaG9zdHMgYW5kIGRvbWFpbnMKKyAgICAgICAgaW4g
dGhlIFNlY3VyaXR5T3JpZ2luIGNsYXNzLiBUaGVyZSBhcmUgbm93IHRocmVlIHdheXMgdG8gY29t
cGFyZSBzZWN1cml0eSBvcmlnaW5zOgorICAgICAgICAxKSBlcXVhbElnbm9yaW5nRG9tYWluIGNv
bXBhcmVzIGhvc3RzLCBhbmQgaXMgdXNlZCBmb3IgcG9zdE1lc3NhZ2UKKyAgICAgICAgMikgZXF1
YWwgY29tcGFyZXMgYWxsIGFzcGVjdHMgb2YgdGhlIHNlY3VyaXR5IG9yaWdpbiwgYW5kIGlzIHVz
ZWQgZm9yIGhhc2gga2V5cworICAgICAgICAzKSBjYW5BY2Nlc3MgdW5kZXJzdGFuZHMgdGhlIHNl
bWFudGljcyBvZiBzY2hlbWVzIHN1Y2ggYXMgZmlsZTovLyBhbmQgZGF0YTovLyBVUkxzLAorICAg
ICAgICAgICBhbmQgc2hvdWxkIGJlIHVzZWQgZm9yIHNjcmlwdGluZyBhY2Nlc3MgY2hlY2tzLgor
CisgICAgICAgIENoYW5nZWQgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgYW5kIFNlY3VyaXR5
T3JpZ2luOjpzdHJpbmdJZGVudGlmaWVyKCkgdG8gCisgICAgICAgIGdlbmVyYXRlIGlkZW50aWZp
ZXJzIHRoYXQgYXJlIHN1aXRhYmxlIGZvciBiZWluZyB1c2VkIGFzIGEgTWVzc2FnZUV2ZW50J3Mg
b3JpZ2luIAorICAgICAgICBwcm9wZXJ0eS4gSW4gdGhlIGZ1dHVyZSwgdGhpcyBjb3VsZCBiZSB1
c2VkIGZvciB0aGUgQWNjZXNzLUNvbnRyb2wtT3JpZ2luIGhlYWRlciBhcyAKKyAgICAgICAgd2Vs
bC4gUmUtdXNlZCBLVVJMIHBhcnNlciB0byBwYXJzZSBzZXJpYWxpemVkIFNlY3VyaXR5T3JpZ2lu
cy4KKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nv
bi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4KKyAgICAgICAgCisgICAgICAg
IFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRo
cm93cy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2lu
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmRvbWFpbik6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRv
bS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6b3JpZ2lu
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjppc1ZhbGlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OnNldERvbWFpbkZyb21ET00pOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNhbkFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6aXNTZWN1cmVUcmFuc2l0aW9uVG8pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c3RyaW5n
SWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpob3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpkb21haW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplcXVhbElnbm9yaW5n
RG9tYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luVHJhaXRzOjpkZWxldGVkVmFsdWUpOgorCiAyMDA4
LTAyLTI0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzMDUxNSkKKysrIFdl
YkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw4IEBA
IF9fWk43V2ViQ29yZTE0RHJhZ0NvbnRyb2xsZXI5ZHJhZ0VuZGVkRXYKIF9fWk43V2ViQ29yZTE0
UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9h
ZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTlzZXRT
aG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJL
TlNfNlN0cmluZ0VTM190UFMwXworX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZjcmVhdGVF
UktOU180S1VSTEVQUzBfCitfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjVlcXVhbEVQUzBf
CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5
SXRlbUUKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTBzZXRFbmFibGVkRWIKIF9fWk43
V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFjdXJyZW50SXRlbUV2CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwLDE3ICsxNTAsMTkgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9tR2V0UHJvcGVydHlOYW1l
cwogSlNWYWx1ZSogSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTGlzdCYgYXJncykKIHsKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGltcGwoKTsKLSAgICAK
LSAgICBET01XaW5kb3cqIHNvdXJjZSA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZXhlYy0+
ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwotICAgIFN0cmluZyBkb21haW4gPSBzb3Vy
Y2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5ob3N0KCk7Ci0gICAgU3RyaW5nIHVyaSA9IHNv
dXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpOworCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKLSAgICAKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHdp
bmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSk7Ci0gICAgCisg
ICAgU3RyaW5nIG9yaWdpbiA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
ZXhlYywgYXJnc1sxXSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIERPTVdpbmRvdyogc291cmNlID0gV2luZG93Ojpy
ZXRyaWV2ZUFjdGl2ZShleGVjKS0+aW1wbCgpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBvcmlnaW4sIHNvdXJjZSwgZWMpOwor
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIyLDcgKzI2MjIsNyBAQCBTdHJp
bmcgRG9jdW1lbnQ6OnJlZmVycmVyKCkgY29uc3QKIAogU3RyaW5nIERvY3VtZW50Ojpkb21haW4o
KSBjb25zdAogewotICAgIHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLT5ob3N0KCk7CisgICAgcmV0
dXJuIG1fc2VjdXJpdHlPcmlnaW4tPmRvbWFpbigpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRE
b21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pCkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAJKHJl
dmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTEgKzQxLDEwIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKIHsK
IH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKQor
TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiAgICAgOiBFdmVudChtZXNzYWdlRXZlbnQs
IHRydWUsIHRydWUpCiAgICAgLCBtX2RhdGEoZGF0YSkKLSAgICAsIG1fZG9tYWluKGRvbWFpbikK
LSAgICAsIG1fdXJpKHVyaSkKKyAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fc291cmNl
KHNvdXJjZSkKIHsKIH0KQEAgLTU0LDcgKzUzLDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2
ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwg
RE9NV2luZG93KiBzb3VyY2UpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291
cmNlKQogewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDgg
KzYxLDcgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29ucwogICAgIGlu
aXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpOwogICAgIAogICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgbV9kb21haW4gPSBkb21haW47Ci0gICAgbV91cmkgPSB1cmk7CisgICAgbV9v
cmlnaW4gPSBvcmlnaW47CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIE1lc3NhZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBNZXNzYWdlRXZlbnQoKTsKLSAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNv
dXJjZSk7CisgICAgICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSk7CiAgICAgICAgIHZpcnR1YWwgfk1lc3Nh
Z2VFdmVudCgpOwogCi0gICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5k
b3cqIHNvdXJjZSk7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKTsKICAgICAg
ICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsg
fQotICAgICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9tYWlu
OyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJpKCkgY29uc3QgeyByZXR1cm4gbV91cmk7IH0K
KyAgICAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsg
fQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdl
dCgpOyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBj
b25zdDsKIAogICAgIHByaXZhdGU6ICAgIAogICAgICAgICBTdHJpbmcgbV9kYXRhOwotICAgICAg
ICBTdHJpbmcgbV9kb21haW47Ci0gICAgICAgIFN0cmluZyBtX3VyaTsKKyAgICAgICAgU3RyaW5n
IG1fb3JpZ2luOwogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3NvdXJjZTsKICAgICB9Owog
CkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5pZGwJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDEwIEBAIG1vZHVs
ZSBldmVudHMgewogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9Q1JPU1NfRE9DVU1FTlRfTUVT
U0FHSU5HLEdlbmVyYXRlQ29uc3RydWN0b3JdIE1lc3NhZ2VFdmVudCA6IEV2ZW50IHsKIAogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRhdGE7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgZG9tYWluOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHVyaTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBvcmln
aW47CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgc291cmNlOwogICAgICAg
ICAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBp
biBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01T
dHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIGRvbWFpbkFyZywgaW4gRE9NU3RyaW5nIHVyaUFy
ZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVu
dChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xl
YW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGluIERPTVN0cmluZyBvcmln
aW5BcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcpOwogCiAgICAgfTsKIApJbmRleDogV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMyBAQAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTIyMCwxMCArMjIyLDM4IEBAIENvbnNvbGUqIERP
TVdpbmRvdzo6Y29uc29sZSgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1JPU1NfRE9DVU1FTlRf
TUVTU0FHSU5HKQotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cq
IHNvdXJjZSkgY29uc3QKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0
aW9uQ29kZSYgZWNGb3JTZW5kZXIpIGNvbnN0CiB7Ci0gICBFeGNlcHRpb25Db2RlIGVjOwotICAg
ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1lc3NhZ2UsIGRvbWFp
biwgdXJpLCBzb3VyY2UpLCBlYywgdHJ1ZSk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIW9yaWdpbi5pc051bGwoKSkgeworICAgICAgICBLVVJMIGRlc2ly
ZWRUYXJnZXRVUkwob3JpZ2luKTsKKyAgICAgICAgaWYgKCFkZXNpcmVkVGFyZ2V0VVJMLmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgZWNGb3JTZW5kZXIgPSBTWU5UQVhfRVJSOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBk
ZXNpcmVkVGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkZXNpcmVkVGFyZ2V0
VVJMLCAwKTsKKyAgICAgICAgU2VjdXJpdHlPcmlnaW4qIGFjdHVhbFRhcmdldE9yaWdpbiA9IGRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIGlmIChkZXNpcmVkVGFyZ2V0T3Jp
Z2luLT5pc0VtcHR5KCkgfHwgIWRlc2lyZWRUYXJnZXRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQ
b3J0KGFjdHVhbFRhcmdldE9yaWdpbikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzZW5kZXIgaXMg
bm90IGFsbG93ZWQgdG8gZmluZCBvdXQgdGhlIG9yaWdpbiBvZgorICAgICAgICAgICAgLy8gdGhl
IHJlY2lwaWVudCwgc28gd2UgZmFpbCBzaWxlbnRseSBhbmQgbG9nIGEgbWVzc2FnZQorICAgICAg
ICAgICAgLy8gdG8gdGhlIGNvbnNvbGUuCisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0
cmluZzo6Zm9ybWF0KCJVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvICVzLiBSZWNpcGllbnQgaGFz
IG9yaWdpbiAlcy5cbiIsIAorICAgICAgICAgICAgICAgIG9yaWdpbi51dGY4KCkuZGF0YSgpLCBh
Y3R1YWxUYXJnZXRPcmlnaW4tPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICAgICAgaWYgKHBhZ2UpCisg
ICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgU3RyaW5nKCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgU3RyaW5nIHNvdXJjZU9y
aWdpbiA9IHNvdXJjZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsK
KworICAgIC8vIFNlbmRlciBpcyBub3QgYWxsb3dlZCB0byBzZWUgZXhjZXB0aW9ucyBvdGhlciB0
aGFuIHN5bnRheCBlcnJvcnMKKyAgICBFeGNlcHRpb25Db2RlIGVjOyAKKyAgICBkb2N1bWVudCgp
LT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVzc2FnZSwgc291cmNlT3JpZ2luLCBz
b3VyY2UpLCBlYywgdHJ1ZSk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24g
MzA1MTUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
Myw3ICsxNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbnNvbGUqIGNvbnNv
bGUoKSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5BQkxFKENST1NTX0RPQ1VNRU5UX01FU1NBR0lO
RykKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpIGNv
bnN0OworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlY0Zv
clNlbmRlcikgY29uc3Q7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBp
bnQgeSkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw4IEBA
IG1vZHVsZSB3aW5kb3cgewogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1JPU1NfRE9DVU1FTlRfTUVT
U0FHSU5HKQogICAgICAgICAvLyBjcm9zcy1kb2N1bWVudCBtZXNzYWdpbmcKLSAgICAgICAgW0Rv
Tm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0
cmluZyBtZXNzYWdlKTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9t
XSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIERP
TVN0cmluZyBvcmlnaW4pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRp
ZgogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShy
ZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJUZXh0
RW5jb2RpbmcuaCIKIAogI2lmIFVTRShJQ1VfVU5JQ09ERSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vS1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCShyZXZpc2lv
biAzMDUxNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw2ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X2lzVmFsaWQ7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFVSTCBoYXMgYSBwYXRo
LiBOb3RlIHRoYXQgImh0dHA6Ly9mb28uY29tLyIgaGFzIGEKICAgICAvLyBwYXRoIG9mICIvIiwg
c28gdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0cnVlLiBPbmx5IGludmFsaWQgb3IKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
IAorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTUzLDExICs1NCwxMCBAQCBz
dGF0aWMgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zCiAgICAgcmV0dXJuIGRlZmF1
bHRQb3J0cy5nZXQocHJvdG9jb2wpID09IHBvcnQ7CiB9CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1
cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVu
c2lnbmVkIHNob3J0IHBvcnQpCi0gICAgOiBtX3Byb3RvY29sKHByb3RvY29sLmlzTnVsbCgpID8g
IiIgOiBwcm90b2NvbC5sb3dlcigpKQotICAgICwgbV9ob3N0KGhvc3QuaXNOdWxsKCkgPyAiIiA6
IGhvc3QubG93ZXIoKSkKLSAgICAsIG1fcG9ydChwb3J0KQotICAgICwgbV9wb3J0U2V0KHBvcnQp
CitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorICAgIDog
bV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051bGwoKSA/ICIiIDogdXJsLnByb3RvY29sKCku
bG93ZXIoKSkKKyAgICAsIG1faG9zdCh1cmwuaG9zdCgpLmlzTnVsbCgpID8gIiIgOiB1cmwuaG9z
dCgpLmxvd2VyKCkpCisgICAgLCBtX3BvcnQodXJsLnBvcnQoKSkKICAgICAsIG1fbm9BY2Nlc3Mo
ZmFsc2UpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQogewpAQCAtNjksMTEgKzY5
LDIxIEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTdHIKICAgICBpZiAo
bV9wcm90b2NvbCA9PSAiZGF0YSIpCiAgICAgICAgIG1fbm9BY2Nlc3MgPSB0cnVlOwogCisgICAg
Ly8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2hvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRo
ZSBET00uCisgICAgbV9kb21haW4gPSBtX2hvc3Q7CiAKLSAgICBpZiAoaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKG1fcG9ydCwgbV9wcm90b2NvbCkpIHsKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKG1fcG9ydCwgbV9wcm90b2NvbCkpCiAgICAgICAgIG1fcG9ydCA9IDA7Ci0gICAg
ICAgIG1fcG9ydFNldCA9IGZhbHNlOwotICAgIH0gICAKK30KKworU2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKKyAgICA6IG1fcHJvdG9jb2wob3Ro
ZXItPm1fcHJvdG9jb2wuY29weSgpKQorICAgICwgbV9ob3N0KG90aGVyLT5tX2hvc3QuY29weSgp
KQorICAgICwgbV9kb21haW4ob3RoZXItPm1fZG9tYWluLmNvcHkoKSkKKyAgICAsIG1fcG9ydChv
dGhlci0+bV9wb3J0KQorICAgICwgbV9ub0FjY2VzcyhvdGhlci0+bV9ub0FjY2VzcykKKyAgICAs
IG1fZG9tYWluV2FzU2V0SW5ET00ob3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pCit7CiB9CiAK
IGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdApAQCAtODEsOSArOTEsOSBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gbV9wcm90b2Nv
bC5pc0VtcHR5KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1
bnNpZ25lZCBzaG9ydCBwb3J0LCBTZWN1cml0eU9yaWdpbiogb3duZXJGcmFtZU9yaWdpbikKK1Bh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgS1VS
TCYgdXJsLCBTZWN1cml0eU9yaWdpbiogb3duZXJGcmFtZU9yaWdpbikKIHsKLSAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG5ldyBTZWN1cml0eU9yaWdpbihwcm90b2NvbCwgaG9z
dCwgcG9ydCk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBuZXcgU2VjdXJp
dHlPcmlnaW4odXJsKTsKIAogICAgIC8vIElmIHdlIGRvIG5vdCBvYnRhaW4gYSBtZWFuaW5nZnVs
IG9yaWdpbiBmcm9tIHRoZSBVUkwsIHRoZW4gd2UgdHJ5IHRvIGZpbmQgb25lCiAgICAgLy8gdmlh
IHRoZSBmcmFtZSBoaWVyYXJjaHkuCkBAIC05OCwxMCArMTA4LDEwIEBAIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2kKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAgICAgICByZXR1
cm4gY3JlYXRlKEtVUkwoKSwgMCk7CiAKICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUt
PmxvYWRlcigpOwotICAgIEtVUkwgdXJsID0gbG9hZGVyLT51cmwoKTsKKyAgICBjb25zdCBLVVJM
JiB1cmwgPSBsb2FkZXItPnVybCgpOwogCiAgICAgRnJhbWUqIG93bmVyRnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT5wYXJlbnQoKTsKICAgICBpZiAoIW93bmVyRnJhbWUpCkBAIC0xMTEsMTkgKzEyMSwx
OCBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpCiAgICAgaWYgKG93
bmVyRnJhbWUgJiYgb3duZXJGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgb3duZXJGcmFtZU9y
aWdpbiA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBy
ZXR1cm4gY3JlYXRlKHVybC5wcm90b2NvbCgpLCB1cmwuaG9zdCgpLCB1cmwucG9ydCgpLCBvd25l
ckZyYW1lT3JpZ2luKTsKKyAgICByZXR1cm4gY3JlYXRlKHVybCwgb3duZXJGcmFtZU9yaWdpbik7
CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjb3B5KCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlKG1fcHJvdG9jb2wuY29weSgpLCBtX2hvc3QuY29weSgpLCBt
X3BvcnQsIDApOworICAgIHJldHVybiBuZXcgU2VjdXJpdHlPcmlnaW4odGhpcyk7CiB9CiAKLQog
dm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5ld0Rv
bWFpbikKIHsKICAgICBtX2RvbWFpbldhc1NldEluRE9NID0gdHJ1ZTsKLSAgICBtX2hvc3QgPSBu
ZXdEb21haW4ubG93ZXIoKTsKKyAgICBtX2RvbWFpbiA9IG5ld0RvbWFpbi5sb3dlcigpOwogfQog
CiBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90
aGVyLCBSZWFzb24mIHJlYXNvbikgY29uc3QKQEAgLTE2Niw3ICsxNzUsNyBAQCBib29sIFNlY3Vy
aXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjCiAgICAgICAgICAgICBpZiAobV9ob3N0ID09
IG90aGVyLT5tX2hvc3QgJiYgbV9wb3J0ID09IG90aGVyLT5tX3BvcnQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAm
JiBvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkgewotICAgICAgICAgICAgaWYgKG1faG9zdCA9
PSBvdGhlci0+bV9ob3N0KQorICAgICAgICAgICAgaWYgKG1fZG9tYWluID09IG90aGVyLT5tX2Rv
bWFpbikKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXIt
Pm1fcG9ydCkgewpAQCAtMTg2LDU1ICsxOTUsNjkgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNT
ZWN1cmVUcmFuc2l0aW9uVAogICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgaWYgKEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFNjaGVtZUFzTG9jYWwobV9wcm90
b2NvbCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdD
YXNlKG1faG9zdCwgU3RyaW5nKHVybC5ob3N0KCkpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShtX3By
b3RvY29sLCBTdHJpbmcodXJsLnByb3RvY29sKCkpKSAmJiBtX3BvcnQgPT0gdXJsLnBvcnQoKTsK
KyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG90aGVyID0gbmV3IFNlY3VyaXR5T3JpZ2luKHVy
bCk7CisgICAgUmVhc29uIHJlYXNvbjsKKyAgICByZXR1cm4gY2FuQWNjZXNzKG90aGVyLmdldCgp
LCByZWFzb24pOwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wcm90b2NvbCArICI6IiArIG1faG9zdCArICI6IiArIFN0cmluZzo6
bnVtYmVyKG1fcG9ydCk7Ci19CisgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCi1zdGF0aWMgY29uc3QgY2hhciBTZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7Cisg
ICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKQorICAgICAgICByZXR1cm4gU3RyaW5nKCJmaWxl
Oi8vIik7CisKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNh
cGFjaXR5KG1fcHJvdG9jb2wubGVuZ3RoKCkgKyBtX2hvc3QubGVuZ3RoKCkgKyAxMCk7CisgICAg
YXBwZW5kKHJlc3VsdCwgbV9wcm90b2NvbCk7CisgICAgYXBwZW5kKHJlc3VsdCwgIjovLyIpOwor
ICAgIGFwcGVuZChyZXN1bHQsIG1faG9zdCk7CisKKyAgICBpZiAobV9wb3J0KSB7CisgICAgICBh
cHBlbmQocmVzdWx0LCAiOiIpOworICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIo
bV9wb3J0KSk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKK30K
IAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21J
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5nSWRlbnRpZmllcikKLXsgCi0gICAgLy8gTWFr
ZSBzdXJlIHRoZXJlJ3MgYSBmaXJzdCBzZXBhcmF0b3IKLSAgICBpbnQgc2VwYXJhdG9yMSA9IHN0
cmluZ0lkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIGlmIChzZXBhcmF0
b3IxID09IC0xKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7Ci0gICAgICAg
IAotICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgc2Vjb25kIHNlcGFyYXRvcgotICAgIGludCBz
ZXBhcmF0b3IyID0gc3RyaW5nSWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rlciwgc2Vw
YXJhdG9yMSArIDEpOwotICAgIGlmIChzZXBhcmF0b3IyID09IC0xKQotICAgICAgICByZXR1cm4g
Y3JlYXRlKCIiLCAiIiwgMCwgMCk7Ci0gICAgICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdz
IG5vdCBhIHRoaXJkIHNlcGFyYXRvcgotICAgIGlmIChzdHJpbmdJZGVudGlmaWVyLnJldmVyc2VG
aW5kKFNlcGFyYXRvckNoYXJhY3RlcikgIT0gc2VwYXJhdG9yMikKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZSgiIiwgIiIsIDAsIDApOwotICAgICAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQg
c2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKLSAgICBib29s
IHBvcnRPa2F5OwotICAgIGludCBwb3J0ID0gc3RyaW5nSWRlbnRpZmllci5yaWdodChzdHJpbmdJ
ZGVudGlmaWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAtIDEpLnRvSW50KCZwb3J0T2theSk7Ci0g
ICAgaWYgKCFwb3J0T2theSAmJiBzZXBhcmF0b3IyICsgMSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0
cmluZ0lkZW50aWZpZXIubGVuZ3RoKCkpKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwg
MCwgMCk7Ci0gICAgCi0gICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiA2NTUzNSkKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOwotICAgICAgICAKLSAgICAvLyBTcGxpdCBvdXQg
dGhlIDMgc2VjdGlvbnMgb2YgZGF0YQotICAgIFN0cmluZyBwcm90b2NvbCA9IHN0cmluZ0lkZW50
aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwotICAgIFN0cmluZyBob3N0ID0gc3RyaW5n
SWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0
b3IxIC0gMSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShwcm90b2NvbCwgaG9zdCwgcG9ydCwgMCk7Cit7
CisgICAgcmV0dXJuIG5ldyBTZWN1cml0eU9yaWdpbihLVVJMKHN0cmluZ0lkZW50aWZpZXIpKTsg
ICAKIH0KLSAgICAKLSAgICAKKwogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpzdHJpbmdJZGVudGlm
aWVyKCkgY29uc3QgCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcgPSBTdHJp
bmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7Ci0gICAgcmV0dXJuIG1fcHJvdG9jb2wgKyBzZXBh
cmF0b3JTdHJpbmcgKyBtX2hvc3QgKyBzZXBhcmF0b3JTdHJpbmcgKyBTdHJpbmc6Om51bWJlciht
X3BvcnQpOyAKKyAgICByZXR1cm4gdG9TdHJpbmcoKTsKK30KKworYm9vbCBTZWN1cml0eU9yaWdp
bjo6ZXF1YWwoU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCAKK3sKKyAgICBpZiAoIWlzU2Ft
ZVNjaGVtZUhvc3RQb3J0KG90aGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KG1fZG9tYWluV2FzU2V0SW5ET00gIT0gb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG1fZG9t
YWluICE9IG90aGVyLT5tX2RvbWFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQb3J0
KFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QgCit7CisgICAgaWYgKG1faG9zdCAhPSBvdGhl
ci0+bV9ob3N0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9wcm90b2NvbCAh
PSBvdGhlci0+bV9wcm90b2NvbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1f
cG9ydCAhPSBvdGhlci0+bV9wb3J0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Vj
dXJpdHlPcmlnaW4uaAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3Vy
aXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEzICs0NCwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gY3JlYXRlRm9yRnJhbWUoRnJhbWUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCwg
U2VjdXJpdHlPcmlnaW4qIG93bmVyRnJhbWVPcmlnaW4pOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTZWN1cml0eU9yaWdpbiog
b3duZXJGcmFtZU9yaWdpbik7CisgICAgICAgIC8vc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzaG9y
dCwgU2VjdXJpdHlPcmlnaW4qKSB7IGludCogeCA9IDA7ICp4ID0gNTsgcmV0dXJuIDA7IH0KIAog
ICAgICAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjb3B5KCk7CiAKICAgICAgICAgdm9p
ZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKLSAgICAgICAgU3Ry
aW5nIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KICAgICAgICAgU3RyaW5nIHByb3Rv
Y29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQorICAgICAgICBTdHJpbmcgaG9zdCgp
IGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQorICAgICAgICBTdHJpbmcgZG9tYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9kb21haW47IH0KICAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9ydDsgfQogICAgICAgICAKICAgICAgICAgZW51bSBSZWFzb24gIHsKQEAg
LTY1LDE2ICs2NywyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBT
dHJpbmcgc3RyaW5nSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgICAgIC8vIGRvIG5vdCB1c2Ug
dGhpcyBmb3IgYWNjZXNzIGNoZWNrcywgaXQncyB0aGVyZSBvbmx5IGZvciB1c2luZyB0aGlzIGFz
IGEgaGFzaHRhYmxlIGtleQotICAgICAgICBib29sIGVxdWFsKFNlY3VyaXR5T3JpZ2luKiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbCA9PSBvdGhlci0+bV9wcm90b2NvbCAmJiBtX2hv
c3QgPT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1fcG9ydDsgfQorICAgICAg
ICAvLyBUaGlzIG1ldGhvZCBjaGVja3MgZm9yIGVxdWFsaXR5IGJldHdlZW4gU2VjdXJpdHlPcmln
aW5zLCBub3Qgd2hldGhlcgorICAgICAgICAvLyBvbmUgb3JpZ2luIGNhbiBhY2Nlc3MgYW5vdGhl
ci4gIEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KKyAgICAgICAgLy8gRm9yIGFjY2Vz
cyBjaGVja3MsIHVzZSBjYW5BY2Nlc3MoKS4KKyAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgbWV0
aG9kIGlzIHJlYWxseSBvbmx5IHVzZWZ1bCBmb3IgaGFzaCB0YWJsZSBrZXlzLCBpdAorICAgICAg
ICAvLyBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRvIFNlY3VyaXR5T3JpZ2luSGFzaC4KKyAgICAg
ICAgYm9vbCBlcXVhbChTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0OworCisgICAgICAgIC8v
IFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHksIGlnbm9yaW5nIHRoZSB2YWx1ZSBvZiBk
b2N1bWVudC5kb21haW4KKyAgICAgICAgLy8gKGFuZCB3aGV0aGVyIGl0IHdhcyBzZXQpIGJ1dCBj
b25zaWRlcmluZyB0aGUgaG9zdC4gSXQgaXMgdXNlZCBmb3IgcG9zdE1lc3NhZ2UuCisgICAgICAg
IGJvb2wgaXNTYW1lU2NoZW1lSG9zdFBvcnQoU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdDsK
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4oY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KTsK
KyAgICAgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYpOworICAgICAgICBl
eHBsaWNpdCBTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCiAgICAgICAgIFN0cmlu
ZyBtX3Byb3RvY29sOwogICAgICAgICBTdHJpbmcgbV9ob3N0OworICAgICAgICBTdHJpbmcgbV9k
b21haW47CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKLSAgICAgICAgYm9vbCBtX3Bv
cnRTZXQ7CiAgICAgICAgIGJvb2wgbV9ub0FjY2VzczsKICAgICAgICAgYm9vbCBtX2RvbWFpbldh
c1NldEluRE9NOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2lu
SGFzaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNo
LmgJKHJldmlzaW9uIDMwNTE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhh
c2guaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBTZWN1cml0eU9y
aWdpbkhhc2hfaAogI2RlZmluZSBTZWN1cml0eU9yaWdpbkhhc2hfaAogCisjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC02MCw4ICs2MSw4IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpblRyYWl0cyA6IFdURjo6
R2VuZXIKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKICAg
ICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYgZGVsZXRlZFZhbHVlKCkgCiAg
ICAgeyAKLSAgICAgICAgLy8gT2theSBkZWxldGVkIHZhbHVlIGJlY2F1c2UgZmlsZTogcHJvdG9j
b2xzIHNob3VsZCBhbHdheXMgaGF2ZSBwb3J0IDAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5EZWxldGVkVmFsdWUgPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKCJmaWxlIiwgIiIsIDEsIDApOyAgICAKKyAgICAgICAgLy8gT2theSBkZWxl
dGVkIHZhbHVlIGJlY2F1c2UgImludmFsaWQtcHJvdG9jb2wiIGlzIG5vdCBhIHZhbGlkIHByb3Rv
Y29sLgorICAgICAgICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbkRlbGV0ZWRWYWx1ZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTCgiaW52YWxp
ZC1wcm90b2NvbDoiKSwgMCk7CiAgICAgICAgIHJldHVybiBzZWN1cml0eU9yaWdpbkRlbGV0ZWRW
YWx1ZTsgCiAgICAgfQogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzA1NTQpCisrKyBXZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTAyLTI0IEFkYW0g
QmFydGggPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlZCBXZWJTZWN1cml0eU9yaWdpbiB0byBtYXRjaCBuZXcg
U2VjdXJpdHlPcmlnaW4gQVBJLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdl
YmtpdEBjb2xsaW5qYWNrc29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgor
CisgICAgICAgICogU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2Vi
U2VjdXJpdHlPcmlnaW4gaG9zdF0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU2VjdXJpdHlPcmln
aW5Qcml2YXRlLmg6CisKIDIwMDgtMDItMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbS4KSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFnZS9X
ZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDMwNTE1KQorKysgV2ViS2l0L21hYy9TdG9yYWdl
L1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyNCArMzAsMTkgQEAK
ICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
QGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luCi0KLS0gKGlkKWluaXRXaXRoUHJvdG9j
b2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbgotewotICAg
IHJldHVybiBbc2VsZiBpbml0V2l0aFByb3RvY29sOnByb3RvY29sIGRvbWFpbjpkb21haW4gcG9y
dDowXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhQcm90b2NvbDooTlNTdHJpbmcgKilwcm90b2NvbCBk
b21haW46KE5TU3RyaW5nICopZG9tYWluIHBvcnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQKKy0gKGlk
KWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbCwgZG9t
YWluLCBwb3J0LCAwKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSwgMCk7CiAgICAgb3Jp
Z2luLT5yZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlP
cmlnaW5Qcml2YXRlKj4ob3JpZ2luLmdldCgpKTsKIApAQCAtNTksNyArNTQsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9y
aWdpbio+KF9wcml2YXRlKS0+cHJvdG9jb2woKTsKIH0KIAotLSAoTlNTdHJpbmcqKWRvbWFpbgor
LSAoTlNTdHJpbmcqKWhvc3QKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0
eU9yaWdpbio+KF9wcml2YXRlKS0+aG9zdCgpOwogfQpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdl
L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3Rv
cmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDExICszMiwxMCBAQAogICAgIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqX3ByaXZh
dGU7CiB9CiAKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9t
YWluOihOU1N0cmluZyAqKWRvbWFpbjsKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5n
ICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBwb3J0Oih1bnNpZ25lZCBzaG9y
dClwb3J0OworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwogCiAtIChOU1N0cmluZyop
cHJvdG9jb2w7Ci0tIChOU1N0cmluZyopZG9tYWluOworLSAoTlNTdHJpbmcqKWhvc3Q7CiAKIC8v
IFJldHVybnMgemVybyBpZiB0aGUgcG9ydCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgcHJv
dG9jb2wsIG5vbi16ZXJvIG90aGVyd2lzZQogLSAodW5zaWduZWQgc2hvcnQpcG9ydDsKSW5kZXg6
IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDU1NCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMDItMjQgIEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lZCAiZG9tYWluIiBtZXRob2QgdG8gImhvc3QiIHRvIG1hdGNoIFNlY3VyaXR5T3JpZ2luLgor
CisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsOgorICAgICAgICAq
IFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpob3N0
KToKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5oOgorCiAyMDA4LTAyLTI0ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0uCkluZGV4
OiBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMzA1MTUpCisrKyBXZWJLaXQvd2lu
L1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAgICAgICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaWdp
bjo6ZG9tYWluKCAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmlnaW46
Omhvc3QoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQogewogICAgIGlm
ICghcmVzdWx0KQpJbmRleDogV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gMzA1MTUpCisr
KyBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBw
cm90b2NvbCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKICAg
ICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRvbWFpbiggCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhvc3QoIAogICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAgICAgICAgIAogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwb3J0KCAKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYktpdC93
aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw3ICs0MCw3IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKIGludGVyZmFjZSBJV2ViU2VjdXJpdHlP
cmlnaW4gOiBJVW5rbm93bgogewogICAgIEhSRVNVTFQgcHJvdG9jb2woW291dCwgcmV0dmFsXSBC
U1RSKiByZXN1bHQpOwotICAgIEhSRVNVTFQgZG9tYWluKFtvdXQsIHJldHZhbF0gQlNUUiogcmVz
dWx0KTsKKyAgICBIUkVTVUxUIGhvc3QoW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogICAg
IEhSRVNVTFQgcG9ydChbb3V0LCByZXR2YWxdIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpOwogCiAg
ICAgSFJFU1VMVCB1c2FnZShbb3V0LCByZXR2YWxdIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0
KTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMwNTU0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDgtMDItMjQgIEFkYW0gQmFydGggPGhr
OTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlcyBMYXlvdXRUZXN0Q29udHJvbGxlciB0byB1c2UgaG9zdCBpbnN0ZWFk
IG9mIGRvbWFpbi4KKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGluai13ZWJraXRAY29s
bGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3
ZWJWaWV3OmZyYW1lOmV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFi
YXNlOl0pOgorCiAyMDA4LTAyLTIzICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B1bnBs
dWdnYWJsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgRGFyaW4uCkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiAzMDUxNSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTc5LDcgKzE3OSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGkK
IAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBs
b25nIGxvbmcgcXVvdGEpCiB7ICAgIAotICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFByb3RvY29sOkAiZmlsZSIgZG9tYWlu
Om5pbF07CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy8iXV07
CiAgICAgW29yaWdpbiBzZXRRdW90YTpxdW90YV07CiAgICAgW29yaWdpbiByZWxlYXNlXTsKIH0K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShy
ZXZpc2lvbiAzMDUxNSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgRHVtcFJlbmRlclRyZWVE
cmFnZ2luZ0luZm8gKmRyYWdnaW5nSW5mbwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3Vy
aXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBkYXRhYmFzZTooTlNTdHJpbmcg
KilkYXRhYmFzZUlkZW50aWZpZXIKIHsKICAgICBpZiAoIWRvbmUgJiYgbGF5b3V0VGVzdENvbnRy
b2xsZXItPmR1bXBEYXRhYmFzZUNhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoIlVJIERFTEVH
QVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9y
aWdpbjp7JXMsICVzLCAlaX0gZGF0YWJhc2U6JXNcbiIsIFtbb3JpZ2luIHByb3RvY29sXSBVVEY4
U3RyaW5nXSwgW1tvcmlnaW4gZG9tYWluXSBVVEY4U3RyaW5nXSwgCisgICAgICAgIHByaW50Zigi
VUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNl
Y3VyaXR5T3JpZ2luOnslcywgJXMsICVpfSBkYXRhYmFzZTolc1xuIiwgW1tvcmlnaW4gcHJvdG9j
b2xdIFVURjhTdHJpbmddLCBbW29yaWdpbiBob3N0XSBVVEY4U3RyaW5nXSwgCiAgICAgICAgICAg
ICBbb3JpZ2luIHBvcnRdLCBbZGF0YWJhc2VJZGVudGlmaWVyIFVURjhTdHJpbmddKTsKIAogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQg
KiAxMDI0OyAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMwNTU0KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDgtMDItMjQgIEFkYW0g
QmFydGggIDxoazk1NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBMYXlvdXRUZXN0cyBmb3IgbmV3IHBvc3RNZXNzYWdl
IEFQSS4KKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGluai13ZWJraXRAY29sbGluamFj
a3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGh0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4t
bWVzc2FnZS1yZWNlaXZlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2Rv
bWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5
LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1k
b21haW4uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3Jp
Z2luLXRocm93cy1leGNlcHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1v
cmlnaW4uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1i
eS1iYXNlLXRhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbDogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21h
aW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1k
b21haW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2Rv
bWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5l
ci5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0
LW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sOiBBZGRlZC4KKwogMjAwOC0wMi0yNCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3Mt
ZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdp
bmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMiArMSwyIEBACiAKLWRhdGE6IFNvbWV0aGluZyB1cmk6IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC5odG1sIGRvbWFpbjogMTI3
LjAuMC4xCitkYXRhOiBTb21ldGhpbmcgb3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21h
aW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRt
bAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9y
ZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC05LDggKzksNyBAQAogZnVuY3Rpb24gcmVjZWl2ZXIoZSkgewogICAgIHZhciByZXN1bHQg
PSAiIjsKICAgICByZXN1bHQgKz0gImRhdGE6ICIgKyBlLmRhdGEgKyAiXG4iOwotICAgIHJlc3Vs
dCArPSAidXJpOiAiICsgZS51cmkgKyAiXG4iOwotICAgIHJlc3VsdCArPSAiZG9tYWluOiAiICsg
ZS5kb21haW4gKyAiXG4iOworICAgIHJlc3VsdCArPSAib3JpZ2luOiAiICsgZS5vcmlnaW4gKyAi
XG4iOwogICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHJlc3VsdCk7ICAgCiB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmkt
dW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFm
ZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVu
YWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5o
dG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIGRvbWFp
bj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVz
c2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwiCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJp
LXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQt
YnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkg
ewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEg
PSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7
Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAg
IHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01l
c3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0cDovL3d3
dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNj
cmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+
Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3Qo
KSIKLSAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOyI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2Fp
dGluZy4uLjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21h
aW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9t
YWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLXdpbmRvdy5s
b2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCi1kb2N1bWVudC5kb21h
aW4gPSAwLjAuMQotCi1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50
IiBkb21haW49IjEyNy4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwiCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11
bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3Yo
ZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRh
dGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwot
ICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2Uo
J01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLQotZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsK
LTwvc2NyaXB0PgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5k
b2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2
PmRvY3VtZW50LmRvbWFpbiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWlu
KTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0
bWwiIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiCi0gIHN0eWxlPSJib3JkZXI6
IDFweCBzb2xpZCBibGFjazsiIG9ubG9hZD0idGVzdCgpIj4KLTwvaWZyYW1lPjwvZGl2PgotPGRp
diBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2lu
LXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4
Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBhc2RmOi4gUmVjaXBpZW50IGhh
cyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4g
aHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxl
IHRvIHBvc3QgbWVzc2FnZSB0byAvdG1wL2Zvby4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDov
L2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBv
c3QgbWVzc2FnZSB0byAvL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xv
Y2FsaG9zdDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9u
Lmh0bWwKKword2FpdGluZy4uLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhf
RVJSOiBET00gRXhjZXB0aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnJy4KK0VuY291
bnRlcmVkIGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiB3aGls
ZSBwb3N0aW5nIG1lc3NhZ2UgdG8gJ2FzZGYnLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2FzZGY6JyB3
aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2h0dHA6JyB3aXRob3V0
IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy90bXAvZm9vJyB3aXRob3V0IGFu
eSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy8vbG9jYWxob3N0JyB3aXRob3V0IGFu
eSBleGNlcHRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9y
aWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNl
cHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKzwvc2NyaXB0PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAor
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVu
Y3Rpb24gdHJ5UG9zdE1lc3NhZ2Uob3JpZ2luKSB7CisgIHRyeSB7CisgICAgd2luLnBvc3RNZXNz
YWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPlBvc3RlZCBtZXNzYWdlIHRv
ICciICsgb3JpZ2luICsgIicgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4iOworICB9IGNhdGNoKGV4
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAi
PGJyPkVuY291bnRlcmVkIGV4Y2VwdGlvbiAiICsgZXggKyAiIHdoaWxlIHBvc3RpbmcgbWVzc2Fn
ZSB0byAnIiArIG9yaWdpbiArICInLiI7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAg
ICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgd2lu
ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisKKyAgICAvLyBOb24tVVJMcyBzaG91bGQgZmFpbCB3
aXRoIGEgc3ludGF4IGVycm9yLgorICAgIHRyeVBvc3RNZXNzYWdlKCIiKTsKKyAgICB0cnlQb3N0
TWVzc2FnZSgiYXNkZiIpOworCisgICAgLy8gVVJMcyB3aXRob3V0IGFuIG9yaWdpbiBzaG91bGQg
ZmFpbCB3aXRob3V0IGdlbmVyYXRpbmcgYW55IGVycm9ycy4KKyAgICB0cnlQb3N0TWVzc2FnZSgi
YXNkZjoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSgiaHR0cDoiKTsKKworICAgIC8vIFdlYktpdCBj
b252ZXJ0cyBVUkxzIHRoYXQgc3RhcnQgd2l0aCAvIHRvIGZpbGU6Ly8gVVJMcy4gVGhleSBkb24n
dCBtYXRjaCB0aGUgdGFyZ2V0IGZyYW1lLCBzbyB0aGV5IGZhaWwgc2lsZW50bHkuCisgICAgdHJ5
UG9zdE1lc3NhZ2UoIi90bXAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2UoIi8vbG9jYWxob3N0
Iik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRp
dj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93Lmxv
Y2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2Ut
bGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIg
aGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+
PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2
YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0
LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA1MTUpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5o
dG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRvbWFpbj0i
bG9jYWxob3N0IiB1cmk9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1k
b21haW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwzMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZh
ciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0i
JyArIGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7Ci0KLSAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOwotCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgcmVjdiwgZmFsc2UpOwotCi08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhh
bXBsZS5jb20vIj4KLTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+
ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08
ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvcmVzb3VyY2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgotICBpZD0i
Y2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9k
aXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxs
LXNlbmRzLW9yaWdpbi5odG1sCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20g
Y2hpbGQiIG9yaWdpbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2Vu
ZHMtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJ
KHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbDozMDUxNSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlw
dC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBk
YXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBl
LnVyaSArICciJzsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJz
dENoaWxkLmRhdGEgPSBtc2c7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKKzwvc2NyaXB0
PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8ZGl2Pndp
bmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2Nh
dGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0
LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIz
MDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8
ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0
LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2Vu
ZHMtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2lu
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKIH0KIAogZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdS
ZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21h
aW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKKyAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1l
c3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBvcmlnaW49IicgKyBlLm9yaWdpbiArICciJzsK
IAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEg
PSBtc2c7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1i
eS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAord2lu
ZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1l
c3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorCitSZWNlaXZlZCBtZXNz
YWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
b3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5
LWJhc2UtdGFnLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBy
ZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVu
dFdpbmRvdzsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKK30K
Kzwvc2NyaXB0PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+
Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5k
b3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVz
c2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0i
ODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lm
cmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9v
cmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmln
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi5odG1sCitkb2N1bWVudC5kb21haW4gPSAwLjAuMQorCitSZWNlaXZlZCBtZXNzYWdl
OiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3Jp
Z2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLmh0bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0
YTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2
YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdp
biA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBm
cm9tIHBhcmVudCcpOworfQorCitkb2N1bWVudC5kb21haW4gPSAiMC4wLjEiOworPC9zY3JpcHQ+
Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50Lndy
aXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+ZG9jdW1lbnQu
ZG9tYWluID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0
PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgaWQ9ImNo
aWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIKKyAgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlk
IGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCkiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1
bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC4gUmVj
aXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi8vbG9jYWxob3N0LiBS
ZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxob3N0
LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxo
b3N0OjgwMDAuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKwor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDov
L3d3dy5leGFtcGxlLmNvbS4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4
MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKword2FpdGluZy4uLgorUmVjZWl2
ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAiIG9y
aWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5
aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2ZvbyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZl
ZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/
YmFyIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRh
dGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6IiBvcmln
aW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWlu
ZyBvcmlnaW49aHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIgb3Jp
Z2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlp
bmcgb3JpZ2luPW51bGwiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj11bmRlZmluZWQiIG9yaWdpbj0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Rhcmdl
dC1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8
YnI+IiArIGUuZGF0YTsKK30KKyAKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKHdpbiwgb3JpZ2luKSB7
CisgICAgd2luLnBvc3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsK
KworICAgIC8vIFNob3VsZCBzdWNjZWVkOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC8iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0
OjgwMDAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL2Zvbz9iYXIiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0
OjgwMDAvZm9vP2JhciNiYXoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vdXNl
cjpwYXNzQGxvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uo
d2luLCBudWxsKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sIHVuZGVmaW5lZCk7CisKKyAgICAv
LyBTaG91bGQgZmFpbDoKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0
OjkwOTAiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0Iik7Cisg
ICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cHM6Ly9sb2NhbGhvc3QiKTsKKyAgICB0cnlQb3N0
TWVzc2FnZSh3aW4sICJodHRwczovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3Nh
Z2Uod2luLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOworCisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8
c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rp
dj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVz
dCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53
YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVu
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkocmV2aXNpb24g
MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jl
c291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3
ICs0LDcgQEAKIDxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50Lndy
aXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KIDxzY3JpcHQ+CiBmdW5j
dGlvbiByZWN2KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Iicg
KyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsg
JyInOworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSAr
ICciIG9yaWdpbj0iJyArIGUub3JpZ2luICsgJyInOwogICAgIHRvcC5wb3N0TWVzc2FnZShtc2cp
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19545</attachid>
            <date>2008-03-05 01:12:57 -0800</date>
            <delta_ts>2008-04-05 19:18:11 -0700</delta_ts>
            <desc>Updated patch to fix bit rot</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>48588</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDMwNzkxKQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2Uu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNyArMjcyLDggQEAgX19aTjdXZWJDb3JlMTREcmFn
Q29udHJvbGxlcjlkcmFnRW5kZWRFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVs
ZWFzZVByb3h5RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9y
RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxOXNldFNob3VsZEJ1ZmZlckRhdGFFYgot
X19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZjcmVhdGVFUktOU182U3RyaW5nRVMzX3RQUzBf
CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05TXzRLVVJMRVBTMF8KK19f
Wk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNWVxdWFsRVBTMF8KIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0MTByZW1vdmVJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMHNldEVuYWJsZWRFYgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2Fy
ZExpc3QxMWN1cnJlbnRJdGVtRXYKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCShyZXZpc2lvbiAzMDc5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsMTcgKzE0MiwxOSBAQCBi
b29sIEpTRE9NV2luZG93OjpjdXN0b21HZXRQcm9wZXJ0eU5hbWVzCiBKU1ZhbHVlKiBKU0RPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQogewog
ICAgIERPTVdpbmRvdyogd2luZG93ID0gaW1wbCgpOwotICAgIAogICAgIERPTVdpbmRvdyogc291
cmNlID0gdG9KU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7
Ci0gICAgU3RyaW5nIGRvbWFpbiA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLmhv
c3QoKTsKLSAgICBTdHJpbmcgdXJpID0gc291cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCku
c3RyaW5nKCk7CisKICAgICBTdHJpbmcgbWVzc2FnZSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMp
OwotICAgIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBkb21h
aW4sIHVyaSwgc291cmNlKTsKLSAgICAKKworICAgIFN0cmluZyBvcmlnaW4gPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGFyZ3NbMV0pOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UsIG9y
aWdpbiwgc291cmNlLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MzA3OTEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
MjQsNyArMjYyNCw3IEBAIFN0cmluZyBEb2N1bWVudDo6cmVmZXJyZXIoKSBjb25zdAogCiBTdHJp
bmcgRG9jdW1lbnQ6OmRvbWFpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2VjdXJpdHlPcmln
aW4tPmhvc3QoKTsKKyAgICByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi0+ZG9tYWluKCk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnNldERvbWFpbihjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikKSW5kZXg6
IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMzA3OTEpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTAgQEAgTWVzc2FnZUV2ZW50
OjpNZXNzYWdlRXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwg
RE9NV2luZG93KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkKICAgICA6
IEV2ZW50KG1lc3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAgICAsIG1fZGF0YShkYXRhKQotICAg
ICwgbV9kb21haW4oZG9tYWluKQotICAgICwgbV91cmkodXJpKQorICAgICwgbV9vcmlnaW4ob3Jp
Z2luKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpAQCAtNTQsNyArNTMsNyBAQCBNZXNz
YWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK3ZvaWQgTWVzc2FnZUV2ZW50
Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3Nh
Z2VFdmVudChjb25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7
CiAgICAgCiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2RvbWFpbiA9IGRvbWFpbjsKLSAgICBt
X3VyaSA9IHVyaTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBtX3NvdXJjZSA9IHNvdXJj
ZTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9uIDMwNzkxKQorKysgV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZl
bnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5n
JiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKTsKICAg
ICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2lu
ZG93KiBzb3VyY2UpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29u
c3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmkoKSBjb25z
dCB7IHJldHVybiBtX3VyaTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc01lc3NhZ2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZTogICAgCiAgICAgICAgIFN0
cmluZyBtX2RhdGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgU3RyaW5nIG1f
dXJpOworICAgICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+
IG1fc291cmNlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkocmV2aXNpb24gMzA3
OTEpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwxMSArMjksMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25h
bD1DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gTWVzc2FnZUV2
ZW50IDogRXZlbnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0
YTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21haW47Ci0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdp
bmRvdyBzb3VyY2U7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4g
RE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNh
bmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgZG9tYWluQXJn
LCBpbiBET01TdHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKKyAgICAgICAg
dm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNh
bkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFy
ZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CiAKICAg
ICB9OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMzA3OTEpCisrKyBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5j
bHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxp
c3QuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5o
IgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJE
T01TZWxlY3Rpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtMjIwLDEwICsy
MjIsMzggQEAgQ29uc29sZSogRE9NV2luZG93Ojpjb25zb2xlKCkgY29uc3QKIH0KIAogI2lmIEVO
QUJMRShDUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3Ry
aW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKSBjb25zdAordm9pZCBET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdp
bmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikgY29uc3QKIHsKLSAgIEV4
Y2VwdGlvbkNvZGUgZWM7Ci0gICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdl
RXZlbnQobWVzc2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSksIGVjLCB0cnVlKTsKKyAgICBpZiAo
IW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghb3JpZ2luLmlzTnVsbCgpKSB7
CisgICAgICAgIEtVUkwgZGVzaXJlZFRhcmdldFVSTChvcmlnaW4pOworICAgICAgICBpZiAoIWRl
c2lyZWRUYXJnZXRVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBlY0ZvclNlbmRlciA9IFNZ
TlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGRlc2lyZWRUYXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGRlc2lyZWRUYXJnZXRVUkwsIDApOworICAgICAgICBTZWN1cml0eU9yaWdpbiogYWN0
dWFsVGFyZ2V0T3JpZ2luID0gZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAg
aWYgKGRlc2lyZWRUYXJnZXRPcmlnaW4tPmlzRW1wdHkoKSB8fCAhZGVzaXJlZFRhcmdldE9yaWdp
bi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoYWN0dWFsVGFyZ2V0T3JpZ2luKSkgeworICAgICAgICAg
ICAgLy8gVGhlIHNlbmRlciBpcyBub3QgYWxsb3dlZCB0byBmaW5kIG91dCB0aGUgb3JpZ2luIG9m
CisgICAgICAgICAgICAvLyB0aGUgcmVjaXBpZW50LCBzbyB3ZSBmYWlsIHNpbGVudGx5IGFuZCBs
b2cgYSBtZXNzYWdlCisgICAgICAgICAgICAvLyB0byB0aGUgY29uc29sZS4KKyAgICAgICAgICAg
IFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuYWJsZSB0byBwb3N0IG1lc3NhZ2Ug
dG8gJXMuIFJlY2lwaWVudCBoYXMgb3JpZ2luICVzLlxuIiwgCisgICAgICAgICAgICAgICAgb3Jp
Z2luLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
ICAgICAgICBpZiAocGFnZSkKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVz
c2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdl
LCAwLCBTdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBTdHJpbmcgc291cmNlT3JpZ2luID0gc291cmNlLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT50b1N0cmluZygpOworCisgICAgLy8gU2VuZGVyIGlzIG5vdCBhbGxvd2VkIHRvIHNl
ZSBleGNlcHRpb25zIG90aGVyIHRoYW4gc3ludGF4IGVycm9ycworICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7IAorICAgIGRvY3VtZW50KCktPmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudChtZXNz
YWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSksIGVjLCB0cnVlKTsKIH0KICNlbmRpZgogCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCShyZXZpc2lvbiAzMDc5MSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQ29uc29sZSogY29uc29sZSgpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoQ1JP
U1NfRE9DVU1FTlRfTUVTU0FHSU5HKQotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBE
T01XaW5kb3cqIHNvdXJjZSkgY29uc3Q7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2Us
IEV4Y2VwdGlvbkNvZGUmIGVjRm9yU2VuZGVyKSBjb25zdDsKICNlbmRpZgogCiAgICAgICAgIHZv
aWQgc2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAzMDc5MSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsNyArMTM2LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAKICNpZiBkZWZpbmVkKEVOQUJM
RV9DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCiAgICAgICAgIC8vIGNyb3NzLWRvY3VtZW50IG1l
c3NhZ2luZwotICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQg
cG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UpOworICAgICAgICBbRG9Ob3RDaGVja0Rv
bWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3Nh
Z2UsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG9yaWdpbikKKyAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQp
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDMwNzkxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1N0
cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFz
aC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDMwNzkxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoaXMgVVJMIGhhcyBhIHBhdGguIE5vdGUgdGhhdCAiaHR0cDovL2Zvby5jb20vIiBoYXMgYQog
ICAgIC8vIHBhdGggb2YgIi8iLCBzbyB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRydWUuIE9u
bHkgaW52YWxpZCBvcgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlz
aW9uIDMwNzkxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpA
QCAtNTMsMTEgKzU0LDEwIEBAIHN0YXRpYyBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1
bnMKICAgICByZXR1cm4gZGVmYXVsdFBvcnRzLmdldChwcm90b2NvbCkgPT0gcG9ydDsKIH0KIAot
U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNv
bnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCkKLSAgICA6IG1fcHJvdG9jb2wo
cHJvdG9jb2wuaXNOdWxsKCkgPyAiIiA6IHByb3RvY29sLmxvd2VyKCkpCi0gICAgLCBtX2hvc3Qo
aG9zdC5pc051bGwoKSA/ICIiIDogaG9zdC5sb3dlcigpKQotICAgICwgbV9wb3J0KHBvcnQpCi0g
ICAgLCBtX3BvcnRTZXQocG9ydCkKK1NlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25z
dCBLVVJMJiB1cmwpCisgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8g
IiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQorICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNO
dWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKKyAgICAsIG1fcG9ydCh1cmwucG9ydCgp
KQogICAgICwgbV9ub0FjY2VzcyhmYWxzZSkKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFs
c2UpCiB7CkBAIC02OSwxMSArNjksMjEgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2lu
KGNvbnN0IFN0cgogICAgIGlmIChtX3Byb3RvY29sID09ICJkYXRhIikKICAgICAgICAgbV9ub0Fj
Y2VzcyA9IHRydWU7CiAKKyAgICAvLyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFzIG1faG9zdCwg
YnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KKyAgICBtX2RvbWFpbiA9IG1faG9zdDsKIAotICAg
IGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkgeworICAg
IGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkKICAgICAg
ICAgbV9wb3J0ID0gMDsKLSAgICAgICAgbV9wb3J0U2V0ID0gZmFsc2U7Ci0gICAgfSAgIAorfQor
CitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG90aGVyKQor
ICAgIDogbV9wcm90b2NvbChvdGhlci0+bV9wcm90b2NvbC5jb3B5KCkpCisgICAgLCBtX2hvc3Qo
b3RoZXItPm1faG9zdC5jb3B5KCkpCisgICAgLCBtX2RvbWFpbihvdGhlci0+bV9kb21haW4uY29w
eSgpKQorICAgICwgbV9wb3J0KG90aGVyLT5tX3BvcnQpCisgICAgLCBtX25vQWNjZXNzKG90aGVy
LT5tX25vQWNjZXNzKQorICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShvdGhlci0+bV9kb21haW5X
YXNTZXRJbkRPTSkKK3sKIH0KIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0
CkBAIC04MSw5ICs5MSw5IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAog
ICAgIHJldHVybiBtX3Byb3RvY29sLmlzRW1wdHkoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGhvc3QsIHVuc2lnbmVkIHNob3J0IHBvcnQsIFNlY3VyaXR5T3JpZ2luKiBv
d25lckZyYW1lT3JpZ2luKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNlY3VyaXR5T3JpZ2luKiBvd25lckZyYW1lT3Jp
Z2luKQogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbmV3IFNlY3VyaXR5
T3JpZ2luKHByb3RvY29sLCBob3N0LCBwb3J0KTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG9yaWdpbiA9IG5ldyBTZWN1cml0eU9yaWdpbih1cmwpOwogCiAgICAgLy8gSWYgd2UgZG8gbm90
IG9idGFpbiBhIG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhlbiB3ZSB0cnkgdG8g
ZmluZCBvbmUKICAgICAvLyB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KQEAgLTk4LDEwICsxMDgs
MTAgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaQogUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKEZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwg
MCwgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpLCAwKTsKIAogICAgIEZyYW1lTG9h
ZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgS1VSTCB1cmwgPSBsb2FkZXItPnVy
bCgpOworICAgIGNvbnN0IEtVUkwmIHVybCA9IGxvYWRlci0+dXJsKCk7CiAKICAgICBGcmFtZSog
b3duZXJGcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIGlmICghb3duZXJGcmFt
ZSkKQEAgLTExMSwxOSArMTIxLDE4IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3Vy
aXR5T3JpZ2kKICAgICBpZiAob3duZXJGcmFtZSAmJiBvd25lckZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICBvd25lckZyYW1lT3JpZ2luID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKTsKIAotICAgIHJldHVybiBjcmVhdGUodXJsLnByb3RvY29sKCksIHVybC5ob3N0
KCksIHVybC5wb3J0KCksIG93bmVyRnJhbWVPcmlnaW4pOworICAgIHJldHVybiBjcmVhdGUodXJs
LCBvd25lckZyYW1lT3JpZ2luKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNvcHkoKQogewotICAgIHJldHVybiBjcmVhdGUobV9wcm90b2NvbC5jb3B5
KCksIG1faG9zdC5jb3B5KCksIG1fcG9ydCwgMCk7CisgICAgcmV0dXJuIG5ldyBTZWN1cml0eU9y
aWdpbih0aGlzKTsKIH0KIAotCiB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXREb21haW5Gcm9tRE9N
KGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogewogICAgIG1fZG9tYWluV2FzU2V0SW5ET00gPSB0
cnVlOwotICAgIG1faG9zdCA9IG5ld0RvbWFpbi5sb3dlcigpOworICAgIG1fZG9tYWluID0gbmV3
RG9tYWluLmxvd2VyKCk7CiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25z
dCBTZWN1cml0eU9yaWdpbiogb3RoZXIsIFJlYXNvbiYgcmVhc29uKSBjb25zdApAQCAtMTY2LDcg
KzE3NSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWMKICAgICAg
ICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1f
cG9ydCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmICht
X2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAg
ICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLT5tX2hvc3QpCisgICAgICAgICAgICBpZiAobV9k
b21haW4gPT0gb3RoZXItPm1fZG9tYWluKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1faG9zdCA9PSBvdGhlci0+bV9ob3N0
ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0KSB7CkBAIC0xODYsNTUgKzE5NSw2OSBAQCBib29s
IFNlY3VyaXR5T3JpZ2luOjppc1NlY3VyZVRyYW5zaXRpb25UCiAgICAgaWYgKGlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0
U2NoZW1lQXNMb2NhbChtX3Byb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UobV9ob3N0LCBTdHJpbmcodXJsLmhvc3QoKSkpICYmIGVx
dWFsSWdub3JpbmdDYXNlKG1fcHJvdG9jb2wsIFN0cmluZyh1cmwucHJvdG9jb2woKSkpICYmIG1f
cG9ydCA9PSB1cmwucG9ydCgpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3RoZXIgPSBu
ZXcgU2VjdXJpdHlPcmlnaW4odXJsKTsKKyAgICBSZWFzb24gcmVhc29uOworICAgIHJldHVybiBj
YW5BY2Nlc3Mob3RoZXIuZ2V0KCksIHJlYXNvbik7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdp
bjo6dG9TdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX3Byb3RvY29sICsgIjoiICsgbV9o
b3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIobV9wb3J0KTsKLX0KKyAgICBpZiAoaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLXN0YXRpYyBjb25zdCBjaGFyIFNlcGFyYXRv
ckNoYXJhY3RlciA9ICdfJzsKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAg
IHJldHVybiBTdHJpbmcoImZpbGU6Ly8iKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0Owor
ICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9zdC5s
ZW5ndGgoKSArIDEwKTsKKyAgICBhcHBlbmQocmVzdWx0LCBtX3Byb3RvY29sKTsKKyAgICBhcHBl
bmQocmVzdWx0LCAiOi8vIik7CisgICAgYXBwZW5kKHJlc3VsdCwgbV9ob3N0KTsKKworICAgIGlm
IChtX3BvcnQpIHsKKyAgICAgIGFwcGVuZChyZXN1bHQsICI6Iik7CisgICAgICBhcHBlbmQocmVz
dWx0LCBTdHJpbmc6Om51bWJlcihtX3BvcnQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5n
OjphZG9wdChyZXN1bHQpOworfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJpbmdJZGVudGlm
aWVyKQoteyAKLSAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgotICAg
IGludCBzZXBhcmF0b3IxID0gc3RyaW5nSWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rl
cik7Ci0gICAgaWYgKHNlcGFyYXRvcjEgPT0gLTEpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIs
ICIiLCAwLCAwKTsKLSAgICAgICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQg
c2VwYXJhdG9yCi0gICAgaW50IHNlcGFyYXRvcjIgPSBzdHJpbmdJZGVudGlmaWVyLmZpbmQoU2Vw
YXJhdG9yQ2hhcmFjdGVyLCBzZXBhcmF0b3IxICsgMSk7Ci0gICAgaWYgKHNlcGFyYXRvcjIgPT0g
LTEpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKLSAgICAgICAgCi0gICAg
Ly8gTWFrZSBzdXJlIHRoZXJlJ3Mgbm90IGEgdGhpcmQgc2VwYXJhdG9yCi0gICAgaWYgKHN0cmlu
Z0lkZW50aWZpZXIucmV2ZXJzZUZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyKSAhPSBzZXBhcmF0b3Iy
KQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7Ci0gICAgICAgIAotICAgIC8v
IE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9l
c24ndCBleGlzdAotICAgIGJvb2wgcG9ydE9rYXk7Ci0gICAgaW50IHBvcnQgPSBzdHJpbmdJZGVu
dGlmaWVyLnJpZ2h0KHN0cmluZ0lkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSku
dG9JbnQoJnBvcnRPa2F5KTsKLSAgICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRvcjIgKyAxID09
IHN0YXRpY19jYXN0PGludD4oc3RyaW5nSWRlbnRpZmllci5sZW5ndGgoKSkpCi0gICAgICAgIHJl
dHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKLSAgICAKLSAgICBpZiAocG9ydCA8IDAgfHwgcG9y
dCA+IDY1NTM1KQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7Ci0gICAgICAg
IAotICAgIC8vIFNwbGl0IG91dCB0aGUgMyBzZWN0aW9ucyBvZiBkYXRhCi0gICAgU3RyaW5nIHBy
b3RvY29sID0gc3RyaW5nSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7Ci0gICAg
U3RyaW5nIGhvc3QgPSBzdHJpbmdJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwg
c2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gY3JlYXRlKHByb3RvY29s
LCBob3N0LCBwb3J0LCAwKTsKK3sKKyAgICByZXR1cm4gbmV3IFNlY3VyaXR5T3JpZ2luKEtVUkwo
c3RyaW5nSWRlbnRpZmllcikpOyAgIAogfQotICAgIAotICAgIAorCiBTdHJpbmcgU2VjdXJpdHlP
cmlnaW46OnN0cmluZ0lkZW50aWZpZXIoKSBjb25zdCAKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHNl
cGFyYXRvclN0cmluZyA9IFN0cmluZygmU2VwYXJhdG9yQ2hhcmFjdGVyLCAxKTsKLSAgICByZXR1
cm4gbV9wcm90b2NvbCArIHNlcGFyYXRvclN0cmluZyArIG1faG9zdCArIHNlcGFyYXRvclN0cmlu
ZyArIFN0cmluZzo6bnVtYmVyKG1fcG9ydCk7IAorICAgIHJldHVybiB0b1N0cmluZygpOworfQor
Citib29sIFNlY3VyaXR5T3JpZ2luOjplcXVhbChTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0
IAoreworICAgIGlmICghaXNTYW1lU2NoZW1lSG9zdFBvcnQob3RoZXIpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAhPSBvdGhlci0+bV9kb21h
aW5XYXNTZXRJbkRPTSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZG9tYWlu
V2FzU2V0SW5ET00gJiYgbV9kb21haW4gIT0gb3RoZXItPm1fZG9tYWluKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTZWN1cml0eU9yaWdpbjo6
aXNTYW1lU2NoZW1lSG9zdFBvcnQoU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCAKK3sKKyAg
ICBpZiAobV9ob3N0ICE9IG90aGVyLT5tX2hvc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChtX3Byb3RvY29sICE9IG90aGVyLT5tX3Byb3RvY29sKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAobV9wb3J0ICE9IG90aGVyLT5tX3BvcnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAzMDc5MSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTMg
KzQ0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGb3JGcmFtZShGcmFtZSopOwogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1
bnNpZ25lZCBzaG9ydCBwb3J0LCBTZWN1cml0eU9yaWdpbiogb3duZXJGcmFtZU9yaWdpbik7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgS1VS
TCYsIFNlY3VyaXR5T3JpZ2luKiBvd25lckZyYW1lT3JpZ2luKTsKKyAgICAgICAgLy9zdGF0aWMg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHVuc2lnbmVkIHNob3J0LCBTZWN1cml0eU9yaWdpbiopIHsgaW50KiB4ID0gMDsgKngg
PSA1OyByZXR1cm4gMDsgfQogCiAgICAgICAgIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNv
cHkoKTsKIAogICAgICAgICB2b2lkIHNldERvbWFpbkZyb21ET00oY29uc3QgU3RyaW5nJiBuZXdE
b21haW4pOwotICAgICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQog
ICAgICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9Cisg
ICAgICAgIFN0cmluZyBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CisgICAgICAgIFN0
cmluZyBkb21haW4oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQogICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0OyB9CiAgICAgICAgIAogICAgICAg
ICBlbnVtIFJlYXNvbiAgewpAQCAtNjUsMTYgKzY3LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIFN0cmluZyBzdHJpbmdJZGVudGlmaWVyKCkgY29uc3Q7CiAKLSAg
ICAgICAgLy8gZG8gbm90IHVzZSB0aGlzIGZvciBhY2Nlc3MgY2hlY2tzLCBpdCdzIHRoZXJlIG9u
bHkgZm9yIHVzaW5nIHRoaXMgYXMgYSBoYXNodGFibGUga2V5Ci0gICAgICAgIGJvb2wgZXF1YWwo
U2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09IG90aGVy
LT5tX3Byb3RvY29sICYmIG1faG9zdCA9PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhl
ci0+bV9wb3J0OyB9CisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHkg
YmV0d2VlbiBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCisgICAgICAgIC8vIG9uZSBvcmln
aW4gY2FuIGFjY2VzcyBhbm90aGVyLiAgSXQgaXMgdXNlZCBmb3IgaGFzaCB0YWJsZSBrZXlzLgor
ICAgICAgICAvLyBGb3IgYWNjZXNzIGNoZWNrcywgdXNlIGNhbkFjY2VzcygpLgorICAgICAgICAv
LyBGSVhNRTogSWYgdGhpcyBtZXRob2QgaXMgcmVhbGx5IG9ubHkgdXNlZnVsIGZvciBoYXNoIHRh
YmxlIGtleXMsIGl0CisgICAgICAgIC8vIHNob3VsZCBiZSByZWZhY3RvcmVkIGludG8gU2VjdXJp
dHlPcmlnaW5IYXNoLgorICAgICAgICBib29sIGVxdWFsKFNlY3VyaXR5T3JpZ2luKiBvdGhlcikg
Y29uc3Q7CisKKyAgICAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tzIGZvciBlcXVhbGl0eSwgaWdu
b3JpbmcgdGhlIHZhbHVlIG9mIGRvY3VtZW50LmRvbWFpbgorICAgICAgICAvLyAoYW5kIHdoZXRo
ZXIgaXQgd2FzIHNldCkgYnV0IGNvbnNpZGVyaW5nIHRoZSBob3N0LiBJdCBpcyB1c2VkIGZvciBw
b3N0TWVzc2FnZS4KKyAgICAgICAgYm9vbCBpc1NhbWVTY2hlbWVIb3N0UG9ydChTZWN1cml0eU9y
aWdpbiogb3RoZXIpIGNvbnN0OwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBTZWN1
cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVu
c2lnbmVkIHNob3J0IHBvcnQpOworICAgICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25z
dCBLVVJMJik7CisgICAgICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2lu
Kik7CiAKICAgICAgICAgU3RyaW5nIG1fcHJvdG9jb2w7CiAgICAgICAgIFN0cmluZyBtX2hvc3Q7
CisgICAgICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9wb3J0
OwotICAgICAgICBib29sIG1fcG9ydFNldDsKICAgICAgICAgYm9vbCBtX25vQWNjZXNzOwogICAg
ICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET007CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9TZWN1cml0eU9yaWdpbkhhc2guaAkocmV2aXNpb24gMzA3OTEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL1NlY3VyaXR5T3JpZ2luSGFzaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWZuZGVmIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAjZGVmaW5lIFNlY3VyaXR5T3JpZ2luSGFz
aF9oCiAKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTYwLDggKzYxLDggQEAgc3RydWN0IFNlY3VyaXR5
T3JpZ2luVHJhaXRzIDogV1RGOjpHZW5lcgogICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
JiBkZWxldGVkVmFsdWUoKSAKICAgICB7IAotICAgICAgICAvLyBPa2F5IGRlbGV0ZWQgdmFsdWUg
YmVjYXVzZSBmaWxlOiBwcm90b2NvbHMgc2hvdWxkIGFsd2F5cyBoYXZlIHBvcnQgMAotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbkRlbGV0
ZWRWYWx1ZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImZpbGUiLCAiIiwgMSwgMCk7ICAgIAor
ICAgICAgICAvLyBPa2F5IGRlbGV0ZWQgdmFsdWUgYmVjYXVzZSAiaW52YWxpZC1wcm90b2NvbCIg
aXMgbm90IGEgdmFsaWQgcHJvdG9jb2wuCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRGVsZXRlZFZhbHVlID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShLVVJMKCJpbnZhbGlkLXByb3RvY29sOiIpLCAwKTsKICAgICAgICAgcmV0dXJuIHNl
Y3VyaXR5T3JpZ2luRGVsZXRlZFZhbHVlOyAKICAgICB9CiAKSW5kZXg6IFdlYktpdC9tYWMvU3Rv
cmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3Jh
Z2UvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDMwNzkxKQorKysgV2ViS2l0L21hYy9T
dG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNCArMjks
MTkgQEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8
V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luCi0KLS0gKGlkKWluaXRXaXRo
UHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbgot
ewotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFByb3RvY29sOnByb3RvY29sIGRvbWFpbjpkb21h
aW4gcG9ydDowXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhQcm90b2NvbDooTlNTdHJpbmcgKilwcm90
b2NvbCBkb21haW46KE5TU3RyaW5nICopZG9tYWluIHBvcnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQK
Ky0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2Nv
bCwgZG9tYWluLCBwb3J0LCAwKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSwgMCk7CiAg
ICAgb3JpZ2luLT5yZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2Vj
dXJpdHlPcmlnaW5Qcml2YXRlKj4ob3JpZ2luLmdldCgpKTsKIApAQCAtNTgsNyArNTMsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1
cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cHJvdG9jb2woKTsKIH0KIAotLSAoTlNTdHJpbmcqKWRv
bWFpbgorLSAoTlNTdHJpbmcqKWhvc3QKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxT
ZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+aG9zdCgpOwogfQpJbmRleDogV2ViS2l0L21hYy9T
dG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAkocmV2aXNpb24gMzA3OTEpCisr
KyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDExICszMiwxMCBAQAogICAgIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAq
X3ByaXZhdGU7CiB9CiAKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9j
b2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbjsKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5T
U3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBwb3J0Oih1bnNpZ25l
ZCBzaG9ydClwb3J0OworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwogCiAtIChOU1N0
cmluZyopcHJvdG9jb2w7Ci0tIChOU1N0cmluZyopZG9tYWluOworLSAoTlNTdHJpbmcqKWhvc3Q7
CiAKIC8vIFJldHVybnMgemVybyBpZiB0aGUgcG9ydCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0
aGUgcHJvdG9jb2wsIG5vbi16ZXJvIG90aGVyd2lzZQogLSAodW5zaWduZWQgc2hvcnQpcG9ydDsK
SW5kZXg6IFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzMDc5MSkKKysrIFdlYktp
dC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5
T3JpZ2luOjpkb21haW4oIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9y
aWdpbjo6aG9zdCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7CiAg
ICAgaWYgKCFyZXN1bHQpCkluZGV4OiBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAzMDc5
MSkKKysrIFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHByb3RvY29sKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQp
OwogICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9tYWlu
KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaG9zdCggCiAgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKICAgICAgICAgCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBvcnQoIApJbmRleDogV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwJKHJldmlzaW9uIDMwNzkxKQorKysgV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOwogaW50ZXJmYWNlIElXZWJTZWN1
cml0eU9yaWdpbiA6IElVbmtub3duCiB7CiAgICAgSFJFU1VMVCBwcm90b2NvbChbb3V0LCByZXR2
YWxdIEJTVFIqIHJlc3VsdCk7Ci0gICAgSFJFU1VMVCBkb21haW4oW291dCwgcmV0dmFsXSBCU1RS
KiByZXN1bHQpOworICAgIEhSRVNVTFQgaG9zdChbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7
CiAgICAgSFJFU1VMVCBwb3J0KFtvdXQsIHJldHZhbF0gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCk7
CiAKICAgICBIUkVTVUxUIHVzYWdlKFtvdXQsIHJldHZhbF0gdW5zaWduZWQgbG9uZyBsb25nKiBy
ZXN1bHQpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMzA3OTEpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRDdXN0b21Qb2xpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERhdGFiYXNl
UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogeyAgICAKLSAgICBXZWJTZWN1cml0eU9y
aWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhQcm90b2Nv
bDpAImZpbGUiIGRvbWFpbjpuaWxdOworICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImZpbGU6Ly8vIl1dOwogICAgIFtvcmlnaW4gc2V0UXVvdGE6cXVvdGFdOwogICAgIFtvcmln
aW4gcmVsZWFzZV07CiB9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMzA3OTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBA
IER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2luZ0luZm8KIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFi
YXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGF0
YWJhc2U6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7CiAgICAgaWYgKCFkb25lICYm
IGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRGF0YWJhc2VDYWxsYmFja3MoKSkKLSAgICAgICAg
cHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1
b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdp
biBwcm90b2NvbF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGRvbWFpbl0gVVRGOFN0cmluZ10sIAor
ICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERh
dGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gZGF0YWJhc2U6JXNcbiIs
IFtbb3JpZ2luIHByb3RvY29sXSBVVEY4U3RyaW5nXSwgW1tvcmlnaW4gaG9zdF0gVVRGOFN0cmlu
Z10sIAogICAgICAgICAgICAgW29yaWdpbiBwb3J0XSwgW2RhdGFiYXNlSWRlbnRpZmllciBVVEY4
U3RyaW5nXSk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRR
dW90YSA9IDUgKiAxMDI0ICogMTAyNDsgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVz
c2FnZS1zZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzA3OTEpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKIAotZGF0YTogU29tZXRoaW5nIHVyaTog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5k
Lmh0bWwgZG9tYWluOiAxMjcuMC4wLjEKK2RhdGE6IFNvbWV0aGluZyBvcmlnaW46IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVz
b3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1l
c3NhZ2UtcmVjZWl2ZS5odG1sCShyZXZpc2lvbiAzMDc5MSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw3IEBACiBmdW5jdGlvbiByZWNlaXZlcihlKSB7
CiAgICAgdmFyIHJlc3VsdCA9ICIiOwogICAgIHJlc3VsdCArPSAiZGF0YTogIiArIGUuZGF0YSAr
ICJcbiI7Ci0gICAgcmVzdWx0ICs9ICJ1cmk6ICIgKyBlLnVyaSArICJcbiI7Ci0gICAgcmVzdWx0
ICs9ICJkb21haW46ICIgKyBlLmRvbWFpbiArICJcbiI7CisgICAgcmVzdWx0ICs9ICJvcmlnaW46
ICIgKyBlLm9yaWdpbiArICJcbiI7CiAgICAgZS5zb3VyY2UucG9zdE1lc3NhZ2UocmVzdWx0KTsg
ICAKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2Rv
bWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAzMDc5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVj
dGVkLWJ5LWJhc2UtdGFnLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBm
cm9tIHBhcmVudCIgZG9tYWluPSIxMjcuMC4wLjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10
YWcuaHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFu
ZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCShyZXZpc2lvbiAzMDc5MSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmkt
dW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQot
ZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0K
LQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQot
ZnVuY3Rpb24gdGVzdCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NoaWxkJyk7Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAgIHdp
bi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotPC9zY3JpcHQ+Ci08YmFz
ZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+Ci08Ym9keT4KLTxkaXY+d2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVm
KTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0
bWwiIG9ubG9hZD0idGVzdCgpIgotICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAw
IiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRp
diBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZm
ZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVk
LWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMwNzkxKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQg
KzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0
bWwKLWRvY3VtZW50LmRvbWFpbiA9IDAuMC4xCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1l
c3NhZ2UgZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4uaHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21h
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzA3OTEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0K
LQotZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
LX0KLQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsK
LQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NoaWxkJyk7Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAg
IHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotCi1kb2N1bWVudC5k
b21haW4gPSAiMC4wLjEiOwotPC9zY3JpcHQ+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9u
LmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3Nj
cmlwdD48L2Rpdj4KLTxkaXY+ZG9jdW1lbnQuZG9tYWluID0gPHNjcmlwdD5kb2N1bWVudC53cml0
ZShkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZyYW1lIHNyYz0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1l
c3NhZ2UtbGlzdGVuZXIuaHRtbCIgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIK
LSAgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCkiPgotPC9p
ZnJhbWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlk
LW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4t
dGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGFz
ZGY6LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6LiBSZWNp
cGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIC90bXAvZm9vLiBSZWNpcGllbnQg
aGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIC8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFz
IG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0g
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2lu
LXRocm93cy1leGNlcHRpb24uaHRtbAorCit3YWl0aW5nLi4uCitFbmNvdW50ZXJlZCBleGNlcHRp
b24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIgd2hpbGUgcG9zdGluZyBtZXNz
YWdlIHRvICcnLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00g
RXhjZXB0aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnYXNkZicuCitQb3N0ZWQgbWVz
c2FnZSB0byAnYXNkZjonIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0
byAnaHR0cDonIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAnL3Rt
cC9mb28nIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAnLy9sb2Nh
bGhvc3QnIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1v
cmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBA
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+CisKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPiIg
KyBlLmRhdGE7Cit9CisgCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVj
diwgZmFsc2UpOworCitmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZShvcmlnaW4pIHsKKyAgdHJ5IHsK
KyAgICB3aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBvcmlnaW49IiArIG9yaWdpbiwgb3JpZ2luKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+
UG9zdGVkIG1lc3NhZ2UgdG8gJyIgKyBvcmlnaW4gKyAiJyB3aXRob3V0IGFueSBleGNlcHRpb25z
LiI7CisgIH0gY2F0Y2goZXgpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJIVE1MICs9ICI8YnI+RW5jb3VudGVyZWQgZXhjZXB0aW9uICIgKyBleCArICIgd2hp
bGUgcG9zdGluZyBtZXNzYWdlIHRvICciICsgb3JpZ2luICsgIicuIjsKKyAgfQorfQorCitmdW5j
dGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y2hpbGQnKTsKKyAgICB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKworICAgIC8vIE5vbi1V
UkxzIHNob3VsZCBmYWlsIHdpdGggYSBzeW50YXggZXJyb3IuCisgICAgdHJ5UG9zdE1lc3NhZ2Uo
IiIpOworICAgIHRyeVBvc3RNZXNzYWdlKCJhc2RmIik7CisKKyAgICAvLyBVUkxzIHdpdGhvdXQg
YW4gb3JpZ2luIHNob3VsZCBmYWlsIHdpdGhvdXQgZ2VuZXJhdGluZyBhbnkgZXJyb3JzLgorICAg
IHRyeVBvc3RNZXNzYWdlKCJhc2RmOiIpOworICAgIHRyeVBvc3RNZXNzYWdlKCJodHRwOiIpOwor
CisgICAgLy8gV2ViS2l0IGNvbnZlcnRzIFVSTHMgdGhhdCBzdGFydCB3aXRoIC8gdG8gZmlsZTov
LyBVUkxzLiBUaGV5IGRvbid0IG1hdGNoIHRoZSB0YXJnZXQgZnJhbWUsIHNvIHRoZXkgZmFpbCBz
aWxlbnRseS4KKyAgICB0cnlQb3N0TWVzc2FnZSgiL3RtcC9mb28iKTsKKyAgICB0cnlQb3N0TWVz
c2FnZSgiLy9sb2NhbGhvc3QiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2Ny
aXB0PgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVu
dC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJh
bWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3Vy
Y2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNo
aWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJs
YWNrOyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAzMDc5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3Rp
bGwtc2VuZHMtZG9tYWluLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iSGVsbG8gZnJv
bSBjaGlsZCIgZG9tYWluPSJsb2NhbGhvc3QiIHVyaT0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5k
ZXIuaHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1w
YWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMDc5MSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxs
LXNlbmRzLWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMxICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24g
cmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5k
YXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsK
LQotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEg
PSBtc2c7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLTwvc2NyaXB0PgotPGJhc2UgaHJl
Zj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlv
bi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTs8
L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2Vu
ZGVyLmh0bWwiCi0gIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgotPC9pZnJhbWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1
bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1v
cmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2lu
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACit3aW5kb3cubG9jYXRp
b24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZh
c2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKworUmVjZWl2ZWQgbWVzc2FnZTog
ZGF0YT0iSGVsbG8gZnJvbSBjaGlsZCIgb3JpZ2luPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3Jp
cHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1z
ZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRv
bWFpbi5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICB2YXIgbXNnID0gJ1Jl
Y2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFp
biArICciIHVyaT0iJyArIGUudXJpICsgJyInOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZh
bHNlKTsKKworPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+
Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50Lndy
aXRlKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1l
IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNl
cy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKKyAgaWQ9ImNoaWxkIiB3aWR0
aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8
L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3Jp
cHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1z
dGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogfQogCiBmdW5jdGlvbiByZWN2KGUpIHsK
LSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBk
b21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworICAgIHZhciBt
c2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIG9yaWdpbj0iJyAr
IGUub3JpZ2luICsgJyInOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29y
aWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzIEBACit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1s
CisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9yaWdpbj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3Jp
Z2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmkt
dW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0
YTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2
YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdp
biA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBm
cm9tIHBhcmVudCcpOworfQorPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1w
bGUuY29tLyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRv
Y3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+
PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9y
ZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgpIgorICBp
ZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29s
aWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4u
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWlu
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAord2luZG93LmxvY2F0aW9uLmhyZWYg
PSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZm
ZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKK2RvY3VtZW50LmRvbWFpbiA9IDAuMC4xCisK
K1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9yaWdpbj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMDUx
NSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21h
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDozMDUxNSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RD
aGlsZC5kYXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hp
bGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2luLnBvc3RN
ZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9CisKK2RvY3VtZW50LmRvbWFpbiA9ICIw
LjAuMSI7Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxz
Y3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2
PgorPGRpdj5kb2N1bWVudC5kb21haW4gPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50
LmRvbWFpbik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0
ZW5lci5odG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIgorICBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IiBvbmxvYWQ9InRlc3QoKSI+Cis8L2lmcmFtZT48L2Rp
dj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQt
b3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJn
ZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL2xv
Y2FsaG9zdDo5MDkwLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAu
CisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0
dHA6Ly9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8g
aHR0cHM6Ly9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2Ug
dG8gaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xv
Y2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3Qg
bWVzc2FnZSB0byBodHRwOi8vd3d3LmV4YW1wbGUuY29tLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBo
dHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAorCit3
YWl0aW5nLi4uCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBt
ZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iIG9yaWdp
bj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5n
IG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2Zvbz9iYXIiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVj
ZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAv
Zm9vP2JhciNiYXoiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVz
c2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vdXNlcjpwYXNzQGxvY2FsaG9zdDo4MDAw
L2Zvbz9iYXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1l
c3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49bnVsbCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPXVuZGVmaW5lZCIg
b3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmln
aW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3Nh
Z2Uod2luLCBvcmlnaW4pIHsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBvcmlnaW49IiAr
IG9yaWdpbiwgb3JpZ2luKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1l
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlmcmFt
ZS5jb250ZW50V2luZG93OworCisgICAgLy8gU2hvdWxkIHN1Y2NlZWQ6CisgICAgdHJ5UG9zdE1l
c3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uo
d2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIpOworICAgIHRyeVBvc3RNZXNzYWdl
KHdpbiwgImh0dHA6Ly91c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiKTsKKyAg
ICB0cnlQb3N0TWVzc2FnZSh3aW4sIG51bGwpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgdW5k
ZWZpbmVkKTsKKworICAgIC8vIFNob3VsZCBmYWlsOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwg
Imh0dHA6Ly9sb2NhbGhvc3Q6OTA5MCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6
Ly9sb2NhbGhvc3QiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczovL2xvY2FsaG9z
dCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0OjgwMDAiKTsK
KyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CisKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cu
bG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhy
ZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIu
aHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIz
MDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8
ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bv
c3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5l
ci5odG1sCShyZXZpc2lvbiAzMDc5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxz
Y3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2
PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIg
dXJpPSInICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBk
YXRhPSInICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7CiAgICAgdG9w
LnBvc3RNZXNzYWdlKG1zZyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20357</attachid>
            <date>2008-04-05 19:18:11 -0700</date>
            <delta_ts>2008-04-05 19:32:17 -0700</delta_ts>
            <desc>Updated patch that fixes postMessage without changing database identifiers</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>61521</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2Uu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDggQEAgX19aTjdXZWJDb3JlMTREcmFn
Q29udHJvbGxlcjlkcmFnRW5kZWRFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVs
ZWFzZVByb3h5RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9y
RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxOXNldFNob3VsZEJ1ZmZlckRhdGFFYgot
X19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZjcmVhdGVFUktOU182U3RyaW5nRVMzX3RQUzBf
CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05TXzRLVVJMRQorX19aTks3
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW41ZXF1YWxFUFMwXwogX19aTjdXZWJDb3JlMTVBcmNoaXZl
UmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktO
U180S1VSTEVSS05TXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pO
N1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZThyZXNwb25zZUV2CiBfX1pON1dlYkNvcmUxNUJhY2tG
b3J3YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAzMTY2NSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsMTcgKzE5NywxOSBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3Rh
dGUqCiBKU1ZhbHVlKiBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBMaXN0JiBhcmdzKQogewogICAgIERPTVdpbmRvdyogd2luZG93ID0gaW1wbCgpOwotICAg
IAogICAgIERPTVdpbmRvdyogc291cmNlID0gdG9KU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xv
YmFsT2JqZWN0KCkpLT5pbXBsKCk7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IHNvdXJjZS0+ZnJhbWUo
KS0+bG9hZGVyKCktPnVybCgpLmhvc3QoKTsKLSAgICBTdHJpbmcgdXJpID0gc291cmNlLT5mcmFt
ZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CisKICAgICBTdHJpbmcgbWVzc2FnZSA9IGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpOwotICAgIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgd2luZG93LT5wb3N0
TWVzc2FnZShtZXNzYWdlLCBkb21haW4sIHVyaSwgc291cmNlKTsKLSAgICAKKworICAgIFN0cmlu
ZyBvcmlnaW4gPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGFy
Z3NbMV0pOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3aW5kb3ctPnBv
c3RNZXNzYWdlKG1lc3NhZ2UsIG9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3MzEsNyArMjczMSw3IEBAIFN0cmluZyBEb2N1bWVudDo6cmVm
ZXJyZXIoKSBjb25zdAogCiBTdHJpbmcgRG9jdW1lbnQ6OmRvbWFpbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4tPmhvc3QoKTsKKyAgICByZXR1cm4gbV9zZWN1cml0eU9y
aWdpbi0+ZG9tYWluKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldERvbWFpbihjb25zdCBTdHJp
bmcmIG5ld0RvbWFpbikKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMzE2NjUpCisr
KyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSAr
NDEsMTAgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZl
bnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01X
aW5kb3cqIHNvdXJjZSkKICAgICA6IEV2ZW50KG1lc3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAg
ICAsIG1fZGF0YShkYXRhKQotICAgICwgbV9kb21haW4oZG9tYWluKQotICAgICwgbV91cmkodXJp
KQorICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpA
QCAtNTQsNyArNTMsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12
b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJj
ZSkKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYg
KGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSk7CiAgICAgCiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2Rv
bWFpbiA9IGRvbWFpbjsKLSAgICBtX3VyaSA9IHVyaTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsK
ICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9u
IDMxNjY1KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2
ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgp
OwotICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAg
TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERP
TVdpbmRvdyogc291cmNlKTsKICAgICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpOwogICAgICAgICAKICAgICAgICAgY29u
c3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0
IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAgICAgICAgY29u
c3QgU3RyaW5nJiB1cmkoKSBjb25zdCB7IHJldHVybiBtX3VyaTsgfQorICAgICAgICBjb25zdCBT
dHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdp
bmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAg
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZTogICAgCiAgICAgICAgIFN0cmluZyBtX2RhdGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFp
bjsKLSAgICAgICAgU3RyaW5nIG1fdXJpOworICAgICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAg
ICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmlkbAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAg
aW50ZXJmYWNlIFtDb25kaXRpb25hbD1DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVD
b25zdHJ1Y3Rvcl0gTWVzc2FnZUV2ZW50IDogRXZlbnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBkb21haW47Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBzb3VyY2U7CiAgICAgICAgIAotICAgICAgICB2b2lk
IGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnVi
YmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBp
biBET01TdHJpbmcgZG9tYWluQXJnLCBpbiBET01TdHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cg
c291cmNlQXJnKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0
eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJn
LCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2lu
ZG93IHNvdXJjZUFyZyk7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEwLDcgKzkxMCw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UKIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
dXJsLnByb3RvY29sKCksIHVybC5ob3N0KCksIHVybC5wb3J0KCksIDApOworICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAg
IFNlY3VyaXR5T3JpZ2luOjpSZWFzb24gcmVhc29uOwogICAgIGlmICghbV9jYW52YXMtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhvcmlnaW4uZ2V0KCksIHJlYXNvbikp
CiAgICAgICAgIG1fY2FudmFzLT5zZXRPcmlnaW5UYWludGVkKCk7CkBAIC0xMDYxLDcgKzEwNjEs
NyBAQCBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IENhbnZhc1JlbmRlcmluCiAgICAgYm9vbCBv
cmlnaW5DbGVhbiA9IHRydWU7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGlt
YWdlLT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIEtVUkwgdXJsKGNhY2hlZEltYWdlLT51cmwo
KSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmwucHJvdG9jb2woKSwgdXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwgMCk7Cisg
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh1cmwpOwogICAgICAgICBTZWN1cml0eU9yaWdpbjo6UmVhc29uIHJlYXNvbjsKICAgICAg
ICAgb3JpZ2luQ2xlYW4gPSBtX2NhbnZhcy0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuQWNjZXNzKG9yaWdpbi5nZXQoKSwgcmVhc29uKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKICNpbmNsdWRlICJDU1NTdHls
ZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01TZWxlY3Rpb24uaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgpAQCAtMjQ4LDEwICsyNTAsNDEgQEAgTG9jYXRpb24qIERPTVdp
bmRvdzo6bG9jYXRpb24oKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENST1NTX0RPQ1VNRU5UX01F
U1NBR0lORykKLXZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBz
b3VyY2UpIGNvbnN0Cit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlv
bkNvZGUmIGVjRm9yU2VuZGVyKSBjb25zdAogewotICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgIGRv
Y3VtZW50KCktPmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudChtZXNzYWdlLCBkb21haW4s
IHVyaSwgc291cmNlKSwgZWMsIHRydWUpOworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFvcmlnaW4uaXNOdWxsKCkpIHsKKyAgICAgICAgS1VSTCBkZXNpcmVk
VGFyZ2V0VVJMKG9yaWdpbik7CisgICAgICAgIGlmICghZGVzaXJlZFRhcmdldFVSTC5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgICAgIGVjRm9yU2VuZGVyID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gZGVz
aXJlZFRhcmdldE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGVzaXJlZFRhcmdldFVS
TCk7CisgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBhY3R1YWxUYXJnZXRPcmlnaW4gPSBkb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBpZiAoZGVzaXJlZFRhcmdldE9yaWdpbi0+
aXNFbXB0eSgpIHx8ICFkZXNpcmVkVGFyZ2V0T3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChh
Y3R1YWxUYXJnZXRPcmlnaW4pKSB7CisgICAgICAgICAgICAvLyBUaGUgc2VuZGVyIGlzIG5vdCBh
bGxvd2VkIHRvIGZpbmQgb3V0IHRoZSBvcmlnaW4gb2YKKyAgICAgICAgICAgIC8vIHRoZSByZWNp
cGllbnQsIHNvIHdlIGZhaWwgc2lsZW50bHkgYW5kIGxvZyBhIG1lc3NhZ2UKKyAgICAgICAgICAg
IC8vIHRvIHRoZSBjb25zb2xlLgorICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6
OmZvcm1hdCgiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAlcy4gUmVjaXBpZW50IGhhcyBvcmln
aW4gJXMuXG4iLCAKKyAgICAgICAgICAgICAgICBvcmlnaW4udXRmOCgpLmRhdGEoKSwgYWN0dWFs
VGFyZ2V0T3JpZ2luLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgICAgIGlmIChwYWdlKQorICAgICAg
ICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIFN0cmluZygpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIERvY3VtZW50KiBzb3VyY2VEb2N1
bWVudCA9IHNvdXJjZS0+ZG9jdW1lbnQoKSkKKyAgICBpZiAoIXNvdXJjZURvY3VtZW50KQorICAg
ICAgICByZXR1cm47CisgICAgU3RyaW5nIHNvdXJjZU9yaWdpbiA9IHNvdXJjZURvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOworCisgICAgLy8gU2VuZGVyIGlzIG5vdCBhbGxv
d2VkIHRvIHNlZSBleGNlcHRpb25zIG90aGVyIHRoYW4gc3ludGF4IGVycm9ycworICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7IAorICAgIGRvY3VtZW50KCktPmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VF
dmVudChtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSksIGVjLCB0cnVlKTsKIH0KICNlbmRp
ZgogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgQ29uc29sZSogY29uc29sZSgpIGNvbnN0OwogICAgICAgICAKICNpZiBF
TkFCTEUoQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HKQotICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmlu
ZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkgY29uc3Q7CisgICAgICAgIHZvaWQgcG9zdE1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93
KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjRm9yU2VuZGVyKSBjb25zdDsKICNlbmRpZgogCiAg
ICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCiAgICAgICAgIC8vIGNyb3NzLWRv
Y3VtZW50IG1lc3NhZ2luZwotICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0
b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UpOworICAgICAgICBbRG9O
b3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3Ry
aW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIG9yaWdpbikKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pB
VkFTQ1JJUFQpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24g
MzE2NjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAKKyNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC01
MywxMSArNTQsMTAgQEAgc3RhdGljIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVucwog
ICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OwogfQogCi1TZWN1
cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3Qg
U3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KQotICAgIDogbV9wcm90b2NvbChwcm90
b2NvbC5pc051bGwoKSA/ICIiIDogcHJvdG9jb2wubG93ZXIoKSkKLSAgICAsIG1faG9zdChob3N0
LmlzTnVsbCgpID8gIiIgOiBob3N0Lmxvd2VyKCkpCi0gICAgLCBtX3BvcnQocG9ydCkKLSAgICAs
IG1fcG9ydFNldChwb3J0KQorU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKKyAgICA6IG1fcHJvdG9jb2wodXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyAiIiA6
IHVybC5wcm90b2NvbCgpLmxvd2VyKCkpCisgICAgLCBtX2hvc3QodXJsLmhvc3QoKS5pc051bGwo
KSA/ICIiIDogdXJsLmhvc3QoKS5sb3dlcigpKQorICAgICwgbV9wb3J0KHVybC5wb3J0KCkpCiAg
ICAgLCBtX25vQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkK
IHsKQEAgLTY5LDExICs2OSwyMSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29u
c3QgU3RyCiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gImRhdGEiKQogICAgICAgICBtX25vQWNjZXNz
ID0gdHJ1ZTsKIAorICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQg
Y2FuIGJlIHNldCBieSB0aGUgRE9NLgorICAgIG1fZG9tYWluID0gbV9ob3N0OwogCi0gICAgaWYg
KGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQsIG1fcHJvdG9jb2wpKSB7CisgICAgaWYg
KGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQsIG1fcHJvdG9jb2wpKQogICAgICAgICBt
X3BvcnQgPSAwOwotICAgICAgICBtX3BvcnRTZXQgPSBmYWxzZTsKLSAgICB9ICAgCit9CisKK1Nl
Y3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIp
CisgICAgOiBtX3Byb3RvY29sKG90aGVyLT5tX3Byb3RvY29sLmNvcHkoKSkKKyAgICAsIG1faG9z
dChvdGhlci0+bV9ob3N0LmNvcHkoKSkKKyAgICAsIG1fZG9tYWluKG90aGVyLT5tX2RvbWFpbi5j
b3B5KCkpCisgICAgLCBtX3BvcnQob3RoZXItPm1fcG9ydCkKKyAgICAsIG1fbm9BY2Nlc3Mob3Ro
ZXItPm1fbm9BY2Nlc3MpCisgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKG90aGVyLT5tX2RvbWFp
bldhc1NldEluRE9NKQorewogfQogCiBib29sIFNlY3VyaXR5T3JpZ2luOjppc0VtcHR5KCkgY29u
c3QKQEAgLTgxLDI0ICs5MSwxNSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc0VtcHR5KCkgY29u
c3QKICAgICByZXR1cm4gbV9wcm90b2NvbC5pc0VtcHR5KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0LCBTZWN1cml0eU9yaWdp
biogb3duZXJGcmFtZU9yaWdpbikKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsKQogewotICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gbmV3IFNlY3VyaXR5T3JpZ2luKHByb3RvY29sLCBob3N0LCBwb3J0KTsK
LQotICAgIC8vIElmIHdlIGRvIG5vdCBvYnRhaW4gYSBtZWFuaW5nZnVsIG9yaWdpbiBmcm9tIHRo
ZSBVUkwsIHRoZW4gd2UgdHJ5IHRvIGZpbmQgb25lCi0gICAgLy8gdmlhIHRoZSBmcmFtZSBoaWVy
YXJjaHkuCi0gICAgLy8gV2UgYWxpYXMgdGhlIFNlY3VyaXR5T3JpZ2lucyB0byBtYXRjaCBGaXJl
Zm94LCBzZWUgQnVnIDE1MzEzCi0gICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMTMKLSAgICBpZiAob3JpZ2luLT5pc0VtcHR5KCkgJiYgb3duZXJGcmFtZU9y
aWdpbikKLSAgICAgICAgcmV0dXJuIG93bmVyRnJhbWVPcmlnaW47Ci0KLSAgICByZXR1cm4gb3Jp
Z2luLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3IFNlY3VyaXR5T3JpZ2luKHVybCk7CiB9CiAK
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGb3JGcmFt
ZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZSgiIiwgIiIsIDAsIDApOworICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAKICAgICBG
cmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgIGNvbnN0IEtVUkwmIHVy
bCA9IGxvYWRlci0+dXJsKCk7CkBAIC0xMTEsMTkgKzExMiwyNyBAQCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpCiAgICAgaWYgKG93bmVyRnJhbWUgJiYgb3duZXJGcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgb3duZXJGcmFtZU9yaWdpbiA9IG93bmVyRnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICByZXR1cm4gY3JlYXRlKHVybC5wcm90
b2NvbCgpLCB1cmwuaG9zdCgpLCB1cmwucG9ydCgpLCBvd25lckZyYW1lT3JpZ2luKTsKKyAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGNyZWF0ZSh1cmwpOworCisgICAgLy8gSWYg
d2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhlbiB3
ZSB0cnkgdG8gZmluZCBvbmUKKyAgICAvLyB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KKyAgICAv
LyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcg
MTUzMTMKKyAgICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMx
MworICAgIGlmIChvcmlnaW4tPmlzRW1wdHkoKSAmJiBvd25lckZyYW1lT3JpZ2luKQorICAgICAg
ICByZXR1cm4gb3duZXJGcmFtZU9yaWdpbjsKKworICAgIHJldHVybiBvcmlnaW4ucmVsZWFzZSgp
OwogfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y29weSgp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShtX3Byb3RvY29sLmNvcHkoKSwgbV9ob3N0LmNvcHkoKSwg
bV9wb3J0LCAwKTsKKyAgICByZXR1cm4gbmV3IFNlY3VyaXR5T3JpZ2luKHRoaXMpOwogfQogCi0K
IHZvaWQgU2VjdXJpdHlPcmlnaW46OnNldERvbWFpbkZyb21ET00oY29uc3QgU3RyaW5nJiBuZXdE
b21haW4pCiB7CiAgICAgbV9kb21haW5XYXNTZXRJbkRPTSA9IHRydWU7Ci0gICAgbV9ob3N0ID0g
bmV3RG9tYWluLmxvd2VyKCk7CisgICAgbV9kb21haW4gPSBuZXdEb21haW4ubG93ZXIoKTsKIH0K
IAogYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
dGhlciwgUmVhc29uJiByZWFzb24pIGNvbnN0CkBAIC0xNjYsNyArMTc1LDcgQEAgYm9vbCBTZWN1
cml0eU9yaWdpbjo6Y2FuQWNjZXNzKGNvbnN0IFNlYwogICAgICAgICAgICAgaWYgKG1faG9zdCA9
PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0KQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKG1fZG9tYWluV2FzU2V0SW5ET00g
JiYgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pIHsKLSAgICAgICAgICAgIGlmIChtX2hvc3Qg
PT0gb3RoZXItPm1faG9zdCkKKyAgICAgICAgICAgIGlmIChtX2RvbWFpbiA9PSBvdGhlci0+bV9k
b21haW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLT5tX2hvc3QgJiYgbV9wb3J0ID09IG90aGVy
LT5tX3BvcnQpIHsKQEAgLTE4Niw1NSArMTk1LDEwMyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpp
c1NlY3VyZVRyYW5zaXRpb25UCiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAoRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0U2NoZW1lQXNMb2NhbChtX3By
b3RvY29sKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0Nhc2UobV9ob3N0LCBTdHJpbmcodXJsLmhvc3QoKSkpICYmIGVxdWFsSWdub3JpbmdDYXNlKG1f
cHJvdG9jb2wsIFN0cmluZyh1cmwucHJvdG9jb2woKSkpICYmIG1fcG9ydCA9PSB1cmwucG9ydCgp
OworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3RoZXIgPSBuZXcgU2VjdXJpdHlPcmlnaW4o
dXJsKTsKKyAgICBSZWFzb24gcmVhc29uOworICAgIHJldHVybiBjYW5BY2Nlc3Mob3RoZXIuZ2V0
KCksIHJlYXNvbik7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBtX3Byb3RvY29sICsgIjoiICsgbV9ob3N0ICsgIjoiICsgU3RyaW5n
OjpudW1iZXIobV9wb3J0KTsKKyAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBT
dHJpbmcoImZpbGU6Ly8iKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OworICAgIHJlc3Vs
dC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSAr
IDEwKTsKKyAgICBhcHBlbmQocmVzdWx0LCBtX3Byb3RvY29sKTsKKyAgICBhcHBlbmQocmVzdWx0
LCAiOi8vIik7CisgICAgYXBwZW5kKHJlc3VsdCwgbV9ob3N0KTsKKworICAgIGlmIChtX3BvcnQp
IHsKKyAgICAgIGFwcGVuZChyZXN1bHQsICI6Iik7CisgICAgICBhcHBlbmQocmVzdWx0LCBTdHJp
bmc6Om51bWJlcihtX3BvcnQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChy
ZXN1bHQpOworfQorCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICByZXR1
cm4gbmV3IFNlY3VyaXR5T3JpZ2luKEtVUkwob3JpZ2luU3RyaW5nKSk7CiB9CiAKIHN0YXRpYyBj
b25zdCBjaGFyIFNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKIAotUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21JZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nSWRlbnRpZmllcikKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZGVudGlmaWVyKQogeyAKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFy
YXRvcgotICAgIGludCBzZXBhcmF0b3IxID0gc3RyaW5nSWRlbnRpZmllci5maW5kKFNlcGFyYXRv
ckNoYXJhY3Rlcik7CisgICAgaW50IHNlcGFyYXRvcjEgPSBkYXRhYmFzZUlkZW50aWZpZXIuZmlu
ZChTZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBhcmF0b3IxID09IC0xKQotICAgICAg
ICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VS
TCgpKTsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJh
dG9yCi0gICAgaW50IHNlcGFyYXRvcjIgPSBzdHJpbmdJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9y
Q2hhcmFjdGVyLCBzZXBhcmF0b3IxICsgMSk7CisgICAgaW50IHNlcGFyYXRvcjIgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIsIHNlcGFyYXRvcjEgKyAxKTsKICAg
ICBpZiAoc2VwYXJhdG9yMiA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAs
IDApOworICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAgIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGVyZSdzIG5vdCBhIHRoaXJkIHNlcGFyYXRvcgotICAgIGlmIChzdHJpbmdJZGVu
dGlmaWVyLnJldmVyc2VGaW5kKFNlcGFyYXRvckNoYXJhY3RlcikgIT0gc2VwYXJhdG9yMikKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAgIGlmIChkYXRhYmFzZUlkZW50
aWZpZXIucmV2ZXJzZUZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyKSAhPSBzZXBhcmF0b3IyKQorICAg
ICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdAog
ICAgIGJvb2wgcG9ydE9rYXk7Ci0gICAgaW50IHBvcnQgPSBzdHJpbmdJZGVudGlmaWVyLnJpZ2h0
KHN0cmluZ0lkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRP
a2F5KTsKLSAgICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRvcjIgKyAxID09IHN0YXRpY19jYXN0
PGludD4oc3RyaW5nSWRlbnRpZmllci5sZW5ndGgoKSkpCi0gICAgICAgIHJldHVybiBjcmVhdGUo
IiIsICIiLCAwLCAwKTsKKyAgICBpbnQgcG9ydCA9IGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChk
YXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRP
a2F5KTsKKyAgICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRvcjIgKyAxID09IHN0YXRpY19jYXN0
PGludD4oZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZShLVVJMKCkpOwogICAgIAogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gNjU1MzUpCi0gICAg
ICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShL
VVJMKCkpOwogICAgICAgICAKICAgICAvLyBTcGxpdCBvdXQgdGhlIDMgc2VjdGlvbnMgb2YgZGF0
YQotICAgIFN0cmluZyBwcm90b2NvbCA9IHN0cmluZ0lkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNl
cGFyYXRvcjEpOwotICAgIFN0cmluZyBob3N0ID0gc3RyaW5nSWRlbnRpZmllci5zdWJzdHJpbmco
c2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7Ci0gICAgcmV0dXJu
IGNyZWF0ZShwcm90b2NvbCwgaG9zdCwgcG9ydCwgMCk7CisgICAgU3RyaW5nIHByb3RvY29sID0g
ZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKKyAgICBTdHJpbmcg
aG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFy
YXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7CisgICAgcmV0dXJuIGNyZWF0ZShLVVJMKHByb3RvY29s
ICsgIjovLyIgKyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkpKTsKIH0KLSAgICAK
LSAgICAKLVN0cmluZyBTZWN1cml0eU9yaWdpbjo6c3RyaW5nSWRlbnRpZmllcigpIGNvbnN0IAor
CitTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0IAogewog
ICAgIHN0YXRpYyBTdHJpbmcgc2VwYXJhdG9yU3RyaW5nID0gU3RyaW5nKCZTZXBhcmF0b3JDaGFy
YWN0ZXIsIDEpOwogICAgIHJldHVybiBtX3Byb3RvY29sICsgc2VwYXJhdG9yU3RyaW5nICsgbV9o
b3N0ICsgc2VwYXJhdG9yU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9wb3J0KTsgCiB9CiAKK2Jv
b2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29u
c3QgCit7CisgICAgaWYgKCFpc1NhbWVTY2hlbWVIb3N0UG9ydChvdGhlcikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX2RvbWFpbldhc1NldEluRE9NICE9IG90aGVyLT5tX2Rv
bWFpbldhc1NldEluRE9NKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9kb21h
aW5XYXNTZXRJbkRPTSAmJiBtX2RvbWFpbiAhPSBvdGhlci0+bV9kb21haW4pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNlY3VyaXR5T3JpZ2lu
Ojppc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0
IAoreworICAgIGlmIChtX2hvc3QgIT0gb3RoZXItPm1faG9zdCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG1fcHJvdG9jb2wgIT0gb3RoZXItPm1fcHJvdG9jb2wpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3BvcnQgIT0gb3RoZXItPm1fcG9ydCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDMxNjY1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MywxNCArNDMsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNlY3VyaXR5
T3JpZ2luIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8U2VjdXJpdHlPcmlnaW4+IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVG
b3JGcmFtZShGcmFtZSopOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gY3JlYXRlRnJvbUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
Y29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0LCBTZWN1cml0eU9yaWdpbiog
b3duZXJGcmFtZU9yaWdpbik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNy
ZWF0ZShjb25zdCBLVVJMJik7CiAKICAgICAgICAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
Y29weSgpOwogCiAgICAgICAgIHZvaWQgc2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5l
d0RvbWFpbik7Ci0gICAgICAgIFN0cmluZyBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9
CiAgICAgICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0K
KyAgICAgICAgU3RyaW5nIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KKyAgICAgICAg
U3RyaW5nIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9tYWluOyB9CiAgICAgICAgIHVuc2ln
bmVkIHNob3J0IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQ7IH0KICAgICAgICAgCiAgICAg
ICAgIGVudW0gUmVhc29uICB7CkBAIC02MiwxOSArNjQsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgICAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIFN0cmluZyBzdHJpbmdJZGVudGlmaWVyKCkg
Y29uc3Q7CiAKLSAgICAgICAgLy8gZG8gbm90IHVzZSB0aGlzIGZvciBhY2Nlc3MgY2hlY2tzLCBp
dCdzIHRoZXJlIG9ubHkgZm9yIHVzaW5nIHRoaXMgYXMgYSBoYXNodGFibGUga2V5Ci0gICAgICAg
IGJvb2wgZXF1YWwoU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Byb3Rv
Y29sID09IG90aGVyLT5tX3Byb3RvY29sICYmIG1faG9zdCA9PSBvdGhlci0+bV9ob3N0ICYmIG1f
cG9ydCA9PSBvdGhlci0+bV9wb3J0OyB9CisgICAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2VjdXJp
dHkgb3JpZ2luIGZvciBzdG9yYWdlIGluIHRoZSBkYXRhYmFzZS4gVGhpcyBmb3JtYXQgaXMKKyAg
ICAgICAgLy8gZGVwcmVjYXRlZCBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgY29tcGF0aWJp
bGl0eSB3aXRoIG9sZCBkYXRhYmFzZXM7CisgICAgICAgIC8vIHVzZSB0b1N0cmluZygpIGFuZCBj
cmVhdGVGcm9tU3RyaW5nKCkgaW5zdGVhZC4KKyAgICAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRp
ZmllcigpIGNvbnN0OworCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxp
dHkgYmV0d2VlbiBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCisgICAgICAgIC8vIG9uZSBv
cmlnaW4gY2FuIGFjY2VzcyBhbm90aGVyLiAgSXQgaXMgdXNlZCBmb3IgaGFzaCB0YWJsZSBrZXlz
LgorICAgICAgICAvLyBGb3IgYWNjZXNzIGNoZWNrcywgdXNlIGNhbkFjY2VzcygpLgorICAgICAg
ICAvLyBGSVhNRTogSWYgdGhpcyBtZXRob2QgaXMgcmVhbGx5IG9ubHkgdXNlZnVsIGZvciBoYXNo
IHRhYmxlIGtleXMsIGl0CisgICAgICAgIC8vIHNob3VsZCBiZSByZWZhY3RvcmVkIGludG8gU2Vj
dXJpdHlPcmlnaW5IYXNoLgorICAgICAgICBib29sIGVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KikgY29uc3Q7CisKKyAgICAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tzIGZvciBlcXVhbGl0eSwg
aWdub3JpbmcgdGhlIHZhbHVlIG9mIGRvY3VtZW50LmRvbWFpbgorICAgICAgICAvLyAoYW5kIHdo
ZXRoZXIgaXQgd2FzIHNldCkgYnV0IGNvbnNpZGVyaW5nIHRoZSBob3N0LiBJdCBpcyB1c2VkIGZv
ciBwb3N0TWVzc2FnZS4KKyAgICAgICAgYm9vbCBpc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBT
ZWN1cml0eU9yaWdpbiopIGNvbnN0OwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBT
ZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3Qs
IHVuc2lnbmVkIHNob3J0IHBvcnQpOworICAgICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihj
b25zdCBLVVJMJik7CisgICAgICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKik7CiAKICAgICAgICAgU3RyaW5nIG1fcHJvdG9jb2w7CiAgICAgICAgIFN0cmlu
ZyBtX2hvc3Q7CisgICAgICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICAgICAgdW5zaWduZWQgc2hv
cnQgbV9wb3J0OwotICAgICAgICBib29sIG1fcG9ydFNldDsKICAgICAgICAgYm9vbCBtX25vQWNj
ZXNzOwogICAgICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET007CiAgICAgfTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luSGFzaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWZuZGVmIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAjZGVmaW5lIFNlY3VyaXR5
T3JpZ2luSGFzaF9oCiAKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTYwLDggKzYxLDggQEAgc3RydWN0
IFNlY3VyaXR5T3JpZ2luVHJhaXRzIDogV1RGOjpHZW5lcgogICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+JiBkZWxldGVkVmFsdWUoKSAKICAgICB7IAotICAgICAgICAvLyBPa2F5IGRlbGV0
ZWQgdmFsdWUgYmVjYXVzZSBmaWxlOiBwcm90b2NvbHMgc2hvdWxkIGFsd2F5cyBoYXZlIHBvcnQg
MAotICAgICAgICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbkRlbGV0ZWRWYWx1ZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImZpbGUiLCAiIiwgMSwg
MCk7ICAgIAorICAgICAgICAvLyBPa2F5IGRlbGV0ZWQgdmFsdWUgYmVjYXVzZSAiaW52YWxpZC1w
cm90b2NvbCIgaXMgbm90IGEgdmFsaWQgcHJvdG9jb2wuCisgICAgICAgIHN0YXRpYyBjb25zdCBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRGVsZXRlZFZhbHVlID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShLVVJMKCJpbnZhbGlkLXByb3RvY29sOiIpKTsKICAgICAgICAgcmV0
dXJuIHNlY3VyaXR5T3JpZ2luRGVsZXRlZFZhbHVlOyAKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAg
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yRGF0YWJhcwogICAgIGlmIChzdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAg
IHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIAogICAgIHJldHVy
biBzdGF0ZW1lbnQuc3RlcCgpID09IFNRTFJlc3VsdFJvdzsKQEAgLTE4OSw3ICsxODksNyBAQCBT
dHJpbmcgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5QYXRoKFNlY3VyCiAgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RocmVhZCk7CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi0+c3RyaW5n
SWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAog
U3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOb3RFeGlzdHMpCkBA
IC0xOTksNyArMTk5LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRh
YgogICAgIGlmIChtX3Byb3Bvc2VkRGF0YWJhc2UgJiYgbV9wcm9wb3NlZERhdGFiYXNlLT5maXJz
dCA9PSBvcmlnaW4gJiYgbV9wcm9wb3NlZERhdGFiYXNlLT5zZWNvbmQubmFtZSgpID09IG5hbWUp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVy
ID0gb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIgPSBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIFN0cmluZyBvcmlnaW5QYXRo
ID0gdGhpcy0+b3JpZ2luUGF0aChvcmlnaW4pOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUg
cGF0aCBmb3IgdGhpcyBTZWN1cml0eU9yaWdpbiBleGlzdHMKQEAgLTIyNiw3ICsyMjYsNyBAQCBT
dHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKICAgICAgICAgCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIGZpbGVuYW1lIGZyb20gRGF0YWJh
c2UgVHJhY2tlciBmb3Igb3JpZ2luICVzLCBuYW1lICVzIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlm
aWVyKCkuYXNjaWkoKS5kYXRhKCksIG5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBmaWxlbmFtZSBmcm9tIERhdGFiYXNlIFRyYWNrZXIg
Zm9yIG9yaWdpbiAlcywgbmFtZSAlcyIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNj
aWkoKS5kYXRhKCksIG5hbWUuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgfQogICAgIHN0YXRlbWVudC5maW5hbGl6ZSgpOwpAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpwb3B1bGF0ZU9yaWdpbnMoKQogCiAgICAgaW50IHJlc3Vs
dDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJv
dykgewotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tSWRlbnRpZmllcihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7Cisg
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOwog
ICAgICAgICBtX3F1b3RhTWFwLT5zZXQob3JpZ2luLmdldCgpLCBzdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50NjQoMSkpOwogICAgIH0KIApAQCAtMzE2LDE0ICszMTYsMTQgQEAgYm9vbCBEYXRhYmFzZVRy
YWNrZXI6OmRhdGFiYXNlTmFtZXNGb3JPcgogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmlu
ZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVudC5iaW5k
VGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIGludCByZXN1bHQ7
CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cp
CiAgICAgICAgIHJlc3VsdFZlY3Rvci5hcHBlbmQoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkp
OwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIHJldHJpZXZlIGFsbCBkYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwg
b3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBhbGwgZGF0YWJhc2UgbmFtZXMgZm9yIG9yaWdpbiAl
cyIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgRGF0YWJhc2VEZXRh
aWxzIERhdGFiYXNlVHJhY2tlcjo6ZGV0YWlscwogICAgIGlmIChtX3Byb3Bvc2VkRGF0YWJhc2Ug
JiYgbV9wcm9wb3NlZERhdGFiYXNlLT5maXJzdCA9PSBvcmlnaW4gJiYgbV9wcm9wb3NlZERhdGFi
YXNlLT5zZWNvbmQubmFtZSgpID09IG5hbWUpCiAgICAgICAgIHJldHVybiBtX3Byb3Bvc2VkRGF0
YWJhc2UtPnNlY29uZDsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5z
dHJpbmdJZGVudGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4t
PmRhdGFiYXNlSWRlbnRpZmllcigpOwogCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7
CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMKIHsKICAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fdGhyZWFkKTsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0g
b3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIg
PSBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIGludDY0X3QgZ3VpZCA9IDA7CiAg
ICAgCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZSh0cnVlKTsKQEAgLTU0NSwyNiArNTQ1LDI2IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0eU8KICAgICAgICAgaWYgKCFt
X3F1b3RhTWFwLT5jb250YWlucyhvcmlnaW4pKSB7CiAgICAgICAgICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBPcmlnaW5zIFZBTFVFUyAoPywg
PykiKTsKICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9r
KSB7Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdp
biAlcyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2gg
b3JpZ2luICVzIGluIHRoZSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN0
YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgICAg
ICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCkpOwogICAgICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMiwgcXVvdGEpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkKLSAg
ICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAl
cyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNo
IG9yaWdpbiAlcyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCku
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIE9yaWdp
bnMgU0VUIHF1b3RhPT8gV0hFUkUgb3JpZ2luPT8iKTsgICAgICAgIAogICAgICAgICAgICAgYm9v
bCBlcnJvciA9IHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2s7CiAgICAgICAgICAg
ICBpZiAoIWVycm9yKSB7CiAgICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBx
dW90YSk7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+c3Ry
aW5nSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICAgICAgICAgICAgICBlcnJvciA9
ICFzdGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBx
dW90YSAlbGx1IGluIHRyYWNrZXIgZGF0YWJhc2UgZm9yIG9yaWdpbiAlcyIsIHF1b3RhLCBvcmln
aW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHF1b3RhICVsbHUgaW4gdHJhY2tlciBkYXRhYmFzZSBm
b3Igb3JpZ2luICVzIiwgcXVvdGEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWko
KS5kYXRhKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IElzIGl0IHJlYWxseSBP
SyB0byB1cGRhdGUgdGhlIHF1b3RhIGluIG1lbW9yeSBpZiB3ZSBmYWlsZWQgdG8gdXBkYXRlIGl0
IG9uIGRpc2s/CkBAIC01OTAsMTIgKzU5MCwxMiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6YWRk
RGF0YWJhc2UoU2VjdXJpCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0
T2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBv
cmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBu
YW1lKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMywgcGF0aCk7CiAKICAgICBpZiAoIXN0YXRl
bWVudC5leGVjdXRlQ29tbWFuZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGFk
ZCBkYXRhYmFzZSAlcyB0byBvcmlnaW4gJXM6ICVzXG4iLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBv
cmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGFkZCBkYXRhYmFzZSAl
cyB0byBvcmlnaW4gJXM6ICVzXG4iLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFi
YXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTYyNSw0MCArNjI1LDQw
IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXIKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGRhdGFiYXNlTmFtZXM7CiAgICAgaWYgKCFkYXRhYmFzZU5hbWVzRm9yT3JpZ2lu
KG9yaWdpbiwgZGF0YWJhc2VOYW1lcykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
cmV0cmlldmUgbGlzdCBvZiBkYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5z
dHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byByZXRyaWV2ZSBsaXN0IG9mIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBv
cmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YWJhc2VO
YW1lcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIWRlbGV0ZURhdGFiYXNlRmlsZShvcmln
aW4sIGRhdGFiYXNlTmFtZXNbaV0pKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgZGF0YWJhc2VOYW1l
c1tpXS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOworICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9y
IGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIGRhdGFiYXNlTmFtZXNbaV0uYXNjaWkoKS5kYXRh
KCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIFNRTGl0ZVN0YXRlbWVu
dCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmln
aW49PyIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2Vz
IGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigp
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBk
ZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2lu
LT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgICAgIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmlu
Z0lkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogICAgIAogICAgIGlmICghc3RhdGVtZW50LmV4ZWN1dGVDb21tYW5k
KCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBk
YXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVu
dGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBl
eGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIi
LCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgb3JpZ2luU3RhdGVtZW50
KG1fZGF0YWJhc2UsICJERUxFVEUgRlJPTSBPcmlnaW5zIFdIRVJFIG9yaWdpbj0/Iik7CiAgICAg
aWYgKG9yaWdpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBvcmlnaW4gJXMgZnJvbSB0
cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIG9yaWdpbiAlcyBm
cm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9yaWdpblN0YXRlbWVudC5iaW5kVGV4
dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgb3JpZ2luU3RhdGVtZW50LmJp
bmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIAogICAgIGlmICgh
b3JpZ2luU3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJv
bSB0cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNl
cyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjk2LDIx
ICs2OTYsMjEgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKFNlYwogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUp
KSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFz
ZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0cmluZ0lk
ZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLmFzY2lpKCku
ZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsICJERUxFVEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5h
bWU9PyIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2Ug
JXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3Jp
Z2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2lu
ICVzIGZyb20gdHJhY2tlciIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
ICAgICAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVy
KCkpOworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgbmFtZSk7CiAgICAgCiAgICAgaWYgKCFz
dGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJh
Y2tlciIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFz
Y2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxl
dGlvbiBvZiBkYXRhYmFzZSAlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBuYW1lLmFz
Y2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFn
ZS9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3JhZ2Uv
V2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDMxNjY1KQorKysgV2ViS2l0L21hYy9TdG9y
YWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNCArMjksMTkg
QEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8V2Vi
Q29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luCi0KLS0gKGlkKWluaXRXaXRoUHJv
dG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbgotewot
ICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFByb3RvY29sOnByb3RvY29sIGRvbWFpbjpkb21haW4g
cG9ydDowXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhQcm90b2NvbDooTlNTdHJpbmcgKilwcm90b2Nv
bCBkb21haW46KE5TU3RyaW5nICopZG9tYWluIHBvcnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQKKy0g
KGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbCwg
ZG9tYWluLCBwb3J0LCAwKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSk7CiAgICAgb3Jp
Z2luLT5yZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlP
cmlnaW5Qcml2YXRlKj4ob3JpZ2luLmdldCgpKTsKIApAQCAtNTgsNyArNTMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9y
aWdpbio+KF9wcml2YXRlKS0+cHJvdG9jb2woKTsKIH0KIAotLSAoTlNTdHJpbmcqKWRvbWFpbgor
LSAoTlNTdHJpbmcqKWhvc3QKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0
eU9yaWdpbio+KF9wcml2YXRlKS0+aG9zdCgpOwogfQpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdl
L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3Rv
cmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDExICszMiwxMCBAQAogICAgIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqX3ByaXZh
dGU7CiB9CiAKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9t
YWluOihOU1N0cmluZyAqKWRvbWFpbjsKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5n
ICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBwb3J0Oih1bnNpZ25lZCBzaG9y
dClwb3J0OworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwogCiAtIChOU1N0cmluZyop
cHJvdG9jb2w7Ci0tIChOU1N0cmluZyopZG9tYWluOworLSAoTlNTdHJpbmcqKWhvc3Q7CiAKIC8v
IFJldHVybnMgemVybyBpZiB0aGUgcG9ydCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgcHJv
dG9jb2wsIG5vbi16ZXJvIG90aGVyd2lzZQogLSAodW5zaWduZWQgc2hvcnQpcG9ydDsKSW5kZXg6
IFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYktpdC93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICByZXR1cm4gU19PSzsK
IH0KICAgICAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpZ2lu
Ojpkb21haW4oIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaWdpbjo6
aG9zdCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYg
KCFyZXN1bHQpCkluZGV4OiBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAzMTY2NSkKKysr
IFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBy
b3RvY29sKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwogICAg
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9tYWluKCAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaG9zdCggCiAgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKICAgICAgICAgCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHBvcnQoIApJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJTZWN1cml0eU9yaWdpbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOwogaW50ZXJmYWNlIElXZWJTZWN1cml0eU9y
aWdpbiA6IElVbmtub3duCiB7CiAgICAgSFJFU1VMVCBwcm90b2NvbChbb3V0LCByZXR2YWxdIEJT
VFIqIHJlc3VsdCk7Ci0gICAgSFJFU1VMVCBkb21haW4oW291dCwgcmV0dmFsXSBCU1RSKiByZXN1
bHQpOworICAgIEhSRVNVTFQgaG9zdChbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7CiAgICAg
SFJFU1VMVCBwb3J0KFtvdXQsIHJldHZhbF0gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCk7CiAKICAg
ICBIUkVTVUxUIHVzYWdlKFtvdXQsIHJldHZhbF0gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQp
OwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRD
dXN0b21Qb2xpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERhdGFiYXNlUXVvdGEo
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogeyAgICAKLSAgICBXZWJTZWN1cml0eU9yaWdpbiAq
b3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhQcm90b2NvbDpAImZp
bGUiIGRvbWFpbjpuaWxdOworICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZp
bGU6Ly8vIl1dOwogICAgIFtvcmlnaW4gc2V0UXVvdGE6cXVvdGFdOwogICAgIFtvcmlnaW4gcmVs
ZWFzZV07CiB9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIER1bXBS
ZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2luZ0luZm8KIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFiYXNlUXVv
dGFGb3JTZWN1cml0eU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGF0YWJhc2U6
KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7CiAgICAgaWYgKCFkb25lICYmIGxheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wRGF0YWJhc2VDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRm
KCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9y
U2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdpbiBwcm90
b2NvbF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGRvbWFpbl0gVVRGOFN0cmluZ10sIAorICAgICAg
ICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERhdGFiYXNl
UXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gZGF0YWJhc2U6JXNcbiIsIFtbb3Jp
Z2luIHByb3RvY29sXSBVVEY4U3RyaW5nXSwgW1tvcmlnaW4gaG9zdF0gVVRGOFN0cmluZ10sIAog
ICAgICAgICAgICAgW29yaWdpbiBwb3J0XSwgW2RhdGFiYXNlSWRlbnRpZmllciBVVEY4U3RyaW5n
XSk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9
IDUgKiAxMDI0ICogMTAyNDsgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3Nh
Z2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1z
ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKIAotZGF0YTogU29tZXRoaW5nIHVyaTogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLmh0bWwg
ZG9tYWluOiAxMjcuMC4wLjEKK2RhdGE6IFNvbWV0aGluZyBvcmlnaW46IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2Vz
L2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2Ut
cmVjZWl2ZS5odG1sCShyZXZpc2lvbiAzMTY2NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTksOCArOSw3IEBACiBmdW5jdGlvbiByZWNlaXZlcihlKSB7CiAgICAg
dmFyIHJlc3VsdCA9ICIiOwogICAgIHJlc3VsdCArPSAiZGF0YTogIiArIGUuZGF0YSArICJcbiI7
Ci0gICAgcmVzdWx0ICs9ICJ1cmk6ICIgKyBlLnVyaSArICJcbiI7Ci0gICAgcmVzdWx0ICs9ICJk
b21haW46ICIgKyBlLmRvbWFpbiArICJcbiI7CisgICAgcmVzdWx0ICs9ICJvcmlnaW46ICIgKyBl
Lm9yaWdpbiArICJcbiI7CiAgICAgZS5zb3VyY2UucG9zdE1lc3NhZ2UocmVzdWx0KTsgICAKIH0K
IApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21h
aW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1h
bmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMTY2
NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWlu
LWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5
LWJhc2UtdGFnLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9tIHBh
cmVudCIgZG9tYWluPSIxMjcuMC4wLjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRt
bCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmkt
dW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCShyZXZpc2lvbiAzMTY2NSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rp
b24gcmVjdihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0
Q2hpbGQuZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQotZnVuY3Rp
b24gdGVzdCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2No
aWxkJyk7Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAgIHdpbi5wb3N0
TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotPC9zY3JpcHQ+Ci08YmFzZSBocmVm
PSJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9u
LmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3Nj
cmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9u
bG9hZD0idGVzdCgpIgotICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHls
ZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0i
cmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRv
Y3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMxNjY1KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzAsMCBA
QAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKLWRv
Y3VtZW50LmRvbWFpbiA9IDAuMC4xCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2Ug
ZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21h
aW4uaHRtbCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5h
ZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVk
LWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVu
Y3Rpb24gcmVjdihlKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZp
cnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQot
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQotZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NoaWxkJyk7Ci0gICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OwotICAgIHdpbi5w
b3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOwotfQotCi1kb2N1bWVudC5kb21haW4g
PSAiMC4wLjEiOwotPC9zY3JpcHQ+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYg
PSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48
L2Rpdj4KLTxkaXY+ZG9jdW1lbnQuZG9tYWluID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1
bWVudC5kb21haW4pOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2Ut
bGlzdGVuZXIuaHRtbCIgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIKLSAgc3R5
bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCkiPgotPC9pZnJhbWU+
PC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52
YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdp
bi10aHJvd3MtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dz
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGFzZGY6LiBS
ZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6LiBSZWNpcGllbnQg
aGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIC90bXAvZm9vLiBSZWNpcGllbnQgaGFzIG9y
aWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBV
bmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIC8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9yaWdp
biBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93
cy1leGNlcHRpb24uaHRtbAorCit3YWl0aW5nLi4uCitFbmNvdW50ZXJlZCBleGNlcHRpb24gRXJy
b3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIgd2hpbGUgcG9zdGluZyBtZXNzYWdlIHRv
ICcnLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0
aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnYXNkZicuCitQb3N0ZWQgbWVzc2FnZSB0
byAnYXNkZjonIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAnaHR0
cDonIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAnL3RtcC9mb28n
IHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCitQb3N0ZWQgbWVzc2FnZSB0byAnLy9sb2NhbGhvc3Qn
IHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4t
dGhyb3dzLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPiIgKyBlLmRh
dGE7Cit9CisgCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFs
c2UpOworCitmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZShvcmlnaW4pIHsKKyAgdHJ5IHsKKyAgICB3
aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBvcmlnaW49IiArIG9yaWdpbiwgb3JpZ2luKTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+UG9zdGVk
IG1lc3NhZ2UgdG8gJyIgKyBvcmlnaW4gKyAiJyB3aXRob3V0IGFueSBleGNlcHRpb25zLiI7Cisg
IH0gY2F0Y2goZXgpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5u
ZXJIVE1MICs9ICI8YnI+RW5jb3VudGVyZWQgZXhjZXB0aW9uICIgKyBleCArICIgd2hpbGUgcG9z
dGluZyBtZXNzYWdlIHRvICciICsgb3JpZ2luICsgIicuIjsKKyAgfQorfQorCitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQn
KTsKKyAgICB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKworICAgIC8vIE5vbi1VUkxzIHNo
b3VsZCBmYWlsIHdpdGggYSBzeW50YXggZXJyb3IuCisgICAgdHJ5UG9zdE1lc3NhZ2UoIiIpOwor
ICAgIHRyeVBvc3RNZXNzYWdlKCJhc2RmIik7CisKKyAgICAvLyBVUkxzIHdpdGhvdXQgYW4gb3Jp
Z2luIHNob3VsZCBmYWlsIHdpdGhvdXQgZ2VuZXJhdGluZyBhbnkgZXJyb3JzLgorICAgIHRyeVBv
c3RNZXNzYWdlKCJhc2RmOiIpOworICAgIHRyeVBvc3RNZXNzYWdlKCJodHRwOiIpOworCisgICAg
Ly8gV2ViS2l0IGNvbnZlcnRzIFVSTHMgdGhhdCBzdGFydCB3aXRoIC8gdG8gZmlsZTovLyBVUkxz
LiBUaGV5IGRvbid0IG1hdGNoIHRoZSB0YXJnZXQgZnJhbWUsIHNvIHRoZXkgZmFpbCBzaWxlbnRs
eS4KKyAgICB0cnlQb3N0TWVzc2FnZSgiL3RtcC9mb28iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSgi
Ly9sb2NhbGhvc3QiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0Pgor
PGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0
ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3Jj
PSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bv
c3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxkIiB3
aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+
Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAzMTY2NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2Vu
ZHMtZG9tYWluLmh0bWwKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iSGVsbG8gZnJvbSBjaGls
ZCIgZG9tYWluPSJsb2NhbGhvc3QiIHVyaT0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRt
bCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2
YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0
aWxsLXNlbmRzLWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMTY2NSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMxICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gcmVjdihl
KSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsg
JyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKLQotICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBtc2c7
Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0
cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTs8L3Njcmlw
dD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0
bWwiCi0gIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6
IDFweCBzb2xpZCBibGFjazsiPgotPC9pZnJhbWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPndh
aXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
b3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACit3aW5kb3cubG9jYXRpb24uaHJl
ZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0
LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKworUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0i
SGVsbG8gZnJvbSBjaGlsZCIgb3JpZ2luPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1v
cmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5o
dG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICB2YXIgbXNnID0gJ1JlY2VpdmVk
IG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICci
IHVyaT0iJyArIGUudXJpICsgJyInOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsK
KworPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+Cis8Ym9k
eT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRv
Y3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0iODAw
IiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lmcmFt
ZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1z
ZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogfQogCiBmdW5jdGlvbiByZWN2KGUpIHsKLSAgICB2
YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49
IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOworICAgIHZhciBtc2cgPSAn
UmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIG9yaWdpbj0iJyArIGUub3Jp
Z2luICsgJyInOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0
Q2hpbGQuZGF0YSA9IG1zZzsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11
bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzIEBACit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCisKK1Jl
Y2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9yaWdpbj0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZy
YW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlm
cmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBh
cmVudCcpOworfQorPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29t
LyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50
LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFt
ZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJj
ZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgpIgorICBpZD0iY2hp
bGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLmh0bWwKK2RvY3VtZW50LmRvbWFpbiA9IDAuMC4xCisKK1JlY2Vp
dmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9yaWdpbj0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdp
bi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMDUxNSkJKGZy
b20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5h
ZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2
KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5k
YXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsK
KyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2luLnBvc3RNZXNzYWdl
KCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9CisKK2RvY3VtZW50LmRvbWFpbiA9ICIwLjAuMSI7
Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+
ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRp
dj5kb2N1bWVudC5kb21haW4gPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50LmRvbWFp
bik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5o
dG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIgorICBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7IiBvbmxvYWQ9InRlc3QoKSI+Cis8L2lmcmFtZT48L2Rpdj4KKzxk
aXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2lu
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3Jp
Z2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL2xvY2FsaG9z
dDo5MDkwLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6Ly9s
b2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKwor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cHM6
Ly9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4K
KworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0
cHM6Ly9sb2NhbGhvc3Q6ODAwMC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9z
dDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2Fn
ZSB0byBodHRwOi8vd3d3LmV4YW1wbGUuY29tLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8v
bG9jYWxob3N0OjgwMDAuCisKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAorCit3YWl0aW5n
Li4uCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdl
OiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iIG9yaWdpbj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdp
bj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9z
dDo4MDAwL2Zvbz9iYXIiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vP2Jh
ciNiYXoiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTog
ZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vdXNlcjpwYXNzQGxvY2FsaG9zdDo4MDAwL2Zvbz9i
YXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6
IGRhdGE9IlRyeWluZyBvcmlnaW49bnVsbCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAi
CitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPXVuZGVmaW5lZCIgb3JpZ2lu
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
ckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2Uod2lu
LCBvcmlnaW4pIHsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBvcmlnaW49IiArIG9yaWdp
biwgb3JpZ2luKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlmcmFtZS5jb250
ZW50V2luZG93OworCisgICAgLy8gU2hvdWxkIHN1Y2NlZWQ6CisgICAgdHJ5UG9zdE1lc3NhZ2Uo
d2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwLyIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9mb28iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8v
bG9jYWxob3N0OjgwMDAvZm9vP2JhciIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwg
Imh0dHA6Ly91c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiKTsKKyAgICB0cnlQ
b3N0TWVzc2FnZSh3aW4sIG51bGwpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgdW5kZWZpbmVk
KTsKKworICAgIC8vIFNob3VsZCBmYWlsOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6
Ly9sb2NhbGhvc3Q6OTA5MCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2Nh
bGhvc3QiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczovL2xvY2FsaG9zdCIpOwor
ICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0OjgwMDAiKTsKKyAgICB0
cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7CisKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRp
b24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwv
c2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIg
b25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0
eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlk
PSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVz
c2FnZS1saXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1s
CShyZXZpc2lvbiAzMTY2NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00LDcgKzQsNyBAQAogPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+
ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgogPHNj
cmlwdD4KIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2Fn
ZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSIn
ICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSIn
ICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7CiAgICAgdG9wLnBvc3RN
ZXNzYWdlKG1zZyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20358</attachid>
            <date>2008-04-05 19:32:17 -0700</date>
            <delta_ts>2008-04-05 19:38:52 -0700</delta_ts>
            <desc>Updated patch that fixes postMessage without changing database identifiers</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>70510</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTY2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDgtMDQtMDUgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorICAgICAg
ICBGaXhlcyBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDgK
KyAgICAgICAgCisgICAgICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8g
bWF0Y2ggSFRNTCA1IHNwZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFt
ZXRlciB0byBwb3N0TWVzc2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBh
dHRyaWJ1dGVzIG9mIE1lc3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4g
YXR0cmlidXRlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY29ycmVjdGx5LCB3ZSBu
ZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gaG9zdHMgYW5kIGRvbWFpbnMKKyAgICAgICAgaW4g
dGhlIFNlY3VyaXR5T3JpZ2luIGNsYXNzLiBUaGVyZSBhcmUgbm93IHRocmVlIHdheXMgdG8gY29t
cGFyZSBzZWN1cml0eSBvcmlnaW5zOgorICAgICAgICAxKSBpc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b21wYXJlcyBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0LCBhbmQgaXMgdXNlZCBmb3IgcG9zdE1lc3Nh
Z2UKKyAgICAgICAgMikgZXF1YWwgY29tcGFyZXMgYWxsIGFzcGVjdHMgb2YgdGhlIHNlY3VyaXR5
IG9yaWdpbiwgYW5kIGlzIHVzZWQgZm9yIGhhc2gga2V5cworICAgICAgICAzKSBjYW5BY2Nlc3Mg
dW5kZXJzdGFuZHMgdGhlIHNlbWFudGljcyBvZiBzY2hlbWVzIHN1Y2ggYXMgZmlsZTovLyBhbmQg
ZGF0YTovLyBVUkxzLAorICAgICAgICAgICBhbmQgc2hvdWxkIGJlIHVzZWQgZm9yIHNjcmlwdGlu
ZyBhY2Nlc3MgY2hlY2tzLgorCisgICAgICAgIENoYW5nZWQgU2VjdXJpdHlPcmlnaW46OnRvU3Ry
aW5nKCkgYW5kIFNlY3VyaXR5T3JpZ2luOjpzdHJpbmdJZGVudGlmaWVyKCkgdG8gCisgICAgICAg
IGdlbmVyYXRlIGlkZW50aWZpZXJzIHRoYXQgYXJlIHN1aXRhYmxlIGZvciBiZWluZyB1c2VkIGFz
IGEgTWVzc2FnZUV2ZW50J3Mgb3JpZ2luIAorICAgICAgICBwcm9wZXJ0eS4gSW4gdGhlIGZ1dHVy
ZSwgdGhpcyBjb3VsZCBiZSB1c2VkIGZvciB0aGUgQWNjZXNzLUNvbnRyb2wtT3JpZ2luIGhlYWRl
ciBhcyAKKyAgICAgICAgd2VsbC4gUmUtdXNlZCBLVVJMIHBhcnNlciB0byBwYXJzZSBzZXJpYWxp
emVkIFNlY3VyaXR5T3JpZ2lucy4KKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGluai13
ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4K
KyAgICAgICAgCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
b3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbWFpbik6CisgICAgICAgICogZG9t
L01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3Nh
Z2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VFdmVudDo6b3JpZ2luKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmlkbDoKKyAg
ICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVybik6CisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpzZXREb21h
aW5Gcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlVHJhbnNpdGlvblRv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplcXVhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQpOgorICAgICAgICAqIHBsYXRm
b3JtL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9tYWluKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luVHJhaXRzOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0
YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aGFz
RW50cnlGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9y
aWdpblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZv
ckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cG9wdWxhdGVP
cmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1l
c0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNG
b3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6c2V0
RGF0YWJhc2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6c2V0
UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGREYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKToKKwogMjAwOC0w
NC0wNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzMTY2NSkK
KysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4
Nyw4IEBAIF9fWk43V2ViQ29yZTE0RHJhZ0NvbnRyb2xsZXI5ZHJhZ0VuZGVkRXYKIF9fWk43V2Vi
Q29yZTE0UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiBfX1pON1dlYkNvcmUxNFJlc291
cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVy
MTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3Jl
YXRlRVJLTlNfNlN0cmluZ0VTM190UFMwXworX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZj
cmVhdGVFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNWVxdWFsRVBT
MF8KIF9fWk43V2ViQ29yZTE1QXJjaGl2ZVJlc291cmNlNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0
cklOU18xMlNoYXJlZEJ1ZmZlckVFRVJLTlNfNEtVUkxFUktOU182U3RyaW5nRVNBX1NBX1JLTlNf
MTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U4cmVzcG9u
c2VFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHJlbW92ZUl0ZW1FUE5TXzExSGlz
dG9yeUl0ZW1FCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDE3ICsxOTcsMTkgQEAgdm9pZCBKU0RPTVdp
bmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKgogSlNWYWx1ZSogSlNET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKIHsKICAgICBET01XaW5k
b3cqIHdpbmRvdyA9IGltcGwoKTsKLSAgICAKICAgICBET01XaW5kb3cqIHNvdXJjZSA9IHRvSlNE
T01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwotICAgIFN0cmlu
ZyBkb21haW4gPSBzb3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5ob3N0KCk7Ci0gICAg
U3RyaW5nIHVyaSA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpOwor
CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKLSAgICAKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIAotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgZG9tYWluLCB1cmksIHNv
dXJjZSk7Ci0gICAgCisKKyAgICBTdHJpbmcgb3JpZ2luID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayhleGVjLCBhcmdzWzFdKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBvcmlnaW4sIHNvdXJj
ZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDMxNjY1KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMxLDcgKzI3MzEs
NyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnJlZmVycmVyKCkgY29uc3QKIAogU3RyaW5nIERvY3VtZW50
Ojpkb21haW4oKSBjb25zdAogewotICAgIHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLT5ob3N0KCk7
CisgICAgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4tPmRvbWFpbigpOwogfQogCiB2b2lkIERvY3Vt
ZW50OjpzZXREb21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pCkluZGV4OiBXZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5jcHAJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDEwIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KCkKIHsKIH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyog
c291cmNlKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiAgICAgOiBFdmVudChtZXNz
YWdlRXZlbnQsIHRydWUsIHRydWUpCiAgICAgLCBtX2RhdGEoZGF0YSkKLSAgICAsIG1fZG9tYWlu
KGRvbWFpbikKLSAgICAsIG1fdXJpKHVyaSkKKyAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAs
IG1fc291cmNlKHNvdXJjZSkKIHsKIH0KQEAgLTU0LDcgKzUzLDcgQEAgTWVzc2FnZUV2ZW50Ojp+
TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJp
bmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3Nh
Z2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdp
bmRvdyogc291cmNlKQogewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTYyLDggKzYxLDcgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29u
cwogICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpOwogICAgIAogICAg
IG1fZGF0YSA9IGRhdGE7Ci0gICAgbV9kb21haW4gPSBkb21haW47Ci0gICAgbV91cmkgPSB1cmk7
CisgICAgbV9vcmlnaW4gPSBvcmlnaW47CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5oCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIE1lc3NhZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CiAgICAgcHVibGlj
OgogICAgICAgICBNZXNzYWdlRXZlbnQoKTsKLSAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01X
aW5kb3cqIHNvdXJjZSk7CisgICAgICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSk7CiAgICAgICAgIHZpcnR1
YWwgfk1lc3NhZ2VFdmVudCgpOwogCi0gICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJp
LCBET01XaW5kb3cqIHNvdXJjZSk7CisgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNl
KTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQotICAgICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJu
IG1fZG9tYWluOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJpKCkgY29uc3QgeyByZXR1cm4g
bV91cmk7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X29yaWdpbjsgfQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlLmdldCgpOyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdl
RXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6ICAgIAogICAgICAgICBTdHJpbmcgbV9kYXRh
OwotICAgICAgICBTdHJpbmcgbV9kb21haW47Ci0gICAgICAgIFN0cmluZyBtX3VyaTsKKyAgICAg
ICAgU3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3NvdXJjZTsK
ICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwJKHJldmlzaW9uIDMxNjY1KQorKysgV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDEw
IEBAIG1vZHVsZSBldmVudHMgewogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9Q1JPU1NfRE9D
VU1FTlRfTUVTU0FHSU5HLEdlbmVyYXRlQ29uc3RydWN0b3JdIE1lc3NhZ2VFdmVudCA6IEV2ZW50
IHsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRhdGE7Ci0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZG9tYWluOwotICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBvcmlnaW47CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3cgc291cmNl
OwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0
eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJn
LCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIGRvbWFpbkFyZywgaW4gRE9NU3Ry
aW5nIHVyaUFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CisgICAgICAgIHZvaWQgaW5pdE1l
c3NhZ2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcs
IGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGluIERPTVN0
cmluZyBvcmlnaW5BcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcpOwogCiAgICAgfTsKIApJbmRl
eDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDMx
NjY1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxMCw3ICs5MTAsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZHJhd0ltYWdlCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjaGVja09yaWdp
bihjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybC5wcm90b2NvbCgpLCB1cmwuaG9zdCgpLCB1cmwu
cG9ydCgpLCAwKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICBTZWN1cml0eU9yaWdpbjo6UmVhc29uIHJlYXNvbjsK
ICAgICBpZiAoIW1fY2FudmFzLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3Mob3JpZ2luLmdldCgpLCByZWFzb24pKQogICAgICAgICBtX2NhbnZhcy0+c2V0T3JpZ2luVGFp
bnRlZCgpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBD
YW52YXNSZW5kZXJpbgogICAgIGJvb2wgb3JpZ2luQ2xlYW4gPSB0cnVlOwogICAgIGlmIChDYWNo
ZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBL
VVJMIHVybChjYWNoZWRJbWFnZS0+dXJsKCkpOwotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsLnByb3RvY29sKCksIHVybC5o
b3N0KCksIHVybC5wb3J0KCksIDApOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICAgICAgU2VjdXJpdHlPcmln
aW46OlJlYXNvbiByZWFzb247CiAgICAgICAgIG9yaWdpbkNsZWFuID0gbV9jYW52YXMtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhvcmlnaW4uZ2V0KCksIHJlYXNvbik7
CiAgICAgfQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMyBAQAogI2lu
Y2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1J1bGVM
aXN0LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTdHJpbmcu
aCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAi
RE9NU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTI0OCwxMCAr
MjUwLDQxIEBAIExvY2F0aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkgY29uc3QKIH0KIAogI2lm
IEVOQUJMRShDUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdpbmRvdzo6cG9zdE1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKSBjb25zdAordm9pZCBET01XaW5kb3c6OnBv
c3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERP
TVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikgY29uc3QKIHsKLSAg
IEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNz
YWdlRXZlbnQobWVzc2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSksIGVjLCB0cnVlKTsKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghb3JpZ2luLmlzTnVsbCgp
KSB7CisgICAgICAgIEtVUkwgZGVzaXJlZFRhcmdldFVSTChvcmlnaW4pOworICAgICAgICBpZiAo
IWRlc2lyZWRUYXJnZXRVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBlY0ZvclNlbmRlciA9
IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGRlc2lyZWRUYXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGRlc2lyZWRUYXJnZXRVUkwpOworICAgICAgICBTZWN1cml0eU9yaWdpbiogYWN0
dWFsVGFyZ2V0T3JpZ2luID0gZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAg
aWYgKGRlc2lyZWRUYXJnZXRPcmlnaW4tPmlzRW1wdHkoKSB8fCAhZGVzaXJlZFRhcmdldE9yaWdp
bi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoYWN0dWFsVGFyZ2V0T3JpZ2luKSkgeworICAgICAgICAg
ICAgLy8gVGhlIHNlbmRlciBpcyBub3QgYWxsb3dlZCB0byBmaW5kIG91dCB0aGUgb3JpZ2luIG9m
CisgICAgICAgICAgICAvLyB0aGUgcmVjaXBpZW50LCBzbyB3ZSBmYWlsIHNpbGVudGx5IGFuZCBs
b2cgYSBtZXNzYWdlCisgICAgICAgICAgICAvLyB0byB0aGUgY29uc29sZS4KKyAgICAgICAgICAg
IFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuYWJsZSB0byBwb3N0IG1lc3NhZ2Ug
dG8gJXMuIFJlY2lwaWVudCBoYXMgb3JpZ2luICVzLlxuIiwgCisgICAgICAgICAgICAgICAgb3Jp
Z2luLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
ICAgICAgICBpZiAocGFnZSkKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVz
c2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdl
LCAwLCBTdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBEb2N1bWVudCogc291cmNlRG9jdW1lbnQgPSBzb3VyY2UtPmRvY3VtZW50KCkpCisgICAg
aWYgKCFzb3VyY2VEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIFN0cmluZyBzb3VyY2VP
cmlnaW4gPSBzb3VyY2VEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKKwor
ICAgIC8vIFNlbmRlciBpcyBub3QgYWxsb3dlZCB0byBzZWUgZXhjZXB0aW9ucyBvdGhlciB0aGFu
IHN5bnRheCBlcnJvcnMKKyAgICBFeGNlcHRpb25Db2RlIGVjOyAKKyAgICBkb2N1bWVudCgpLT5k
aXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVzc2FnZSwgc291cmNlT3JpZ2luLCBzb3Vy
Y2UpLCBlYywgdHJ1ZSk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMzE2
NjUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3
ICsxNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUo
KSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5BQkxFKENST1NTX0RPQ1VNRU5UX01FU1NBR0lORykK
LSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpIGNvbnN0
OworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNl
bmRlcikgY29uc3Q7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBpbnQg
eSkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw4IEBAIG1v
ZHVsZSB3aW5kb3cgewogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1JPU1NfRE9DVU1FTlRfTUVTU0FH
SU5HKQogICAgICAgICAvLyBjcm9zcy1kb2N1bWVudCBtZXNzYWdpbmcKLSAgICAgICAgW0RvTm90
Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmlu
ZyBtZXNzYWdlKTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2
b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIERPTVN0
cmluZyBvcmlnaW4pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgog
CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TZWN1
cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1
cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCisjaW5jbHVkZSAiQ1N0
cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNTMsMTEgKzU0LDEwIEBAIHN0YXRpYyBib29sIGlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbCh1bnMKICAgICByZXR1cm4gZGVmYXVsdFBvcnRzLmdldChwcm90
b2NvbCkgPT0gcG9ydDsKIH0KIAotU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9y
dCkKLSAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wuaXNOdWxsKCkgPyAiIiA6IHByb3RvY29sLmxv
d2VyKCkpCi0gICAgLCBtX2hvc3QoaG9zdC5pc051bGwoKSA/ICIiIDogaG9zdC5sb3dlcigpKQot
ICAgICwgbV9wb3J0KHBvcnQpCi0gICAgLCBtX3BvcnRTZXQocG9ydCkKK1NlY3VyaXR5T3JpZ2lu
OjpTZWN1cml0eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCisgICAgOiBtX3Byb3RvY29sKHVybC5w
cm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQorICAgICwg
bV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKKyAg
ICAsIG1fcG9ydCh1cmwucG9ydCgpKQogICAgICwgbV9ub0FjY2VzcyhmYWxzZSkKICAgICAsIG1f
ZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCiB7CkBAIC02OSwxMSArNjksMjEgQEAgU2VjdXJpdHlP
cmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cgogICAgIGlmIChtX3Byb3RvY29sID09ICJk
YXRhIikKICAgICAgICAgbV9ub0FjY2VzcyA9IHRydWU7CiAKKyAgICAvLyBkb2N1bWVudC5kb21h
aW4gc3RhcnRzIGFzIG1faG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KKyAgICBtX2Rv
bWFpbiA9IG1faG9zdDsKIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0
LCBtX3Byb3RvY29sKSkgeworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0
LCBtX3Byb3RvY29sKSkKICAgICAgICAgbV9wb3J0ID0gMDsKLSAgICAgICAgbV9wb3J0U2V0ID0g
ZmFsc2U7Ci0gICAgfSAgIAorfQorCitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQorICAgIDogbV9wcm90b2NvbChvdGhlci0+bV9wcm90
b2NvbC5jb3B5KCkpCisgICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC5jb3B5KCkpCisgICAgLCBt
X2RvbWFpbihvdGhlci0+bV9kb21haW4uY29weSgpKQorICAgICwgbV9wb3J0KG90aGVyLT5tX3Bv
cnQpCisgICAgLCBtX25vQWNjZXNzKG90aGVyLT5tX25vQWNjZXNzKQorICAgICwgbV9kb21haW5X
YXNTZXRJbkRPTShvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKK3sKIH0KIAogYm9vbCBTZWN1
cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CkBAIC04MSwyNCArOTEsMTUgQEAgYm9vbCBTZWN1
cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJvdG9jb2wuaXNFbXB0
eSgpOwogfQogCi1QYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQg
c2hvcnQgcG9ydCwgU2VjdXJpdHlPcmlnaW4qIG93bmVyRnJhbWVPcmlnaW4pCitQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG5ldyBTZWN1cml0eU9yaWdp
bihwcm90b2NvbCwgaG9zdCwgcG9ydCk7Ci0KLSAgICAvLyBJZiB3ZSBkbyBub3Qgb2J0YWluIGEg
bWVhbmluZ2Z1bCBvcmlnaW4gZnJvbSB0aGUgVVJMLCB0aGVuIHdlIHRyeSB0byBmaW5kIG9uZQot
ICAgIC8vIHZpYSB0aGUgZnJhbWUgaGllcmFyY2h5LgotICAgIC8vIFdlIGFsaWFzIHRoZSBTZWN1
cml0eU9yaWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAxNTMxMwotICAgIC8vIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEzCi0gICAgaWYgKG9yaWdpbi0+
aXNFbXB0eSgpICYmIG93bmVyRnJhbWVPcmlnaW4pCi0gICAgICAgIHJldHVybiBvd25lckZyYW1l
T3JpZ2luOwotCi0gICAgcmV0dXJuIG9yaWdpbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ldyBT
ZWN1cml0eU9yaWdpbih1cmwpOwogfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZShLVVJMKCkpOwogCiAgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2Fk
ZXIoKTsKICAgICBjb25zdCBLVVJMJiB1cmwgPSBsb2FkZXItPnVybCgpOwpAQCAtMTExLDE5ICsx
MTIsMjcgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaQogICAgIGlm
IChvd25lckZyYW1lICYmIG93bmVyRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIG93bmVyRnJh
bWVPcmlnaW4gPSBvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogCi0g
ICAgcmV0dXJuIGNyZWF0ZSh1cmwucHJvdG9jb2woKSwgdXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwg
b3duZXJGcmFtZU9yaWdpbik7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBj
cmVhdGUodXJsKTsKKworICAgIC8vIElmIHdlIGRvIG5vdCBvYnRhaW4gYSBtZWFuaW5nZnVsIG9y
aWdpbiBmcm9tIHRoZSBVUkwsIHRoZW4gd2UgdHJ5IHRvIGZpbmQgb25lCisgICAgLy8gdmlhIHRo
ZSBmcmFtZSBoaWVyYXJjaHkuCisgICAgLy8gV2UgYWxpYXMgdGhlIFNlY3VyaXR5T3JpZ2lucyB0
byBtYXRjaCBGaXJlZm94LCBzZWUgQnVnIDE1MzEzCisgICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKKyAgICBpZiAob3JpZ2luLT5pc0VtcHR5KCkgJiYg
b3duZXJGcmFtZU9yaWdpbikKKyAgICAgICAgcmV0dXJuIG93bmVyRnJhbWVPcmlnaW47CisKKyAg
ICByZXR1cm4gb3JpZ2luLnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gU2VjdXJpdHlPcmlnaW46OmNvcHkoKQogewotICAgIHJldHVybiBjcmVhdGUobV9wcm90b2Nv
bC5jb3B5KCksIG1faG9zdC5jb3B5KCksIG1fcG9ydCwgMCk7CisgICAgcmV0dXJuIG5ldyBTZWN1
cml0eU9yaWdpbih0aGlzKTsKIH0KIAotCiB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXREb21haW5G
cm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogewogICAgIG1fZG9tYWluV2FzU2V0SW5E
T00gPSB0cnVlOwotICAgIG1faG9zdCA9IG5ld0RvbWFpbi5sb3dlcigpOworICAgIG1fZG9tYWlu
ID0gbmV3RG9tYWluLmxvd2VyKCk7CiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vz
cyhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIsIFJlYXNvbiYgcmVhc29uKSBjb25zdApAQCAt
MTY2LDcgKzE3NSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWMK
ICAgICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3Ro
ZXItPm1fcG9ydCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNl
IGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKSB7
Ci0gICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLT5tX2hvc3QpCisgICAgICAgICAgICBp
ZiAobV9kb21haW4gPT0gb3RoZXItPm1fZG9tYWluKQogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1faG9zdCA9PSBvdGhlci0+
bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0KSB7CkBAIC0xODYsNTUgKzE5NSwxMDMg
QEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmVUcmFuc2l0aW9uVAogICAgIGlmIChpc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKEZyYW1lTG9hZGVyOjpzaG91
bGRUcmVhdFNjaGVtZUFzTG9jYWwobV9wcm90b2NvbCkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1faG9zdCwgU3RyaW5nKHVybC5ob3N0KCkp
KSAmJiBlcXVhbElnbm9yaW5nQ2FzZShtX3Byb3RvY29sLCBTdHJpbmcodXJsLnByb3RvY29sKCkp
KSAmJiBtX3BvcnQgPT0gdXJsLnBvcnQoKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG90
aGVyID0gbmV3IFNlY3VyaXR5T3JpZ2luKHVybCk7CisgICAgUmVhc29uIHJlYXNvbjsKKyAgICBy
ZXR1cm4gY2FuQWNjZXNzKG90aGVyLmdldCgpLCByZWFzb24pOwogfQogCiBTdHJpbmcgU2VjdXJp
dHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm90b2NvbCArICI6
IiArIG1faG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKG1fcG9ydCk7CisgICAgaWYgKGlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKG1fcHJvdG9jb2wgPT0g
ImZpbGUiKQorICAgICAgICByZXR1cm4gU3RyaW5nKCJmaWxlOi8vIik7CisKKyAgICBWZWN0b3I8
VUNoYXI+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KG1fcHJvdG9jb2wubGVu
Z3RoKCkgKyBtX2hvc3QubGVuZ3RoKCkgKyAxMCk7CisgICAgYXBwZW5kKHJlc3VsdCwgbV9wcm90
b2NvbCk7CisgICAgYXBwZW5kKHJlc3VsdCwgIjovLyIpOworICAgIGFwcGVuZChyZXN1bHQsIG1f
aG9zdCk7CisKKyAgICBpZiAobV9wb3J0KSB7CisgICAgICBhcHBlbmQocmVzdWx0LCAiOiIpOwor
ICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIobV9wb3J0KSk7CisgICAgfQorCisg
ICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKK30KKworUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcpCit7CisgICAgcmV0dXJuIG5ldyBTZWN1cml0eU9yaWdpbihLVVJMKG9yaWdp
blN0cmluZykpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciBTZXBhcmF0b3JDaGFyYWN0ZXIgPSAn
Xyc7CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHN0cmluZ0lkZW50aWZpZXIpCitQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsgCiAgICAgLy8gTWFrZSBz
dXJlIHRoZXJlJ3MgYSBmaXJzdCBzZXBhcmF0b3IKLSAgICBpbnQgc2VwYXJhdG9yMSA9IHN0cmlu
Z0lkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIpOworICAgIGludCBzZXBhcmF0b3Ix
ID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAo
c2VwYXJhdG9yMSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOwor
ICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAgIAogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGVyZSdzIGEgc2Vjb25kIHNlcGFyYXRvcgotICAgIGludCBzZXBhcmF0b3IyID0gc3RyaW5n
SWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rlciwgc2VwYXJhdG9yMSArIDEpOworICAg
IGludCBzZXBhcmF0b3IyID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFj
dGVyLCBzZXBhcmF0b3IxICsgMSk7CiAgICAgaWYgKHNlcGFyYXRvcjIgPT0gLTEpCi0gICAgICAg
IHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJM
KCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBub3QgYSB0aGlyZCBzZXBh
cmF0b3IKLSAgICBpZiAoc3RyaW5nSWRlbnRpZmllci5yZXZlcnNlRmluZChTZXBhcmF0b3JDaGFy
YWN0ZXIpICE9IHNlcGFyYXRvcjIpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAw
KTsKKyAgICBpZiAoZGF0YWJhc2VJZGVudGlmaWVyLnJldmVyc2VGaW5kKFNlcGFyYXRvckNoYXJh
Y3RlcikgIT0gc2VwYXJhdG9yMikKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOwogICAg
ICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQg
bnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBvcnRPa2F5OwotICAgIGludCBwb3J0
ID0gc3RyaW5nSWRlbnRpZmllci5yaWdodChzdHJpbmdJZGVudGlmaWVyLmxlbmd0aCgpIC0gc2Vw
YXJhdG9yMiAtIDEpLnRvSW50KCZwb3J0T2theSk7Ci0gICAgaWYgKCFwb3J0T2theSAmJiBzZXBh
cmF0b3IyICsgMSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ0lkZW50aWZpZXIubGVuZ3RoKCkp
KQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAgaW50IHBvcnQgPSBk
YXRhYmFzZUlkZW50aWZpZXIucmlnaHQoZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gc2Vw
YXJhdG9yMiAtIDEpLnRvSW50KCZwb3J0T2theSk7CisgICAgaWYgKCFwb3J0T2theSAmJiBzZXBh
cmF0b3IyICsgMSA9PSBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgo
KSkpCisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAgICAKICAgICBpZiAocG9ydCA8
IDAgfHwgcG9ydCA+IDY1NTM1KQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7
CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAgICAgICAgCiAgICAgLy8gU3BsaXQg
b3V0IHRoZSAzIHNlY3Rpb25zIG9mIGRhdGEKLSAgICBTdHJpbmcgcHJvdG9jb2wgPSBzdHJpbmdJ
ZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKLSAgICBTdHJpbmcgaG9zdCA9IHN0
cmluZ0lkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2Vw
YXJhdG9yMSAtIDEpOwotICAgIHJldHVybiBjcmVhdGUocHJvdG9jb2wsIGhvc3QsIHBvcnQsIDAp
OworICAgIFN0cmluZyBwcm90b2NvbCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwg
c2VwYXJhdG9yMSk7CisgICAgU3RyaW5nIGhvc3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3Ry
aW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOworICAgIHJl
dHVybiBjcmVhdGUoS1VSTChwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiArIFN0cmluZzo6
bnVtYmVyKHBvcnQpKSk7CiB9Ci0gICAgCi0gICAgCi1TdHJpbmcgU2VjdXJpdHlPcmlnaW46OnN0
cmluZ0lkZW50aWZpZXIoKSBjb25zdCAKKworU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFz
ZUlkZW50aWZpZXIoKSBjb25zdCAKIHsKICAgICBzdGF0aWMgU3RyaW5nIHNlcGFyYXRvclN0cmlu
ZyA9IFN0cmluZygmU2VwYXJhdG9yQ2hhcmFjdGVyLCAxKTsKICAgICByZXR1cm4gbV9wcm90b2Nv
bCArIHNlcGFyYXRvclN0cmluZyArIG1faG9zdCArIHNlcGFyYXRvclN0cmluZyArIFN0cmluZzo6
bnVtYmVyKG1fcG9ydCk7IAogfQogCitib29sIFNlY3VyaXR5T3JpZ2luOjplcXVhbChjb25zdCBT
ZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0IAoreworICAgIGlmICghaXNTYW1lU2NoZW1lSG9z
dFBvcnQob3RoZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9kb21haW5X
YXNTZXRJbkRPTSAhPSBvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG1fZG9tYWluV2FzU2V0SW5ET00gJiYgbV9kb21haW4gIT0gb3Ro
ZXItPm1fZG9tYWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCAKK3sKKyAgICBpZiAobV9ob3N0ICE9IG90aGVyLT5t
X2hvc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3Byb3RvY29sICE9IG90
aGVyLT5tX3Byb3RvY29sKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9wb3J0
ICE9IG90aGVyLT5tX3BvcnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0
eU9yaWdpbi5oCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlP
cmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTQgKzQzLDE2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVk
PFNlY3VyaXR5T3JpZ2luPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRm9yRnJhbWUoRnJhbWUqKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21JZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hv
cnQgcG9ydCwgU2VjdXJpdHlPcmlnaW4qIG93bmVyRnJhbWVPcmlnaW4pOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgS1VSTCYpOwogCiAgICAgICAgIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNvcHkoKTsKIAogICAgICAgICB2b2lkIHNldERvbWFp
bkZyb21ET00oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pOwotICAgICAgICBTdHJpbmcgaG9zdCgp
IGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQogICAgICAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25z
dCB7IHJldHVybiBtX3Byb3RvY29sOyB9CisgICAgICAgIFN0cmluZyBob3N0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ob3N0OyB9CisgICAgICAgIFN0cmluZyBkb21haW4oKSBjb25zdCB7IHJldHVybiBt
X2RvbWFpbjsgfQogICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29uc3QgeyByZXR1cm4g
bV9wb3J0OyB9CiAgICAgICAgIAogICAgICAgICBlbnVtIFJlYXNvbiAgewpAQCAtNjIsMTkgKzY0
LDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAgICBT
dHJpbmcgc3RyaW5nSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgICAgIC8vIGRvIG5vdCB1c2Ug
dGhpcyBmb3IgYWNjZXNzIGNoZWNrcywgaXQncyB0aGVyZSBvbmx5IGZvciB1c2luZyB0aGlzIGFz
IGEgaGFzaHRhYmxlIGtleQotICAgICAgICBib29sIGVxdWFsKFNlY3VyaXR5T3JpZ2luKiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbCA9PSBvdGhlci0+bV9wcm90b2NvbCAmJiBtX2hv
c3QgPT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1fcG9ydDsgfQorICAgICAg
ICAvLyBTZXJpYWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiBmb3Igc3RvcmFnZSBpbiB0aGUgZGF0
YWJhc2UuIFRoaXMgZm9ybWF0IGlzCisgICAgICAgIC8vIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBi
ZSB1c2VkIG9ubHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGF0YWJhc2VzOworICAgICAg
ICAvLyB1c2UgdG9TdHJpbmcoKSBhbmQgY3JlYXRlRnJvbVN0cmluZygpIGluc3RlYWQuCisgICAg
ICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdDsKKworICAgICAgICAvLyBUaGlz
IG1ldGhvZCBjaGVja3MgZm9yIGVxdWFsaXR5IGJldHdlZW4gU2VjdXJpdHlPcmlnaW5zLCBub3Qg
d2hldGhlcgorICAgICAgICAvLyBvbmUgb3JpZ2luIGNhbiBhY2Nlc3MgYW5vdGhlci4gIEl0IGlz
IHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KKyAgICAgICAgLy8gRm9yIGFjY2VzcyBjaGVja3Ms
IHVzZSBjYW5BY2Nlc3MoKS4KKyAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgbWV0aG9kIGlzIHJl
YWxseSBvbmx5IHVzZWZ1bCBmb3IgaGFzaCB0YWJsZSBrZXlzLCBpdAorICAgICAgICAvLyBzaG91
bGQgYmUgcmVmYWN0b3JlZCBpbnRvIFNlY3VyaXR5T3JpZ2luSGFzaC4KKyAgICAgICAgYm9vbCBl
cXVhbChjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OworCisgICAgICAgIC8vIFRoaXMgbWV0
aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHksIGlnbm9yaW5nIHRoZSB2YWx1ZSBvZiBkb2N1bWVudC5k
b21haW4KKyAgICAgICAgLy8gKGFuZCB3aGV0aGVyIGl0IHdhcyBzZXQpIGJ1dCBjb25zaWRlcmlu
ZyB0aGUgaG9zdC4gSXQgaXMgdXNlZCBmb3IgcG9zdE1lc3NhZ2UuCisgICAgICAgIGJvb2wgaXNT
YW1lU2NoZW1lSG9zdFBvcnQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKICAgICAgICAg
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KTsKKyAgICAgICAg
ZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYpOworICAgICAgICBleHBsaWNpdCBT
ZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiopOwogCiAgICAgICAgIFN0cmluZyBt
X3Byb3RvY29sOwogICAgICAgICBTdHJpbmcgbV9ob3N0OworICAgICAgICBTdHJpbmcgbV9kb21h
aW47CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKLSAgICAgICAgYm9vbCBtX3BvcnRT
ZXQ7CiAgICAgICAgIGJvb2wgbV9ub0FjY2VzczsKICAgICAgICAgYm9vbCBtX2RvbWFpbldhc1Nl
dEluRE9NOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luSGFz
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmgJ
KHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2gu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBTZWN1cml0eU9yaWdp
bkhhc2hfaAogI2RlZmluZSBTZWN1cml0eU9yaWdpbkhhc2hfaAogCisjaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CkBAIC02MCw4ICs2MSw4IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpblRyYWl0cyA6IFdURjo6R2Vu
ZXIKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKICAgICBz
dGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYgZGVsZXRlZFZhbHVlKCkgCiAgICAg
eyAKLSAgICAgICAgLy8gT2theSBkZWxldGVkIHZhbHVlIGJlY2F1c2UgZmlsZTogcHJvdG9jb2xz
IHNob3VsZCBhbHdheXMgaGF2ZSBwb3J0IDAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5EZWxldGVkVmFsdWUgPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKCJmaWxlIiwgIiIsIDEsIDApOyAgICAKKyAgICAgICAgLy8gT2theSBkZWxldGVk
IHZhbHVlIGJlY2F1c2UgImludmFsaWQtcHJvdG9jb2wiIGlzIG5vdCBhIHZhbGlkIHByb3RvY29s
LgorICAgICAgICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbkRlbGV0ZWRWYWx1ZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTCgiaW52YWxpZC1w
cm90b2NvbDoiKSk7CiAgICAgICAgIHJldHVybiBzZWN1cml0eU9yaWdpbkRlbGV0ZWRWYWx1ZTsg
CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24g
MzE2NjUpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpoYXNFbnRyeUZv
ckRhdGFiYXMKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+
c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIGRhdGFiYXNl
SWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxSZXN1bHRS
b3c7CkBAIC0xODksNyArMTg5LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luUGF0
aChTZWN1cgogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJlYWQpOwogICAgIGlm
IChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLT5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRo
Rm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGNyZWF0ZUlmTm90RXhpc3RzKQpAQCAtMTk5LDcgKzE5OSw3IEBAIFN0cmluZyBEYXRhYmFz
ZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWIKICAgICBpZiAobV9wcm9wb3NlZERhdGFiYXNlICYm
IG1fcHJvcG9zZWREYXRhYmFzZS0+Zmlyc3QgPT0gb3JpZ2luICYmIG1fcHJvcG9zZWREYXRhYmFz
ZS0+c2Vjb25kLm5hbWUoKSA9PSBuYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAg
ICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpOwor
ICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KTsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKICAg
ICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBhdGggZm9yIHRoaXMgU2VjdXJpdHlPcmlnaW4gZXhp
c3RzCkBAIC0yMjYsNyArMjI2LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhG
b3JEYXRhYgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIAogICAgIGlmIChyZXN1
bHQgIT0gU1FMUmVzdWx0RG9uZSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRy
aWV2ZSBmaWxlbmFtZSBmcm9tIERhdGFiYXNlIFRyYWNrZXIgZm9yIG9yaWdpbiAlcywgbmFtZSAl
cyIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpLCBuYW1lLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgZmlsZW5h
bWUgZnJvbSBEYXRhYmFzZSBUcmFja2VyIGZvciBvcmlnaW4gJXMsIG5hbWUgJXMiLCBvcmlnaW4t
PmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpLCBuYW1lLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBzdGF0ZW1lbnQuZmluYWxp
emUoKTsKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cG9wdWxhdGVP
cmlnaW5zKCkKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1l
bnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbUlkZW50aWZpZXIoc3RhdGVt
ZW50LmdldENvbHVtblRleHQoMCkpOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKHN0YXRl
bWVudC5nZXRDb2x1bW5UZXh0KDApKTsKICAgICAgICAgbV9xdW90YU1hcC0+c2V0KG9yaWdpbi5n
ZXQoKSwgc3RhdGVtZW50LmdldENvbHVtbkludDY0KDEpKTsKICAgICB9CiAKQEAgLTMxNiwxNCAr
MzE2LDE0IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzRm9yT3IKICAgICBp
ZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmll
cigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CiAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50
LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KQogICAgICAgICByZXN1bHRWZWN0b3IuYXBwZW5kKHN0
YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKIAogICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0
RG9uZSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBhbGwgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiAlcyIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgYWxsIGRh
dGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzM3
LDcgKzMzNyw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHMKICAg
ICBpZiAobV9wcm9wb3NlZERhdGFiYXNlICYmIG1fcHJvcG9zZWREYXRhYmFzZS0+Zmlyc3QgPT0g
b3JpZ2luICYmIG1fcHJvcG9zZWREYXRhYmFzZS0+c2Vjb25kLm5hbWUoKSA9PSBuYW1lKQogICAg
ICAgICByZXR1cm4gbV9wcm9wb3NlZERhdGFiYXNlLT5zZWNvbmQ7CiAKLSAgICBTdHJpbmcgb3Jp
Z2luSWRlbnRpZmllciA9IG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpOworICAgIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIAogICAgIG9w
ZW5UcmFja2VyRGF0YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkK
QEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VEZXRh
aWxzCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZCk7CiAKLSAgICBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpOworICAg
IFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsK
ICAgICBpbnQ2NF90IGd1aWQgPSAwOwogICAgIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UodHJ1
ZSk7CkBAIC01NDUsMjYgKzU0NSwyNiBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0UXVvdGEo
U2VjdXJpdHlPCiAgICAgICAgIGlmICghbV9xdW90YU1hcC0+Y29udGFpbnMob3JpZ2luKSkgewog
ICAgICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJU
IElOVE8gT3JpZ2lucyBWQUxVRVMgKD8sID8pIik7CiAgICAgICAgICAgICBpZiAoc3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRyYWNrZXIiLCBvcmlnaW4tPnN0
cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0aGUgdHJhY2tlciIsIG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJp
bmdJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBv
cmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQu
YmluZEludDY0KDIsIHF1b3RhKTsKIAogICAgICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQuc3Rl
cCgpICE9IFNRTFJlc3VsdERvbmUpCi0gICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRyYWNrZXIiLCBvcmlnaW4tPnN0cmlu
Z0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRyYWNrZXIiLCBvcmln
aW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgIlVQREFURSBPcmlnaW5zIFNFVCBxdW90YT0/IFdIRVJFIG9yaWdpbj0/Iik7
ICAgICAgICAKICAgICAgICAgICAgIGJvb2wgZXJyb3IgPSBzdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTFJlc3VsdE9rOwogICAgICAgICAgICAgaWYgKCFlcnJvcikgewogICAgICAgICAgICAgICAg
IHN0YXRlbWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgICAgICAgICAgICAgIHN0YXRlbWVu
dC5iaW5kVGV4dCgyLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICAg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwog
CiAgICAgICAgICAgICAgICAgZXJyb3IgPSAhc3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBzZXQgcXVvdGEgJWxsdSBpbiB0cmFja2VyIGRhdGFiYXNlIGZv
ciBvcmlnaW4gJXMiLCBxdW90YSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBxdW90YSAl
bGx1IGluIHRyYWNrZXIgZGF0YWJhc2UgZm9yIG9yaWdpbiAlcyIsIHF1b3RhLCBvcmlnaW4tPmRh
dGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEZJWE1FOiBJcyBpdCByZWFsbHkgT0sgdG8gdXBkYXRlIHRoZSBxdW90YSBpbiBtZW1vcnkg
aWYgd2UgZmFpbGVkIHRvIHVwZGF0ZSBpdCBvbiBkaXNrPwpAQCAtNTkwLDEyICs1OTAsMTIgQEAg
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6OmFkZERhdGFiYXNlKFNlY3VyaQogICAgIGlmIChzdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAg
IHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgbmFtZSk7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDMs
IHBhdGgpOwogCiAgICAgaWYgKCFzdGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBhZGQgZGF0YWJhc2UgJXMgdG8gb3JpZ2luICVzOiAlc1xu
IiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWko
KS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBhZGQgZGF0YWJhc2UgJXMgdG8gb3JpZ2luICVzOiAlc1xuIiwgbmFtZS5hc2Np
aSgpLmRhdGEoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC02MjUsNDAgKzYyNSw0MCBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRl
T3JpZ2luKFNlY3VyCiAKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZU5hbWVzOwogICAgIGlm
ICghZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIGRhdGFiYXNlTmFtZXMpKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJhc2UgbmFtZXMg
Zm9yIG9yaWdpbiAlcyIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmV0cmlldmUgbGlzdCBvZiBkYXRhYmFz
ZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGFiYXNlTmFtZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYg
KCFkZWxldGVEYXRhYmFzZUZpbGUob3JpZ2luLCBkYXRhYmFzZU5hbWVzW2ldKSkgewotICAgICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGlu
IG9yaWdpbiAlcyIsIGRhdGFiYXNlTmFtZXNbaV0uYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+c3Ry
aW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMiLCBkYXRh
YmFzZU5hbWVzW2ldLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
ICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxFVEUg
RlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVw
YXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBv
cmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2lu
ICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBzdGF0ZW1lbnQu
YmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVudC5i
aW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAKICAgICBpZiAo
IXN0YXRlbWVudC5leGVjdXRlQ29tbWFuZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2luICVzIGZyb20gdHJh
Y2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJv
bSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgU1FMaXRl
U3RhdGVtZW50IG9yaWdpblN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gT3JpZ2lu
cyBXSEVSRSBvcmlnaW49PyIpOwogICAgIGlmIChvcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVs
ZXRpb24gb2Ygb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmll
cigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFy
ZSBkZWxldGlvbiBvZiBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBvcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkp
OworICAgIG9yaWdpblN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKICAgICAKICAgICBpZiAoIW9yaWdpblN0YXRlbWVudC5leGVjdXRlQ29tbWFuZCgp
KSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0
YWJhc2VzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRp
ZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhl
Y3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTY5NiwyMSArNjk2LDIxIEBAIHZvaWQgRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZShTZWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFkZWxldGVE
YXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lKSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS5hc2NpaSgp
LmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4g
b3JpZ2luICVzIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
U1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gRGF0YWJh
c2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT8iKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVw
YXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIs
IG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBv
ZiBkYXRhYmFzZSAlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBuYW1lLmFzY2lpKCku
ZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEs
IG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIs
IG5hbWUpOwogICAgIAogICAgIGlmICghc3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZSAl
cyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmln
aW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2UgJXMgZnJvbSBvcmlnaW4g
JXMgZnJvbSB0cmFja2VyIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gMzE2NjcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTA0LTA1IEFkYW0gQmFydGggPGhrOTU2NUBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlZCBXZWJTZWN1cml0eU9yaWdpbiB0byBtYXRjaCBuZXcgU2VjdXJpdHlPcmlnaW4g
QVBJLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtpdEBjb2xsaW5qYWNr
c29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisgICAgICAgICogU3Rv
cmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4g
aG9zdF0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg6CisK
IDIwMDgtMDQtMDQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBXZWJDb3JlJ3MgSUNVIGhlYWRlcnMgaW5zdGVhZCBvZiBvdXIgb3duIGNvcHkKSW5kZXg6IFdl
YktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDMxNjY1KQorKysg
V2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSwyNCArMjksMTkgQEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIK
IAogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
S1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luCi0KLS0g
KGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmlu
ZyAqKWRvbWFpbgotewotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFByb3RvY29sOnByb3RvY29s
IGRvbWFpbjpkb21haW4gcG9ydDowXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhQcm90b2NvbDooTlNT
dHJpbmcgKilwcm90b2NvbCBkb21haW46KE5TU3RyaW5nICopZG9tYWluIHBvcnQ6KHVuc2lnbmVk
IHNob3J0KXBvcnQKKy0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogewogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShwcm90b2NvbCwgZG9tYWluLCBwb3J0LCAwKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVV
UkxdKSk7CiAgICAgb3JpZ2luLT5yZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKj4ob3JpZ2luLmdldCgpKTsKIApAQCAtNTgsNyAr
NTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cHJvdG9jb2woKTsKIH0KIAotLSAoTlNT
dHJpbmcqKWRvbWFpbgorLSAoTlNTdHJpbmcqKWhvc3QKIHsKICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+aG9zdCgpOwogfQpJbmRleDogV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAkocmV2aXNpb24g
MzE2NjUpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMCBAQAogICAgIFdlYlNlY3VyaXR5T3JpZ2lu
UHJpdmF0ZSAqX3ByaXZhdGU7CiB9CiAKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5n
ICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbjsKLS0gKGlkKWluaXRXaXRoUHJv
dG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBwb3J0
Oih1bnNpZ25lZCBzaG9ydClwb3J0OworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwog
CiAtIChOU1N0cmluZyopcHJvdG9jb2w7Ci0tIChOU1N0cmluZyopZG9tYWluOworLSAoTlNTdHJp
bmcqKWhvc3Q7CiAKIC8vIFJldHVybnMgemVybyBpZiB0aGUgcG9ydCBpcyB0aGUgZGVmYXVsdCBw
b3J0IGZvciB0aGUgcHJvdG9jb2wsIG5vbi16ZXJvIG90aGVyd2lzZQogLSAodW5zaWduZWQgc2hv
cnQpcG9ydDsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTY2NykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMDQtMDUgIEFkYW0gQmFydGgg
PGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVuYW1lZCAiZG9tYWluIiBtZXRob2QgdG8gImhvc3QiIHRvIG1hdGNoIFNl
Y3VyaXR5T3JpZ2luLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4u
aWRsOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYlNlY3Vy
aXR5T3JpZ2luOjpob3N0KToKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5oOgorCiAyMDA4
LTA0LTA0ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
T25seSBkZWxldGUgdGhlIGJhY2tpbmcgc3RvcmUgb2YgYmFja2dyb3VuZCB3aW5kb3dzLgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViS2l0L3dp
bi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaQogICAgIHJldHVybiBTX09L
OwogfQogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmln
aW46OmRvbWFpbiggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpZ2lu
Ojpob3N0KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdCkKSW5kZXg6IFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDMxNjY1KQor
KysgV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cHJvdG9jb2woIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAg
ICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkb21haW4oIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBob3N0KCAKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwogICAgICAgICAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9ydCggCkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVy
ZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiBpbnRlcmZhY2UgSVdlYlNlY3VyaXR5
T3JpZ2luIDogSVVua25vd24KIHsKICAgICBIUkVTVUxUIHByb3RvY29sKFtvdXQsIHJldHZhbF0g
QlNUUiogcmVzdWx0KTsKLSAgICBIUkVTVUxUIGRvbWFpbihbb3V0LCByZXR2YWxdIEJTVFIqIHJl
c3VsdCk7CisgICAgSFJFU1VMVCBob3N0KFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKICAg
ICBIUkVTVUxUIHBvcnQoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KTsKIAog
ICAgIEhSRVNVTFQgdXNhZ2UoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBsb25nIGxvbmcqIHJlc3Vs
dCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTY2NykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA4LTA0LTA1ICBBZGFtIEJhcnRoIDxo
azk1NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZXMgTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gdXNlIGhvc3QgaW5zdGVh
ZCBvZiBkb21haW4uCisKKyAgICAgICAgQ29sbGluIEphY2tzb24gPGNvbGxpbmotd2Via2l0QGNv
bGxpbmphY2tzb24uY29tPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGF0YWJhc2VRdW90YSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUg
d2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpkYXRh
YmFzZTpdKToKKwogMjAwOC0wNC0wMyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xn
ZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDMxNjY1KQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q3Vz
dG9tUG9saQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREYXRhYmFzZVF1b3RhKHVu
c2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsgICAgCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9y
aWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoUHJvdG9jb2w6QCJmaWxl
IiBkb21haW46bmlsXTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1
cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxl
Oi8vLyJdXTsKICAgICBbb3JpZ2luIHNldFF1b3RhOnF1b3RhXTsKICAgICBbb3JpZ2luIHJlbGVh
c2VdOwogfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdh
dGUubW0JKHJldmlzaW9uIDMxNjY1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBEdW1wUmVu
ZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgZXhjZWVkZWREYXRhYmFzZVF1b3Rh
Rm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGRhdGFiYXNlOihO
U1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIGlmICghZG9uZSAmJiBsYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50Zigi
VUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNl
Y3VyaXR5T3JpZ2luOnslcywgJXMsICVpfSBkYXRhYmFzZTolc1xuIiwgW1tvcmlnaW4gcHJvdG9j
b2xdIFVURjhTdHJpbmddLCBbW29yaWdpbiBkb21haW5dIFVURjhTdHJpbmddLCAKKyAgICAgICAg
cHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1
b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdp
biBwcm90b2NvbF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGhvc3RdIFVURjhTdHJpbmddLCAKICAg
ICAgICAgICAgIFtvcmlnaW4gcG9ydF0sIFtkYXRhYmFzZUlkZW50aWZpZXIgVVRGOFN0cmluZ10p
OwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1
ICogMTAyNCAqIDEwMjQ7ICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzE2NjcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAwOC0wNC0w
NSAgQWRhbSBCYXJ0aCAgPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3RzIGZvciBuZXcgcG9z
dE1lc3NhZ2UgQVBJLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtpdEBj
b2xsaW5qYWNrc29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3Nz
LWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZm
ZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRv
Y3VtZW50LWRvbWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52
YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1k
b21haW4tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNj
cmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxs
LXNlbmRzLW9yaWdpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRt
bC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5o
dG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRv
Y3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWlu
Lmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdl
LWxpc3RlbmVyLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWw6IEFkZGVkLgorCiAyMDA4
LTA0LTA1ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWlu
LW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDMxNjY1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jv
c3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
MiArMSwyIEBACiAKLWRhdGE6IFNvbWV0aGluZyB1cmk6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
ZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC5odG1sIGRvbWFpbjogMTI3LjAuMC4x
CitkYXRhOiBTb21ldGhpbmcgb3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVz
c2FnZS1yZWNlaXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
ZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAkocmV2
aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJj
ZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05
LDggKzksNyBAQAogZnVuY3Rpb24gcmVjZWl2ZXIoZSkgewogICAgIHZhciByZXN1bHQgPSAiIjsK
ICAgICByZXN1bHQgKz0gImRhdGE6ICIgKyBlLmRhdGEgKyAiXG4iOwotICAgIHJlc3VsdCArPSAi
dXJpOiAiICsgZS51cmkgKyAiXG4iOwotICAgIHJlc3VsdCArPSAiZG9tYWluOiAiICsgZS5kb21h
aW4gKyAiXG4iOworICAgIHJlc3VsdCArPSAib3JpZ2luOiAiICsgZS5vcmlnaW4gKyAiXG4iOwog
ICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHJlc3VsdCk7ICAgCiB9CiAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVk
LWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBA
QAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCi0K
LVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3
LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9k
b21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwiCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRh
dGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAg
dmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZhciB3
aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2Ug
ZnJvbSBwYXJlbnQnKTsKLX0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFt
cGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5k
b2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2
PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
cmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKLSAg
aWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNv
bGlkIGJsYWNrOyI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4u
LjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFp
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAzMTY2NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLXdpbmRvdy5sb2NhdGlv
bi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCi1kb2N1bWVudC5kb21haW4gPSAw
LjAuMQotCi1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBkb21h
aW49IjEyNy4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwiCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVj
dGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMxNjY1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21h
aW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBl
LmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0g
ICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZh
ciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3Nh
Z2UgZnJvbSBwYXJlbnQnKTsKLX0KLQotZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsKLTwvc2Ny
aXB0PgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVu
dC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PmRvY3Vt
ZW50LmRvbWFpbiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWluKTs8L3Nj
cmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIGlk
PSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiCi0gIHN0eWxlPSJib3JkZXI6IDFweCBz
b2xpZCBibGFjazsiIG9ubG9hZD0idGVzdCgpIj4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0i
cmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93
cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlv
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBhc2RmOi4gUmVjaXBpZW50IGhhcyBvcmln
aW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5h
YmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDov
L2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBv
c3QgbWVzc2FnZSB0byAvdG1wL2Zvby4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2Fs
aG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVz
c2FnZSB0byAvL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9z
dDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwK
Kword2FpdGluZy4uLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBE
T00gRXhjZXB0aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnJy4KK0VuY291bnRlcmVk
IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiB3aGlsZSBwb3N0
aW5nIG1lc3NhZ2UgdG8gJ2FzZGYnLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2FzZGY6JyB3aXRob3V0
IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2h0dHA6JyB3aXRob3V0IGFueSBl
eGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy90bXAvZm9vJyB3aXRob3V0IGFueSBleGNl
cHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy8vbG9jYWxob3N0JyB3aXRob3V0IGFueSBleGNl
cHRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10
aHJvd3MtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24u
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKzwvc2NyaXB0PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24g
dHJ5UG9zdE1lc3NhZ2Uob3JpZ2luKSB7CisgIHRyeSB7CisgICAgd2luLnBvc3RNZXNzYWdlKCJU
cnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPlBvc3RlZCBtZXNzYWdlIHRvICciICsg
b3JpZ2luICsgIicgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4iOworICB9IGNhdGNoKGV4KSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPkVu
Y291bnRlcmVkIGV4Y2VwdGlvbiAiICsgZXggKyAiIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAn
IiArIG9yaWdpbiArICInLiI7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIg
aWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgd2luID0gaWZy
YW1lLmNvbnRlbnRXaW5kb3c7CisKKyAgICAvLyBOb24tVVJMcyBzaG91bGQgZmFpbCB3aXRoIGEg
c3ludGF4IGVycm9yLgorICAgIHRyeVBvc3RNZXNzYWdlKCIiKTsKKyAgICB0cnlQb3N0TWVzc2Fn
ZSgiYXNkZiIpOworCisgICAgLy8gVVJMcyB3aXRob3V0IGFuIG9yaWdpbiBzaG91bGQgZmFpbCB3
aXRob3V0IGdlbmVyYXRpbmcgYW55IGVycm9ycy4KKyAgICB0cnlQb3N0TWVzc2FnZSgiYXNkZjoi
KTsKKyAgICB0cnlQb3N0TWVzc2FnZSgiaHR0cDoiKTsKKworICAgIC8vIFdlYktpdCBjb252ZXJ0
cyBVUkxzIHRoYXQgc3RhcnQgd2l0aCAvIHRvIGZpbGU6Ly8gVVJMcy4gVGhleSBkb24ndCBtYXRj
aCB0aGUgdGFyZ2V0IGZyYW1lLCBzbyB0aGV5IGZhaWwgc2lsZW50bHkuCisgICAgdHJ5UG9zdE1l
c3NhZ2UoIi90bXAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2UoIi8vbG9jYWxob3N0Iik7CisK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5k
b3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9u
LmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVu
ZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0
PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+
Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlw
dC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Ut
c3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1z
dGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAs
MCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCi0K
LVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRvbWFpbj0ibG9jYWxo
b3N0IiB1cmk9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNv
dXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGls
bC1zZW5kcy1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4u
aHRtbAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwzMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cg
PSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUu
ZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7Ci0KLSAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOwotCi0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVj
diwgZmFsc2UpOwotCi08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5j
b20vIj4KLTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1l
bnQud3JpdGUoZG9jdW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2Pjxp
ZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVz
b3VyY2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgotICBpZD0iY2hpbGQi
IHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7
Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08
L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LW9yaWdpbi5odG1sCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQi
IG9yaWdpbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3Jp
Z2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHJldmlz
aW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbDozMDUxNSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVu
Y3Rpb24gcmVjdihlKSB7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSIn
ICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSAr
ICciJzsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxk
LmRhdGEgPSBtc2c7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPGJh
c2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8ZGl2PndpbmRvdy5s
b2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5o
cmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3Nh
Z2Utc2VuZGVyLmh0bWwiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0
eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlk
PSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Ut
c3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3Jp
Z2luLmh0bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKIH0KIAogZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZl
ZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAn
IiB1cmk9IicgKyBlLnVyaSArICciJzsKKyAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6
IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBvcmlnaW49IicgKyBlLm9yaWdpbiArICciJzsKIAogICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBtc2c7
CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3Jp
Z2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAord2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
b3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorCitSZWNlaXZlZCBtZXNzYWdlOiBk
YXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2lu
LXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2Ut
dGFnLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcu
aHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7CisKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBm
YWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRv
dzsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKK30KKzwvc2Ny
aXB0PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8ZGl2
PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9j
YXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1s
aXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBo
ZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lmcmFtZT48
L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29y
aWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4t
dW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5h
ZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFp
bi5odG1sCitkb2N1bWVudC5kb21haW4gPSAwLjAuMQorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRh
PSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLmh0bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IGUuZGF0YTsKKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZy
YW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdpbiA9IGlm
cmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVzc2FnZSBmcm9tIHBh
cmVudCcpOworfQorCitkb2N1bWVudC5kb21haW4gPSAiMC4wLjEiOworPC9zY3JpcHQ+Cis8Ym9k
eT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdp
bmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+ZG9jdW1lbnQuZG9tYWlu
ID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0PjwvZGl2
PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgaWQ9ImNoaWxkIiB3
aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIKKyAgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OyIgb25sb2FkPSJ0ZXN0KCkiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndh
aXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90
YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBV
bmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC4gUmVjaXBpZW50
IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi8vbG9jYWxob3N0LiBSZWNpcGll
bnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxob3N0LiBSZWNp
cGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9jYWxob3N0Ojgw
MDAuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL3d3dy5l
eGFtcGxlLmNvbS4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgor
Cit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9w
b3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKword2FpdGluZy4uLgorUmVjZWl2ZWQgbWVz
c2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAiIG9yaWdpbj0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9y
aWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9z
dDo4MDAwL2ZvbyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNz
YWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyIiBv
cmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRy
eWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6IiBvcmlnaW49Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmln
aW49aHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIgb3JpZ2luPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3Jp
Z2luPW51bGwiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2Fn
ZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj11bmRlZmluZWQiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAu
MTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS90YXJnZXQtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmln
aW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+IiAr
IGUuZGF0YTsKK30KKyAKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2
LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKHdpbiwgb3JpZ2luKSB7CisgICAg
d2luLnBvc3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7Cit9CisK
K2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKworICAg
IC8vIFNob3VsZCBzdWNjZWVkOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC8iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAv
Zm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zv
bz9iYXIiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAv
Zm9vP2JhciNiYXoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vdXNlcjpwYXNz
QGxvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCBu
dWxsKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sIHVuZGVmaW5lZCk7CisKKyAgICAvLyBTaG91
bGQgZmFpbDoKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjkwOTAi
KTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0Iik7CisgICAgdHJ5
UG9zdE1lc3NhZ2Uod2luLCAiaHR0cHM6Ly9sb2NhbGhvc3QiKTsKKyAgICB0cnlQb3N0TWVzc2Fn
ZSh3aW4sICJodHRwczovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2lu
LCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0
PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxk
aXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgpIgor
ICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHgg
c29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5n
Li4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkocmV2aXNpb24gMzE2NjUp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNl
cy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcg
QEAKIDxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdp
bmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBy
ZWN2KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRh
dGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOwor
ICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIG9y
aWdpbj0iJyArIGUub3JpZ2luICsgJyInOwogICAgIHRvcC5wb3N0TWVzc2FnZShtc2cpOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20359</attachid>
            <date>2008-04-05 19:38:52 -0700</date>
            <delta_ts>2008-04-08 17:58:20 -0700</delta_ts>
            <desc>Updated patch with better change log explanation</desc>
            <filename>post-message-origin.txt</filename>
            <type>text/plain</type>
            <size>70465</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTY2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDgtMDQtMDUgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorICAgICAg
ICBGaXhlcyBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDgK
KyAgICAgICAgCisgICAgICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8g
bWF0Y2ggSFRNTCA1IHNwZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFt
ZXRlciB0byBwb3N0TWVzc2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBh
dHRyaWJ1dGVzIG9mIE1lc3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4g
YXR0cmlidXRlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY29ycmVjdGx5LCB3ZSBu
ZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gaG9zdHMgYW5kIGRvbWFpbnMKKyAgICAgICAgaW4g
dGhlIFNlY3VyaXR5T3JpZ2luIGNsYXNzLiBUaGVyZSBhcmUgbm93IHRocmVlIHdheXMgdG8gY29t
cGFyZSBzZWN1cml0eSBvcmlnaW5zOgorICAgICAgICAxKSBpc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b21wYXJlcyBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0LCBhbmQgaXMgdXNlZCBmb3IgcG9zdE1lc3Nh
Z2UKKyAgICAgICAgMikgZXF1YWwgY29tcGFyZXMgYWxsIGFzcGVjdHMgb2YgdGhlIHNlY3VyaXR5
IG9yaWdpbiwgYW5kIGlzIHVzZWQgZm9yIGhhc2gga2V5cworICAgICAgICAzKSBjYW5BY2Nlc3Mg
dW5kZXJzdGFuZHMgdGhlIHNlbWFudGljcyBvZiBzY2hlbWVzIHN1Y2ggYXMgZmlsZTovLyBhbmQg
ZGF0YTovLyBVUkxzLAorICAgICAgICAgICBhbmQgc2hvdWxkIGJlIHVzZWQgZm9yIHNjcmlwdGlu
ZyBhY2Nlc3MgY2hlY2tzLgorCisgICAgICAgIENoYW5nZWQgU2VjdXJpdHlPcmlnaW46OnRvU3Ry
aW5nKCkgdG8gZ2VuZXJhdGUgaWRlbnRpZmllcnMgdGhhdCBhcmUgc3VpdGFibGUgZm9yIAorICAg
ICAgICBiZWluZyB1c2VkIGFzIGEgTWVzc2FnZUV2ZW50J3Mgb3JpZ2luIHByb3BlcnR5LiBJbiB0
aGUgZnV0dXJlLCB0aGV5IGNvdWxkIGJlIHVzZWQgCisgICAgICAgIGFzIGRhdGFiYXNlIHN0cmlu
ZyBpZGVudGlmaWVycyBhcyB3ZWxsLiBSZS11c2VkIEtVUkwgcGFyc2VyIHRvIHBhcnNlIHNlcmlh
bGl6ZWQgCisgICAgICAgIFNlY3VyaXR5T3JpZ2lucy4KKworICAgICAgICBDb2xsaW4gSmFja3Nv
biA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8g
dGhpcyBwYXRjaC4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Ut
c3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
YmFzZS5leHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbWFpbik6Cisg
ICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6b3JpZ2luKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVy
bik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmln
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpzZXREb21haW5Gcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjYW5BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2VjdXJl
VHJhbnNpdGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luVHJhaXRzOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6Om9yaWdpblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6cG9wdWxhdGVPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjph
ZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNl
KToKKwogMjAwOC0wNC0wNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuYmFzZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZp
c2lvbiAzMTY2NSkKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpA
QCAtMjg3LDcgKzI4Nyw4IEBAIF9fWk43V2ViQ29yZTE0RHJhZ0NvbnRyb2xsZXI5ZHJhZ0VuZGVk
RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJl
c291cmNlTG9hZGVyMTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW42Y3JlYXRlRVJLTlNfNlN0cmluZ0VTM190UFMwXworX19aTjdXZWJDb3JlMTRTZWN1
cml0eU9yaWdpbjZjcmVhdGVFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luNWVxdWFsRVBTMF8KIF9fWk43V2ViQ29yZTE1QXJjaGl2ZVJlc291cmNlNmNyZWF0ZUVOM1dU
RjEwUGFzc1JlZlB0cklOU18xMlNoYXJlZEJ1ZmZlckVFRVJLTlNfNEtVUkxFUktOU182U3RyaW5n
RVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVz
b3VyY2U4cmVzcG9uc2VFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHJlbW92ZUl0
ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDE3ICsxOTcsMTkgQEAg
dm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKgogSlNWYWx1ZSogSlNET01X
aW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKIHsK
ICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGltcGwoKTsKLSAgICAKICAgICBET01XaW5kb3cqIHNv
dXJjZSA9IHRvSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgp
OwotICAgIFN0cmluZyBkb21haW4gPSBzb3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5o
b3N0KCk7Ci0gICAgU3RyaW5nIHVyaSA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgp
LnN0cmluZygpOworCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzWzBdLT50b1N0cmluZyhleGVj
KTsKLSAgICAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIAotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgZG9t
YWluLCB1cmksIHNvdXJjZSk7Ci0gICAgCisKKyAgICBTdHJpbmcgb3JpZ2luID0gdmFsdWVUb1N0
cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBhcmdzWzFdKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBv
cmlnaW4sIHNvdXJjZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9u
IDMxNjY1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzMxLDcgKzI3MzEsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnJlZmVycmVyKCkgY29uc3QKIAogU3Ry
aW5nIERvY3VtZW50Ojpkb21haW4oKSBjb25zdAogewotICAgIHJldHVybiBtX3NlY3VyaXR5T3Jp
Z2luLT5ob3N0KCk7CisgICAgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4tPmRvbWFpbigpOwogfQog
CiB2b2lkIERvY3VtZW50OjpzZXREb21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pCkluZGV4
OiBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDEwIEBAIE1lc3NhZ2VFdmVu
dDo6TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmks
IERPTVdpbmRvdyogc291cmNlKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiAgICAg
OiBFdmVudChtZXNzYWdlRXZlbnQsIHRydWUsIHRydWUpCiAgICAgLCBtX2RhdGEoZGF0YSkKLSAg
ICAsIG1fZG9tYWluKGRvbWFpbikKLSAgICAsIG1fdXJpKHVyaSkKKyAgICAsIG1fb3JpZ2luKG9y
aWdpbikKICAgICAsIG1fc291cmNlKHNvdXJjZSkKIHsKIH0KQEAgLTU0LDcgKzUzLDcgQEAgTWVz
c2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpCit2b2lkIE1lc3NhZ2VFdmVu
dDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIERPTVdpbmRvdyogc291cmNlKQogewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTYyLDggKzYxLDcgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNz
YWdlRXZlbnQoY29ucwogICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUp
OwogICAgIAogICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgbV9kb21haW4gPSBkb21haW47Ci0gICAg
bV91cmkgPSB1cmk7CisgICAgbV9vcmlnaW4gPSBvcmlnaW47CiAgICAgbV9zb3VyY2UgPSBzb3Vy
Y2U7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMiArMzksMjAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lc3NhZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBNZXNzYWdlRXZlbnQoKTsKLSAgICAgICAgTWVzc2FnZUV2
ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmlu
ZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSk7CisgICAgICAgIE1lc3NhZ2VFdmVudChjb25zdCBT
dHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSk7CiAg
ICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVudCgpOwogCi0gICAgICAgIHZvaWQgaW5pdE1lc3Nh
Z2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0
IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSk7CisgICAgICAgIHZvaWQgaW5pdE1lc3Nh
Z2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdp
bmRvdyogc291cmNlKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQotICAgICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNv
bnN0IHsgcmV0dXJuIG1fZG9tYWluOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJpKCkgY29u
c3QgeyByZXR1cm4gbV91cmk7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgICAgICBET01XaW5kb3cqIHNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6ICAgIAogICAgICAgICBT
dHJpbmcgbV9kYXRhOwotICAgICAgICBTdHJpbmcgbV9kb21haW47Ci0gICAgICAgIFN0cmluZyBt
X3VyaTsKKyAgICAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBSZWZQdHI8RE9NV2luZG93
PiBtX3NvdXJjZTsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwJKHJldmlzaW9uIDMx
NjY1KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTEgKzI5LDEwIEBAIG1vZHVsZSBldmVudHMgewogICAgIGludGVyZmFjZSBbQ29uZGl0aW9u
YWw9Q1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HLEdlbmVyYXRlQ29uc3RydWN0b3JdIE1lc3NhZ2VF
dmVudCA6IEV2ZW50IHsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRh
dGE7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZG9tYWluOwotICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBvcmlnaW47CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01X
aW5kb3cgc291cmNlOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGlu
IERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBj
YW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIGRvbWFpbkFy
ZywgaW4gRE9NU3RyaW5nIHVyaUFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CisgICAgICAg
IHZvaWQgaW5pdE1lc3NhZ2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBj
YW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFB
cmcsIGluIERPTVN0cmluZyBvcmlnaW5BcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcpOwogCiAg
ICAgfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJ
KHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxMCw3ICs5MTAsNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpjaGVja09yaWdpbihjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybC5wcm90b2NvbCgpLCB1cmwu
aG9zdCgpLCB1cmwucG9ydCgpLCAwKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICBTZWN1cml0eU9yaWdpbjo6UmVh
c29uIHJlYXNvbjsKICAgICBpZiAoIW1fY2FudmFzLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYW5BY2Nlc3Mob3JpZ2luLmdldCgpLCByZWFzb24pKQogICAgICAgICBtX2NhbnZhcy0+
c2V0T3JpZ2luVGFpbnRlZCgpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgUGFzc1JlZlB0cjxDYW52
YXNQYXR0ZXJuPiBDYW52YXNSZW5kZXJpbgogICAgIGJvb2wgb3JpZ2luQ2xlYW4gPSB0cnVlOwog
ICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKSkg
ewogICAgICAgICBLVVJMIHVybChjYWNoZWRJbWFnZS0+dXJsKCkpOwotICAgICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsLnByb3Rv
Y29sKCksIHVybC5ob3N0KCksIHVybC5wb3J0KCksIDApOworICAgICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICAgICAg
U2VjdXJpdHlPcmlnaW46OlJlYXNvbiByZWFzb247CiAgICAgICAgIG9yaWdpbkNsZWFuID0gbV9j
YW52YXMtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhvcmlnaW4uZ2V0
KCksIHJlYXNvbik7CiAgICAgfQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDMxNjY1KQor
KysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICsz
MCwxMyBAQAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1
ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgorI2luY2x1
ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb25zb2xlLmgi
CiAjaW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
QEAgLTI0OCwxMCArMjUwLDQxIEBAIExvY2F0aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkgY29u
c3QKIH0KIAogI2lmIEVOQUJMRShDUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRv
bWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKSBjb25zdAordm9pZCBE
T01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikg
Y29uc3QKIHsKLSAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2
ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVzc2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSksIGVjLCB0
cnVlKTsKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghb3Jp
Z2luLmlzTnVsbCgpKSB7CisgICAgICAgIEtVUkwgZGVzaXJlZFRhcmdldFVSTChvcmlnaW4pOwor
ICAgICAgICBpZiAoIWRlc2lyZWRUYXJnZXRVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBl
Y0ZvclNlbmRlciA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGRlc2lyZWRUYXJnZXRPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRlc2lyZWRUYXJnZXRVUkwpOworICAgICAgICBTZWN1cml0
eU9yaWdpbiogYWN0dWFsVGFyZ2V0T3JpZ2luID0gZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KTsKKyAgICAgICAgaWYgKGRlc2lyZWRUYXJnZXRPcmlnaW4tPmlzRW1wdHkoKSB8fCAhZGVzaXJl
ZFRhcmdldE9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoYWN0dWFsVGFyZ2V0T3JpZ2luKSkg
eworICAgICAgICAgICAgLy8gVGhlIHNlbmRlciBpcyBub3QgYWxsb3dlZCB0byBmaW5kIG91dCB0
aGUgb3JpZ2luIG9mCisgICAgICAgICAgICAvLyB0aGUgcmVjaXBpZW50LCBzbyB3ZSBmYWlsIHNp
bGVudGx5IGFuZCBsb2cgYSBtZXNzYWdlCisgICAgICAgICAgICAvLyB0byB0aGUgY29uc29sZS4K
KyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuYWJsZSB0byBw
b3N0IG1lc3NhZ2UgdG8gJXMuIFJlY2lwaWVudCBoYXMgb3JpZ2luICVzLlxuIiwgCisgICAgICAg
ICAgICAgICAgb3JpZ2luLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFRhcmdldE9yaWdpbi0+dG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7CisgICAgICAgICAgICBpZiAocGFnZSkKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJv
bWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCAwLCBTdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBEb2N1bWVudCogc291cmNlRG9jdW1lbnQgPSBzb3VyY2UtPmRvY3Vt
ZW50KCkpCisgICAgaWYgKCFzb3VyY2VEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIFN0
cmluZyBzb3VyY2VPcmlnaW4gPSBzb3VyY2VEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKTsKKworICAgIC8vIFNlbmRlciBpcyBub3QgYWxsb3dlZCB0byBzZWUgZXhjZXB0aW9u
cyBvdGhlciB0aGFuIHN5bnRheCBlcnJvcnMKKyAgICBFeGNlcHRpb25Db2RlIGVjOyAKKyAgICBk
b2N1bWVudCgpLT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVzc2FnZSwgc291cmNl
T3JpZ2luLCBzb3VyY2UpLCBlYywgdHJ1ZSk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
cmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbnNv
bGUqIGNvbnNvbGUoKSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5BQkxFKENST1NTX0RPQ1VNRU5U
X01FU1NBR0lORykKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBz
b3VyY2UpIGNvbnN0OworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25D
b2RlJiBlY0ZvclNlbmRlcikgY29uc3Q7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5
KGludCB4LCBpbnQgeSkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMzE2NjUp
CisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcg
KzE0MCw4IEBAIG1vZHVsZSB3aW5kb3cgewogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1JPU1NfRE9D
VU1FTlRfTUVTU0FHSU5HKQogICAgICAgICAvLyBjcm9zcy1kb2N1bWVudCBtZXNzYWdpbmcKLSAg
ICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdl
KGluIERPTVN0cmluZyBtZXNzYWdlKTsKKyAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0
eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0
aW9uYWxdIERPTVN0cmluZyBvcmlnaW4pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCisj
aW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNTMsMTEgKzU0LDEwIEBAIHN0YXRp
YyBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1bnMKICAgICByZXR1cm4gZGVmYXVsdFBv
cnRzLmdldChwcm90b2NvbCkgPT0gcG9ydDsKIH0KIAotU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5
T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWdu
ZWQgc2hvcnQgcG9ydCkKLSAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wuaXNOdWxsKCkgPyAiIiA6
IHByb3RvY29sLmxvd2VyKCkpCi0gICAgLCBtX2hvc3QoaG9zdC5pc051bGwoKSA/ICIiIDogaG9z
dC5sb3dlcigpKQotICAgICwgbV9wb3J0KHBvcnQpCi0gICAgLCBtX3BvcnRTZXQocG9ydCkKK1Nl
Y3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCisgICAgOiBtX3By
b3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dl
cigpKQorICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCku
bG93ZXIoKSkKKyAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQogICAgICwgbV9ub0FjY2VzcyhmYWxz
ZSkKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCiB7CkBAIC02OSwxMSArNjksMjEg
QEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cgogICAgIGlmIChtX3By
b3RvY29sID09ICJkYXRhIikKICAgICAgICAgbV9ub0FjY2VzcyA9IHRydWU7CiAKKyAgICAvLyBk
b2N1bWVudC5kb21haW4gc3RhcnRzIGFzIG1faG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERP
TS4KKyAgICBtX2RvbWFpbiA9IG1faG9zdDsKIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkgeworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkKICAgICAgICAgbV9wb3J0ID0gMDsKLSAgICAgICAg
bV9wb3J0U2V0ID0gZmFsc2U7Ci0gICAgfSAgIAorfQorCitTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQorICAgIDogbV9wcm90b2NvbChv
dGhlci0+bV9wcm90b2NvbC5jb3B5KCkpCisgICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC5jb3B5
KCkpCisgICAgLCBtX2RvbWFpbihvdGhlci0+bV9kb21haW4uY29weSgpKQorICAgICwgbV9wb3J0
KG90aGVyLT5tX3BvcnQpCisgICAgLCBtX25vQWNjZXNzKG90aGVyLT5tX25vQWNjZXNzKQorICAg
ICwgbV9kb21haW5XYXNTZXRJbkRPTShvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKK3sKIH0K
IAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CkBAIC04MSwyNCArOTEsMTUg
QEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJv
dG9jb2wuaXNFbXB0eSgpOwogfQogCi1QYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9z
dCwgdW5zaWduZWQgc2hvcnQgcG9ydCwgU2VjdXJpdHlPcmlnaW4qIG93bmVyRnJhbWVPcmlnaW4p
CitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG5ldyBT
ZWN1cml0eU9yaWdpbihwcm90b2NvbCwgaG9zdCwgcG9ydCk7Ci0KLSAgICAvLyBJZiB3ZSBkbyBu
b3Qgb2J0YWluIGEgbWVhbmluZ2Z1bCBvcmlnaW4gZnJvbSB0aGUgVVJMLCB0aGVuIHdlIHRyeSB0
byBmaW5kIG9uZQotICAgIC8vIHZpYSB0aGUgZnJhbWUgaGllcmFyY2h5LgotICAgIC8vIFdlIGFs
aWFzIHRoZSBTZWN1cml0eU9yaWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAxNTMxMwot
ICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEzCi0gICAg
aWYgKG9yaWdpbi0+aXNFbXB0eSgpICYmIG93bmVyRnJhbWVPcmlnaW4pCi0gICAgICAgIHJldHVy
biBvd25lckZyYW1lT3JpZ2luOwotCi0gICAgcmV0dXJuIG9yaWdpbi5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIG5ldyBTZWN1cml0eU9yaWdpbih1cmwpOwogfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewog
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOwogCiAgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9
IGZyYW1lLT5sb2FkZXIoKTsKICAgICBjb25zdCBLVVJMJiB1cmwgPSBsb2FkZXItPnVybCgpOwpA
QCAtMTExLDE5ICsxMTIsMjcgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlP
cmlnaQogICAgIGlmIChvd25lckZyYW1lICYmIG93bmVyRnJhbWUtPmRvY3VtZW50KCkpCiAgICAg
ICAgIG93bmVyRnJhbWVPcmlnaW4gPSBvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpOwogCi0gICAgcmV0dXJuIGNyZWF0ZSh1cmwucHJvdG9jb2woKSwgdXJsLmhvc3QoKSwg
dXJsLnBvcnQoKSwgb3duZXJGcmFtZU9yaWdpbik7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW4gPSBjcmVhdGUodXJsKTsKKworICAgIC8vIElmIHdlIGRvIG5vdCBvYnRhaW4gYSBt
ZWFuaW5nZnVsIG9yaWdpbiBmcm9tIHRoZSBVUkwsIHRoZW4gd2UgdHJ5IHRvIGZpbmQgb25lCisg
ICAgLy8gdmlhIHRoZSBmcmFtZSBoaWVyYXJjaHkuCisgICAgLy8gV2UgYWxpYXMgdGhlIFNlY3Vy
aXR5T3JpZ2lucyB0byBtYXRjaCBGaXJlZm94LCBzZWUgQnVnIDE1MzEzCisgICAgLy8gaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKKyAgICBpZiAob3JpZ2luLT5p
c0VtcHR5KCkgJiYgb3duZXJGcmFtZU9yaWdpbikKKyAgICAgICAgcmV0dXJuIG93bmVyRnJhbWVP
cmlnaW47CisKKyAgICByZXR1cm4gb3JpZ2luLnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNvcHkoKQogewotICAgIHJldHVybiBjcmVh
dGUobV9wcm90b2NvbC5jb3B5KCksIG1faG9zdC5jb3B5KCksIG1fcG9ydCwgMCk7CisgICAgcmV0
dXJuIG5ldyBTZWN1cml0eU9yaWdpbih0aGlzKTsKIH0KIAotCiB2b2lkIFNlY3VyaXR5T3JpZ2lu
OjpzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogewogICAgIG1fZG9t
YWluV2FzU2V0SW5ET00gPSB0cnVlOwotICAgIG1faG9zdCA9IG5ld0RvbWFpbi5sb3dlcigpOwor
ICAgIG1fZG9tYWluID0gbmV3RG9tYWluLmxvd2VyKCk7CiB9CiAKIGJvb2wgU2VjdXJpdHlPcmln
aW46OmNhbkFjY2Vzcyhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIsIFJlYXNvbiYgcmVhc29u
KSBjb25zdApAQCAtMTY2LDcgKzE3NSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vz
cyhjb25zdCBTZWMKICAgICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAmJiBt
X3BvcnQgPT0gb3RoZXItPm1fcG9ydCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfSBlbHNlIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLT5tX2RvbWFpbldh
c1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLT5tX2hvc3QpCisg
ICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXItPm1fZG9tYWluKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1faG9z
dCA9PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0KSB7CkBAIC0xODYs
NTUgKzE5NSwxMDMgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmVUcmFuc2l0aW9uVAog
ICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKEZyYW1l
TG9hZGVyOjpzaG91bGRUcmVhdFNjaGVtZUFzTG9jYWwobV9wcm90b2NvbCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1faG9zdCwgU3RyaW5n
KHVybC5ob3N0KCkpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShtX3Byb3RvY29sLCBTdHJpbmcodXJs
LnByb3RvY29sKCkpKSAmJiBtX3BvcnQgPT0gdXJsLnBvcnQoKTsKKyAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG90aGVyID0gbmV3IFNlY3VyaXR5T3JpZ2luKHVybCk7CisgICAgUmVhc29uIHJl
YXNvbjsKKyAgICByZXR1cm4gY2FuQWNjZXNzKG90aGVyLmdldCgpLCByZWFzb24pOwogfQogCiBT
dHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cm90b2NvbCArICI6IiArIG1faG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKG1fcG9ydCk7Cisg
ICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKG1f
cHJvdG9jb2wgPT0gImZpbGUiKQorICAgICAgICByZXR1cm4gU3RyaW5nKCJmaWxlOi8vIik7CisK
KyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KG1f
cHJvdG9jb2wubGVuZ3RoKCkgKyBtX2hvc3QubGVuZ3RoKCkgKyAxMCk7CisgICAgYXBwZW5kKHJl
c3VsdCwgbV9wcm90b2NvbCk7CisgICAgYXBwZW5kKHJlc3VsdCwgIjovLyIpOworICAgIGFwcGVu
ZChyZXN1bHQsIG1faG9zdCk7CisKKyAgICBpZiAobV9wb3J0KSB7CisgICAgICBhcHBlbmQocmVz
dWx0LCAiOiIpOworICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIobV9wb3J0KSk7
CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKK30KKworUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCit7CisgICAgcmV0dXJuIG5ldyBTZWN1cml0eU9yaWdp
bihLVVJMKG9yaWdpblN0cmluZykpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciBTZXBhcmF0b3JD
aGFyYWN0ZXIgPSAnXyc7CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHN0cmluZ0lkZW50aWZpZXIp
CitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsgCiAg
ICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBmaXJzdCBzZXBhcmF0b3IKLSAgICBpbnQgc2VwYXJh
dG9yMSA9IHN0cmluZ0lkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIpOworICAgIGlu
dCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVy
KTsKICAgICBpZiAoc2VwYXJhdG9yMSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwg
IiIsIDAsIDApOworICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAgIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgc2Vjb25kIHNlcGFyYXRvcgotICAgIGludCBzZXBhcmF0
b3IyID0gc3RyaW5nSWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rlciwgc2VwYXJhdG9y
MSArIDEpOworICAgIGludCBzZXBhcmF0b3IyID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoU2Vw
YXJhdG9yQ2hhcmFjdGVyLCBzZXBhcmF0b3IxICsgMSk7CiAgICAgaWYgKHNlcGFyYXRvcjIgPT0g
LTEpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZShLVVJMKCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBub3Qg
YSB0aGlyZCBzZXBhcmF0b3IKLSAgICBpZiAoc3RyaW5nSWRlbnRpZmllci5yZXZlcnNlRmluZChT
ZXBhcmF0b3JDaGFyYWN0ZXIpICE9IHNlcGFyYXRvcjIpCi0gICAgICAgIHJldHVybiBjcmVhdGUo
IiIsICIiLCAwLCAwKTsKKyAgICBpZiAoZGF0YWJhc2VJZGVudGlmaWVyLnJldmVyc2VGaW5kKFNl
cGFyYXRvckNoYXJhY3RlcikgIT0gc2VwYXJhdG9yMikKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShL
VVJMKCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBh
IHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBvcnRPa2F5Owot
ICAgIGludCBwb3J0ID0gc3RyaW5nSWRlbnRpZmllci5yaWdodChzdHJpbmdJZGVudGlmaWVyLmxl
bmd0aCgpIC0gc2VwYXJhdG9yMiAtIDEpLnRvSW50KCZwb3J0T2theSk7Ci0gICAgaWYgKCFwb3J0
T2theSAmJiBzZXBhcmF0b3IyICsgMSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ0lkZW50aWZp
ZXIubGVuZ3RoKCkpKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAg
aW50IHBvcnQgPSBkYXRhYmFzZUlkZW50aWZpZXIucmlnaHQoZGF0YWJhc2VJZGVudGlmaWVyLmxl
bmd0aCgpIC0gc2VwYXJhdG9yMiAtIDEpLnRvSW50KCZwb3J0T2theSk7CisgICAgaWYgKCFwb3J0
T2theSAmJiBzZXBhcmF0b3IyICsgMSA9PSBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFiYXNlSWRlbnRp
Zmllci5sZW5ndGgoKSkpCisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAgICAKICAg
ICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDY1NTM1KQotICAgICAgICByZXR1cm4gY3JlYXRlKCIi
LCAiIiwgMCwgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAgICAgICAgCiAg
ICAgLy8gU3BsaXQgb3V0IHRoZSAzIHNlY3Rpb25zIG9mIGRhdGEKLSAgICBTdHJpbmcgcHJvdG9j
b2wgPSBzdHJpbmdJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKLSAgICBTdHJp
bmcgaG9zdCA9IHN0cmluZ0lkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBh
cmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwotICAgIHJldHVybiBjcmVhdGUocHJvdG9jb2wsIGhv
c3QsIHBvcnQsIDApOworICAgIFN0cmluZyBwcm90b2NvbCA9IGRhdGFiYXNlSWRlbnRpZmllci5z
dWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CisgICAgU3RyaW5nIGhvc3QgPSBkYXRhYmFzZUlkZW50
aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9yMSAt
IDEpOworICAgIHJldHVybiBjcmVhdGUoS1VSTChwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6
IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpKSk7CiB9Ci0gICAgCi0gICAgCi1TdHJpbmcgU2VjdXJp
dHlPcmlnaW46OnN0cmluZ0lkZW50aWZpZXIoKSBjb25zdCAKKworU3RyaW5nIFNlY3VyaXR5T3Jp
Z2luOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdCAKIHsKICAgICBzdGF0aWMgU3RyaW5nIHNl
cGFyYXRvclN0cmluZyA9IFN0cmluZygmU2VwYXJhdG9yQ2hhcmFjdGVyLCAxKTsKICAgICByZXR1
cm4gbV9wcm90b2NvbCArIHNlcGFyYXRvclN0cmluZyArIG1faG9zdCArIHNlcGFyYXRvclN0cmlu
ZyArIFN0cmluZzo6bnVtYmVyKG1fcG9ydCk7IAogfQogCitib29sIFNlY3VyaXR5T3JpZ2luOjpl
cXVhbChjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0IAoreworICAgIGlmICghaXNT
YW1lU2NoZW1lSG9zdFBvcnQob3RoZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAobV9kb21haW5XYXNTZXRJbkRPTSAhPSBvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZG9tYWluV2FzU2V0SW5ET00gJiYgbV9k
b21haW4gIT0gb3RoZXItPm1fZG9tYWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBv
cnQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCAKK3sKKyAgICBpZiAobV9ob3N0
ICE9IG90aGVyLT5tX2hvc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3By
b3RvY29sICE9IG90aGVyLT5tX3Byb3RvY29sKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAobV9wb3J0ICE9IG90aGVyLT5tX3BvcnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAzMTY2NSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTQgKzQzLDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJl
YWRTYWZlU2hhcmVkPFNlY3VyaXR5T3JpZ2luPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRm9yRnJhbWUoRnJhbWUqKTsKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21JZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwg
dW5zaWduZWQgc2hvcnQgcG9ydCwgU2VjdXJpdHlPcmlnaW4qIG93bmVyRnJhbWVPcmlnaW4pOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFi
YXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgS1VSTCYpOwog
CiAgICAgICAgIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNvcHkoKTsKIAogICAgICAgICB2
b2lkIHNldERvbWFpbkZyb21ET00oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pOwotICAgICAgICBT
dHJpbmcgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQogICAgICAgICBTdHJpbmcgcHJv
dG9jb2woKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CisgICAgICAgIFN0cmluZyBob3N0
KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CisgICAgICAgIFN0cmluZyBkb21haW4oKSBjb25z
dCB7IHJldHVybiBtX2RvbWFpbjsgfQogICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29u
c3QgeyByZXR1cm4gbV9wb3J0OyB9CiAgICAgICAgIAogICAgICAgICBlbnVtIFJlYXNvbiAgewpA
QCAtNjIsMTkgKzY0LDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgICAg
IAotICAgICAgICBTdHJpbmcgc3RyaW5nSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgICAgIC8v
IGRvIG5vdCB1c2UgdGhpcyBmb3IgYWNjZXNzIGNoZWNrcywgaXQncyB0aGVyZSBvbmx5IGZvciB1
c2luZyB0aGlzIGFzIGEgaGFzaHRhYmxlIGtleQotICAgICAgICBib29sIGVxdWFsKFNlY3VyaXR5
T3JpZ2luKiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbCA9PSBvdGhlci0+bV9wcm90
b2NvbCAmJiBtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1fcG9y
dDsgfQorICAgICAgICAvLyBTZXJpYWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiBmb3Igc3RvcmFn
ZSBpbiB0aGUgZGF0YWJhc2UuIFRoaXMgZm9ybWF0IGlzCisgICAgICAgIC8vIGRlcHJlY2F0ZWQg
YW5kIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGF0YWJh
c2VzOworICAgICAgICAvLyB1c2UgdG9TdHJpbmcoKSBhbmQgY3JlYXRlRnJvbVN0cmluZygpIGlu
c3RlYWQuCisgICAgICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdDsKKworICAg
ICAgICAvLyBUaGlzIG1ldGhvZCBjaGVja3MgZm9yIGVxdWFsaXR5IGJldHdlZW4gU2VjdXJpdHlP
cmlnaW5zLCBub3Qgd2hldGhlcgorICAgICAgICAvLyBvbmUgb3JpZ2luIGNhbiBhY2Nlc3MgYW5v
dGhlci4gIEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KKyAgICAgICAgLy8gRm9yIGFj
Y2VzcyBjaGVja3MsIHVzZSBjYW5BY2Nlc3MoKS4KKyAgICAgICAgLy8gRklYTUU6IElmIHRoaXMg
bWV0aG9kIGlzIHJlYWxseSBvbmx5IHVzZWZ1bCBmb3IgaGFzaCB0YWJsZSBrZXlzLCBpdAorICAg
ICAgICAvLyBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRvIFNlY3VyaXR5T3JpZ2luSGFzaC4KKyAg
ICAgICAgYm9vbCBlcXVhbChjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OworCisgICAgICAg
IC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHksIGlnbm9yaW5nIHRoZSB2YWx1ZSBv
ZiBkb2N1bWVudC5kb21haW4KKyAgICAgICAgLy8gKGFuZCB3aGV0aGVyIGl0IHdhcyBzZXQpIGJ1
dCBjb25zaWRlcmluZyB0aGUgaG9zdC4gSXQgaXMgdXNlZCBmb3IgcG9zdE1lc3NhZ2UuCisgICAg
ICAgIGJvb2wgaXNTYW1lU2NoZW1lSG9zdFBvcnQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25z
dDsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4oY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0
KTsKKyAgICAgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYpOworICAgICAg
ICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiopOwogCiAgICAg
ICAgIFN0cmluZyBtX3Byb3RvY29sOwogICAgICAgICBTdHJpbmcgbV9ob3N0OworICAgICAgICBT
dHJpbmcgbV9kb21haW47CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKLSAgICAgICAg
Ym9vbCBtX3BvcnRTZXQ7CiAgICAgICAgIGJvb2wgbV9ub0FjY2VzczsKICAgICAgICAgYm9vbCBt
X2RvbWFpbldhc1NldEluRE9NOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3Vy
aXR5T3JpZ2luSGFzaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlP
cmlnaW5IYXNoLmgJKHJldmlzaW9uIDMxNjY1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0
eU9yaWdpbkhhc2guaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBT
ZWN1cml0eU9yaWdpbkhhc2hfaAogI2RlZmluZSBTZWN1cml0eU9yaWdpbkhhc2hfaAogCisjaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC02MCw4ICs2MSw4IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpblRyYWl0
cyA6IFdURjo6R2VuZXIKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0g
dHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYgZGVsZXRlZFZh
bHVlKCkgCiAgICAgeyAKLSAgICAgICAgLy8gT2theSBkZWxldGVkIHZhbHVlIGJlY2F1c2UgZmls
ZTogcHJvdG9jb2xzIHNob3VsZCBhbHdheXMgaGF2ZSBwb3J0IDAKLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5EZWxldGVkVmFsdWUgPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJmaWxlIiwgIiIsIDEsIDApOyAgICAKKyAgICAgICAgLy8g
T2theSBkZWxldGVkIHZhbHVlIGJlY2F1c2UgImludmFsaWQtcHJvdG9jb2wiIGlzIG5vdCBhIHZh
bGlkIHByb3RvY29sLgorICAgICAgICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbkRlbGV0ZWRWYWx1ZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VS
TCgiaW52YWxpZC1wcm90b2NvbDoiKSk7CiAgICAgICAgIHJldHVybiBzZWN1cml0eU9yaWdpbkRl
bGV0ZWRWYWx1ZTsgCiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNw
cAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2Vy
OjpoYXNFbnRyeUZvckRhdGFiYXMKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxS
ZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0
KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQo
MSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0
KDIsIGRhdGFiYXNlSWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gc3RhdGVtZW50LnN0ZXAoKSA9
PSBTUUxSZXN1bHRSb3c7CkBAIC0xODksNyArMTg5LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tl
cjo6b3JpZ2luUGF0aChTZWN1cgogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJl
YWQpOwogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAg
cmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFN0cmluZyBEYXRhYmFzZVRyYWNr
ZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmTm90RXhpc3RzKQpAQCAtMTk5LDcgKzE5OSw3IEBAIFN0
cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWIKICAgICBpZiAobV9wcm9wb3Nl
ZERhdGFiYXNlICYmIG1fcHJvcG9zZWREYXRhYmFzZS0+Zmlyc3QgPT0gb3JpZ2luICYmIG1fcHJv
cG9zZWREYXRhYmFzZS0+c2Vjb25kLm5hbWUoKSA9PSBuYW1lKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+c3RyaW5nSWRl
bnRpZmllcigpOworICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKTsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHRoaXMtPm9yaWdpblBhdGgo
b3JpZ2luKTsKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBhdGggZm9yIHRoaXMgU2VjdXJp
dHlPcmlnaW4gZXhpc3RzCkBAIC0yMjYsNyArMjI2LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tl
cjo6ZnVsbFBhdGhGb3JEYXRhYgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIAog
ICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkgewotICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byByZXRyaWV2ZSBmaWxlbmFtZSBmcm9tIERhdGFiYXNlIFRyYWNrZXIgZm9yIG9yaWdp
biAlcywgbmFtZSAlcyIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgp
LCBuYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0
cmlldmUgZmlsZW5hbWUgZnJvbSBEYXRhYmFzZSBUcmFja2VyIGZvciBvcmlnaW4gJXMsIG5hbWUg
JXMiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpLCBuYW1lLmFz
Y2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBzdGF0
ZW1lbnQuZmluYWxpemUoKTsKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6cG9wdWxhdGVPcmlnaW5zKCkKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1
bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXIoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOworICAgICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKICAgICAgICAgbV9xdW90YU1hcC0+
c2V0KG9yaWdpbi5nZXQoKSwgc3RhdGVtZW50LmdldENvbHVtbkludDY0KDEpKTsKICAgICB9CiAK
QEAgLTMxNiwxNCArMzE2LDE0IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVz
Rm9yT3IKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3Ry
aW5nSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0
ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KQogICAgICAgICByZXN1bHRWZWN0
b3IuYXBwZW5kKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKIAogICAgIGlmIChyZXN1bHQg
IT0gU1FMUmVzdWx0RG9uZSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2
ZSBhbGwgZGF0YWJhc2UgbmFtZXMgZm9yIG9yaWdpbiAlcyIsIG9yaWdpbi0+c3RyaW5nSWRlbnRp
ZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0
cmlldmUgYWxsIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMzM3LDcgKzMzNyw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6
OmRldGFpbHMKICAgICBpZiAobV9wcm9wb3NlZERhdGFiYXNlICYmIG1fcHJvcG9zZWREYXRhYmFz
ZS0+Zmlyc3QgPT0gb3JpZ2luICYmIG1fcHJvcG9zZWREYXRhYmFzZS0+c2Vjb25kLm5hbWUoKSA9
PSBuYW1lKQogICAgICAgICByZXR1cm4gbV9wcm9wb3NlZERhdGFiYXNlLT5zZWNvbmQ7CiAKLSAg
ICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpOwor
ICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFz
ZS5pc09wZW4oKSkKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0
RGF0YWJhc2VEZXRhaWxzCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVh
ZCk7CiAKLSAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+c3RyaW5nSWRlbnRp
ZmllcigpOworICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKTsKICAgICBpbnQ2NF90IGd1aWQgPSAwOwogICAgIAogICAgIG9wZW5UcmFja2Vy
RGF0YWJhc2UodHJ1ZSk7CkBAIC01NDUsMjYgKzU0NSwyNiBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6c2V0UXVvdGEoU2VjdXJpdHlPCiAgICAgICAgIGlmICghbV9xdW90YU1hcC0+Y29udGFpbnMo
b3JpZ2luKSkgewogICAgICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFi
YXNlLCAiSU5TRVJUIElOVE8gT3JpZ2lucyBWQUxVRVMgKD8sID8pIik7CiAgICAgICAgICAgICBp
ZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRyYWNrZXIi
LCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0aGUgdHJh
Y2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIHN0YXRlbWVudC5i
aW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgICAg
ICBzdGF0ZW1lbnQuYmluZEludDY0KDIsIHF1b3RhKTsKIAogICAgICAgICAgICAgICAgIGlmIChz
dGF0ZW1lbnQuc3RlcCgpICE9IFNRTFJlc3VsdERvbmUpCi0gICAgICAgICAgICAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRyYWNrZXIiLCBv
cmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRy
YWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFNRTGl0ZVN0YXRlbWVu
dCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlVQREFURSBPcmlnaW5zIFNFVCBxdW90YT0/IFdIRVJF
IG9yaWdpbj0/Iik7ICAgICAgICAKICAgICAgICAgICAgIGJvb2wgZXJyb3IgPSBzdGF0ZW1lbnQu
cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rOwogICAgICAgICAgICAgaWYgKCFlcnJvcikgewogICAg
ICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgICAgICAgICAg
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7Cisg
ICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOwogCiAgICAgICAgICAgICAgICAgZXJyb3IgPSAhc3RhdGVtZW50LmV4ZWN1dGVD
b21tYW5kKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAg
ICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgcXVvdGEgJWxsdSBpbiB0cmFja2Vy
IGRhdGFiYXNlIGZvciBvcmlnaW4gJXMiLCBxdW90YSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVy
KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IHNldCBxdW90YSAlbGx1IGluIHRyYWNrZXIgZGF0YWJhc2UgZm9yIG9yaWdpbiAlcyIsIHF1b3Rh
LCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIEZJWE1FOiBJcyBpdCByZWFsbHkgT0sgdG8gdXBkYXRlIHRoZSBxdW90
YSBpbiBtZW1vcnkgaWYgd2UgZmFpbGVkIHRvIHVwZGF0ZSBpdCBvbiBkaXNrPwpAQCAtNTkwLDEy
ICs1OTAsMTIgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmFkZERhdGFiYXNlKFNlY3VyaQogICAg
IGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlm
aWVyKCkpOworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgbmFtZSk7CiAgICAgc3RhdGVtZW50
LmJpbmRUZXh0KDMsIHBhdGgpOwogCiAgICAgaWYgKCFzdGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQo
KSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBhZGQgZGF0YWJhc2UgJXMgdG8gb3Jp
Z2luICVzOiAlc1xuIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlm
aWVyKCkuYXNjaWkoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBhZGQgZGF0YWJhc2UgJXMgdG8gb3JpZ2luICVzOiAlc1xu
IiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2Np
aSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCkBAIC02MjUsNDAgKzYyNSw0MCBAQCB2b2lkIERhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyCiAKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZU5h
bWVzOwogICAgIGlmICghZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIGRhdGFiYXNlTmFt
ZXMpKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0
YWJhc2UgbmFtZXMgZm9yIG9yaWdpbiAlcyIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFz
Y2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmV0cmlldmUgbGlz
dCBvZiBkYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50
aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGFiYXNlTmFtZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgaWYgKCFkZWxldGVEYXRhYmFzZUZpbGUob3JpZ2luLCBkYXRhYmFzZU5hbWVzW2ld
KSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRh
dGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIGRhdGFiYXNlTmFtZXNbaV0uYXNjaWkoKS5kYXRhKCks
IG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFzZSAlcyBpbiBvcmln
aW4gJXMiLCBkYXRhYmFzZU5hbWVzW2ldLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJh
c2UsICJERUxFVEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAoc3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9t
IHRyYWNrZXIiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2Vz
IGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAg
IHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAg
ICAKICAgICBpZiAoIXN0YXRlbWVudC5leGVjdXRlQ29tbWFuZCgpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2lu
ICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBk
YXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CiAgICAgU1FMaXRlU3RhdGVtZW50IG9yaWdpblN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRF
IEZST00gT3JpZ2lucyBXSEVSRSBvcmlnaW49PyIpOwogICAgIGlmIChvcmlnaW5TdGF0ZW1lbnQu
cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHByZXBhcmUgZGVsZXRpb24gb2Ygb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+c3Ry
aW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2lu
LT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBvcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJ
ZGVudGlmaWVyKCkpOworICAgIG9yaWdpblN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAKICAgICBpZiAoIW9yaWdpblN0YXRlbWVudC5leGVj
dXRlQ29tbWFuZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVs
ZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+
c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJv
bSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5NiwyMSArNjk2LDIxIEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZShTZWMKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFkZWxldGVEYXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lKSkgewotICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwg
bmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3IgZGF0
YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5kYXRh
YmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRF
IEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT8iKTsKICAgICBpZiAoc3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZy
b20gdHJhY2tlciIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmll
cigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFy
ZSBkZWxldGlvbiBvZiBkYXRhYmFzZSAlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBu
YW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgc3RhdGVtZW50
LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQu
YmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgc3RhdGVtZW50
LmJpbmRUZXh0KDIsIG5hbWUpOwogICAgIAogICAgIGlmICghc3RhdGVtZW50LmV4ZWN1dGVDb21t
YW5kKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBv
ZiBkYXRhYmFzZSAlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBuYW1lLmFzY2lpKCku
ZGF0YSgpLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2UgJXMg
ZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2lu
LT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzE2NjcpCisrKyBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA4LTA0LTA1IEFkYW0gQmFy
dGggPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlZCBXZWJTZWN1cml0eU9yaWdpbiB0byBtYXRjaCBuZXcgU2Vj
dXJpdHlPcmlnaW4gQVBJLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtp
dEBjb2xsaW5qYWNrc29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisg
ICAgICAgICogU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2Vj
dXJpdHlPcmlnaW4gaG9zdF0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Q
cml2YXRlLmg6CisKIDIwMDgtMDQtMDQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFVzZSBXZWJDb3JlJ3MgSUNVIGhlYWRlcnMgaW5zdGVhZCBvZiBvdXIgb3duIGNv
cHkKSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9u
IDMxNjY1KQorKysgV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwyNCArMjksMTkgQEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2lu
SW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvS1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5
T3JpZ2luCi0KLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9t
YWluOihOU1N0cmluZyAqKWRvbWFpbgotewotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFByb3Rv
Y29sOnByb3RvY29sIGRvbWFpbjpkb21haW4gcG9ydDowXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhQ
cm90b2NvbDooTlNTdHJpbmcgKilwcm90b2NvbCBkb21haW46KE5TU3RyaW5nICopZG9tYWluIHBv
cnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQKKy0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAog
ewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbCwgZG9tYWluLCBwb3J0LCAwKTsKKworICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFt1
cmwgYWJzb2x1dGVVUkxdKSk7CiAgICAgb3JpZ2luLT5yZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKj4ob3JpZ2luLmdldCgpKTsK
IApAQCAtNTgsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cHJvdG9jb2woKTsK
IH0KIAotLSAoTlNTdHJpbmcqKWRvbWFpbgorLSAoTlNTdHJpbmcqKWhvc3QKIHsKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+aG9zdCgpOwog
fQpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUu
aAkocmV2aXNpb24gMzE2NjUpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmln
aW5Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMCBAQAogICAgIFdlYlNl
Y3VyaXR5T3JpZ2luUHJpdmF0ZSAqX3ByaXZhdGU7CiB9CiAKLS0gKGlkKWluaXRXaXRoUHJvdG9j
b2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbjsKLS0gKGlk
KWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAq
KWRvbWFpbiBwb3J0Oih1bnNpZ25lZCBzaG9ydClwb3J0OworLSAoaWQpaW5pdFdpdGhVUkw6KE5T
VVJMICopdXJsOwogCiAtIChOU1N0cmluZyopcHJvdG9jb2w7Ci0tIChOU1N0cmluZyopZG9tYWlu
OworLSAoTlNTdHJpbmcqKWhvc3Q7CiAKIC8vIFJldHVybnMgemVybyBpZiB0aGUgcG9ydCBpcyB0
aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgcHJvdG9jb2wsIG5vbi16ZXJvIG90aGVyd2lzZQogLSAo
dW5zaWduZWQgc2hvcnQpcG9ydDsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTY2NykKKysrIFdlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMDQtMDUg
IEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCAiZG9tYWluIiBtZXRob2QgdG8gImhvc3Qi
IHRvIG1hdGNoIFNlY3VyaXR5T3JpZ2luLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViU2Vj
dXJpdHlPcmlnaW4uaWRsOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAg
ICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpob3N0KToKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdp
bi5oOgorCiAyMDA4LTA0LTA0ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgT25seSBkZWxldGUgdGhlIGJhY2tpbmcgc3RvcmUgb2YgYmFja2dyb3VuZCB3
aW5kb3dzLgpJbmRleDogV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMxNjY1KQor
KysgV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5
LDcgKzk5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaQogICAg
IHJldHVybiBTX09LOwogfQogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
U2VjdXJpdHlPcmlnaW46OmRvbWFpbiggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNl
Y3VyaXR5T3JpZ2luOjpob3N0KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3Vs
dCkKIHsKICAgICBpZiAoIXJlc3VsdCkKSW5kZXg6IFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmln
aW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHJldmlz
aW9uIDMxNjY1KQorKysgV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcHJvdG9jb2woIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIq
IHJlc3VsdCk7CiAgICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkb21haW4oIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBob3N0KCAK
ICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwogICAgICAgICAKICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9ydCggCkluZGV4OiBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkocmV2aXNpb24gMzE2NjUp
CisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiBpbnRlcmZhY2Ug
SVdlYlNlY3VyaXR5T3JpZ2luIDogSVVua25vd24KIHsKICAgICBIUkVTVUxUIHByb3RvY29sKFtv
dXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKLSAgICBIUkVTVUxUIGRvbWFpbihbb3V0LCByZXR2
YWxdIEJTVFIqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBob3N0KFtvdXQsIHJldHZhbF0gQlNUUiog
cmVzdWx0KTsKICAgICBIUkVTVUxUIHBvcnQoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBzaG9ydCog
cmVzdWx0KTsKIAogICAgIEhSRVNVTFQgdXNhZ2UoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBsb25n
IGxvbmcqIHJlc3VsdCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTY2NykKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA4LTA0LTA1ICBB
ZGFtIEJhcnRoIDxoazk1NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZXMgTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gdXNl
IGhvc3QgaW5zdGVhZCBvZiBkb21haW4uCisKKyAgICAgICAgQ29sbGluIEphY2tzb24gPGNvbGxp
bmotd2Via2l0QGNvbGxpbmphY2tzb24uY29tPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcGF0
Y2guCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGF0YWJhc2VRdW90YSk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0
eU9yaWdpbjpkYXRhYmFzZTpdKToKKwogMjAwOC0wNC0wMyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDMxNjY1KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0Q3VzdG9tUG9saQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREYXRh
YmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsgICAgCi0gICAgV2ViU2VjdXJp
dHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoUHJv
dG9jb2w6QCJmaWxlIiBkb21haW46bmlsXTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2lu
ID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJmaWxlOi8vLyJdXTsKICAgICBbb3JpZ2luIHNldFF1b3RhOnF1b3RhXTsKICAgICBb
b3JpZ2luIHJlbGVhc2VdOwogfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDMxNjY1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEs
NyBAQCBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvCiAtICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgZXhjZWVkZWRE
YXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2lu
IGRhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIGlmICghZG9u
ZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCi0gICAg
ICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJh
c2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnslcywgJXMsICVpfSBkYXRhYmFzZTolc1xuIiwgW1tv
cmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBbW29yaWdpbiBkb21haW5dIFVURjhTdHJpbmdd
LCAKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVk
ZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVz
XG4iLCBbW29yaWdpbiBwcm90b2NvbF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGhvc3RdIFVURjhT
dHJpbmddLCAKICAgICAgICAgICAgIFtvcmlnaW4gcG9ydF0sIFtkYXRhYmFzZUlkZW50aWZpZXIg
VVRGOFN0cmluZ10pOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZh
dWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7ICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzE2Njcp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBA
QAorMjAwOC0wNC0wNSAgQWRhbSBCYXJ0aCAgPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3Rz
IGZvciBuZXcgcG9zdE1lc3NhZ2UgQVBJLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xs
aW5qLXdlYmtpdEBjb2xsaW5qYWNrc29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBh
dGNoLgorCisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3Nh
Z2Utc2VuZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVz
b3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnkt
YmFzZS10YWctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlv
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1z
dGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRv
bWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlw
dC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5k
cy1kb21haW4uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1i
eS1iYXNlLXRhZy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRt
bC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9j
dW1lbnQtZG9tYWluLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0
bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMv
cG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWw6IEFk
ZGVkLgorCiAyMDA4LTA0LTA1ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcv
Y3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDMxNjY1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
ZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMiArMSwyIEBACiAKLWRhdGE6IFNvbWV0aGluZyB1cmk6IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC5odG1sIGRvbWFp
bjogMTI3LjAuMC4xCitkYXRhOiBTb21ldGhpbmcgb3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9z
cy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2Vp
dmUuaHRtbAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3Nh
Z2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC05LDggKzksNyBAQAogZnVuY3Rpb24gcmVjZWl2ZXIoZSkgewogICAgIHZhciBy
ZXN1bHQgPSAiIjsKICAgICByZXN1bHQgKz0gImRhdGE6ICIgKyBlLmRhdGEgKyAiXG4iOwotICAg
IHJlc3VsdCArPSAidXJpOiAiICsgZS51cmkgKyAiXG4iOwotICAgIHJlc3VsdCArPSAiZG9tYWlu
OiAiICsgZS5kb21haW4gKyAiXG4iOworICAgIHJlc3VsdCArPSAib3JpZ2luOiAiICsgZS5vcmln
aW4gKyAiXG4iOwogICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHJlc3VsdCk7ICAgCiB9CiAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFu
ZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVy
aS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzE2NjUpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQt
dXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy5odG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQi
IGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9w
b3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwiCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1h
bmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQt
YnktYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJl
Y3YoZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxk
LmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRl
c3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcp
OwotICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3Nh
Z2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0
cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+
PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9
InRlc3QoKSIKLSAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJv
cmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3Vs
dCI+d2FpdGluZy4uLjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRv
Y3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMTY2NSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLXdp
bmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCi1kb2N1bWVu
dC5kb21haW4gPSAwLjAuMQotCi1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20g
cGFyZW50IiBkb21haW49IjEyNy4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0
bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2Rv
bWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0
ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMxNjY1KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9u
IHJlY3YoZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENo
aWxkLmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9u
IHRlc3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGls
ZCcpOwotICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1l
c3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLQotZG9jdW1lbnQuZG9tYWluID0gIjAu
MC4xIjsKLTwvc2NyaXB0PgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNj
cmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+
Ci08ZGl2PmRvY3VtZW50LmRvbWFpbiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQu
ZG9tYWluKTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3Rl
bmVyLmh0bWwiIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiCi0gIHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsiIG9ubG9hZD0idGVzdCgpIj4KLTwvaWZyYW1lPjwvZGl2
PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQt
b3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhy
b3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNl
cHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBhc2RmOi4gUmVjaXBp
ZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi4gUmVjaXBpZW50IGhhcyBv
cmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
VW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAvdG1wL2Zvby4gUmVjaXBpZW50IGhhcyBvcmlnaW4g
aHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxl
IHRvIHBvc3QgbWVzc2FnZSB0byAvL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0
cDovL2xvY2FsaG9zdDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhj
ZXB0aW9uLmh0bWwKKword2FpdGluZy4uLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnJy4K
K0VuY291bnRlcmVkIGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAx
MiB3aGlsZSBwb3N0aW5nIG1lc3NhZ2UgdG8gJ2FzZGYnLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2Fz
ZGY6JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2h0dHA6JyB3
aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy90bXAvZm9vJyB3aXRo
b3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy8vbG9jYWxob3N0JyB3aXRo
b3V0IGFueSBleGNlcHRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZh
bGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93
cy1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOwor
fQorIAorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsK
KworZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2Uob3JpZ2luKSB7CisgIHRyeSB7CisgICAgd2luLnBv
c3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPlBvc3RlZCBtZXNz
YWdlIHRvICciICsgb3JpZ2luICsgIicgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4iOworICB9IGNh
dGNoKGV4KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCArPSAiPGJyPkVuY291bnRlcmVkIGV4Y2VwdGlvbiAiICsgZXggKyAiIHdoaWxlIHBvc3Rpbmcg
bWVzc2FnZSB0byAnIiArIG9yaWdpbiArICInLiI7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7Cisg
ICAgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisKKyAgICAvLyBOb24tVVJMcyBzaG91bGQg
ZmFpbCB3aXRoIGEgc3ludGF4IGVycm9yLgorICAgIHRyeVBvc3RNZXNzYWdlKCIiKTsKKyAgICB0
cnlQb3N0TWVzc2FnZSgiYXNkZiIpOworCisgICAgLy8gVVJMcyB3aXRob3V0IGFuIG9yaWdpbiBz
aG91bGQgZmFpbCB3aXRob3V0IGdlbmVyYXRpbmcgYW55IGVycm9ycy4KKyAgICB0cnlQb3N0TWVz
c2FnZSgiYXNkZjoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSgiaHR0cDoiKTsKKworICAgIC8vIFdl
YktpdCBjb252ZXJ0cyBVUkxzIHRoYXQgc3RhcnQgd2l0aCAvIHRvIGZpbGU6Ly8gVVJMcy4gVGhl
eSBkb24ndCBtYXRjaCB0aGUgdGFyZ2V0IGZyYW1lLCBzbyB0aGV5IGZhaWwgc2lsZW50bHkuCisg
ICAgdHJ5UG9zdE1lc3NhZ2UoIi90bXAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2UoIi8vbG9j
YWxob3N0Iik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5
PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2lu
ZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1l
c3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9
IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9p
ZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZh
c2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzE2
NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFz
Y3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRv
bWFpbi5odG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRv
bWFpbj0ibG9jYWxob3N0IiB1cmk9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3Jp
cHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1z
ZW5kcy1kb21haW4uaHRtbAkocmV2aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21h
aW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewot
ICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRv
bWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7Ci0KLSAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOwotCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwotCi08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93
d3cuZXhhbXBsZS5jb20vIj4KLTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxz
Y3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9k
aXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgot
ICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHgg
c29saWQgYmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5n
Li4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdp
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxv
IGZyb20gY2hpbGQiIG9yaWdpbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3Rp
bGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2lu
Lmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbDoz
MDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2
YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNz
YWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9
IicgKyBlLnVyaSArICciJzsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5maXJzdENoaWxkLmRhdGEgPSBtc2c7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKKzwv
c2NyaXB0PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJvZHk+Cis8
ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVu
dC5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlw
dC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVp
Z2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9k
aXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZh
c2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3Rp
bGwtc2VuZHMtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
b3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBAIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKIH0KIAogZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1z
ZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsg
ZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKKyAgICB2YXIgbXNnID0gJ1JlY2Vp
dmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBvcmlnaW49IicgKyBlLm9yaWdpbiAr
ICciJzsKIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxk
LmRhdGEgPSBtc2c7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3Jp
Z2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBA
QAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorCitSZWNlaXZl
ZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVj
dGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQt
YnktYmFzZS10YWcuaHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUu
Y29udGVudFdpbmRvdzsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQn
KTsKK30KKzwvc2NyaXB0PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgor
PGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0
ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3Jj
PSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bv
c3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxkIiB3
aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+
Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRv
Y3VtZW50LWRvbWFpbi5odG1sCitkb2N1bWVudC5kb21haW4gPSAwLjAuMQorCitSZWNlaXZlZCBt
ZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5h
ZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0
ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRv
bWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9
IGUuZGF0YTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAg
dmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgnTWVz
c2FnZSBmcm9tIHBhcmVudCcpOworfQorCitkb2N1bWVudC5kb21haW4gPSAiMC4wLjEiOworPC9z
Y3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3Vt
ZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+ZG9j
dW1lbnQuZG9tYWluID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5kb21haW4pOzwv
c2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIg
aWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIKKyAgc3R5bGU9ImJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCkiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlk
PSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6OTA5
MC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi8vbG9jYWxo
b3N0LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8vbG9j
YWxob3N0LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBzOi8v
bG9jYWxob3N0OjgwMDAuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8g
aHR0cDovL3d3dy5leGFtcGxlLmNvbS4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2Fs
aG9zdDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKword2FpdGluZy4uLgor
UmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0Ojgw
MDAiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0
YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvIiBvcmlnaW49Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0
cDovL2xvY2FsaG9zdDo4MDAwL2ZvbyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitS
ZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9mb28/YmFyIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3Nh
Z2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6
IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9
IlRyeWluZyBvcmlnaW49aHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2Jh
eiIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRh
PSJUcnlpbmcgb3JpZ2luPW51bGwiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVj
ZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj11bmRlZmluZWQiIG9yaWdpbj0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L3RhcmdldC1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBy
ZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1M
ICs9ICI8YnI+IiArIGUuZGF0YTsKK30KKyAKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKHdpbiwgb3Jp
Z2luKSB7CisgICAgd2luLnBvc3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9y
aWdpbik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdp
bmRvdzsKKworICAgIC8vIFNob3VsZCBzdWNjZWVkOgorICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC8iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9j
YWxob3N0OjgwMDAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL2Zvbz9iYXIiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9j
YWxob3N0OjgwMDAvZm9vP2JhciNiYXoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
Oi8vdXNlcjpwYXNzQGxvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5UG9zdE1l
c3NhZ2Uod2luLCBudWxsKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sIHVuZGVmaW5lZCk7CisK
KyAgICAvLyBTaG91bGQgZmFpbDoKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9j
YWxob3N0OjkwOTAiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0
Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cHM6Ly9sb2NhbGhvc3QiKTsKKyAgICB0
cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9z
dE1lc3NhZ2Uod2luLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOworCisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhy
ZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3Njcmlw
dD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9h
ZD0idGVzdCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVz
dWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2Ut
bGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkocmV2
aXNpb24gMzE2NjUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNCw3ICs0LDcgQEAKIDxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3Vt
ZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KIDxzY3JpcHQ+
CiBmdW5jdGlvbiByZWN2KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRh
dGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUu
dXJpICsgJyInOworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUu
ZGF0YSArICciIG9yaWdpbj0iJyArIGUub3JpZ2luICsgJyInOwogICAgIHRvcC5wb3N0TWVzc2Fn
ZShtc2cpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20418</attachid>
            <date>2008-04-08 17:58:20 -0700</date>
            <delta_ts>2008-04-15 11:21:23 -0700</delta_ts>
            <desc>Updated patch to address compile issues</desc>
            <filename>post-message-origin-2007-04-08.txt</filename>
            <type>text/plain</type>
            <size>70499</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTc0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDgtMDQtMDggIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorICAgICAg
ICBGaXhlcyBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDgK
KyAgICAgICAgCisgICAgICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8g
bWF0Y2ggSFRNTCA1IHNwZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFt
ZXRlciB0byBwb3N0TWVzc2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBh
dHRyaWJ1dGVzIG9mIE1lc3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4g
YXR0cmlidXRlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY29ycmVjdGx5LCB3ZSBu
ZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gaG9zdHMgYW5kIGRvbWFpbnMKKyAgICAgICAgaW4g
dGhlIFNlY3VyaXR5T3JpZ2luIGNsYXNzLiBUaGVyZSBhcmUgbm93IHRocmVlIHdheXMgdG8gY29t
cGFyZSBzZWN1cml0eSBvcmlnaW5zOgorICAgICAgICAxKSBpc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b21wYXJlcyBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0LCBhbmQgaXMgdXNlZCBmb3IgcG9zdE1lc3Nh
Z2UKKyAgICAgICAgMikgZXF1YWwgY29tcGFyZXMgYWxsIGFzcGVjdHMgb2YgdGhlIHNlY3VyaXR5
IG9yaWdpbiwgYW5kIGlzIHVzZWQgZm9yIGhhc2gga2V5cworICAgICAgICAzKSBjYW5BY2Nlc3Mg
dW5kZXJzdGFuZHMgdGhlIHNlbWFudGljcyBvZiBzY2hlbWVzIHN1Y2ggYXMgZmlsZTovLyBhbmQg
ZGF0YTovLyBVUkxzLAorICAgICAgICAgICBhbmQgc2hvdWxkIGJlIHVzZWQgZm9yIHNjcmlwdGlu
ZyBhY2Nlc3MgY2hlY2tzLgorCisgICAgICAgIENoYW5nZWQgU2VjdXJpdHlPcmlnaW46OnRvU3Ry
aW5nKCkgdG8gZ2VuZXJhdGUgaWRlbnRpZmllcnMgdGhhdCBhcmUgc3VpdGFibGUgZm9yIAorICAg
ICAgICBiZWluZyB1c2VkIGFzIGEgTWVzc2FnZUV2ZW50J3Mgb3JpZ2luIHByb3BlcnR5LiBJbiB0
aGUgZnV0dXJlLCB0aGV5IGNvdWxkIGJlIHVzZWQgCisgICAgICAgIGFzIGRhdGFiYXNlIHN0cmlu
ZyBpZGVudGlmaWVycyBhcyB3ZWxsLiBSZS11c2VkIEtVUkwgcGFyc2VyIHRvIHBhcnNlIHNlcmlh
bGl6ZWQgCisgICAgICAgIFNlY3VyaXR5T3JpZ2lucy4KKworICAgICAgICBDb2xsaW4gSmFja3Nv
biA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8g
dGhpcyBwYXRjaC4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Ut
c3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
YmFzZS5leHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbWFpbik6Cisg
ICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6b3JpZ2luKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVy
bik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmln
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpzZXREb21haW5Gcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjYW5BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2VjdXJl
VHJhbnNpdGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luVHJhaXRzOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6Om9yaWdpblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6cG9wdWxhdGVPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjph
ZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNl
KToKKwogMjAwOC0wNC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgT01HIHJlbGVhc2UgYnVpbGRzIGRpZG4ndCBoYXZlIHRoaXMgZmxhZyBXaW5kb3dzIGJ1
aWxkIGJvdHMgSSdtIHNvIApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gMzE3NDQpCisrKyBXZWJD
b3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsOCBAQCBf
X1pON1dlYkNvcmUxNERyYWdDb250cm9sbGVyOWRyYWdFbmRlZEV2CiBfX1pON1dlYkNvcmUxNFJl
c291cmNlSGFuZGxlMTJyZWxlYXNlUHJveHlFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUxvYWRl
cjE0Y2FuY2VsbGVkRXJyb3JFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUxvYWRlcjE5c2V0U2hv
dWxkQnVmZmVyRGF0YUViCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05T
XzZTdHJpbmdFUzNfdFBTMF8KK19fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJL
TlNfNEtVUkxFCitfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjVlcXVhbEVQS1MwXwogX19a
TjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEy
U2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05TXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291
cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZThyZXNwb25zZUV2CiBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5SXRl
bUUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZp
c2lvbiAzMTc0NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTcgKzIwMCwxOSBAQCB2b2lkIEpTRE9NV2luZG93Ojpz
ZXRMb2NhdGlvbihFeGVjU3RhdGUqCiBKU1ZhbHVlKiBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2Uo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQogewogICAgIERPTVdpbmRvdyogd2lu
ZG93ID0gaW1wbCgpOwotICAgIAogICAgIERPTVdpbmRvdyogc291cmNlID0gdG9KU0RPTVdpbmRv
dyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7Ci0gICAgU3RyaW5nIGRvbWFp
biA9IHNvdXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLmhvc3QoKTsKLSAgICBTdHJpbmcg
dXJpID0gc291cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CisKICAgICBT
dHJpbmcgbWVzc2FnZSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpOwotICAgIAogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
Ci0gICAgd2luZG93LT5wb3N0TWVzc2FnZShtZXNzYWdlLCBkb21haW4sIHVyaSwgc291cmNlKTsK
LSAgICAKKworICAgIFN0cmluZyBvcmlnaW4gPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9y
TnVsbENoZWNrKGV4ZWMsIGFyZ3NbMV0pOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICB3aW5kb3ctPnBvc3RNZXNzYWdlKG1lc3NhZ2UsIG9yaWdpbiwgc291cmNlLCBlYyk7
CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMzE3NDQpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzEsNyArMjczMSw3IEBAIFN0
cmluZyBEb2N1bWVudDo6cmVmZXJyZXIoKSBjb25zdAogCiBTdHJpbmcgRG9jdW1lbnQ6OmRvbWFp
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4tPmhvc3QoKTsKKyAgICBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbi0+ZG9tYWluKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNl
dERvbWFpbihjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAko
cmV2aXNpb24gMzE3NDQpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSwxMSArNDEsMTAgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQog
ewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2Up
CitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkKICAgICA6IEV2ZW50KG1lc3NhZ2VFdmVu
dCwgdHJ1ZSwgdHJ1ZSkKICAgICAsIG1fZGF0YShkYXRhKQotICAgICwgbV9kb21haW4oZG9tYWlu
KQotICAgICwgbV91cmkodXJpKQorICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQogewogfQpAQCAtNTQsNyArNTMsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdl
RXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJp
LCBET01XaW5kb3cqIHNvdXJjZSkKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBz
b3VyY2UpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjIs
OCArNjEsNyBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zCiAgICAg
aW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7CiAgICAgCiAgICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBtX2RvbWFpbiA9IGRvbWFpbjsKLSAgICBtX3VyaSA9IHVyaTsKKyAgICBt
X29yaWdpbiA9IG9yaWdpbjsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKIH0KIApJbmRleDogV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmgJKHJldmlzaW9uIDMxNzQ0KQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyog
c291cmNlKTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNlKTsKICAgICAgICAgdmlydHVhbCB+TWVz
c2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdp
bmRvdyogc291cmNlKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpOwogICAg
ICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21h
aW47IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmkoKSBjb25zdCB7IHJldHVybiBtX3VyaTsg
fQorICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2lu
OyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
Z2V0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VFdmVudCgp
IGNvbnN0OwogCiAgICAgcHJpdmF0ZTogICAgCiAgICAgICAgIFN0cmluZyBtX2RhdGE7Ci0gICAg
ICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgU3RyaW5nIG1fdXJpOworICAgICAgICBTdHJp
bmcgbV9vcmlnaW47CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwogICAgIH07
CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkocmV2aXNpb24gMzE3NDQpCisrKyBXZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTAgQEAgbW9k
dWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1DUk9TU19ET0NVTUVOVF9N
RVNTQUdJTkcsR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gTWVzc2FnZUV2ZW50IDogRXZlbnQgewogCiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21haW47Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgdXJpOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9y
aWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBzb3VyY2U7CiAgICAg
ICAgIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcs
IGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERP
TVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgZG9tYWluQXJnLCBpbiBET01TdHJpbmcgdXJp
QXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2
ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9v
bGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9y
aWdpbkFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7CiAKICAgICB9OwogCkluZGV4OiBXZWJD
b3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMzE3NDQpCisr
KyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTEwLDcgKzkxMCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
SW1hZ2UKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUodXJsLnByb3RvY29sKCksIHVybC5ob3N0KCksIHVybC5wb3J0KCks
IDApOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh1cmwpOwogICAgIFNlY3VyaXR5T3JpZ2luOjpSZWFzb24gcmVhc29uOwogICAgIGlm
ICghbV9jYW52YXMtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyhvcmln
aW4uZ2V0KCksIHJlYXNvbikpCiAgICAgICAgIG1fY2FudmFzLT5zZXRPcmlnaW5UYWludGVkKCk7
CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IENhbnZhc1Jl
bmRlcmluCiAgICAgYm9vbCBvcmlnaW5DbGVhbiA9IHRydWU7CiAgICAgaWYgKENhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIEtVUkwgdXJs
KGNhY2hlZEltYWdlLT51cmwoKSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwucHJvdG9jb2woKSwgdXJsLmhvc3QoKSwg
dXJsLnBvcnQoKSwgMCk7CisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBTZWN1cml0eU9yaWdpbjo6UmVh
c29uIHJlYXNvbjsKICAgICAgICAgb3JpZ2luQ2xlYW4gPSBtX2NhbnZhcy0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKG9yaWdpbi5nZXQoKSwgcmVhc29uKTsKICAgICB9
CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMzE3NDQpCisrKyBXZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAi
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIK
ICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01TZWxl
Y3Rpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtMjg2LDEwICsyODgsNDEg
QEAgU3RvcmFnZSogRE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UoKSBjb25zdAogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HKQotdm9pZCBET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0
IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkgY29uc3QKK3ZvaWQgRE9NV2luZG93Ojpw
b3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBE
T01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWNGb3JTZW5kZXIpIGNvbnN0CiB7Ci0g
ICBFeGNlcHRpb25Db2RlIGVjOwotICAgZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVz
c2FnZUV2ZW50KG1lc3NhZ2UsIGRvbWFpbiwgdXJpLCBzb3VyY2UpLCBlYywgdHJ1ZSk7CisgICAg
aWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW9yaWdpbi5pc051bGwo
KSkgeworICAgICAgICBLVVJMIGRlc2lyZWRUYXJnZXRVUkwob3JpZ2luKTsKKyAgICAgICAgaWYg
KCFkZXNpcmVkVGFyZ2V0VVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZWNGb3JTZW5kZXIg
PSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkZXNpcmVkVGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShkZXNpcmVkVGFyZ2V0VVJMKTsKKyAgICAgICAgU2VjdXJpdHlPcmlnaW4qIGFj
dHVhbFRhcmdldE9yaWdpbiA9IGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAg
IGlmIChkZXNpcmVkVGFyZ2V0T3JpZ2luLT5pc0VtcHR5KCkgfHwgIWRlc2lyZWRUYXJnZXRPcmln
aW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGFjdHVhbFRhcmdldE9yaWdpbikpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBzZW5kZXIgaXMgbm90IGFsbG93ZWQgdG8gZmluZCBvdXQgdGhlIG9yaWdpbiBv
ZgorICAgICAgICAgICAgLy8gdGhlIHJlY2lwaWVudCwgc28gd2UgZmFpbCBzaWxlbnRseSBhbmQg
bG9nIGEgbWVzc2FnZQorICAgICAgICAgICAgLy8gdG8gdGhlIGNvbnNvbGUuCisgICAgICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmFibGUgdG8gcG9zdCBtZXNzYWdl
IHRvICVzLiBSZWNpcGllbnQgaGFzIG9yaWdpbiAlcy5cbiIsIAorICAgICAgICAgICAgICAgIG9y
aWdpbi51dGY4KCkuZGF0YSgpLCBhY3R1YWxUYXJnZXRPcmlnaW4tPnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
ICAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1l
c3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2Fn
ZSwgMCwgU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgRG9jdW1lbnQqIHNvdXJjZURvY3VtZW50ID0gc291cmNlLT5kb2N1bWVudCgpOworICAg
IGlmICghc291cmNlRG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBTdHJpbmcgc291cmNl
T3JpZ2luID0gc291cmNlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CisK
KyAgICAvLyBTZW5kZXIgaXMgbm90IGFsbG93ZWQgdG8gc2VlIGV4Y2VwdGlvbnMgb3RoZXIgdGhh
biBzeW50YXggZXJyb3JzCisgICAgRXhjZXB0aW9uQ29kZSBlYzsgCisgICAgZG9jdW1lbnQoKS0+
ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1lc3NhZ2UsIHNvdXJjZU9yaWdpbiwgc291
cmNlKSwgZWMsIHRydWUpOwogfQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDMx
NzQ0KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTks
NyArMTU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb25zb2xlKiBjb25zb2xl
KCkgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShDUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcp
Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKSBjb25z
dDsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWNGb3JT
ZW5kZXIpIGNvbnN0OwogI2VuZGlmCiAKICAgICAgICAgdm9pZCBzY3JvbGxCeShpbnQgeCwgaW50
IHkpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDMxNzQ0KQorKysgV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsOCBAQCBt
b2R1bGUgd2luZG93IHsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0NST1NTX0RPQ1VNRU5UX01FU1NB
R0lORykKICAgICAgICAgLy8gY3Jvc3MtZG9jdW1lbnQgbWVzc2FnaW5nCi0gICAgICAgIFtEb05v
dENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJp
bmcgbWVzc2FnZSk7CisgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0g
dm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBET01T
dHJpbmcgb3JpZ2luKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYK
IAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Vj
dXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzMTc0NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Vj
dXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAorI2luY2x1ZGUgIkNT
dHJpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTUzLDExICs1NCwxMCBAQCBzdGF0aWMgYm9vbCBpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zCiAgICAgcmV0dXJuIGRlZmF1bHRQb3J0cy5nZXQocHJv
dG9jb2wpID09IHBvcnQ7CiB9CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVuc2lnbmVkIHNob3J0IHBv
cnQpCi0gICAgOiBtX3Byb3RvY29sKHByb3RvY29sLmlzTnVsbCgpID8gIiIgOiBwcm90b2NvbC5s
b3dlcigpKQotICAgICwgbV9ob3N0KGhvc3QuaXNOdWxsKCkgPyAiIiA6IGhvc3QubG93ZXIoKSkK
LSAgICAsIG1fcG9ydChwb3J0KQotICAgICwgbV9wb3J0U2V0KHBvcnQpCitTZWN1cml0eU9yaWdp
bjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorICAgIDogbV9wcm90b2NvbCh1cmwu
cHJvdG9jb2woKS5pc051bGwoKSA/ICIiIDogdXJsLnByb3RvY29sKCkubG93ZXIoKSkKKyAgICAs
IG1faG9zdCh1cmwuaG9zdCgpLmlzTnVsbCgpID8gIiIgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCisg
ICAgLCBtX3BvcnQodXJsLnBvcnQoKSkKICAgICAsIG1fbm9BY2Nlc3MoZmFsc2UpCiAgICAgLCBt
X2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQogewpAQCAtNjksMTEgKzY5LDIxIEBAIFNlY3VyaXR5
T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTdHIKICAgICBpZiAobV9wcm90b2NvbCA9PSAi
ZGF0YSIpCiAgICAgICAgIG1fbm9BY2Nlc3MgPSB0cnVlOwogCisgICAgLy8gZG9jdW1lbnQuZG9t
YWluIHN0YXJ0cyBhcyBtX2hvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBET00uCisgICAgbV9k
b21haW4gPSBtX2hvc3Q7CiAKLSAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9y
dCwgbV9wcm90b2NvbCkpIHsKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9y
dCwgbV9wcm90b2NvbCkpCiAgICAgICAgIG1fcG9ydCA9IDA7Ci0gICAgICAgIG1fcG9ydFNldCA9
IGZhbHNlOwotICAgIH0gICAKK30KKworU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKKyAgICA6IG1fcHJvdG9jb2wob3RoZXItPm1fcHJv
dG9jb2wuY29weSgpKQorICAgICwgbV9ob3N0KG90aGVyLT5tX2hvc3QuY29weSgpKQorICAgICwg
bV9kb21haW4ob3RoZXItPm1fZG9tYWluLmNvcHkoKSkKKyAgICAsIG1fcG9ydChvdGhlci0+bV9w
b3J0KQorICAgICwgbV9ub0FjY2VzcyhvdGhlci0+bV9ub0FjY2VzcykKKyAgICAsIG1fZG9tYWlu
V2FzU2V0SW5ET00ob3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pCit7CiB9CiAKIGJvb2wgU2Vj
dXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdApAQCAtODEsMjQgKzkxLDE1IEBAIGJvb2wgU2Vj
dXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBtX3Byb3RvY29sLmlzRW1w
dHkoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVuc2lnbmVk
IHNob3J0IHBvcnQsIFNlY3VyaXR5T3JpZ2luKiBvd25lckZyYW1lT3JpZ2luKQorUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBuZXcgU2VjdXJpdHlPcmln
aW4ocHJvdG9jb2wsIGhvc3QsIHBvcnQpOwotCi0gICAgLy8gSWYgd2UgZG8gbm90IG9idGFpbiBh
IG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhlbiB3ZSB0cnkgdG8gZmluZCBvbmUK
LSAgICAvLyB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KLSAgICAvLyBXZSBhbGlhcyB0aGUgU2Vj
dXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKLSAgICAvLyBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMwotICAgIGlmIChvcmlnaW4t
PmlzRW1wdHkoKSAmJiBvd25lckZyYW1lT3JpZ2luKQotICAgICAgICByZXR1cm4gb3duZXJGcmFt
ZU9yaWdpbjsKLQotICAgIHJldHVybiBvcmlnaW4ucmVsZWFzZSgpOworICAgIHJldHVybiBuZXcg
U2VjdXJpdHlPcmlnaW4odXJsKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAgICAgIHJldHVy
biBjcmVhdGUoS1VSTCgpKTsKIAogICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9h
ZGVyKCk7CiAgICAgY29uc3QgS1VSTCYgdXJsID0gbG9hZGVyLT51cmwoKTsKQEAgLTExMSwxOSAr
MTEyLDI3IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2kKICAgICBp
ZiAob3duZXJGcmFtZSAmJiBvd25lckZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBvd25lckZy
YW1lT3JpZ2luID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKIAot
ICAgIHJldHVybiBjcmVhdGUodXJsLnByb3RvY29sKCksIHVybC5ob3N0KCksIHVybC5wb3J0KCks
IG93bmVyRnJhbWVPcmlnaW4pOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0g
Y3JlYXRlKHVybCk7CisKKyAgICAvLyBJZiB3ZSBkbyBub3Qgb2J0YWluIGEgbWVhbmluZ2Z1bCBv
cmlnaW4gZnJvbSB0aGUgVVJMLCB0aGVuIHdlIHRyeSB0byBmaW5kIG9uZQorICAgIC8vIHZpYSB0
aGUgZnJhbWUgaGllcmFyY2h5LgorICAgIC8vIFdlIGFsaWFzIHRoZSBTZWN1cml0eU9yaWdpbnMg
dG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAxNTMxMworICAgIC8vIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEzCisgICAgaWYgKG9yaWdpbi0+aXNFbXB0eSgpICYm
IG93bmVyRnJhbWVPcmlnaW4pCisgICAgICAgIHJldHVybiBvd25lckZyYW1lT3JpZ2luOworCisg
ICAgcmV0dXJuIG9yaWdpbi5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IFNlY3VyaXR5T3JpZ2luOjpjb3B5KCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKG1fcHJvdG9j
b2wuY29weSgpLCBtX2hvc3QuY29weSgpLCBtX3BvcnQsIDApOworICAgIHJldHVybiBuZXcgU2Vj
dXJpdHlPcmlnaW4odGhpcyk7CiB9CiAKLQogdm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWlu
RnJvbURPTShjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikKIHsKICAgICBtX2RvbWFpbldhc1NldElu
RE9NID0gdHJ1ZTsKLSAgICBtX2hvc3QgPSBuZXdEb21haW4ubG93ZXIoKTsKKyAgICBtX2RvbWFp
biA9IG5ld0RvbWFpbi5sb3dlcigpOwogfQogCiBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nl
c3MoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyLCBSZWFzb24mIHJlYXNvbikgY29uc3QKQEAg
LTE2Niw3ICsxNzUsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2Vj
CiAgICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLT5tX2hvc3QgJiYgbV9wb3J0ID09IG90
aGVyLT5tX3BvcnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxz
ZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkg
ewotICAgICAgICAgICAgaWYgKG1faG9zdCA9PSBvdGhlci0+bV9ob3N0KQorICAgICAgICAgICAg
aWYgKG1fZG9tYWluID09IG90aGVyLT5tX2RvbWFpbikKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXIt
Pm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1fcG9ydCkgewpAQCAtMTg2LDU1ICsxOTUsMTAz
IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlVHJhbnNpdGlvblQKICAgICBpZiAoaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChGcmFtZUxvYWRlcjo6c2hv
dWxkVHJlYXRTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtX2hvc3QsIFN0cmluZyh1cmwuaG9zdCgp
KSkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobV9wcm90b2NvbCwgU3RyaW5nKHVybC5wcm90b2NvbCgp
KSkgJiYgbV9wb3J0ID09IHVybC5wb3J0KCk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
dGhlciA9IG5ldyBTZWN1cml0eU9yaWdpbih1cmwpOworICAgIFJlYXNvbiByZWFzb247CisgICAg
cmV0dXJuIGNhbkFjY2VzcyhvdGhlci5nZXQoKSwgcmVhc29uKTsKIH0KIAogU3RyaW5nIFNlY3Vy
aXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJvdG9jb2wgKyAi
OiIgKyBtX2hvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihtX3BvcnQpOworICAgIGlmIChpc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChtX3Byb3RvY29sID09
ICJmaWxlIikKKyAgICAgICAgcmV0dXJuIFN0cmluZygiZmlsZTovLyIpOworCisgICAgVmVjdG9y
PFVDaGFyPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShtX3Byb3RvY29sLmxl
bmd0aCgpICsgbV9ob3N0Lmxlbmd0aCgpICsgMTApOworICAgIGFwcGVuZChyZXN1bHQsIG1fcHJv
dG9jb2wpOworICAgIGFwcGVuZChyZXN1bHQsICI6Ly8iKTsKKyAgICBhcHBlbmQocmVzdWx0LCBt
X2hvc3QpOworCisgICAgaWYgKG1fcG9ydCkgeworICAgICAgYXBwZW5kKHJlc3VsdCwgIjoiKTsK
KyAgICAgIGFwcGVuZChyZXN1bHQsIFN0cmluZzo6bnVtYmVyKG1fcG9ydCkpOworICAgIH0KKwor
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Cit9CisKK1Bhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nKQoreworICAgIHJldHVybiBuZXcgU2VjdXJpdHlPcmlnaW4oS1VSTChvcmln
aW5TdHJpbmcpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgU2VwYXJhdG9yQ2hhcmFjdGVyID0g
J18nOwogCi1QYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJpbmdJZGVudGlmaWVyKQorUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7IAogICAgIC8vIE1ha2Ug
c3VyZSB0aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCi0gICAgaW50IHNlcGFyYXRvcjEgPSBzdHJp
bmdJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyKTsKKyAgICBpbnQgc2VwYXJhdG9y
MSA9IGRhdGFiYXNlSWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYg
KHNlcGFyYXRvcjEgPT0gLTEpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1
cmUgdGhlcmUncyBhIHNlY29uZCBzZXBhcmF0b3IKLSAgICBpbnQgc2VwYXJhdG9yMiA9IHN0cmlu
Z0lkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIsIHNlcGFyYXRvcjEgKyAxKTsKKyAg
ICBpbnQgc2VwYXJhdG9yMiA9IGRhdGFiYXNlSWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJh
Y3Rlciwgc2VwYXJhdG9yMSArIDEpOwogICAgIGlmIChzZXBhcmF0b3IyID09IC0xKQotICAgICAg
ICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VS
TCgpKTsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3Mgbm90IGEgdGhpcmQgc2Vw
YXJhdG9yCi0gICAgaWYgKHN0cmluZ0lkZW50aWZpZXIucmV2ZXJzZUZpbmQoU2VwYXJhdG9yQ2hh
cmFjdGVyKSAhPSBzZXBhcmF0b3IyKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwg
MCk7CisgICAgaWYgKGRhdGFiYXNlSWRlbnRpZmllci5yZXZlcnNlRmluZChTZXBhcmF0b3JDaGFy
YWN0ZXIpICE9IHNlcGFyYXRvcjIpCisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAg
ICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0IHNlY3Rpb24gaXMgYSB2YWxpZCBwb3J0
IG51bWJlciBvciBkb2Vzbid0IGV4aXN0CiAgICAgYm9vbCBwb3J0T2theTsKLSAgICBpbnQgcG9y
dCA9IHN0cmluZ0lkZW50aWZpZXIucmlnaHQoc3RyaW5nSWRlbnRpZmllci5sZW5ndGgoKSAtIHNl
cGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwotICAgIGlmICghcG9ydE9rYXkgJiYgc2Vw
YXJhdG9yMiArIDEgPT0gc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdJZGVudGlmaWVyLmxlbmd0aCgp
KSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAgIGludCBwb3J0ID0g
ZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAtIHNl
cGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOworICAgIGlmICghcG9ydE9rYXkgJiYgc2Vw
YXJhdG9yMiArIDEgPT0gc3RhdGljX2Nhc3Q8aW50PihkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3Ro
KCkpKQorICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgCiAgICAgaWYgKHBvcnQg
PCAwIHx8IHBvcnQgPiA2NTUzNSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDAp
OworICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAgIAogICAgIC8vIFNwbGl0
IG91dCB0aGUgMyBzZWN0aW9ucyBvZiBkYXRhCi0gICAgU3RyaW5nIHByb3RvY29sID0gc3RyaW5n
SWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7Ci0gICAgU3RyaW5nIGhvc3QgPSBz
dHJpbmdJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNl
cGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gY3JlYXRlKHByb3RvY29sLCBob3N0LCBwb3J0LCAw
KTsKKyAgICBTdHJpbmcgcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAs
IHNlcGFyYXRvcjEpOworICAgIFN0cmluZyBob3N0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0
cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKKyAgICBy
ZXR1cm4gY3JlYXRlKEtVUkwocHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6
Om51bWJlcihwb3J0KSkpOwogfQotICAgIAotICAgIAotU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpz
dHJpbmdJZGVudGlmaWVyKCkgY29uc3QgCisKK1N0cmluZyBTZWN1cml0eU9yaWdpbjo6ZGF0YWJh
c2VJZGVudGlmaWVyKCkgY29uc3QgCiB7CiAgICAgc3RhdGljIFN0cmluZyBzZXBhcmF0b3JTdHJp
bmcgPSBTdHJpbmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7CiAgICAgcmV0dXJuIG1fcHJvdG9j
b2wgKyBzZXBhcmF0b3JTdHJpbmcgKyBtX2hvc3QgKyBzZXBhcmF0b3JTdHJpbmcgKyBTdHJpbmc6
Om51bWJlcihtX3BvcnQpOyAKIH0KIAorYm9vbCBTZWN1cml0eU9yaWdpbjo6ZXF1YWwoY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCAKK3sKKyAgICBpZiAoIWlzU2FtZVNjaGVtZUhv
c3RQb3J0KG90aGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZG9tYWlu
V2FzU2V0SW5ET00gIT0gb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG1fZG9tYWluICE9IG90
aGVyLT5tX2RvbWFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QgCit7CisgICAgaWYgKG1faG9zdCAhPSBvdGhlci0+
bV9ob3N0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9wcm90b2NvbCAhPSBv
dGhlci0+bV9wcm90b2NvbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fcG9y
dCAhPSBvdGhlci0+bV9wb3J0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJp
dHlPcmlnaW4uaAkocmV2aXNpb24gMzE3NDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJl
ZDxTZWN1cml0eU9yaWdpbj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZvckZyYW1lKEZyYW1lKik7Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVuc2lnbmVkIHNo
b3J0IHBvcnQsIFNlY3VyaXR5T3JpZ2luKiBvd25lckZyYW1lT3JpZ2luKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IEtVUkwmKTsKIAogICAgICAgICBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjb3B5KCk7CiAKICAgICAgICAgdm9pZCBzZXREb21h
aW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKLSAgICAgICAgU3RyaW5nIGhvc3Qo
KSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KICAgICAgICAgU3RyaW5nIHByb3RvY29sKCkgY29u
c3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQorICAgICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0IHsg
cmV0dXJuIG1faG9zdDsgfQorICAgICAgICBTdHJpbmcgZG9tYWluKCkgY29uc3QgeyByZXR1cm4g
bV9kb21haW47IH0KICAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9ydDsgfQogICAgICAgICAKICAgICAgICAgZW51bSBSZWFzb24gIHsKQEAgLTYyLDE5ICs2
NCwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CiAgICAgICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAg
U3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsKIAotICAgICAgICAvLyBkbyBub3QgdXNl
IHRoaXMgZm9yIGFjY2VzcyBjaGVja3MsIGl0J3MgdGhlcmUgb25seSBmb3IgdXNpbmcgdGhpcyBh
cyBhIGhhc2h0YWJsZSBrZXkKLSAgICAgICAgYm9vbCBlcXVhbChTZWN1cml0eU9yaWdpbiogb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2wgPT0gb3RoZXItPm1fcHJvdG9jb2wgJiYgbV9o
b3N0ID09IG90aGVyLT5tX2hvc3QgJiYgbV9wb3J0ID09IG90aGVyLT5tX3BvcnQ7IH0KKyAgICAg
ICAgLy8gU2VyaWFsaXplIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHN0b3JhZ2UgaW4gdGhlIGRh
dGFiYXNlLiBUaGlzIGZvcm1hdCBpcworICAgICAgICAvLyBkZXByZWNhdGVkIGFuZCBzaG91bGQg
YmUgdXNlZCBvbmx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGRhdGFiYXNlczsKKyAgICAg
ICAgLy8gdXNlIHRvU3RyaW5nKCkgYW5kIGNyZWF0ZUZyb21TdHJpbmcoKSBpbnN0ZWFkLgorICAg
ICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICAgICAgLy8gVGhp
cyBtZXRob2QgY2hlY2tzIGZvciBlcXVhbGl0eSBiZXR3ZWVuIFNlY3VyaXR5T3JpZ2lucywgbm90
IHdoZXRoZXIKKyAgICAgICAgLy8gb25lIG9yaWdpbiBjYW4gYWNjZXNzIGFub3RoZXIuICBJdCBp
cyB1c2VkIGZvciBoYXNoIHRhYmxlIGtleXMuCisgICAgICAgIC8vIEZvciBhY2Nlc3MgY2hlY2tz
LCB1c2UgY2FuQWNjZXNzKCkuCisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIG1ldGhvZCBpcyBy
ZWFsbHkgb25seSB1c2VmdWwgZm9yIGhhc2ggdGFibGUga2V5cywgaXQKKyAgICAgICAgLy8gc2hv
dWxkIGJlIHJlZmFjdG9yZWQgaW50byBTZWN1cml0eU9yaWdpbkhhc2guCisgICAgICAgIGJvb2wg
ZXF1YWwoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKKworICAgICAgICAvLyBUaGlzIG1l
dGhvZCBjaGVja3MgZm9yIGVxdWFsaXR5LCBpZ25vcmluZyB0aGUgdmFsdWUgb2YgZG9jdW1lbnQu
ZG9tYWluCisgICAgICAgIC8vIChhbmQgd2hldGhlciBpdCB3YXMgc2V0KSBidXQgY29uc2lkZXJp
bmcgdGhlIGhvc3QuIEl0IGlzIHVzZWQgZm9yIHBvc3RNZXNzYWdlLgorICAgICAgICBib29sIGlz
U2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CiAgICAgICAg
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCk7CisgICAgICAg
IGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgZXhwbGljaXQg
U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qKTsKIAogICAgICAgICBTdHJpbmcg
bV9wcm90b2NvbDsKICAgICAgICAgU3RyaW5nIG1faG9zdDsKKyAgICAgICAgU3RyaW5nIG1fZG9t
YWluOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7Ci0gICAgICAgIGJvb2wgbV9wb3J0
U2V0OwogICAgICAgICBib29sIG1fbm9BY2Nlc3M7CiAgICAgICAgIGJvb2wgbV9kb21haW5XYXNT
ZXRJbkRPTTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhh
c2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luSGFzaC5o
CShyZXZpc2lvbiAzMTc0NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgU2VjdXJpdHlPcmln
aW5IYXNoX2gKICNkZWZpbmUgU2VjdXJpdHlPcmlnaW5IYXNoX2gKIAorI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IApAQCAtNjAsOCArNjEsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5UcmFpdHMgOiBXVEY6Okdl
bmVyCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CiAgICAg
c3RhdGljIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mIGRlbGV0ZWRWYWx1ZSgpIAogICAg
IHsgCi0gICAgICAgIC8vIE9rYXkgZGVsZXRlZCB2YWx1ZSBiZWNhdXNlIGZpbGU6IHByb3RvY29s
cyBzaG91bGQgYWx3YXlzIGhhdmUgcG9ydCAwCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRGVsZXRlZFZhbHVlID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSgiZmlsZSIsICIiLCAxLCAwKTsgICAgCisgICAgICAgIC8vIE9rYXkgZGVsZXRl
ZCB2YWx1ZSBiZWNhdXNlICJpbnZhbGlkLXByb3RvY29sIiBpcyBub3QgYSB2YWxpZCBwcm90b2Nv
bC4KKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW5EZWxldGVkVmFsdWUgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoImludmFsaWQt
cHJvdG9jb2w6IikpOwogICAgICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5EZWxldGVkVmFsdWU7
IAogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9u
IDMxNzQ0KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlG
b3JEYXRhYmFzCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4t
PnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+
ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBkYXRhYmFz
ZUlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuIHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMUmVzdWx0
Um93OwpAQCAtMTg5LDcgKzE4OSw3IEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpblBh
dGgoU2VjdXIKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkKTsKICAgICBp
ZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi0+ZGF0
YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0
aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCBjcmVhdGVJZk5vdEV4aXN0cykKQEAgLTE5OSw3ICsxOTksNyBAQCBTdHJpbmcgRGF0YWJh
c2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiCiAgICAgaWYgKG1fcHJvcG9zZWREYXRhYmFzZSAm
JiBtX3Byb3Bvc2VkRGF0YWJhc2UtPmZpcnN0ID09IG9yaWdpbiAmJiBtX3Byb3Bvc2VkRGF0YWJh
c2UtPnNlY29uZC5uYW1lKCkgPT0gbmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKTsK
KyAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCk7CiAgICAgU3RyaW5nIG9yaWdpblBhdGggPSB0aGlzLT5vcmlnaW5QYXRoKG9yaWdpbik7CiAg
ICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXRoIGZvciB0aGlzIFNlY3VyaXR5T3JpZ2luIGV4
aXN0cwpAQCAtMjI2LDcgKzIyNiw3IEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRo
Rm9yRGF0YWIKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICAKICAgICBpZiAocmVz
dWx0ICE9IFNRTFJlc3VsdERvbmUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0
cmlldmUgZmlsZW5hbWUgZnJvbSBEYXRhYmFzZSBUcmFja2VyIGZvciBvcmlnaW4gJXMsIG5hbWUg
JXMiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgbmFtZS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIGZpbGVu
YW1lIGZyb20gRGF0YWJhc2UgVHJhY2tlciBmb3Igb3JpZ2luICVzLCBuYW1lICVzIiwgb3JpZ2lu
LT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgbmFtZS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAgICAgc3RhdGVtZW50LmZpbmFs
aXplKCk7CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnBvcHVsYXRl
T3JpZ2lucygpCiAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVt
ZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21JZGVudGlmaWVyKHN0YXRl
bWVudC5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihzdGF0
ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAgIG1fcXVvdGFNYXAtPnNldChvcmlnaW4u
Z2V0KCksIHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgxKSk7CiAgICAgfQogCkBAIC0zMTYsMTQg
KzMxNiwxNCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yCiAgICAg
aWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZp
ZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVu
dC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykKICAgICAgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChz
dGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3Vs
dERvbmUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgYWxsIGRhdGFi
YXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIGFsbCBk
YXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMz
Nyw3ICszMzcsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzCiAg
ICAgaWYgKG1fcHJvcG9zZWREYXRhYmFzZSAmJiBtX3Byb3Bvc2VkRGF0YWJhc2UtPmZpcnN0ID09
IG9yaWdpbiAmJiBtX3Byb3Bvc2VkRGF0YWJhc2UtPnNlY29uZC5uYW1lKCkgPT0gbmFtZSkKICAg
ICAgICAgcmV0dXJuIG1fcHJvcG9zZWREYXRhYmFzZS0+c2Vjb25kOwogCi0gICAgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcg
b3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAKICAgICBv
cGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkp
CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0
YWlscwogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJlYWQpOwogCi0gICAg
U3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKTsKKyAg
ICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7
CiAgICAgaW50NjRfdCBndWlkID0gMDsKICAgICAKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKHRy
dWUpOwpAQCAtNTQ1LDI2ICs1NDUsMjYgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3Rh
KFNlY3VyaXR5TwogICAgICAgICBpZiAoIW1fcXVvdGFNYXAtPmNvbnRhaW5zKG9yaWdpbikpIHsK
ICAgICAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VS
VCBJTlRPIE9yaWdpbnMgVkFMVUVTICg/LCA/KSIpOwogICAgICAgICAgICAgaWYgKHN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICVzIGluIHRoZSB0cmFja2VyIiwgb3JpZ2luLT5z
dHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRyYWNrZXIiLCBvcmln
aW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3Ry
aW5nSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICAgICAgc3RhdGVtZW50
LmJpbmRJbnQ2NCgyLCBxdW90YSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50LnN0
ZXAoKSAhPSBTUUxSZXN1bHREb25lKQotICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICVzIGluIHRoZSB0cmFja2VyIiwgb3JpZ2luLT5zdHJp
bmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICVzIGluIHRoZSB0cmFja2VyIiwgb3Jp
Z2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsICJVUERBVEUgT3JpZ2lucyBTRVQgcXVvdGE9PyBXSEVSRSBvcmlnaW49PyIp
OyAgICAgICAgCiAgICAgICAgICAgICBib29sIGVycm9yID0gc3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxSZXN1bHRPazsKICAgICAgICAgICAgIGlmICghZXJyb3IpIHsKICAgICAgICAgICAgICAg
ICBzdGF0ZW1lbnQuYmluZEludDY0KDEsIHF1b3RhKTsKLSAgICAgICAgICAgICAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
IAogICAgICAgICAgICAgICAgIGVycm9yID0gIXN0YXRlbWVudC5leGVjdXRlQ29tbWFuZCgpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHF1b3RhICVsbHUgaW4gdHJhY2tlciBkYXRhYmFzZSBm
b3Igb3JpZ2luICVzIiwgcXVvdGEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgcXVvdGEg
JWxsdSBpbiB0cmFja2VyIGRhdGFiYXNlIGZvciBvcmlnaW4gJXMiLCBxdW90YSwgb3JpZ2luLT5k
YXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBGSVhNRTogSXMgaXQgcmVhbGx5IE9LIHRvIHVwZGF0ZSB0aGUgcXVvdGEgaW4gbWVtb3J5
IGlmIHdlIGZhaWxlZCB0byB1cGRhdGUgaXQgb24gZGlzaz8KQEAgLTU5MCwxMiArNTkwLDEyIEBA
IGJvb2wgRGF0YWJhc2VUcmFja2VyOjphZGREYXRhYmFzZShTZWN1cmkKICAgICBpZiAoc3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG5hbWUpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgz
LCBwYXRoKTsKIAogICAgIGlmICghc3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gYWRkIGRhdGFiYXNlICVzIHRvIG9yaWdpbiAlczogJXNc
biIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lp
KCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gYWRkIGRhdGFiYXNlICVzIHRvIG9yaWdpbiAlczogJXNcbiIsIG5hbWUuYXNj
aWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCks
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIApAQCAtNjI1LDQwICs2MjUsNDAgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZU9yaWdpbihTZWN1cgogCiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lczsKICAgICBp
ZiAoIWRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLCBkYXRhYmFzZU5hbWVzKSkgewotICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byByZXRyaWV2ZSBsaXN0IG9mIGRhdGFiYXNlIG5hbWVz
IGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiAlcyIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNj
aWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlm
ICghZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgZGF0YWJhc2VOYW1lc1tpXSkpIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFzZSAlcyBp
biBvcmlnaW4gJXMiLCBkYXRhYmFzZU5hbWVzW2ldLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0
cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgZGF0
YWJhc2VOYW1lc1tpXS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CiAgICAgCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRF
IEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/Iik7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJl
cGFyZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwg
b3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdp
biAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgc3RhdGVtZW50
LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQu
YmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgCiAgICAgaWYg
KCFzdGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRy
YWNrZXIiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZy
b20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCku
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFNRTGl0
ZVN0YXRlbWVudCBvcmlnaW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIE9yaWdp
bnMgV0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAob3JpZ2luU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIGRl
bGV0aW9uIG9mIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZp
ZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBh
cmUgZGVsZXRpb24gb2Ygb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgb3JpZ2luU3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigp
KTsKKyAgICBvcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CiAgICAgCiAgICAgaWYgKCFvcmlnaW5TdGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQo
KSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9mIGRh
dGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPnN0cmluZ0lkZW50
aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4
ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIs
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC02OTYsMjEgKzY5NiwyMSBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6ZGVsZXRlRGF0YWJhc2UoU2VjCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghZGVsZXRl
RGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFtZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUuYXNjaWko
KS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGlu
IG9yaWdpbiAlcyIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlm
aWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAg
IFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIERhdGFi
YXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFtZT0/Iik7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJl
cGFyZSBkZWxldGlvbiBvZiBkYXRhYmFzZSAlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIi
LCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgp
LmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24g
b2YgZGF0YWJhc2UgJXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgbmFtZS5hc2NpaSgp
LmRhdGEoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgx
LCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEs
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgy
LCBuYW1lKTsKICAgICAKICAgICBpZiAoIXN0YXRlbWVudC5leGVjdXRlQ29tbWFuZCgpKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2Ug
JXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3Jp
Z2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2lu
ICVzIGZyb20gdHJhY2tlciIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDMxNzQ0KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOC0wNC0wOCBBZGFtIEJhcnRoIDxoazk1NjVA
Z21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZWQgV2ViU2VjdXJpdHlPcmlnaW4gdG8gbWF0Y2ggbmV3IFNlY3VyaXR5T3JpZ2lu
IEFQSS4KKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGluai13ZWJraXRAY29sbGluamFj
a3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFN0
b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2lu
IGhvc3RdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oOgor
CiAyMDA4LTA0LTA3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgIkVOQUJMRV9ET01fU1RPUkFHRSIgdG8ga2VlcCBpbiBzeW5jIHdpdGggdGhlIHJlc3Qg
b2YgdGhlIHByb2plY3QKSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdp
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4u
bW0JKHJldmlzaW9uIDMxNzQ0KQorKysgV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3Jp
Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNCArMjksMTkgQEAKICNpbXBvcnQgIldlYlNl
Y3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNr
ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9u
IFdlYlNlY3VyaXR5T3JpZ2luCi0KLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICop
cHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbgotewotICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aFByb3RvY29sOnByb3RvY29sIGRvbWFpbjpkb21haW4gcG9ydDowXTsKLX0KLQotLSAo
aWQpaW5pdFdpdGhQcm90b2NvbDooTlNTdHJpbmcgKilwcm90b2NvbCBkb21haW46KE5TU3RyaW5n
ICopZG9tYWluIHBvcnQ6KHVuc2lnbmVkIHNob3J0KXBvcnQKKy0gKGlkKWluaXRXaXRoVVJMOihO
U1VSTCAqKXVybAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwcm90b2NvbCwgZG9tYWluLCBwb3J0LCAwKTsK
KworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSk7CiAgICAgb3JpZ2luLT5yZWYoKTsKICAgICBf
cHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKj4ob3Jp
Z2luLmdldCgpKTsKIApAQCAtNTgsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+
cHJvdG9jb2woKTsKIH0KIAotLSAoTlNTdHJpbmcqKWRvbWFpbgorLSAoTlNTdHJpbmcqKWhvc3QK
IHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRl
KS0+aG9zdCgpOwogfQpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2lu
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9y
aWdpblByaXZhdGUuaAkocmV2aXNpb24gMzE3NDQpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMCBA
QAogICAgIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqX3ByaXZhdGU7CiB9CiAKLS0gKGlkKWlu
aXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRv
bWFpbjsKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWlu
OihOU1N0cmluZyAqKWRvbWFpbiBwb3J0Oih1bnNpZ25lZCBzaG9ydClwb3J0OworLSAoaWQpaW5p
dFdpdGhVUkw6KE5TVVJMICopdXJsOwogCiAtIChOU1N0cmluZyopcHJvdG9jb2w7Ci0tIChOU1N0
cmluZyopZG9tYWluOworLSAoTlNTdHJpbmcqKWhvc3Q7CiAKIC8vIFJldHVybnMgemVybyBpZiB0
aGUgcG9ydCBpcyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgcHJvdG9jb2wsIG5vbi16ZXJvIG90
aGVyd2lzZQogLSAodW5zaWduZWQgc2hvcnQpcG9ydDsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTc0NCkK
KysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDgtMDQtMDggIEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCAiZG9tYWluIiBtZXRo
b2QgdG8gImhvc3QiIHRvIG1hdGNoIFNlY3VyaXR5T3JpZ2luLgorCisgICAgICAgICogSW50ZXJm
YWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2lu
LmNwcDoKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpob3N0KToKKyAgICAgICAgKiBXZWJT
ZWN1cml0eU9yaWdpbi5oOgorCiAyMDA4LTA0LTA4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBFeHBvcnQgY2FsbE9uTWFpblRocmVhZCBmcm9tIFdlYktpdC5kbGwK
SW5kZXg6IFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzMTc0NCkKKysrIFdlYktp
dC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5
T3JpZ2luOjpkb21haW4oIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9y
aWdpbjo6aG9zdCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7CiAg
ICAgaWYgKCFyZXN1bHQpCkluZGV4OiBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAzMTc0
NCkKKysrIFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHByb3RvY29sKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQp
OwogICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9tYWlu
KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaG9zdCggCiAgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KTsKICAgICAgICAgCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBvcnQoIApJbmRleDogV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwJKHJldmlzaW9uIDMxNzQ0KQorKysgV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOwogaW50ZXJmYWNlIElXZWJTZWN1
cml0eU9yaWdpbiA6IElVbmtub3duCiB7CiAgICAgSFJFU1VMVCBwcm90b2NvbChbb3V0LCByZXR2
YWxdIEJTVFIqIHJlc3VsdCk7Ci0gICAgSFJFU1VMVCBkb21haW4oW291dCwgcmV0dmFsXSBCU1RS
KiByZXN1bHQpOworICAgIEhSRVNVTFQgaG9zdChbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7
CiAgICAgSFJFU1VMVCBwb3J0KFtvdXQsIHJldHZhbF0gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCk7
CiAKICAgICBIUkVTVUxUIHVzYWdlKFtvdXQsIHJldHZhbF0gdW5zaWduZWQgbG9uZyBsb25nKiBy
ZXN1bHQpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMzE3NDQpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOC0wNC0wOCAgQWRhbSBCYXJ0
aCA8aGs5NTY1QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGVzIExheW91dFRlc3RDb250cm9sbGVyIHRvIHVzZSBob3N0IGlu
c3RlYWQgb2YgZG9tYWluLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtp
dEBjb2xsaW5qYWNrc29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERhdGFiYXNlUXVvdGEpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIHdlYlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46
ZGF0YWJhc2U6XSk6CisKIDIwMDgtMDQtMDggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBhZnRlciBCcmFkeS4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0J
KHJldmlzaW9uIDMxNzQ0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q3VzdG9tUG9saQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkK
IHsgICAgCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIGluaXRXaXRoUHJvdG9jb2w6QCJmaWxlIiBkb21haW46bmlsXTsKKyAgICBXZWJT
ZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vLyJdXTsKICAgICBbb3JpZ2luIHNl
dFF1b3RhOnF1b3RhXTsKICAgICBbb3JpZ2luIHJlbGVhc2VdOwogfQpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDMxNzQ0KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJh
Z2dpbmdJbmZvCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZnJhbWU6KFdlYkZy
YW1lICopZnJhbWUgZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdlYlNl
Y3VyaXR5T3JpZ2luICopb3JpZ2luIGRhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRp
ZmllcgogewogICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcERhdGFi
YXNlQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FM
TEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnslcywgJXMsICVp
fSBkYXRhYmFzZTolc1xuIiwgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBbW29yaWdp
biBkb21haW5dIFVURjhTdHJpbmddLCAKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRB
QkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVz
LCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdpbiBwcm90b2NvbF0gVVRGOFN0cmluZ10s
IFtbb3JpZ2luIGhvc3RdIFVURjhTdHJpbmddLCAKICAgICAgICAgICAgIFtvcmlnaW4gcG9ydF0s
IFtkYXRhYmFzZUlkZW50aWZpZXIgVVRGOFN0cmluZ10pOwogCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7ICAgIApJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzE3NDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAwOC0wNC0wOCAgQWRhbSBCYXJ0aCAgPGhrOTU2NUBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIExheW91dFRlc3RzIGZvciBuZXcgcG9zdE1lc3NhZ2UgQVBJLgorCisgICAgICAg
IENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtpdEBjb2xsaW5qYWNrc29uLmNvbT4gYWxzbyBj
b250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdp
bmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1h
bmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5h
ZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWlu
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1v
cmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2Vw
dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlw
dC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9y
aWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFz
Y3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWcuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3Jp
Z2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWw6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90
YXJnZXQtb3JpZ2luLmh0bWw6IEFkZGVkLgorCiAyMDA4LTA0LTA4ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IEFkYW0KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNl
bmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVz
c2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAz
MTc0NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1t
ZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMiBAQAog
Ci1kYXRhOiBTb21ldGhpbmcgdXJpOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWVzc2FnaW5nL2Ny
b3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQuaHRtbCBkb21haW46IDEyNy4wLjAuMQorZGF0YTogU29t
ZXRoaW5nIG9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4MDAwCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jl
c291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwJKHJldmlzaW9uIDMxNzQ0
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRv
bWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDcgQEAK
IGZ1bmN0aW9uIHJlY2VpdmVyKGUpIHsKICAgICB2YXIgcmVzdWx0ID0gIiI7CiAgICAgcmVzdWx0
ICs9ICJkYXRhOiAiICsgZS5kYXRhICsgIlxuIjsKLSAgICByZXN1bHQgKz0gInVyaTogIiArIGUu
dXJpICsgIlxuIjsKLSAgICByZXN1bHQgKz0gImRvbWFpbjogIiArIGUuZG9tYWluICsgIlxuIjsK
KyAgICByZXN1bHQgKz0gIm9yaWdpbjogIiArIGUub3JpZ2luICsgIlxuIjsKICAgICBlLnNvdXJj
ZS5wb3N0TWVzc2FnZShyZXN1bHQpOyAgIAogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRh
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMxNzQ0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2Ut
dGFnLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICswLDAgQEAKLXdpbmRvdy5s
b2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAotCi1SZWNlaXZlZCBt
ZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBkb21haW49IjEyNy4wLjAuMSIgdXJp
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11
cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJh
c2UtdGFnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJ
KHJldmlzaW9uIDMxNzQ0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiByZWN2KGUpIHsKLSAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOwotCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgcmVjdiwgZmFsc2UpOwotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHZhciBpZnJhbWUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKLSAgICB2YXIgd2luID0gaWZyYW1l
LmNvbnRlbnRXaW5kb3c7Ci0gICAgd2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50
Jyk7Ci19Ci08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4K
LTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3Jp
dGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZyYW1lIHNy
Yz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9w
b3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCi0gIGlkPSJjaGlsZCIg
d2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsi
PgotPC9pZnJhbWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwv
Ym9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMzE3NDQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMCwwIEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAotZG9jdW1lbnQuZG9tYWluID0gMC4wLjEKLQotUmVj
ZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9tIHBhcmVudCIgZG9tYWluPSIxMjcuMC4w
LjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sIgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1
bWVudC1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5o
dG1sCShyZXZpc2lvbiAzMTc0NCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiByZWN2KGUpIHsKLSAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOwotCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHZhciBpZnJh
bWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKLSAgICB2YXIgd2luID0gaWZy
YW1lLmNvbnRlbnRXaW5kb3c7Ci0gICAgd2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFy
ZW50Jyk7Ci19Ci0KLWRvY3VtZW50LmRvbWFpbiA9ICIwLjAuMSI7Ci08L3NjcmlwdD4KLTxib2R5
PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2lu
ZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgotPGRpdj5kb2N1bWVudC5kb21haW4g
PSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+PC9kaXY+
Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBpZD0iY2hpbGQiIHdp
ZHRoPSI4MDAiIGhlaWdodD0iMzAwIgotICBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7
IiBvbmxvYWQ9InRlc3QoKSI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2Fp
dGluZy4uLjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJs
ZSB0byBwb3N0IG1lc3NhZ2UgdG8gYXNkZjouIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0
IG1lc3NhZ2UgdG8gaHR0cDouIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2Ug
dG8gL3RtcC9mb28uIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4K
KworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gLy9s
b2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKwor
d2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCisKK3dhaXRpbmcu
Li4KK0VuY291bnRlcmVkIGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlv
biAxMiB3aGlsZSBwb3N0aW5nIG1lc3NhZ2UgdG8gJycuCitFbmNvdW50ZXJlZCBleGNlcHRpb24g
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIgd2hpbGUgcG9zdGluZyBtZXNzYWdl
IHRvICdhc2RmJy4KK1Bvc3RlZCBtZXNzYWdlIHRvICdhc2RmOicgd2l0aG91dCBhbnkgZXhjZXB0
aW9ucy4KK1Bvc3RlZCBtZXNzYWdlIHRvICdodHRwOicgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4K
K1Bvc3RlZCBtZXNzYWdlIHRvICcvdG1wL2Zvbycgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4KK1Bv
c3RlZCBtZXNzYWdlIHRvICcvL2xvY2FsaG9zdCcgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1v
cmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2Vw
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3Njcmlw
dD4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJIVE1MICs9ICI8YnI+IiArIGUuZGF0YTsKK30KKyAKK2RvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRyeVBvc3RNZXNz
YWdlKG9yaWdpbikgeworICB0cnkgeworICAgIHdpbi5wb3N0TWVzc2FnZSgiVHJ5aW5nIG9yaWdp
bj0iICsgb3JpZ2luLCBvcmlnaW4pOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lckhUTUwgKz0gIjxicj5Qb3N0ZWQgbWVzc2FnZSB0byAnIiArIG9yaWdpbiArICIn
IHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuIjsKKyAgfSBjYXRjaChleCkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj5FbmNvdW50ZXJlZCBl
eGNlcHRpb24gIiArIGV4ICsgIiB3aGlsZSBwb3N0aW5nIG1lc3NhZ2UgdG8gJyIgKyBvcmlnaW4g
KyAiJy4iOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHdpbiA9IGlmcmFtZS5jb250ZW50
V2luZG93OworCisgICAgLy8gTm9uLVVSTHMgc2hvdWxkIGZhaWwgd2l0aCBhIHN5bnRheCBlcnJv
ci4KKyAgICB0cnlQb3N0TWVzc2FnZSgiIik7CisgICAgdHJ5UG9zdE1lc3NhZ2UoImFzZGYiKTsK
KworICAgIC8vIFVSTHMgd2l0aG91dCBhbiBvcmlnaW4gc2hvdWxkIGZhaWwgd2l0aG91dCBnZW5l
cmF0aW5nIGFueSBlcnJvcnMuCisgICAgdHJ5UG9zdE1lc3NhZ2UoImFzZGY6Iik7CisgICAgdHJ5
UG9zdE1lc3NhZ2UoImh0dHA6Iik7CisKKyAgICAvLyBXZWJLaXQgY29udmVydHMgVVJMcyB0aGF0
IHN0YXJ0IHdpdGggLyB0byBmaWxlOi8vIFVSTHMuIFRoZXkgZG9uJ3QgbWF0Y2ggdGhlIHRhcmdl
dCBmcmFtZSwgc28gdGhleSBmYWlsIHNpbGVudGx5LgorICAgIHRyeVBvc3RNZXNzYWdlKCIvdG1w
L2ZvbyIpOworICAgIHRyeVBvc3RNZXNzYWdlKCIvL2xvY2FsaG9zdCIpOworCisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9u
LmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3Nj
cmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9u
bG9hZD0idGVzdCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHls
ZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0i
cmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGls
bC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMxNzQ0KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
ZG9tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICswLDAgQEAKLXdpbmRv
dy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAotCi1SZWNlaXZlZCBt
ZXNzYWdlOiBkYXRhPSJIZWxsbyBmcm9tIGNoaWxkIiBkb21haW49ImxvY2FsaG9zdCIgdXJpPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFz
Y3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9t
YWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwJKHJldmlz
aW9uIDMxNzQ0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotfQotCi1mdW5jdGlvbiByZWN2KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVk
IG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICci
IHVyaT0iJyArIGUudXJpICsgJyInOwotCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
LX0KLQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsK
LQotPC9zY3JpcHQ+Ci08YmFzZSBocmVmPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyI+Ci08Ym9k
eT4KLTxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRv
Y3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgotPGRpdj48aWZyYW1lIHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9qYXZh
c2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIKLSAgaWQ9ImNoaWxkIiB3aWR0aD0iODAw
IiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Ci08L2lmcmFt
ZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgotPC9ib2R5PgotPC9o
dG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNj
cmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRt
bAorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJIZWxsbyBmcm9tIGNoaWxkIiBvcmlnaW49Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCShyZXZpc2lvbiAzMDUxNSkJ
KGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2Ny
aXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5k
cy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3Yo
ZSkgeworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSAr
ICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNn
OworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCis8L3NjcmlwdD4KKzxiYXNlIGhyZWY9Imh0
dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJl
ZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3Jp
cHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5o
dG1sIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53
YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCShy
ZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC04LDcgKzgsNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiB9
CiAKIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTog
ZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSInICsg
ZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsg
ZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7CiAKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOwogCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVj
dGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2Ut
dGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKKworUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2Fn
ZSBmcm9tIHBhcmVudCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVk
LWJ5LWJhc2UtdGFnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCShy
ZXZpc2lvbiAzMDUxNSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWw6MzA1MTUp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11
bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitm
dW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
Zmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2lu
LnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9Cis8L3NjcmlwdD4KKzxiYXNl
IGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KKzxib2R5PgorPGRpdj53aW5kb3cubG9j
YXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYp
Ozwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRt
bCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAi
IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2
IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZl
Y3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBA
Cit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorZG9j
dW1lbnQuZG9tYWluID0gMC4wLjEKKworUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBm
cm9tIHBhcmVudCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5
LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9t
YWluLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5o
dG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBy
ZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVu
dFdpbmRvdzsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKK30K
KworZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsKKzwvc2NyaXB0PgorPGJvZHk+Cis8ZGl2Pndp
bmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRp
b24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PmRvY3VtZW50LmRvbWFpbiA9IDxzY3JpcHQ+
ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWluKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlm
cmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNv
dXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIg
aGVpZ2h0PSIzMDAiCisgIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiIG9ubG9hZD0i
dGVzdCgpIj4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdp
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIxIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBv
c3QgbWVzc2FnZSB0byBodHRwOi8vbG9jYWxob3N0OjkwOTAuIFJlY2lwaWVudCBoYXMgb3JpZ2lu
IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJs
ZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmln
aW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5h
YmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwczovL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBv
cmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
VW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwczovL2xvY2FsaG9zdDo4MDAwLiBSZWNpcGll
bnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20u
IFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKword2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
dGFyZ2V0LW9yaWdpbi5odG1sCisKK3dhaXRpbmcuLi4KK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9
IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwIiBvcmlnaW49Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDov
L2xvY2FsaG9zdDo4MDAwLyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZl
ZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28i
IG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0i
VHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciIgb3JpZ2luPSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2lu
PWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIgb3JpZ2luPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly91
c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiIG9yaWdpbj0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1udWxsIiBv
cmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRy
eWluZyBvcmlnaW49dW5kZWZpbmVkIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9y
aWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPiIgKyBlLmRhdGE7Cit9
CisgCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwor
CitmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZSh3aW4sIG9yaWdpbikgeworICAgIHdpbi5wb3N0TWVz
c2FnZSgiVHJ5aW5nIG9yaWdpbj0iICsgb3JpZ2luLCBvcmlnaW4pOworfQorCitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQn
KTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisKKyAgICAvLyBTaG91bGQg
c3VjY2VlZDoKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAi
KTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAvIik7Cisg
ICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2ZvbyIpOworICAg
IHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyIik7Cisg
ICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6
Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6
ODAwMC9mb28/YmFyI2JheiIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgbnVsbCk7CisgICAg
dHJ5UG9zdE1lc3NhZ2Uod2luLCB1bmRlZmluZWQpOworCisgICAgLy8gU2hvdWxkIGZhaWw6Cisg
ICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo5MDkwIik7CisgICAgdHJ5
UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdCIpOworICAgIHRyeVBvc3RNZXNzYWdl
KHdpbiwgImh0dHBzOi8vbG9jYWxob3N0Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0
cHM6Ly9sb2NhbGhvc3Q6ODAwMCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly93
d3cuZXhhbXBsZS5jb20iKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0
PgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53
cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUg
c3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2Vz
L3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxk
IiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJj
ZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwJKHJldmlzaW9uIDMxNzQ0KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNz
YWdlLWxpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiA8ZGl2Pndp
bmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRp
b24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+CiA8c2NyaXB0PgogZnVuY3Rpb24gcmVjdihlKSB7Ci0g
ICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9t
YWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKKyAgICB2YXIgbXNn
ID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBvcmlnaW49IicgKyBl
Lm9yaWdpbiArICciJzsKICAgICB0b3AucG9zdE1lc3NhZ2UobXNnKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20562</attachid>
            <date>2008-04-15 11:21:23 -0700</date>
            <delta_ts>2008-04-17 11:45:42 -0700</delta_ts>
            <desc>Updated patch to fix bit rot</desc>
            <filename>post-message-origin-2008-04-15.txt</filename>
            <type>text/plain</type>
            <size>70300</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMTkwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDgtMDQtMTUgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorICAgICAg
ICBGaXhlcyBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDgK
KyAgICAgICAgCisgICAgICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8g
bWF0Y2ggSFRNTCA1IHNwZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFt
ZXRlciB0byBwb3N0TWVzc2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBh
dHRyaWJ1dGVzIG9mIE1lc3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4g
YXR0cmlidXRlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY29ycmVjdGx5LCB3ZSBu
ZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gaG9zdHMgYW5kIGRvbWFpbnMKKyAgICAgICAgaW4g
dGhlIFNlY3VyaXR5T3JpZ2luIGNsYXNzLiBUaGVyZSBhcmUgbm93IHRocmVlIHdheXMgdG8gY29t
cGFyZSBzZWN1cml0eSBvcmlnaW5zOgorICAgICAgICAxKSBpc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b21wYXJlcyBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0LCBhbmQgaXMgdXNlZCBmb3IgcG9zdE1lc3Nh
Z2UKKyAgICAgICAgMikgZXF1YWwgY29tcGFyZXMgYWxsIGFzcGVjdHMgb2YgdGhlIHNlY3VyaXR5
IG9yaWdpbiwgYW5kIGlzIHVzZWQgZm9yIGhhc2gga2V5cworICAgICAgICAzKSBjYW5BY2Nlc3Mg
dW5kZXJzdGFuZHMgdGhlIHNlbWFudGljcyBvZiBzY2hlbWVzIHN1Y2ggYXMgZmlsZTovLyBhbmQg
ZGF0YTovLyBVUkxzLAorICAgICAgICAgICBhbmQgc2hvdWxkIGJlIHVzZWQgZm9yIHNjcmlwdGlu
ZyBhY2Nlc3MgY2hlY2tzLgorCisgICAgICAgIENoYW5nZWQgU2VjdXJpdHlPcmlnaW46OnRvU3Ry
aW5nKCkgdG8gZ2VuZXJhdGUgaWRlbnRpZmllcnMgdGhhdCBhcmUgc3VpdGFibGUgZm9yIAorICAg
ICAgICBiZWluZyB1c2VkIGFzIGEgTWVzc2FnZUV2ZW50J3Mgb3JpZ2luIHByb3BlcnR5LiBJbiB0
aGUgZnV0dXJlLCB0aGV5IGNvdWxkIGJlIHVzZWQgCisgICAgICAgIGFzIGRhdGFiYXNlIHN0cmlu
ZyBpZGVudGlmaWVycyBhcyB3ZWxsLiBSZS11c2VkIEtVUkwgcGFyc2VyIHRvIHBhcnNlIHNlcmlh
bGl6ZWQgCisgICAgICAgIFNlY3VyaXR5T3JpZ2lucy4KKworICAgICAgICBDb2xsaW4gSmFja3Nv
biA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8g
dGhpcyBwYXRjaC4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Ut
c3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
YmFzZS5leHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbWFpbik6Cisg
ICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6b3JpZ2luKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVy
bik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmln
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpzZXREb21haW5Gcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjYW5BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2VjdXJl
VHJhbnNpdGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luVHJhaXRzOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6Om9yaWdpblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6cG9wdWxhdGVPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjph
ZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNl
KToKKwogMjAwOC0wNC0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzMTkwOCkK
KysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4
OCw4IEBAIF9fWk43V2ViQ29yZTE0RHJhZ0NvbnRyb2xsZXI5ZHJhZ0VuZGVkRXYKIF9fWk43V2Vi
Q29yZTE0UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiBfX1pON1dlYkNvcmUxNFJlc291
cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVy
MTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3Jl
YXRlRVJLTlNfNlN0cmluZ0VTM190UFMwXworX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZj
cmVhdGVFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNWVxdWFsRVBL
UzBfCiBfX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJMRVJLTlNfNlN0cmluZ0VTQV9TQV9SS05T
XzE2UmVzb3VyY2VSZXNwb25zZUUKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTByZW1v
dmVJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Qx
MHNldEVuYWJsZWRFYgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHJldmlzaW9uIDMxOTA4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCwxNCArMjA0LDE4IEBAIEpTVmFsdWUq
IEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3QKICAgICBET01XaW5kb3cqIHdpbmRvdyA9
IGltcGwoKTsKIAogICAgIERPTVdpbmRvdyogc291cmNlID0gdG9KU0RPTVdpbmRvdyhleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IHNvdXJj
ZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLmhvc3QoKTsKLSAgICBTdHJpbmcgdXJpID0gc291
cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICB3aW5kb3ctPnBvc3RN
ZXNzYWdlKG1lc3NhZ2UsIGRvbWFpbiwgdXJpLCBzb3VyY2UpOworICAgIFN0cmluZyBvcmlnaW4g
PSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGFyZ3NbMV0pOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3aW5kb3ctPnBvc3RNZXNzYWdl
KG1lc3NhZ2UsIG9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMzE5MDgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3MzAsNyArMjczMCw3IEBAIFN0cmluZyBEb2N1bWVudDo6cmVmZXJyZXIoKSBjb25zdAog
CiBTdHJpbmcgRG9jdW1lbnQ6OmRvbWFpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2VjdXJp
dHlPcmlnaW4tPmhvc3QoKTsKKyAgICByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi0+ZG9tYWluKCk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldERvbWFpbihjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikK
SW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMzE5MDgpCisrKyBXZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTAgQEAgTWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IHVyaSwgRE9NV2luZG93KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkK
ICAgICA6IEV2ZW50KG1lc3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAgICAsIG1fZGF0YShkYXRh
KQotICAgICwgbV9kb21haW4oZG9tYWluKQotICAgICwgbV91cmkodXJpKQorICAgICwgbV9vcmln
aW4ob3JpZ2luKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpAQCAtNTQsNyArNTMsNyBA
QCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12b2lkIE1lc3NhZ2VFdmVu
dDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBk
b21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK3ZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudChjb25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSk7CiAgICAgCiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2RvbWFpbiA9IGRvbWFpbjsK
LSAgICBtX3VyaSA9IHVyaTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBtX3NvdXJjZSA9
IHNvdXJjZTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9uIDMxOTA4KQorKysgV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50IDogcHVibGljIEV2
ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNz
YWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgTWVzc2FnZUV2ZW50KGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdpbmRvdyogc291cmNl
KTsKICAgICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwg
Y29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAgdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
RE9NV2luZG93KiBzb3VyY2UpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmko
KSBjb25zdCB7IHJldHVybiBtX3VyaTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc01lc3NhZ2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZTogICAgCiAgICAg
ICAgIFN0cmluZyBtX2RhdGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgU3Ry
aW5nIG1fdXJpOworICAgICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgICAgIFJlZlB0cjxET01X
aW5kb3c+IG1fc291cmNlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAkocmV2aXNp
b24gMzE5MDgpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxMSArMjksMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFtDb25k
aXRpb25hbD1DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gTWVz
c2FnZUV2ZW50IDogRXZlbnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgZGF0YTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21haW47Ci0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvdyBzb3VyY2U7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZl
bnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29s
ZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgZG9t
YWluQXJnLCBpbiBET01TdHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cgc291cmNlQXJnKTsKKyAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29s
ZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcg
ZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZyk7
CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAkocmV2aXNpb24gMzE5MDgpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEwLDcgKzkxMCw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsLnByb3RvY29sKCks
IHVybC5ob3N0KCksIHVybC5wb3J0KCksIDApOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
b3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgIFNlY3VyaXR5T3JpZ2lu
OjpSZWFzb24gcmVhc29uOwogICAgIGlmICghbV9jYW52YXMtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2VzcyhvcmlnaW4uZ2V0KCksIHJlYXNvbikpCiAgICAgICAgIG1fY2Fu
dmFzLT5zZXRPcmlnaW5UYWludGVkKCk7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBQYXNzUmVmUHRy
PENhbnZhc1BhdHRlcm4+IENhbnZhc1JlbmRlcmluCiAgICAgYm9vbCBvcmlnaW5DbGVhbiA9IHRy
dWU7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlLT5jYWNoZWRJbWFn
ZSgpKSB7CiAgICAgICAgIEtVUkwgdXJsKGNhY2hlZEltYWdlLT51cmwoKSk7Ci0gICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwu
cHJvdG9jb2woKSwgdXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwgMCk7CisgICAgICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAg
ICAgICBTZWN1cml0eU9yaWdpbjo6UmVhc29uIHJlYXNvbjsKICAgICAgICAgb3JpZ2luQ2xlYW4g
PSBtX2NhbnZhcy0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKG9yaWdp
bi5nZXQoKSwgcmVhc29uKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMzE5
MDgpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisj
aW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNv
bGUuaCIKICNpbmNsdWRlICJET01TZWxlY3Rpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgpAQCAtMjk2LDEwICsyOTgsNDEgQEAgU3RvcmFnZSogRE9NV2luZG93Ojpsb2NhbFN0b3Jh
Z2UoKSBjb25zdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5H
KQotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkg
Y29uc3QKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYg
ZWNGb3JTZW5kZXIpIGNvbnN0CiB7Ci0gICBFeGNlcHRpb25Db2RlIGVjOwotICAgZG9jdW1lbnQo
KS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1lc3NhZ2UsIGRvbWFpbiwgdXJpLCBz
b3VyY2UpLCBlYywgdHJ1ZSk7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIW9yaWdpbi5pc051bGwoKSkgeworICAgICAgICBLVVJMIGRlc2lyZWRUYXJnZXRV
Ukwob3JpZ2luKTsKKyAgICAgICAgaWYgKCFkZXNpcmVkVGFyZ2V0VVJMLmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgZWNGb3JTZW5kZXIgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkZXNpcmVkVGFy
Z2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkZXNpcmVkVGFyZ2V0VVJMKTsKKyAg
ICAgICAgU2VjdXJpdHlPcmlnaW4qIGFjdHVhbFRhcmdldE9yaWdpbiA9IGRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgICAgIGlmIChkZXNpcmVkVGFyZ2V0T3JpZ2luLT5pc0VtcHR5
KCkgfHwgIWRlc2lyZWRUYXJnZXRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGFjdHVhbFRh
cmdldE9yaWdpbikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzZW5kZXIgaXMgbm90IGFsbG93ZWQg
dG8gZmluZCBvdXQgdGhlIG9yaWdpbiBvZgorICAgICAgICAgICAgLy8gdGhlIHJlY2lwaWVudCwg
c28gd2UgZmFpbCBzaWxlbnRseSBhbmQgbG9nIGEgbWVzc2FnZQorICAgICAgICAgICAgLy8gdG8g
dGhlIGNvbnNvbGUuCisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0
KCJVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvICVzLiBSZWNpcGllbnQgaGFzIG9yaWdpbiAlcy5c
biIsIAorICAgICAgICAgICAgICAgIG9yaWdpbi51dGY4KCkuZGF0YSgpLCBhY3R1YWxUYXJnZXRP
cmlnaW4tPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBQYWdlKiBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAgICAg
ICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgRG9jdW1lbnQqIHNvdXJjZURvY3VtZW50ID0g
c291cmNlLT5kb2N1bWVudCgpOworICAgIGlmICghc291cmNlRG9jdW1lbnQpCisgICAgICAgIHJl
dHVybjsKKyAgICBTdHJpbmcgc291cmNlT3JpZ2luID0gc291cmNlRG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCktPnRvU3RyaW5nKCk7CisKKyAgICAvLyBTZW5kZXIgaXMgbm90IGFsbG93ZWQgdG8g
c2VlIGV4Y2VwdGlvbnMgb3RoZXIgdGhhbiBzeW50YXggZXJyb3JzCisgICAgRXhjZXB0aW9uQ29k
ZSBlYzsgCisgICAgZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1l
c3NhZ2UsIHNvdXJjZU9yaWdpbiwgc291cmNlKSwgZWMsIHRydWUpOwogfQogI2VuZGlmCiAKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgJKHJldmlzaW9uIDMxOTA4KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBDb25zb2xlKiBjb25zb2xlKCkgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShD
Uk9TU19ET0NVTUVOVF9NRVNTQUdJTkcpCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmks
IERPTVdpbmRvdyogc291cmNlKSBjb25zdDsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJj
ZSwgRXhjZXB0aW9uQ29kZSYgZWNGb3JTZW5kZXIpIGNvbnN0OwogI2VuZGlmCiAKICAgICAgICAg
dm9pZCBzY3JvbGxCeShpbnQgeCwgaW50IHkpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJl
dmlzaW9uIDMxOTA4KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw3ICsxNDUsOCBAQCBtb2R1bGUgd2luZG93IHsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX0NST1NTX0RPQ1VNRU5UX01FU1NBR0lORykKICAgICAgICAgLy8gY3Jvc3MtZG9jdW1lbnQg
bWVzc2FnaW5nCi0gICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9p
ZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSk7CisgICAgICAgIFtEb05vdENoZWNr
RG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVz
c2FnZSwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgb3JpZ2luKQorICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQ
VCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzMTkwOCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKIAorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTUzLDExICs1
NCwxMCBAQCBzdGF0aWMgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zCiAgICAgcmV0
dXJuIGRlZmF1bHRQb3J0cy5nZXQocHJvdG9jb2wpID09IHBvcnQ7CiB9CiAKLVNlY3VyaXR5T3Jp
Z2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGhvc3QsIHVuc2lnbmVkIHNob3J0IHBvcnQpCi0gICAgOiBtX3Byb3RvY29sKHByb3RvY29sLmlz
TnVsbCgpID8gIiIgOiBwcm90b2NvbC5sb3dlcigpKQotICAgICwgbV9ob3N0KGhvc3QuaXNOdWxs
KCkgPyAiIiA6IGhvc3QubG93ZXIoKSkKLSAgICAsIG1fcG9ydChwb3J0KQotICAgICwgbV9wb3J0
U2V0KHBvcnQpCitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYgdXJs
KQorICAgIDogbV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051bGwoKSA/ICIiIDogdXJsLnBy
b3RvY29sKCkubG93ZXIoKSkKKyAgICAsIG1faG9zdCh1cmwuaG9zdCgpLmlzTnVsbCgpID8gIiIg
OiB1cmwuaG9zdCgpLmxvd2VyKCkpCisgICAgLCBtX3BvcnQodXJsLnBvcnQoKSkKICAgICAsIG1f
bm9BY2Nlc3MoZmFsc2UpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQogewpAQCAt
NjksMTEgKzY5LDIxIEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTdHIK
ICAgICBpZiAobV9wcm90b2NvbCA9PSAiZGF0YSIpCiAgICAgICAgIG1fbm9BY2Nlc3MgPSB0cnVl
OwogCisgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2hvc3QsIGJ1dCBjYW4gYmUg
c2V0IGJ5IHRoZSBET00uCisgICAgbV9kb21haW4gPSBtX2hvc3Q7CiAKLSAgICBpZiAoaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKG1fcG9ydCwgbV9wcm90b2NvbCkpIHsKKyAgICBpZiAoaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKG1fcG9ydCwgbV9wcm90b2NvbCkpCiAgICAgICAgIG1fcG9ydCA9
IDA7Ci0gICAgICAgIG1fcG9ydFNldCA9IGZhbHNlOwotICAgIH0gICAKK30KKworU2VjdXJpdHlP
cmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKKyAgICA6
IG1fcHJvdG9jb2wob3RoZXItPm1fcHJvdG9jb2wuY29weSgpKQorICAgICwgbV9ob3N0KG90aGVy
LT5tX2hvc3QuY29weSgpKQorICAgICwgbV9kb21haW4ob3RoZXItPm1fZG9tYWluLmNvcHkoKSkK
KyAgICAsIG1fcG9ydChvdGhlci0+bV9wb3J0KQorICAgICwgbV9ub0FjY2VzcyhvdGhlci0+bV9u
b0FjY2VzcykKKyAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00ob3RoZXItPm1fZG9tYWluV2FzU2V0
SW5ET00pCit7CiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdApAQCAt
ODEsMjQgKzkxLDE1IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAogICAg
IHJldHVybiBtX3Byb3RvY29sLmlzRW1wdHkoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGhvc3QsIHVuc2lnbmVkIHNob3J0IHBvcnQsIFNlY3VyaXR5T3JpZ2luKiBvd25l
ckZyYW1lT3JpZ2luKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW4gPSBuZXcgU2VjdXJpdHlPcmlnaW4ocHJvdG9jb2wsIGhvc3QsIHBvcnQpOwotCi0gICAg
Ly8gSWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwg
dGhlbiB3ZSB0cnkgdG8gZmluZCBvbmUKLSAgICAvLyB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4K
LSAgICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNl
ZSBCdWcgMTUzMTMKLSAgICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTMxMwotICAgIGlmIChvcmlnaW4tPmlzRW1wdHkoKSAmJiBvd25lckZyYW1lT3JpZ2luKQot
ICAgICAgICByZXR1cm4gb3duZXJGcmFtZU9yaWdpbjsKLQotICAgIHJldHVybiBvcmlnaW4ucmVs
ZWFzZSgpOworICAgIHJldHVybiBuZXcgU2VjdXJpdHlPcmlnaW4odXJsKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKEZyYW1l
KiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAi
IiwgMCwgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKIAogICAgIEZyYW1lTG9h
ZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAgY29uc3QgS1VSTCYgdXJsID0gbG9h
ZGVyLT51cmwoKTsKQEAgLTExMSwxOSArMTEyLDI3IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IFNlY3VyaXR5T3JpZ2kKICAgICBpZiAob3duZXJGcmFtZSAmJiBvd25lckZyYW1lLT5kb2N1
bWVudCgpKQogICAgICAgICBvd25lckZyYW1lT3JpZ2luID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIHJldHVybiBjcmVhdGUodXJsLnByb3RvY29sKCks
IHVybC5ob3N0KCksIHVybC5wb3J0KCksIG93bmVyRnJhbWVPcmlnaW4pOworICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gY3JlYXRlKHVybCk7CisKKyAgICAvLyBJZiB3ZSBkbyBu
b3Qgb2J0YWluIGEgbWVhbmluZ2Z1bCBvcmlnaW4gZnJvbSB0aGUgVVJMLCB0aGVuIHdlIHRyeSB0
byBmaW5kIG9uZQorICAgIC8vIHZpYSB0aGUgZnJhbWUgaGllcmFyY2h5LgorICAgIC8vIFdlIGFs
aWFzIHRoZSBTZWN1cml0eU9yaWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAxNTMxMwor
ICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEzCisgICAg
aWYgKG9yaWdpbi0+aXNFbXB0eSgpICYmIG93bmVyRnJhbWVPcmlnaW4pCisgICAgICAgIHJldHVy
biBvd25lckZyYW1lT3JpZ2luOworCisgICAgcmV0dXJuIG9yaWdpbi5yZWxlYXNlKCk7CiB9CiAK
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjb3B5KCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKG1fcHJvdG9jb2wuY29weSgpLCBtX2hvc3QuY29weSgpLCBtX3BvcnQs
IDApOworICAgIHJldHVybiBuZXcgU2VjdXJpdHlPcmlnaW4odGhpcyk7CiB9CiAKLQogdm9pZCBT
ZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikK
IHsKICAgICBtX2RvbWFpbldhc1NldEluRE9NID0gdHJ1ZTsKLSAgICBtX2hvc3QgPSBuZXdEb21h
aW4ubG93ZXIoKTsKKyAgICBtX2RvbWFpbiA9IG5ld0RvbWFpbi5sb3dlcigpOwogfQogCiBib29s
IFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyLCBS
ZWFzb24mIHJlYXNvbikgY29uc3QKQEAgLTE2Niw3ICsxNzUsNyBAQCBib29sIFNlY3VyaXR5T3Jp
Z2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjCiAgICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVy
LT5tX2hvc3QgJiYgbV9wb3J0ID09IG90aGVyLT5tX3BvcnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhl
ci0+bV9kb21haW5XYXNTZXRJbkRPTSkgewotICAgICAgICAgICAgaWYgKG1faG9zdCA9PSBvdGhl
ci0+bV9ob3N0KQorICAgICAgICAgICAgaWYgKG1fZG9tYWluID09IG90aGVyLT5tX2RvbWFpbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXItPm1fcG9y
dCkgewpAQCAtMTg2LDU1ICsxOTUsMTAzIEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJl
VHJhbnNpdGlvblQKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGlmIChGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZSht
X2hvc3QsIFN0cmluZyh1cmwuaG9zdCgpKSkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobV9wcm90b2Nv
bCwgU3RyaW5nKHVybC5wcm90b2NvbCgpKSkgJiYgbV9wb3J0ID09IHVybC5wb3J0KCk7CisgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvdGhlciA9IG5ldyBTZWN1cml0eU9yaWdpbih1cmwpOwor
ICAgIFJlYXNvbiByZWFzb247CisgICAgcmV0dXJuIGNhbkFjY2VzcyhvdGhlci5nZXQoKSwgcmVh
c29uKTsKIH0KIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJvdG9jb2wgKyAiOiIgKyBtX2hvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJl
cihtX3BvcnQpOworICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIikKKyAgICAgICAgcmV0dXJuIFN0cmluZygi
ZmlsZTovLyIpOworCisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2Vy
dmVDYXBhY2l0eShtX3Byb3RvY29sLmxlbmd0aCgpICsgbV9ob3N0Lmxlbmd0aCgpICsgMTApOwor
ICAgIGFwcGVuZChyZXN1bHQsIG1fcHJvdG9jb2wpOworICAgIGFwcGVuZChyZXN1bHQsICI6Ly8i
KTsKKyAgICBhcHBlbmQocmVzdWx0LCBtX2hvc3QpOworCisgICAgaWYgKG1fcG9ydCkgeworICAg
ICAgYXBwZW5kKHJlc3VsdCwgIjoiKTsKKyAgICAgIGFwcGVuZChyZXN1bHQsIFN0cmluZzo6bnVt
YmVyKG1fcG9ydCkpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7
Cit9CisKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQoreworICAgIHJldHVybiBuZXcg
U2VjdXJpdHlPcmlnaW4oS1VSTChvcmlnaW5TdHJpbmcpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNo
YXIgU2VwYXJhdG9yQ2hhcmFjdGVyID0gJ18nOwogCi1QYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmdJZGVudGlmaWVyKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIpCiB7IAogICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCi0g
ICAgaW50IHNlcGFyYXRvcjEgPSBzdHJpbmdJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFj
dGVyKTsKKyAgICBpbnQgc2VwYXJhdG9yMSA9IGRhdGFiYXNlSWRlbnRpZmllci5maW5kKFNlcGFy
YXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gLTEpCi0gICAgICAgIHJldHVy
biBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOwog
ICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIHNlY29uZCBzZXBhcmF0b3IKLSAg
ICBpbnQgc2VwYXJhdG9yMiA9IHN0cmluZ0lkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0
ZXIsIHNlcGFyYXRvcjEgKyAxKTsKKyAgICBpbnQgc2VwYXJhdG9yMiA9IGRhdGFiYXNlSWRlbnRp
Zmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rlciwgc2VwYXJhdG9yMSArIDEpOwogICAgIGlmIChz
ZXBhcmF0b3IyID09IC0xKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJl
IHRoZXJlJ3Mgbm90IGEgdGhpcmQgc2VwYXJhdG9yCi0gICAgaWYgKHN0cmluZ0lkZW50aWZpZXIu
cmV2ZXJzZUZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyKSAhPSBzZXBhcmF0b3IyKQotICAgICAgICBy
ZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAgaWYgKGRhdGFiYXNlSWRlbnRpZmllci5y
ZXZlcnNlRmluZChTZXBhcmF0b3JDaGFyYWN0ZXIpICE9IHNlcGFyYXRvcjIpCisgICAgICAgIHJl
dHVybiBjcmVhdGUoS1VSTCgpKTsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0
IHNlY3Rpb24gaXMgYSB2YWxpZCBwb3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0CiAgICAgYm9v
bCBwb3J0T2theTsKLSAgICBpbnQgcG9ydCA9IHN0cmluZ0lkZW50aWZpZXIucmlnaHQoc3RyaW5n
SWRlbnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwot
ICAgIGlmICghcG9ydE9rYXkgJiYgc2VwYXJhdG9yMiArIDEgPT0gc3RhdGljX2Nhc3Q8aW50Pihz
dHJpbmdJZGVudGlmaWVyLmxlbmd0aCgpKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIs
IDAsIDApOworICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNl
SWRlbnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwor
ICAgIGlmICghcG9ydE9rYXkgJiYgc2VwYXJhdG9yMiArIDEgPT0gc3RhdGljX2Nhc3Q8aW50Pihk
YXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkpKQorICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwo
KSk7CiAgICAgCiAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiA2NTUzNSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7
CiAgICAgICAgIAogICAgIC8vIFNwbGl0IG91dCB0aGUgMyBzZWN0aW9ucyBvZiBkYXRhCi0gICAg
U3RyaW5nIHByb3RvY29sID0gc3RyaW5nSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9y
MSk7Ci0gICAgU3RyaW5nIGhvc3QgPSBzdHJpbmdJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0
b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKLSAgICByZXR1cm4gY3JlYXRl
KHByb3RvY29sLCBob3N0LCBwb3J0LCAwKTsKKyAgICBTdHJpbmcgcHJvdG9jb2wgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOworICAgIFN0cmluZyBob3N0ID0g
ZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAt
IHNlcGFyYXRvcjEgLSAxKTsKKyAgICByZXR1cm4gY3JlYXRlKEtVUkwocHJvdG9jb2wgKyAiOi8v
IiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSkpOwogfQotICAgIAotICAgIAot
U3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpzdHJpbmdJZGVudGlmaWVyKCkgY29uc3QgCisKK1N0cmlu
ZyBTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QgCiB7CiAgICAgc3Rh
dGljIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcgPSBTdHJpbmcoJlNlcGFyYXRvckNoYXJhY3Rlciwg
MSk7CiAgICAgcmV0dXJuIG1fcHJvdG9jb2wgKyBzZXBhcmF0b3JTdHJpbmcgKyBtX2hvc3QgKyBz
ZXBhcmF0b3JTdHJpbmcgKyBTdHJpbmc6Om51bWJlcihtX3BvcnQpOyAKIH0KIAorYm9vbCBTZWN1
cml0eU9yaWdpbjo6ZXF1YWwoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCAKK3sK
KyAgICBpZiAoIWlzU2FtZVNjaGVtZUhvc3RQb3J0KG90aGVyKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG1fZG9tYWluV2FzU2V0SW5ET00gIT0gb3RoZXItPm1fZG9tYWluV2Fz
U2V0SW5ET00pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2RvbWFpbldhc1Nl
dEluRE9NICYmIG1fZG9tYWluICE9IG90aGVyLT5tX2RvbWFpbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2Ft
ZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QgCit7Cisg
ICAgaWYgKG1faG9zdCAhPSBvdGhlci0+bV9ob3N0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAobV9wcm90b2NvbCAhPSBvdGhlci0+bV9wcm90b2NvbCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG1fcG9ydCAhPSBvdGhlci0+bV9wb3J0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gMzE5MDgpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0
ICs0MywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW4g
OiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTZWN1cml0eU9yaWdpbj4gewogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZvckZyYW1l
KEZyYW1lKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGVGcm9tSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGhvc3QsIHVuc2lnbmVkIHNob3J0IHBvcnQsIFNlY3VyaXR5T3JpZ2luKiBvd25lckZy
YW1lT3JpZ2luKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNy
ZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNv
bnN0IEtVUkwmKTsKIAogICAgICAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjb3B5KCk7
CiAKICAgICAgICAgdm9pZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWlu
KTsKLSAgICAgICAgU3RyaW5nIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KICAgICAg
ICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQorICAgICAg
ICBTdHJpbmcgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQorICAgICAgICBTdHJpbmcg
ZG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KICAgICAgICAgdW5zaWduZWQgc2hv
cnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQogICAgICAgICAKICAgICAgICAgZW51
bSBSZWFzb24gIHsKQEAgLTYyLDE5ICs2NCwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwotICAgICAgICAKLSAgICAgICAgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsK
IAotICAgICAgICAvLyBkbyBub3QgdXNlIHRoaXMgZm9yIGFjY2VzcyBjaGVja3MsIGl0J3MgdGhl
cmUgb25seSBmb3IgdXNpbmcgdGhpcyBhcyBhIGhhc2h0YWJsZSBrZXkKLSAgICAgICAgYm9vbCBl
cXVhbChTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2wgPT0g
b3RoZXItPm1fcHJvdG9jb2wgJiYgbV9ob3N0ID09IG90aGVyLT5tX2hvc3QgJiYgbV9wb3J0ID09
IG90aGVyLT5tX3BvcnQ7IH0KKyAgICAgICAgLy8gU2VyaWFsaXplIHRoZSBzZWN1cml0eSBvcmln
aW4gZm9yIHN0b3JhZ2UgaW4gdGhlIGRhdGFiYXNlLiBUaGlzIGZvcm1hdCBpcworICAgICAgICAv
LyBkZXByZWNhdGVkIGFuZCBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBjb21wYXRpYmlsaXR5IHdp
dGggb2xkIGRhdGFiYXNlczsKKyAgICAgICAgLy8gdXNlIHRvU3RyaW5nKCkgYW5kIGNyZWF0ZUZy
b21TdHJpbmcoKSBpbnN0ZWFkLgorICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyKCkg
Y29uc3Q7CisKKyAgICAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tzIGZvciBlcXVhbGl0eSBiZXR3
ZWVuIFNlY3VyaXR5T3JpZ2lucywgbm90IHdoZXRoZXIKKyAgICAgICAgLy8gb25lIG9yaWdpbiBj
YW4gYWNjZXNzIGFub3RoZXIuICBJdCBpcyB1c2VkIGZvciBoYXNoIHRhYmxlIGtleXMuCisgICAg
ICAgIC8vIEZvciBhY2Nlc3MgY2hlY2tzLCB1c2UgY2FuQWNjZXNzKCkuCisgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIG1ldGhvZCBpcyByZWFsbHkgb25seSB1c2VmdWwgZm9yIGhhc2ggdGFibGUg
a2V5cywgaXQKKyAgICAgICAgLy8gc2hvdWxkIGJlIHJlZmFjdG9yZWQgaW50byBTZWN1cml0eU9y
aWdpbkhhc2guCisgICAgICAgIGJvb2wgZXF1YWwoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25z
dDsKKworICAgICAgICAvLyBUaGlzIG1ldGhvZCBjaGVja3MgZm9yIGVxdWFsaXR5LCBpZ25vcmlu
ZyB0aGUgdmFsdWUgb2YgZG9jdW1lbnQuZG9tYWluCisgICAgICAgIC8vIChhbmQgd2hldGhlciBp
dCB3YXMgc2V0KSBidXQgY29uc2lkZXJpbmcgdGhlIGhvc3QuIEl0IGlzIHVzZWQgZm9yIHBvc3RN
ZXNzYWdlLgorICAgICAgICBib29sIGlzU2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5
T3JpZ2luKikgY29uc3Q7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNlY3VyaXR5
T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWdu
ZWQgc2hvcnQgcG9ydCk7CisgICAgICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtV
UkwmKTsKKyAgICAgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4qKTsKIAogICAgICAgICBTdHJpbmcgbV9wcm90b2NvbDsKICAgICAgICAgU3RyaW5nIG1faG9z
dDsKKyAgICAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3Bv
cnQ7Ci0gICAgICAgIGJvb2wgbV9wb3J0U2V0OwogICAgICAgICBib29sIG1fbm9BY2Nlc3M7CiAg
ICAgICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL1NlY3VyaXR5T3JpZ2luSGFzaC5oCShyZXZpc2lvbiAzMTkwOCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZm5kZWYgU2VjdXJpdHlPcmlnaW5IYXNoX2gKICNkZWZpbmUgU2VjdXJpdHlPcmlnaW5I
YXNoX2gKIAorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNjAsOCArNjEsOCBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5UcmFpdHMgOiBXVEY6OkdlbmVyCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4mIGRlbGV0ZWRWYWx1ZSgpIAogICAgIHsgCi0gICAgICAgIC8vIE9rYXkgZGVsZXRlZCB2YWx1
ZSBiZWNhdXNlIGZpbGU6IHByb3RvY29scyBzaG91bGQgYWx3YXlzIGhhdmUgcG9ydCAwCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRGVs
ZXRlZFZhbHVlID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiZmlsZSIsICIiLCAxLCAwKTsgICAg
CisgICAgICAgIC8vIE9rYXkgZGVsZXRlZCB2YWx1ZSBiZWNhdXNlICJpbnZhbGlkLXByb3RvY29s
IiBpcyBub3QgYSB2YWxpZCBwcm90b2NvbC4KKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5EZWxldGVkVmFsdWUgPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKEtVUkwoImludmFsaWQtcHJvdG9jb2w6IikpOwogICAgICAgICByZXR1cm4gc2Vj
dXJpdHlPcmlnaW5EZWxldGVkVmFsdWU7IAogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDMxOTA4KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzCiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMUmVzdWx0T2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRl
bWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgc3RhdGVt
ZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIHN0YXRl
bWVudC5iaW5kVGV4dCgyLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuIHN0YXRl
bWVudC5zdGVwKCkgPT0gU1FMUmVzdWx0Um93OwpAQCAtMTg5LDcgKzE4OSw3IEBAIFN0cmluZyBE
YXRhYmFzZVRyYWNrZXI6Om9yaWdpblBhdGgoU2VjdXIKICAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fdGhyZWFkKTsKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLT5zdHJpbmdJZGVudGlm
aWVyKCkpOworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURp
cmVjdG9yeVBhdGgsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiBTdHJpbmcg
RGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZk5vdEV4aXN0cykKQEAgLTE5OSw3
ICsxOTksNyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiCiAgICAg
aWYgKG1fcHJvcG9zZWREYXRhYmFzZSAmJiBtX3Byb3Bvc2VkRGF0YWJhc2UtPmZpcnN0ID09IG9y
aWdpbiAmJiBtX3Byb3Bvc2VkRGF0YWJhc2UtPnNlY29uZC5uYW1lKCkgPT0gbmFtZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmln
aW4tPnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9y
aWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIG9yaWdpblBhdGggPSB0aGlz
LT5vcmlnaW5QYXRoKG9yaWdpbik7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXRoIGZv
ciB0aGlzIFNlY3VyaXR5T3JpZ2luIGV4aXN0cwpAQCAtMjI2LDcgKzIyNiw3IEBAIFN0cmluZyBE
YXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWIKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgICAgICAKICAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgZmlsZW5hbWUgZnJvbSBEYXRhYmFzZSBUcmFj
a2VyIGZvciBvcmlnaW4gJXMsIG5hbWUgJXMiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5h
c2NpaSgpLmRhdGEoKSwgbmFtZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHJldHJpZXZlIGZpbGVuYW1lIGZyb20gRGF0YWJhc2UgVHJhY2tlciBmb3Igb3Jp
Z2luICVzLCBuYW1lICVzIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRh
dGEoKSwgbmFtZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICB9CiAgICAgc3RhdGVtZW50LmZpbmFsaXplKCk7CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBE
YXRhYmFzZVRyYWNrZXI6OnBvcHVsYXRlT3JpZ2lucygpCiAKICAgICBpbnQgcmVzdWx0OwogICAg
IHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0g
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21JZGVudGlmaWVyKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bURhdGFiYXNlSWRlbnRpZmllcihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAg
IG1fcXVvdGFNYXAtPnNldChvcmlnaW4uZ2V0KCksIHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgx
KSk7CiAgICAgfQogCkBAIC0zMTYsMTQgKzMxNiwxNCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VOYW1lc0Zvck9yCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVz
dWx0T2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgx
LCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEs
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogCiAgICAgaW50IHJlc3VsdDsKICAgICB3
aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykKICAgICAg
ICAgcmVzdWx0VmVjdG9yLmFwcGVuZChzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAKICAg
ICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gcmV0cmlldmUgYWxsIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4t
PnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHJldHJpZXZlIGFsbCBkYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3Jp
Z2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0
YWJhc2VUcmFja2VyOjpkZXRhaWxzCiAgICAgaWYgKG1fcHJvcG9zZWREYXRhYmFzZSAmJiBtX3By
b3Bvc2VkRGF0YWJhc2UtPmZpcnN0ID09IG9yaWdpbiAmJiBtX3Byb3Bvc2VkRGF0YWJhc2UtPnNl
Y29uZC5uYW1lKCkgPT0gbmFtZSkKICAgICAgICAgcmV0dXJuIG1fcHJvcG9zZWREYXRhYmFzZS0+
c2Vjb25kOwogCi0gICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPnN0cmluZ0lk
ZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCk7CiAKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKICAgICBp
ZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscwogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV90aHJlYWQpOwogCi0gICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4t
PnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAgICAgaW50NjRfdCBndWlkID0gMDsKICAgICAKICAg
ICBvcGVuVHJhY2tlckRhdGFiYXNlKHRydWUpOwpAQCAtNTQ1LDI2ICs1NDUsMjYgQEAgdm9pZCBE
YXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKFNlY3VyaXR5TwogICAgICAgICBpZiAoIW1fcXVvdGFN
YXAtPmNvbnRhaW5zKG9yaWdpbikpIHsKICAgICAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIE9yaWdpbnMgVkFMVUVTICg/LCA/KSIpOwog
ICAgICAgICAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICVzIGlu
IHRoZSB0cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4g
JXMgaW4gdGhlIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50
LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgICAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAg
ICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBxdW90YSk7CiAKICAgICAgICAg
ICAgICAgICBpZiAoc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25lKQotICAgICAgICAg
ICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICVzIGluIHRo
ZSB0cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2lu
ICVzIGluIHRoZSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBT
UUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJVUERBVEUgT3JpZ2lucyBTRVQg
cXVvdGE9PyBXSEVSRSBvcmlnaW49PyIpOyAgICAgICAgCiAgICAgICAgICAgICBib29sIGVycm9y
ID0gc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPazsKICAgICAgICAgICAgIGlmICgh
ZXJyb3IpIHsKICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZEludDY0KDEsIHF1b3RhKTsK
LSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgb3JpZ2luLT5zdHJpbmdJZGVu
dGlmaWVyKCkpOworICAgICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBvcmlnaW4t
PmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgICAgIGVycm9yID0gIXN0YXRl
bWVudC5leGVjdXRlQ29tbWFuZCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
ZXJyb3IpCi0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHF1b3RhICVs
bHUgaW4gdHJhY2tlciBkYXRhYmFzZSBmb3Igb3JpZ2luICVzIiwgcXVvdGEsIG9yaWdpbi0+c3Ry
aW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBzZXQgcXVvdGEgJWxsdSBpbiB0cmFja2VyIGRhdGFiYXNlIGZvciBvcmln
aW4gJXMiLCBxdW90YSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogSXMgaXQgcmVhbGx5IE9LIHRvIHVw
ZGF0ZSB0aGUgcXVvdGEgaW4gbWVtb3J5IGlmIHdlIGZhaWxlZCB0byB1cGRhdGUgaXQgb24gZGlz
az8KQEAgLTU5MCwxMiArNTkwLDEyIEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjphZGREYXRhYmFz
ZShTZWN1cmkKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+
c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG5hbWUpOwog
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBwYXRoKTsKIAogICAgIGlmICghc3RhdGVtZW50LmV4
ZWN1dGVDb21tYW5kKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gYWRkIGRhdGFi
YXNlICVzIHRvIG9yaWdpbiAlczogJXNcbiIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+
c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gYWRkIGRhdGFiYXNlICVzIHRvIG9y
aWdpbiAlczogJXNcbiIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCkuYXNjaWkoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtNjI1LDQwICs2MjUsNDAgQEAgdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihTZWN1cgogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gZGF0YWJhc2VOYW1lczsKICAgICBpZiAoIWRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2lu
LCBkYXRhYmFzZU5hbWVzKSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byByZXRyaWV2
ZSBsaXN0IG9mIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPnN0cmluZ0lk
ZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJhc2UgbmFtZXMgZm9yIG9yaWdpbiAlcyIsIG9yaWdpbi0+
ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGlmICghZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgZGF0
YWJhc2VOYW1lc1tpXSkpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0
ZSBmaWxlIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMiLCBkYXRhYmFzZU5hbWVzW2ldLmFz
Y2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3IgZGF0YWJh
c2UgJXMgaW4gb3JpZ2luICVzIiwgZGF0YWJhc2VOYW1lc1tpXS5hc2NpaSgpLmRhdGEoKSwgb3Jp
Z2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRl
bWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/Iik7
CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBv
cmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0aW9u
IG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFi
YXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAgICAgCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+c3RyaW5nSWRlbnRp
ZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CiAgICAgCiAgICAgaWYgKCFzdGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKSkgewot
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNl
cyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIo
KS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUg
ZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIFNRTGl0ZVN0YXRlbWVudCBvcmlnaW5TdGF0ZW1lbnQobV9kYXRh
YmFzZSwgIkRFTEVURSBGUk9NIE9yaWdpbnMgV0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAob3Jp
Z2luU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIi
LCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2Ygb3JpZ2luICVzIGZyb20gdHJh
Y2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgb3JpZ2luU3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICBvcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQo
MSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgCiAgICAgaWYgKCFvcmlnaW5T
dGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNr
ZXIiLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20g
b3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNj
aWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02OTYsMjEgKzY5Niwy
MSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFtZSkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGlu
IG9yaWdpbiAlcyIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmll
cigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRl
IGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUuYXNjaWkoKS5kYXRhKCks
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRh
YmFzZSwgIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFtZT0/Iik7
CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBkYXRhYmFzZSAlcyBmcm9t
IG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0
cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2UgJXMgZnJvbSBvcmlnaW4gJXMgZnJv
bSB0cmFja2VyIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAot
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7Cisg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwog
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBuYW1lKTsKICAgICAKICAgICBpZiAoIXN0YXRlbWVu
dC5leGVjdXRlQ29tbWFuZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1
dGUgZGVsZXRpb24gb2YgZGF0YWJhc2UgJXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwg
bmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9m
IGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG5hbWUuYXNjaWkoKS5k
YXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMxOTA4KQorKysgV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOC0w
NC0xNSBBZGFtIEJhcnRoIDxoazk1NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgV2ViU2VjdXJpdHlPcmlnaW4gdG8g
bWF0Y2ggbmV3IFNlY3VyaXR5T3JpZ2luIEFQSS4KKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8
Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8gdGhp
cyBwYXRjaC4KKworICAgICAgICAqIFN0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAg
ICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIGhvc3RdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlNl
Y3VyaXR5T3JpZ2luUHJpdmF0ZS5oOgorCiAyMDA4LTA0LTE0ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMKSW5kZXg6IFdlYktp
dC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDMxOTA4KQorKysgV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwyNCArMjksMTkgQEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAog
I2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luCi0KLS0gKGlk
KWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAq
KWRvbWFpbgotewotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFByb3RvY29sOnByb3RvY29sIGRv
bWFpbjpkb21haW4gcG9ydDowXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhQcm90b2NvbDooTlNTdHJp
bmcgKilwcm90b2NvbCBkb21haW46KE5TU3RyaW5nICopZG9tYWluIHBvcnQ6KHVuc2lnbmVkIHNo
b3J0KXBvcnQKKy0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogewogICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShwcm90b2NvbCwgZG9tYWluLCBwb3J0LCAwKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVVUkxd
KSk7CiAgICAgb3JpZ2luLT5yZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKj4ob3JpZ2luLmdldCgpKTsKIApAQCAtNTgsNyArNTMs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cHJvdG9jb2woKTsKIH0KIAotLSAoTlNTdHJp
bmcqKWRvbWFpbgorLSAoTlNTdHJpbmcqKWhvc3QKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+aG9zdCgpOwogfQpJbmRleDogV2ViS2l0
L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAkocmV2aXNpb24gMzE5
MDgpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMCBAQAogICAgIFdlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZSAqX3ByaXZhdGU7CiB9CiAKLS0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KE5TU3RyaW5nICop
cHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbjsKLS0gKGlkKWluaXRXaXRoUHJvdG9j
b2w6KE5TU3RyaW5nICopcHJvdG9jb2wgZG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBwb3J0Oih1
bnNpZ25lZCBzaG9ydClwb3J0OworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwogCiAt
IChOU1N0cmluZyopcHJvdG9jb2w7Ci0tIChOU1N0cmluZyopZG9tYWluOworLSAoTlNTdHJpbmcq
KWhvc3Q7CiAKIC8vIFJldHVybnMgemVybyBpZiB0aGUgcG9ydCBpcyB0aGUgZGVmYXVsdCBwb3J0
IGZvciB0aGUgcHJvdG9jb2wsIG5vbi16ZXJvIG90aGVyd2lzZQogLSAodW5zaWduZWQgc2hvcnQp
cG9ydDsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTkwOCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMDQtMTUgIEFkYW0gQmFydGggPGhr
OTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVuYW1lZCAiZG9tYWluIiBtZXRob2QgdG8gImhvc3QiIHRvIG1hdGNoIFNlY3Vy
aXR5T3JpZ2luLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRs
OgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYlNlY3VyaXR5
T3JpZ2luOjpob3N0KToKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5oOgorCiAyMDA4LTA0
LTEyICBNYXR0IExpbGVrICA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAKICAgICAgICAgTm90IHJl
dmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNp
b24gMzE5MDgpCisrKyBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTksNyArOTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3Vy
aXR5T3JpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJTZWN1cml0eU9yaWdpbjo6ZG9tYWluKCAKK0hSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViU2VjdXJpdHlPcmlnaW46Omhvc3QoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQpJbmRleDogV2ViS2l0L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmln
aW4uaAkocmV2aXNpb24gMzE5MDgpCisrKyBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcm90b2NvbCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiogcmVzdWx0KTsKICAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRvbWFpbiggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGhvc3QoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAg
ICAgICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwb3J0KCAKSW5k
ZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4uaWRsCShyZXZp
c2lvbiAzMTkwOCkKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViU2VjdXJpdHlPcmlnaW4u
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGltcG9ydCAib2NpZGwuaWRsIjsK
IGludGVyZmFjZSBJV2ViU2VjdXJpdHlPcmlnaW4gOiBJVW5rbm93bgogewogICAgIEhSRVNVTFQg
cHJvdG9jb2woW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwotICAgIEhSRVNVTFQgZG9tYWlu
KFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKKyAgICBIUkVTVUxUIGhvc3QoW291dCwgcmV0
dmFsXSBCU1RSKiByZXN1bHQpOwogICAgIEhSRVNVTFQgcG9ydChbb3V0LCByZXR2YWxdIHVuc2ln
bmVkIHNob3J0KiByZXN1bHQpOwogCiAgICAgSFJFU1VMVCB1c2FnZShbb3V0LCByZXR2YWxdIHVu
c2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0KTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDMxOTA4KQorKysg
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MDgtMDQtMTUgIEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlcyBMYXlvdXRUZXN0Q29udHJv
bGxlciB0byB1c2UgaG9zdCBpbnN0ZWFkIG9mIGRvbWFpbi4KKworICAgICAgICBDb2xsaW4gSmFj
a3NvbiA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQg
dG8gdGhpcyBwYXRjaC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREYXRh
YmFzZVF1b3RhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmZyYW1lOmV4Y2VlZGVkRGF0YWJhc2VRdW90
YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFiYXNlOl0pOgorCiAyMDA4LTA0LTE1ICBBbmRyZSBQb2Vu
aXR6ICA8YW5kcmUucG9lbml0ekB0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMzE5MDgpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRDdXN0b21Qb2xpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERhdGFiYXNl
UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogeyAgICAKLSAgICBXZWJTZWN1cml0eU9y
aWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gaW5pdFdpdGhQcm90b2Nv
bDpAImZpbGUiIGRvbWFpbjpuaWxdOworICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImZpbGU6Ly8vIl1dOwogICAgIFtvcmlnaW4gc2V0UXVvdGE6cXVvdGFdOwogICAgIFtvcmln
aW4gcmVsZWFzZV07CiB9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMzE5MDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBA
IER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2luZ0luZm8KIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFi
YXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGF0
YWJhc2U6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7CiAgICAgaWYgKCFkb25lICYm
IGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRGF0YWJhc2VDYWxsYmFja3MoKSkKLSAgICAgICAg
cHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1
b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdp
biBwcm90b2NvbF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGRvbWFpbl0gVVRGOFN0cmluZ10sIAor
ICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERh
dGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gZGF0YWJhc2U6JXNcbiIs
IFtbb3JpZ2luIHByb3RvY29sXSBVVEY4U3RyaW5nXSwgW1tvcmlnaW4gaG9zdF0gVVRGOFN0cmlu
Z10sIAogICAgICAgICAgICAgW29yaWdpbiBwb3J0XSwgW2RhdGFiYXNlSWRlbnRpZmllciBVVEY4
U3RyaW5nXSk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRR
dW90YSA9IDUgKiAxMDI0ICogMTAyNDsgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMTkwOCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisy
MDA4LTA0LTE1ICBBZGFtIEJhcnRoICA8aGs5NTY1QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgTGF5b3V0VGVzdHMgZm9y
IG5ldyBwb3N0TWVzc2FnZSBBUEkuCisKKyAgICAgICAgQ29sbGluIEphY2tzb24gPGNvbGxpbmot
d2Via2l0QGNvbGxpbmphY2tzb24uY29tPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcGF0Y2gu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1z
ZW5kLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJj
ZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNl
LXRhZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21h
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0
ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxs
LXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWlu
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBh
Z2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRv
bWFpbi5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3Jp
Z2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJh
c2UtdGFnLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0
ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVu
dC1kb21haW4uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0
LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbDogQWRkZWQu
CisKIDIwMDgtMDQtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFuZGVycwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNz
YWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Ut
c2VuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMxOTA4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACiAKLWRhdGE6IFNvbWV0aGluZyB1cmk6IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC5odG1s
IGRvbWFpbjogMTI3LjAuMC4xCitkYXRhOiBTb21ldGhpbmcgb3JpZ2luOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNl
cy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNlaXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdl
LXJlY2VpdmUuaHRtbAkocmV2aXNpb24gMzE5MDgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC05LDggKzksNyBAQAogZnVuY3Rpb24gcmVjZWl2ZXIoZSkgewogICAg
IHZhciByZXN1bHQgPSAiIjsKICAgICByZXN1bHQgKz0gImRhdGE6ICIgKyBlLmRhdGEgKyAiXG4i
OwotICAgIHJlc3VsdCArPSAidXJpOiAiICsgZS51cmkgKyAiXG4iOwotICAgIHJlc3VsdCArPSAi
ZG9tYWluOiAiICsgZS5kb21haW4gKyAiXG4iOworICAgIHJlc3VsdCArPSAib3JpZ2luOiAiICsg
ZS5vcmlnaW4gKyAiXG4iOwogICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHJlc3VsdCk7ICAgCiB9
CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4t
YW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzE5
MDgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1i
eS1iYXNlLXRhZy5odG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBw
YXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0
bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2Rv
bWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJp
LXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzE5MDgpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0
aW9uIHJlY3YoZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJz
dENoaWxkLmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0
aW9uIHRlc3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
aGlsZCcpOwotICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9z
dE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLTwvc2NyaXB0PgotPGJhc2UgaHJl
Zj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlv
bi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9z
Y3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBv
bmxvYWQ9InRlc3QoKSIKLSAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5
bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9
InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVk
LWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMTkwOCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAg
QEAKLXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCi1k
b2N1bWVudC5kb21haW4gPSAwLjAuMQotCi1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdl
IGZyb20gcGFyZW50IiBkb21haW49IjEyNy4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9t
YWluLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVu
YWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMxOTA4KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1
bmN0aW9uIHJlY3YoZSkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5m
aXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0K
LWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1
bmN0aW9uIHRlc3QoKSB7Ci0gICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjaGlsZCcpOwotICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4u
cG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBwYXJlbnQnKTsKLX0KLQotZG9jdW1lbnQuZG9tYWlu
ID0gIjAuMC4xIjsKLTwvc2NyaXB0PgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+
PC9kaXY+Ci08ZGl2PmRvY3VtZW50LmRvbWFpbiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9j
dW1lbnQuZG9tYWluKTs8L3NjcmlwdD48L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdl
LWxpc3RlbmVyLmh0bWwiIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiCi0gIHN0
eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiIG9ubG9hZD0idGVzdCgpIj4KLTwvaWZyYW1l
PjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2lu
dmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmln
aW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93
cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBhc2RmOi4g
UmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi4gUmVjaXBpZW50
IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAvdG1wL2Zvby4gUmVjaXBpZW50IGhhcyBv
cmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
VW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAvL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmln
aW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJv
d3MtZXhjZXB0aW9uLmh0bWwKKword2FpdGluZy4uLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVy
cm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0
byAnJy4KK0VuY291bnRlcmVkIGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMiB3aGlsZSBwb3N0aW5nIG1lc3NhZ2UgdG8gJ2FzZGYnLgorUG9zdGVkIG1lc3NhZ2Ug
dG8gJ2FzZGY6JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2h0
dHA6JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy90bXAvZm9v
JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy8vbG9jYWxob3N0
JyB3aXRob3V0IGFueSBleGNlcHRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2lu
LXRocm93cy1leGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5k
YXRhOworfQorIAorZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZh
bHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2Uob3JpZ2luKSB7CisgIHRyeSB7CisgICAg
d2luLnBvc3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPlBvc3Rl
ZCBtZXNzYWdlIHRvICciICsgb3JpZ2luICsgIicgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4iOwor
ICB9IGNhdGNoKGV4KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVySFRNTCArPSAiPGJyPkVuY291bnRlcmVkIGV4Y2VwdGlvbiAiICsgZXggKyAiIHdoaWxlIHBv
c3RpbmcgbWVzc2FnZSB0byAnIiArIG9yaWdpbiArICInLiI7CisgIH0KK30KKworZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxk
Jyk7CisgICAgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisKKyAgICAvLyBOb24tVVJMcyBz
aG91bGQgZmFpbCB3aXRoIGEgc3ludGF4IGVycm9yLgorICAgIHRyeVBvc3RNZXNzYWdlKCIiKTsK
KyAgICB0cnlQb3N0TWVzc2FnZSgiYXNkZiIpOworCisgICAgLy8gVVJMcyB3aXRob3V0IGFuIG9y
aWdpbiBzaG91bGQgZmFpbCB3aXRob3V0IGdlbmVyYXRpbmcgYW55IGVycm9ycy4KKyAgICB0cnlQ
b3N0TWVzc2FnZSgiYXNkZjoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSgiaHR0cDoiKTsKKworICAg
IC8vIFdlYktpdCBjb252ZXJ0cyBVUkxzIHRoYXQgc3RhcnQgd2l0aCAvIHRvIGZpbGU6Ly8gVVJM
cy4gVGhleSBkb24ndCBtYXRjaCB0aGUgdGFyZ2V0IGZyYW1lLCBzbyB0aGV5IGZhaWwgc2lsZW50
bHkuCisgICAgdHJ5UG9zdE1lc3NhZ2UoIi90bXAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uo
Ii8vbG9jYWxob3N0Iik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4K
Kzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3Jp
dGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNy
Yz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9w
b3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIg
d2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsi
PgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMzE5MDgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotd2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNl
bmRzLWRvbWFpbi5odG1sCi0KLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hp
bGQiIGRvbWFpbj0ibG9jYWxob3N0IiB1cmk9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0
bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ph
dmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1z
dGlsbC1zZW5kcy1kb21haW4uaHRtbAkocmV2aXNpb24gMzE5MDgpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5k
cy1kb21haW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3Yo
ZSkgewotICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSAr
ICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7Ci0KLSAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNn
OwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwotCi08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0
dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KLTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJl
ZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3Jp
cHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5o
dG1sIgotICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7Ij4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53
YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2lu
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhy
ZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlw
dC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9
IkhlbGxvIGZyb20gY2hpbGQiIG9yaWdpbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBh
Z2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMt
b3JpZ2luLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4u
aHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihlKSB7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZl
ZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAn
IiB1cmk9IicgKyBlLnVyaSArICciJzsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBtc2c7CisKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7
CisKKzwvc2NyaXB0PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPgorPGJv
ZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShk
b2N1bWVudC5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2
YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCisgIGlkPSJjaGlsZCIgd2lkdGg9Ijgw
MCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJh
bWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBh
Z2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDMwNTE1KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBAIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIH0KIAogZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAg
dmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWlu
PSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBlLnVyaSArICciJzsKKyAgICB2YXIgbXNnID0g
J1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBvcmlnaW49IicgKyBlLm9y
aWdpbiArICciJzsKIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJz
dENoaWxkLmRhdGEgPSBtc2c7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4t
dW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorCitS
ZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11
bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWcuaHRtbDozMDUxNSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7CisK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBp
ZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBw
YXJlbnQnKTsKK30KKzwvc2NyaXB0PgorPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNv
bS8iPgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVu
dC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJh
bWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3Vy
Y2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKKyAgaWQ9ImNo
aWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJs
YWNrOyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVk
LWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCitkb2N1bWVudC5kb21haW4gPSAwLjAuMQorCitSZWNl
aXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBvcmlnaW49Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9z
dE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmln
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMzA1MTUpCShm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVu
YWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3Vt
ZW50LWRvbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVj
dihlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQu
ZGF0YSA9IGUuZGF0YTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7
CisgICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2Fn
ZSgnTWVzc2FnZSBmcm9tIHBhcmVudCcpOworfQorCitkb2N1bWVudC5kb21haW4gPSAiMC4wLjEi
OworPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0
PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxk
aXY+ZG9jdW1lbnQuZG9tYWluID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZShkb2N1bWVudC5kb21h
aW4pOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIu
aHRtbCIgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIKKyAgc3R5bGU9ImJvcmRl
cjogMXB4IHNvbGlkIGJsYWNrOyIgb25sb2FkPSJ0ZXN0KCkiPgorPC9pZnJhbWU+PC9kaXY+Cis8
ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdp
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9y
aWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHA6Ly9sb2NhbGhv
c3Q6OTA5MC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi8v
bG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0dHBz
Oi8vbG9jYWxob3N0LiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAu
CisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRvIGh0
dHBzOi8vbG9jYWxob3N0OjgwMDAuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3Nh
Z2UgdG8gaHR0cDovL3d3dy5leGFtcGxlLmNvbS4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDov
L2xvY2FsaG9zdDo4MDAwLgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKword2FpdGlu
Zy4uLgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxo
b3N0OjgwMDAiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2Fn
ZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvIiBvcmlnaW49Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmln
aW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2ZvbyIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9mb28/YmFyIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVk
IG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9i
YXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6
IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/
YmFyI2JheiIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdl
OiBkYXRhPSJUcnlpbmcgb3JpZ2luPW51bGwiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
IgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj11bmRlZmluZWQiIG9yaWdp
bj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5j
dGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5u
ZXJIVE1MICs9ICI8YnI+IiArIGUuZGF0YTsKK30KKyAKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKHdp
biwgb3JpZ2luKSB7CisgICAgd2luLnBvc3RNZXNzYWdlKCJUcnlpbmcgb3JpZ2luPSIgKyBvcmln
aW4sIG9yaWdpbik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGlmcmFtZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAgIHZhciB3aW4gPSBpZnJhbWUuY29u
dGVudFdpbmRvdzsKKworICAgIC8vIFNob3VsZCBzdWNjZWVkOgorICAgIHRyeVBvc3RNZXNzYWdl
KHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciNiYXoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4s
ICJodHRwOi8vdXNlcjpwYXNzQGxvY2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5
UG9zdE1lc3NhZ2Uod2luLCBudWxsKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sIHVuZGVmaW5l
ZCk7CisKKyAgICAvLyBTaG91bGQgZmFpbDoKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
Oi8vbG9jYWxob3N0OjkwOTAiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vbG9j
YWxob3N0Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cHM6Ly9sb2NhbGhvc3QiKTsK
KyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczovL2xvY2FsaG9zdDo4MDAwIik7CisgICAg
dHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpOworCisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0
aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8
L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwi
IG9ubG9hZD0idGVzdCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBz
dHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBp
ZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1l
c3NhZ2UtbGlzdGVuZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRt
bAkocmV2aXNpb24gMzE5MDgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNCw3ICs0LDcgQEAKIDxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0
PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KIDxz
Y3JpcHQ+CiBmdW5jdGlvbiByZWN2KGUpIHsKLSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3Nh
Z2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBkb21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0i
JyArIGUudXJpICsgJyInOworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0i
JyArIGUuZGF0YSArICciIG9yaWdpbj0iJyArIGUub3JpZ2luICsgJyInOwogICAgIHRvcC5wb3N0
TWVzc2FnZShtc2cpOwogfQogCg==
</data>
<flag name="review"
          id="8967"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20631</attachid>
            <date>2008-04-17 11:45:42 -0700</date>
            <delta_ts>2008-04-20 13:00:54 -0700</delta_ts>
            <desc>Updated patch to address aroben&apos;s comments</desc>
            <filename>post-message-origin-2008-04-17.txt</filename>
            <type>text/plain</type>
            <size>70580</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDgtMDQtMTcgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVz
IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMzMQorICAgICAg
ICBGaXhlcyBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDgK
KyAgICAgICAgCisgICAgICAgIFVwZGF0ZXMgcG9zdE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdG8g
bWF0Y2ggSFRNTCA1IHNwZWNpZmljYXRpb246CisgICAgICAgIDEpIEFkZHMgb3JpZ2luIHBhcmFt
ZXRlciB0byBwb3N0TWVzc2FnZS4KKyAgICAgICAgMikgUmVtb3ZlcyBkb21haW4gYW5kIHVyaSBh
dHRyaWJ1dGVzIG9mIE1lc3NhZ2VFdmVudCBpbiBmYXZvciBvZgorICAgICAgICAgICBvcmlnaW4g
YXR0cmlidXRlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY29ycmVjdGx5LCB3ZSBu
ZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gaG9zdHMgYW5kIGRvbWFpbnMKKyAgICAgICAgaW4g
dGhlIFNlY3VyaXR5T3JpZ2luIGNsYXNzLiBUaGVyZSBhcmUgbm93IHRocmVlIHdheXMgdG8gY29t
cGFyZSBzZWN1cml0eSBvcmlnaW5zOgorICAgICAgICAxKSBpc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b21wYXJlcyBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0LCBhbmQgaXMgdXNlZCBmb3IgcG9zdE1lc3Nh
Z2UKKyAgICAgICAgMikgZXF1YWwgY29tcGFyZXMgYWxsIGFzcGVjdHMgb2YgdGhlIHNlY3VyaXR5
IG9yaWdpbiwgYW5kIGlzIHVzZWQgZm9yIGhhc2gga2V5cworICAgICAgICAzKSBjYW5BY2Nlc3Mg
dW5kZXJzdGFuZHMgdGhlIHNlbWFudGljcyBvZiBzY2hlbWVzIHN1Y2ggYXMgZmlsZTovLyBhbmQg
ZGF0YTovLyBVUkxzLAorICAgICAgICAgICBhbmQgc2hvdWxkIGJlIHVzZWQgZm9yIHNjcmlwdGlu
ZyBhY2Nlc3MgY2hlY2tzLgorCisgICAgICAgIENoYW5nZWQgU2VjdXJpdHlPcmlnaW46OnRvU3Ry
aW5nKCkgdG8gZ2VuZXJhdGUgaWRlbnRpZmllcnMgdGhhdCBhcmUgc3VpdGFibGUgZm9yIAorICAg
ICAgICBiZWluZyB1c2VkIGFzIGEgTWVzc2FnZUV2ZW50J3Mgb3JpZ2luIHByb3BlcnR5LiBJbiB0
aGUgZnV0dXJlLCB0aGV5IGNvdWxkIGJlIHVzZWQgCisgICAgICAgIGFzIGRhdGFiYXNlIHN0cmlu
ZyBpZGVudGlmaWVycyBhcyB3ZWxsLiBSZS11c2VkIEtVUkwgcGFyc2VyIHRvIHBhcnNlIHNlcmlh
bGl6ZWQgCisgICAgICAgIFNlY3VyaXR5T3JpZ2lucy4KKworICAgICAgICBDb2xsaW4gSmFja3Nv
biA8Y29sbGluai13ZWJraXRAY29sbGluamFja3Nvbi5jb20+IGFsc28gY29udHJpYnV0ZWQgdG8g
dGhpcyBwYXRjaC4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Ut
c3RpbGwtc2VuZHMtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
YmFzZS5leHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbWFpbik6Cisg
ICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Omlu
aXRNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6b3JpZ2luKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVy
bik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmln
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpzZXREb21haW5Gcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjYW5BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2VjdXJl
VHJhbnNpdGlvblRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luVHJhaXRzOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6Om9yaWdpblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6cG9wdWxhdGVPcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjph
ZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNl
KToKKwogMjAwOC0wNC0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDMyMDAx
KQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyAr
Mjg4LDggQEAgX19aTjdXZWJDb3JlMTREcmFnQ29udHJvbGxlcjlkcmFnRW5kZWRFdgogX19aTjdX
ZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVsZWFzZVByb3h5RXYKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9yRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2Fk
ZXIxOXNldFNob3VsZEJ1ZmZlckRhdGFFYgotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZj
cmVhdGVFUktOU182U3RyaW5nRVMzX3RQUzBfCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2lu
NmNyZWF0ZUVSS05TXzRLVVJMRQorX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW41ZXF1YWxF
UEtTMF8KIF9fWk43V2ViQ29yZTE1QXJjaGl2ZVJlc291cmNlNmNyZWF0ZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU18xMlNoYXJlZEJ1ZmZlckVFRVJLTlNfNEtVUkxFUktOU182U3RyaW5nRVNBX1NBX1JL
TlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHJl
bW92ZUl0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlz
dDEwc2V0RW5hYmxlZEViCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMzIwMDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDE0ICsyMDQsMTggQEAgSlNWYWx1
ZSogSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdAogICAgIERPTVdpbmRvdyogd2luZG93
ID0gaW1wbCgpOwogCiAgICAgRE9NV2luZG93KiBzb3VyY2UgPSB0b0pTRE9NV2luZG93KGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKLSAgICBTdHJpbmcgZG9tYWluID0gc291
cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuaG9zdCgpOwotICAgIFN0cmluZyB1cmkgPSBz
b3VyY2UtPmZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcgbWVz
c2FnZSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHdpbmRvdy0+cG9z
dE1lc3NhZ2UobWVzc2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSk7CisgICAgU3RyaW5nIHRhcmdl
dE9yaWdpbiA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJn
c1sxXSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHdpbmRvdy0+cG9z
dE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luLCBzb3VyY2UsIGVjKTsKKyAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkluZGV4
OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjczMSw3ICsyNzMxLDcgQEAgU3RyaW5nIERvY3VtZW50OjpyZWZl
cnJlcigpIGNvbnN0CiAKIFN0cmluZyBEb2N1bWVudDo6ZG9tYWluKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbi0+aG9zdCgpOworICAgIHJldHVybiBtX3NlY3VyaXR5T3Jp
Z2luLT5kb21haW4oKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0RG9tYWluKGNvbnN0IFN0cmlu
ZyYgbmV3RG9tYWluKQpJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCShyZXZpc2lvbiAzMjAwMSkKKysr
IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDExICs0
MSwxMCBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgpCiB7CiB9CiAKLU1lc3NhZ2VFdmVu
dDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkKK01lc3NhZ2VFdmVudDo6TWVz
c2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERPTVdp
bmRvdyogc291cmNlKQogICAgIDogRXZlbnQobWVzc2FnZUV2ZW50LCB0cnVlLCB0cnVlKQogICAg
ICwgbV9kYXRhKGRhdGEpCi0gICAgLCBtX2RvbWFpbihkb21haW4pCi0gICAgLCBtX3VyaSh1cmkp
CisgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiB7CiB9CkBA
IC01NCw3ICs1Myw3IEBAIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgpCiB7CiB9CiAKLXZv
aWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNl
KQordm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSkKIHsKICAgICBpZiAo
ZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02Miw4ICs2MSw3IEBAIHZvaWQgTWVz
c2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnMKICAgICBpbml0RXZlbnQodHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlKTsKICAgICAKICAgICBtX2RhdGEgPSBkYXRhOwotICAgIG1fZG9t
YWluID0gZG9tYWluOwotICAgIG1fdXJpID0gdXJpOworICAgIG1fb3JpZ2luID0gb3JpZ2luOwog
ICAgIG1fc291cmNlID0gc291cmNlOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAkocmV2aXNpb24g
MzIwMDEpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksMjIgKzM5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBNZXNzYWdlRXZl
bnQgOiBwdWJsaWMgRXZlbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgTWVzc2FnZUV2ZW50KCk7
Ci0gICAgICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpOworICAgICAgICBN
ZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9N
V2luZG93KiBzb3VyY2UpOwogICAgICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAg
ICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0
cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpOworICAg
ICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSk7CiAgICAgICAgIAogICAgICAgICBjb25z
dCBTdHJpbmcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLSAgICAgICAgY29uc3Qg
U3RyaW5nJiBkb21haW4oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQotICAgICAgICBjb25z
dCBTdHJpbmcmIHVyaSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJpOyB9CisgICAgICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICAgICAgRE9NV2lu
ZG93KiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsgfQogICAgICAgICAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZUV2ZW50KCkgY29uc3Q7CiAKICAgICBwcml2
YXRlOiAgICAKICAgICAgICAgU3RyaW5nIG1fZGF0YTsKLSAgICAgICAgU3RyaW5nIG1fZG9tYWlu
OwotICAgICAgICBTdHJpbmcgbV91cmk7CisgICAgICAgIFN0cmluZyBtX29yaWdpbjsKICAgICAg
ICAgUmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaWRsCShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwxMCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICBp
bnRlcmZhY2UgW0NvbmRpdGlvbmFsPUNST1NTX0RPQ1VNRU5UX01FU1NBR0lORyxHZW5lcmF0ZUNv
bnN0cnVjdG9yXSBNZXNzYWdlRXZlbnQgOiBFdmVudCB7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBkYXRhOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGRvbWFpbjsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmk7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgb3JpZ2luOwogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHNvdXJjZTsKICAgICAgICAgCi0gICAgICAgIHZvaWQg
aW5pdE1lc3NhZ2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJi
bGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGlu
IERPTVN0cmluZyBkb21haW5BcmcsIGluIERPTVN0cmluZyB1cmlBcmcsIGluIERPTVdpbmRvdyBz
b3VyY2VBcmcpOworICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5
cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcs
IGluIERPTVN0cmluZyBkYXRhQXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJnLCBpbiBET01XaW5k
b3cgc291cmNlQXJnKTsKIAogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYkNvcmUvaHRtbC9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTAsNyArOTEwLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZQogCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2hlY2tPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogewotICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1
cmwucHJvdG9jb2woKSwgdXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwgMCk7CisgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAg
U2VjdXJpdHlPcmlnaW46OlJlYXNvbiByZWFzb247CiAgICAgaWYgKCFtX2NhbnZhcy0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKG9yaWdpbi5nZXQoKSwgcmVhc29uKSkK
ICAgICAgICAgbV9jYW52YXMtPnNldE9yaWdpblRhaW50ZWQoKTsKQEAgLTEwNjEsNyArMTA2MSw3
IEBAIFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gQ2FudmFzUmVuZGVyaW4KICAgICBib29sIG9y
aWdpbkNsZWFuID0gdHJ1ZTsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1h
Z2UtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgS1VSTCB1cmwoY2FjaGVkSW1hZ2UtPnVybCgp
KTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHVybC5wcm90b2NvbCgpLCB1cmwuaG9zdCgpLCB1cmwucG9ydCgpLCAwKTsKKyAg
ICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCk7CiAgICAgICAgIFNlY3VyaXR5T3JpZ2luOjpSZWFzb24gcmVhc29uOwogICAgICAg
ICBvcmlnaW5DbGVhbiA9IG1fY2FudmFzLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3Mob3JpZ2luLmdldCgpLCByZWFzb24pOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxMSArMzAsMTMgQEAKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1N0eWxl
U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkRPTVNlbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC0yOTYsMTAgKzI5OCwzOSBAQCBTdG9yYWdlKiBET01XaW5k
b3c6OmxvY2FsU3RvcmFnZSgpIGNvbnN0CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDUk9TU19ET0NV
TUVOVF9NRVNTQUdJTkcpCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdp
bmRvdyogc291cmNlKSBjb25zdAordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291
cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikgY29uc3QKIHsKLSAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQobWVz
c2FnZSwgZG9tYWluLCB1cmksIHNvdXJjZSksIGVjLCB0cnVlKTsKKyAgICBpZiAoIW1fZnJhbWUp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdGFyZ2V0T3JpZ2luLmlzTnVsbCgpKSB7Cisg
ICAgICAgIEtVUkwgZGVzaXJlZFRhcmdldFVSTCh0YXJnZXRPcmlnaW4pOworICAgICAgICBpZiAo
IWRlc2lyZWRUYXJnZXRVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBlY0ZvclNlbmRlciA9
IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGRlc2lyZWRUYXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGRlc2lyZWRUYXJnZXRVUkwpOworICAgICAgICBTZWN1cml0eU9yaWdpbiogYWN0
dWFsVGFyZ2V0T3JpZ2luID0gZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAg
aWYgKGRlc2lyZWRUYXJnZXRPcmlnaW4tPmlzRW1wdHkoKSB8fCAhZGVzaXJlZFRhcmdldE9yaWdp
bi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoYWN0dWFsVGFyZ2V0T3JpZ2luKSkgeworICAgICAgICAg
ICAgLy8gVGhlIHNlbmRlciBpcyBub3QgYWxsb3dlZCB0byBmaW5kIG91dCB0aGUgb3JpZ2luIG9m
CisgICAgICAgICAgICAvLyB0aGUgcmVjaXBpZW50LCBzbyB3ZSBmYWlsIHNpbGVudGx5IGFuZCBs
b2cgYSBtZXNzYWdlCisgICAgICAgICAgICAvLyB0byB0aGUgY29uc29sZS4KKyAgICAgICAgICAg
IFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuYWJsZSB0byBwb3N0IG1lc3NhZ2Ug
dG8gJXMuIFJlY2lwaWVudCBoYXMgb3JpZ2luICVzLlxuIiwgCisgICAgICAgICAgICAgICAgdGFy
Z2V0T3JpZ2luLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCBTdHJpbmcoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBEb2N1bWVudCogc291cmNl
RG9jdW1lbnQgPSBzb3VyY2UtPmRvY3VtZW50KCk7CisgICAgaWYgKCFzb3VyY2VEb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIFN0cmluZyBzb3VyY2VPcmlnaW4gPSBzb3VyY2VEb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKKworICAgIC8vIFNlbmRlciBpcyBub3Qg
YWxsb3dlZCB0byBzZWUgZXhjZXB0aW9ucyBvdGhlciB0aGFuIHN5bnRheCBlcnJvcnMKKyAgICBF
eGNlcHRpb25Db2RlIGVjOyAKKyAgICBkb2N1bWVudCgpLT5kaXNwYXRjaEV2ZW50KG5ldyBNZXNz
YWdlRXZlbnQobWVzc2FnZSwgc291cmNlT3JpZ2luLCBzb3VyY2UpLCBlYywgdHJ1ZSk7CiB9CiAj
ZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMzIwMDEpCisrKyBXZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIENvbnNvbGUqIGNvbnNvbGUoKSBjb25zdDsKICAgICAgICAgCiAj
aWYgRU5BQkxFKENST1NTX0RPQ1VNRU5UX01FU1NBR0lORykKLSAgICAgICAgdm9pZCBwb3N0TWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBT
dHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpIGNvbnN0OworICAgICAgICB2b2lkIHBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4s
IERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJiBlY0ZvclNlbmRlcikgY29uc3Q7CiAj
ZW5kaWYKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3Q7CkluZGV4
OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAkocmV2aXNpb24gMzIwMDEpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw4IEBAIG1vZHVsZSB3aW5kb3cgewog
CiAjaWYgZGVmaW5lZChFTkFCTEVfQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HKQogICAgICAgICAv
LyBjcm9zcy1kb2N1bWVudCBtZXNzYWdpbmcKLSAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1
cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlKTsKKyAg
ICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdl
KGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBvcmlnaW4pCisg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChM
QU5HVUFHRV9KQVZBU0NSSVBUKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJ
KHJldmlzaW9uIDMyMDAxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgpAQCAtNTMsMTEgKzU0LDEwIEBAIHN0YXRpYyBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCh1bnMKICAgICByZXR1cm4gZGVmYXVsdFBvcnRzLmdldChwcm90b2NvbCkgPT0gcG9ydDsK
IH0KIAotU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCkKLSAgICA6IG1fcHJv
dG9jb2wocHJvdG9jb2wuaXNOdWxsKCkgPyAiIiA6IHByb3RvY29sLmxvd2VyKCkpCi0gICAgLCBt
X2hvc3QoaG9zdC5pc051bGwoKSA/ICIiIDogaG9zdC5sb3dlcigpKQotICAgICwgbV9wb3J0KHBv
cnQpCi0gICAgLCBtX3BvcnRTZXQocG9ydCkKK1NlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdp
bihjb25zdCBLVVJMJiB1cmwpCisgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVs
bCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQorICAgICwgbV9ob3N0KHVybC5ob3N0
KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKKyAgICAsIG1fcG9ydCh1cmwu
cG9ydCgpKQogICAgICwgbV9ub0FjY2VzcyhmYWxzZSkKICAgICAsIG1fZG9tYWluV2FzU2V0SW5E
T00oZmFsc2UpCiB7CkBAIC02OSwxMSArNjksMjEgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5
T3JpZ2luKGNvbnN0IFN0cgogICAgIGlmIChtX3Byb3RvY29sID09ICJkYXRhIikKICAgICAgICAg
bV9ub0FjY2VzcyA9IHRydWU7CiAKKyAgICAvLyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFzIG1f
aG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KKyAgICBtX2RvbWFpbiA9IG1faG9zdDsK
IAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkg
eworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkK
ICAgICAgICAgbV9wb3J0ID0gMDsKLSAgICAgICAgbV9wb3J0U2V0ID0gZmFsc2U7Ci0gICAgfSAg
IAorfQorCitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4qIG90aGVyKQorICAgIDogbV9wcm90b2NvbChvdGhlci0+bV9wcm90b2NvbC5jb3B5KCkpCisg
ICAgLCBtX2hvc3Qob3RoZXItPm1faG9zdC5jb3B5KCkpCisgICAgLCBtX2RvbWFpbihvdGhlci0+
bV9kb21haW4uY29weSgpKQorICAgICwgbV9wb3J0KG90aGVyLT5tX3BvcnQpCisgICAgLCBtX25v
QWNjZXNzKG90aGVyLT5tX25vQWNjZXNzKQorICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShvdGhl
ci0+bV9kb21haW5XYXNTZXRJbkRPTSkKK3sKIH0KIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNF
bXB0eSgpIGNvbnN0CkBAIC04MSwyNCArOTEsMTUgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNF
bXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJvdG9jb2wuaXNFbXB0eSgpOwogfQogCi1QYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCwgU2Vj
dXJpdHlPcmlnaW4qIG93bmVyRnJhbWVPcmlnaW4pCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihwcm90
b2NvbCwgaG9zdCwgcG9ydCkpOwotCi0gICAgLy8gSWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5p
bmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhlbiB3ZSB0cnkgdG8gZmluZCBvbmUKLSAgICAv
LyB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KLSAgICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlP
cmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKLSAgICAvLyBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMwotICAgIGlmIChvcmlnaW4tPmlzRW1w
dHkoKSAmJiBvd25lckZyYW1lT3JpZ2luKQotICAgICAgICByZXR1cm4gb3duZXJGcmFtZU9yaWdp
bjsKLQotICAgIHJldHVybiBvcmlnaW4ucmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VjdXJpdHlPcmlnaW4odXJsKSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAgICAgICBy
ZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAKICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUt
PmxvYWRlcigpOwogICAgIGNvbnN0IEtVUkwmIHVybCA9IGxvYWRlci0+dXJsKCk7CkBAIC0xMTEs
MTkgKzExMiwyNyBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpCiAg
ICAgaWYgKG93bmVyRnJhbWUgJiYgb3duZXJGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgb3du
ZXJGcmFtZU9yaWdpbiA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7
CiAKLSAgICByZXR1cm4gY3JlYXRlKHVybC5wcm90b2NvbCgpLCB1cmwuaG9zdCgpLCB1cmwucG9y
dCgpLCBvd25lckZyYW1lT3JpZ2luKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
biA9IGNyZWF0ZSh1cmwpOworCisgICAgLy8gSWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdm
dWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhlbiB3ZSB0cnkgdG8gZmluZCBvbmUKKyAgICAvLyB2
aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KKyAgICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmln
aW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKKyAgICAvLyBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMworICAgIGlmIChvcmlnaW4tPmlzRW1wdHko
KSAmJiBvd25lckZyYW1lT3JpZ2luKQorICAgICAgICByZXR1cm4gb3duZXJGcmFtZU9yaWdpbjsK
KworICAgIHJldHVybiBvcmlnaW4ucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y29weSgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShtX3By
b3RvY29sLmNvcHkoKSwgbV9ob3N0LmNvcHkoKSwgbV9wb3J0LCAwKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHRoaXMpKTsKIH0KIAotCiB2b2lkIFNlY3VyaXR5T3Jp
Z2luOjpzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogewogICAgIG1f
ZG9tYWluV2FzU2V0SW5ET00gPSB0cnVlOwotICAgIG1faG9zdCA9IG5ld0RvbWFpbi5sb3dlcigp
OworICAgIG1fZG9tYWluID0gbmV3RG9tYWluLmxvd2VyKCk7CiB9CiAKIGJvb2wgU2VjdXJpdHlP
cmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIsIFJlYXNvbiYgcmVh
c29uKSBjb25zdApAQCAtMTY2LDcgKzE3NSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFj
Y2Vzcyhjb25zdCBTZWMKICAgICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCAm
JiBtX3BvcnQgPT0gb3RoZXItPm1fcG9ydCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfSBlbHNlIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLT5tX2RvbWFp
bldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLT5tX2hvc3Qp
CisgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXItPm1fZG9tYWluKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1f
aG9zdCA9PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0KSB7CkBAIC0x
ODYsNTUgKzE5NSwxMDMgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmVUcmFuc2l0aW9u
VAogICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKEZy
YW1lTG9hZGVyOjpzaG91bGRUcmVhdFNjaGVtZUFzTG9jYWwobV9wcm90b2NvbCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1faG9zdCwgU3Ry
aW5nKHVybC5ob3N0KCkpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShtX3Byb3RvY29sLCBTdHJpbmco
dXJsLnByb3RvY29sKCkpKSAmJiBtX3BvcnQgPT0gdXJsLnBvcnQoKTsKKyAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG90aGVyID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOworICAgIFJl
YXNvbiByZWFzb247CisgICAgcmV0dXJuIGNhbkFjY2VzcyhvdGhlci5nZXQoKSwgcmVhc29uKTsK
IH0KIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcHJvdG9jb2wgKyAiOiIgKyBtX2hvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihtX3Bv
cnQpOworICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IGlmIChtX3Byb3RvY29sID09ICJmaWxlIikKKyAgICAgICAgcmV0dXJuIFN0cmluZygiZmlsZTov
LyIpOworCisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBh
Y2l0eShtX3Byb3RvY29sLmxlbmd0aCgpICsgbV9ob3N0Lmxlbmd0aCgpICsgMTApOworICAgIGFw
cGVuZChyZXN1bHQsIG1fcHJvdG9jb2wpOworICAgIGFwcGVuZChyZXN1bHQsICI6Ly8iKTsKKyAg
ICBhcHBlbmQocmVzdWx0LCBtX2hvc3QpOworCisgICAgaWYgKG1fcG9ydCkgeworICAgICAgYXBw
ZW5kKHJlc3VsdCwgIjoiKTsKKyAgICAgIGFwcGVuZChyZXN1bHQsIFN0cmluZzo6bnVtYmVyKG1f
cG9ydCkpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Cit9CisK
K1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQoreworICAgIHJldHVybiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKEtVUkwob3JpZ2luU3RyaW5nKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFy
IFNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
SWRlbnRpZmllcikKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlm
aWVyKQogeyAKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgotICAg
IGludCBzZXBhcmF0b3IxID0gc3RyaW5nSWRlbnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rl
cik7CisgICAgaW50IHNlcGFyYXRvcjEgPSBkYXRhYmFzZUlkZW50aWZpZXIuZmluZChTZXBhcmF0
b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBhcmF0b3IxID09IC0xKQotICAgICAgICByZXR1cm4g
Y3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAg
ICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCi0gICAg
aW50IHNlcGFyYXRvcjIgPSBzdHJpbmdJZGVudGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVy
LCBzZXBhcmF0b3IxICsgMSk7CisgICAgaW50IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZp
ZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIsIHNlcGFyYXRvcjEgKyAxKTsKICAgICBpZiAoc2Vw
YXJhdG9yMiA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAg
ICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0
aGVyZSdzIG5vdCBhIHRoaXJkIHNlcGFyYXRvcgotICAgIGlmIChzdHJpbmdJZGVudGlmaWVyLnJl
dmVyc2VGaW5kKFNlcGFyYXRvckNoYXJhY3RlcikgIT0gc2VwYXJhdG9yMikKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAgIGlmIChkYXRhYmFzZUlkZW50aWZpZXIucmV2
ZXJzZUZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyKSAhPSBzZXBhcmF0b3IyKQorICAgICAgICByZXR1
cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBz
ZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdAogICAgIGJvb2wg
cG9ydE9rYXk7Ci0gICAgaW50IHBvcnQgPSBzdHJpbmdJZGVudGlmaWVyLnJpZ2h0KHN0cmluZ0lk
ZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKLSAg
ICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRvcjIgKyAxID09IHN0YXRpY19jYXN0PGludD4oc3Ry
aW5nSWRlbnRpZmllci5sZW5ndGgoKSkpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAw
LCAwKTsKKyAgICBpbnQgcG9ydCA9IGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChkYXRhYmFzZUlk
ZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKKyAg
ICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRvcjIgKyAxID09IHN0YXRpY19jYXN0PGludD4oZGF0
YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkp
OwogICAgIAogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gNjU1MzUpCi0gICAgICAgIHJldHVy
biBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOwog
ICAgICAgICAKICAgICAvLyBTcGxpdCBvdXQgdGhlIDMgc2VjdGlvbnMgb2YgZGF0YQotICAgIFN0
cmluZyBwcm90b2NvbCA9IHN0cmluZ0lkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEp
OwotICAgIFN0cmluZyBob3N0ID0gc3RyaW5nSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9y
MSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShw
cm90b2NvbCwgaG9zdCwgcG9ydCwgMCk7CisgICAgU3RyaW5nIHByb3RvY29sID0gZGF0YWJhc2VJ
ZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKKyAgICBTdHJpbmcgaG9zdCA9IGRh
dGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBz
ZXBhcmF0b3IxIC0gMSk7CisgICAgcmV0dXJuIGNyZWF0ZShLVVJMKHByb3RvY29sICsgIjovLyIg
KyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkpKTsKIH0KLSAgICAKLSAgICAKLVN0
cmluZyBTZWN1cml0eU9yaWdpbjo6c3RyaW5nSWRlbnRpZmllcigpIGNvbnN0IAorCitTdHJpbmcg
U2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0IAogewogICAgIHN0YXRp
YyBTdHJpbmcgc2VwYXJhdG9yU3RyaW5nID0gU3RyaW5nKCZTZXBhcmF0b3JDaGFyYWN0ZXIsIDEp
OwogICAgIHJldHVybiBtX3Byb3RvY29sICsgc2VwYXJhdG9yU3RyaW5nICsgbV9ob3N0ICsgc2Vw
YXJhdG9yU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9wb3J0KTsgCiB9CiAKK2Jvb2wgU2VjdXJp
dHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QgCit7Cisg
ICAgaWYgKCFpc1NhbWVTY2hlbWVIb3N0UG9ydChvdGhlcikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX2RvbWFpbldhc1NldEluRE9NICE9IG90aGVyLT5tX2RvbWFpbldhc1Nl
dEluRE9NKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9kb21haW5XYXNTZXRJ
bkRPTSAmJiBtX2RvbWFpbiAhPSBvdGhlci0+bV9kb21haW4pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNlY3VyaXR5T3JpZ2luOjppc1NhbWVT
Y2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0IAoreworICAg
IGlmIChtX2hvc3QgIT0gb3RoZXItPm1faG9zdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKG1fcHJvdG9jb2wgIT0gb3RoZXItPm1fcHJvdG9jb2wpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChtX3BvcnQgIT0gb3RoZXItPm1fcG9ydCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDMyMDAxKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCAr
NDMsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDog
cHVibGljIFRocmVhZFNhZmVTaGFyZWQ8U2VjdXJpdHlPcmlnaW4+IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGb3JGcmFtZShG
cmFtZSopOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRl
RnJvbUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3Ry
aW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0LCBTZWN1cml0eU9yaWdpbiogb3duZXJGcmFt
ZU9yaWdpbik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25z
dCBLVVJMJik7CiAKICAgICAgICAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY29weSgpOwog
CiAgICAgICAgIHZvaWQgc2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5ld0RvbWFpbik7
Ci0gICAgICAgIFN0cmluZyBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CiAgICAgICAg
IFN0cmluZyBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KKyAgICAgICAg
U3RyaW5nIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KKyAgICAgICAgU3RyaW5nIGRv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9tYWluOyB9CiAgICAgICAgIHVuc2lnbmVkIHNob3J0
IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQ7IH0KICAgICAgICAgCiAgICAgICAgIGVudW0g
UmVhc29uICB7CkBAIC02MiwxOSArNjQsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKLSAgICAgICAgCi0gICAgICAgIFN0cmluZyBzdHJpbmdJZGVudGlmaWVyKCkgY29uc3Q7CiAK
LSAgICAgICAgLy8gZG8gbm90IHVzZSB0aGlzIGZvciBhY2Nlc3MgY2hlY2tzLCBpdCdzIHRoZXJl
IG9ubHkgZm9yIHVzaW5nIHRoaXMgYXMgYSBoYXNodGFibGUga2V5Ci0gICAgICAgIGJvb2wgZXF1
YWwoU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09IG90
aGVyLT5tX3Byb3RvY29sICYmIG1faG9zdCA9PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBv
dGhlci0+bV9wb3J0OyB9CisgICAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2lu
IGZvciBzdG9yYWdlIGluIHRoZSBkYXRhYmFzZS4gVGhpcyBmb3JtYXQgaXMKKyAgICAgICAgLy8g
ZGVwcmVjYXRlZCBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgY29tcGF0aWJpbGl0eSB3aXRo
IG9sZCBkYXRhYmFzZXM7CisgICAgICAgIC8vIHVzZSB0b1N0cmluZygpIGFuZCBjcmVhdGVGcm9t
U3RyaW5nKCkgaW5zdGVhZC4KKyAgICAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllcigpIGNv
bnN0OworCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHkgYmV0d2Vl
biBTZWN1cml0eU9yaWdpbnMsIG5vdCB3aGV0aGVyCisgICAgICAgIC8vIG9uZSBvcmlnaW4gY2Fu
IGFjY2VzcyBhbm90aGVyLiAgSXQgaXMgdXNlZCBmb3IgaGFzaCB0YWJsZSBrZXlzLgorICAgICAg
ICAvLyBGb3IgYWNjZXNzIGNoZWNrcywgdXNlIGNhbkFjY2VzcygpLgorICAgICAgICAvLyBGSVhN
RTogSWYgdGhpcyBtZXRob2QgaXMgcmVhbGx5IG9ubHkgdXNlZnVsIGZvciBoYXNoIHRhYmxlIGtl
eXMsIGl0CisgICAgICAgIC8vIHNob3VsZCBiZSByZWZhY3RvcmVkIGludG8gU2VjdXJpdHlPcmln
aW5IYXNoLgorICAgICAgICBib29sIGVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7
CisKKyAgICAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tzIGZvciBlcXVhbGl0eSwgaWdub3Jpbmcg
dGhlIHZhbHVlIG9mIGRvY3VtZW50LmRvbWFpbgorICAgICAgICAvLyAoYW5kIHdoZXRoZXIgaXQg
d2FzIHNldCkgYnV0IGNvbnNpZGVyaW5nIHRoZSBob3N0LiBJdCBpcyB1c2VkIGZvciBwb3N0TWVz
c2FnZS4KKyAgICAgICAgYm9vbCBpc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0eU9y
aWdpbiopIGNvbnN0OwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBTZWN1cml0eU9y
aWdpbihjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVuc2lnbmVk
IHNob3J0IHBvcnQpOworICAgICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBLVVJM
Jik7CisgICAgICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
Kik7CiAKICAgICAgICAgU3RyaW5nIG1fcHJvdG9jb2w7CiAgICAgICAgIFN0cmluZyBtX2hvc3Q7
CisgICAgICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9wb3J0
OwotICAgICAgICBib29sIG1fcG9ydFNldDsKICAgICAgICAgYm9vbCBtX25vQWNjZXNzOwogICAg
ICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET007CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9TZWN1cml0eU9yaWdpbkhhc2guaAkocmV2aXNpb24gMzIwMDEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL1NlY3VyaXR5T3JpZ2luSGFzaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWZuZGVmIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAjZGVmaW5lIFNlY3VyaXR5T3JpZ2luSGFz
aF9oCiAKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTYwLDggKzYxLDggQEAgc3RydWN0IFNlY3VyaXR5
T3JpZ2luVHJhaXRzIDogV1RGOjpHZW5lcgogICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
JiBkZWxldGVkVmFsdWUoKSAKICAgICB7IAotICAgICAgICAvLyBPa2F5IGRlbGV0ZWQgdmFsdWUg
YmVjYXVzZSBmaWxlOiBwcm90b2NvbHMgc2hvdWxkIGFsd2F5cyBoYXZlIHBvcnQgMAotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbkRlbGV0
ZWRWYWx1ZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImZpbGUiLCAiIiwgMSwgMCk7ICAgIAor
ICAgICAgICAvLyBPa2F5IGRlbGV0ZWQgdmFsdWUgYmVjYXVzZSAiaW52YWxpZC1wcm90b2NvbCIg
aXMgbm90IGEgdmFsaWQgcHJvdG9jb2wuCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRGVsZXRlZFZhbHVlID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShLVVJMKCJpbnZhbGlkLXByb3RvY29sOiIpKTsKICAgICAgICAgcmV0dXJuIHNlY3Vy
aXR5T3JpZ2luRGVsZXRlZFZhbHVlOyAKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yRGF0YWJhcwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVu
dC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMiwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIAogICAgIHJldHVybiBzdGF0ZW1l
bnQuc3RlcCgpID09IFNRTFJlc3VsdFJvdzsKQEAgLTE4OSw3ICsxODksNyBAQCBTdHJpbmcgRGF0
YWJhc2VUcmFja2VyOjpvcmlnaW5QYXRoKFNlY3VyCiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RocmVhZCk7CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAogU3RyaW5nIERh
dGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOb3RFeGlzdHMpCkBAIC0xOTksNyAr
MTk5LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYgogICAgIGlm
IChtX3Byb3Bvc2VkRGF0YWJhc2UgJiYgbV9wcm9wb3NlZERhdGFiYXNlLT5maXJzdCA9PSBvcmln
aW4gJiYgbV9wcm9wb3NlZERhdGFiYXNlLT5zZWNvbmQubmFtZSgpID09IG5hbWUpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2lu
LT5zdHJpbmdJZGVudGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmln
aW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIFN0cmluZyBvcmlnaW5QYXRoID0gdGhpcy0+
b3JpZ2luUGF0aChvcmlnaW4pOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGF0aCBmb3Ig
dGhpcyBTZWN1cml0eU9yaWdpbiBleGlzdHMKQEAgLTIyNiw3ICsyMjYsNyBAQCBTdHJpbmcgRGF0
YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICAgICAgCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIGZpbGVuYW1lIGZyb20gRGF0YWJhc2UgVHJhY2tl
ciBmb3Igb3JpZ2luICVzLCBuYW1lICVzIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNj
aWkoKS5kYXRhKCksIG5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byByZXRyaWV2ZSBmaWxlbmFtZSBmcm9tIERhdGFiYXNlIFRyYWNrZXIgZm9yIG9yaWdp
biAlcywgbmFtZSAlcyIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRh
KCksIG5hbWUuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
fQogICAgIHN0YXRlbWVudC5maW5hbGl6ZSgpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjpwb3B1bGF0ZU9yaWdpbnMoKQogCiAgICAgaW50IHJlc3VsdDsKICAgICB3
aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgewotICAg
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tSWRlbnRpZmllcihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21E
YXRhYmFzZUlkZW50aWZpZXIoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBt
X3F1b3RhTWFwLT5zZXQob3JpZ2luLmdldCgpLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMSkp
OwogICAgIH0KIApAQCAtMzE2LDE0ICszMTYsMTQgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRh
dGFiYXNlTmFtZXNGb3JPcgogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3Vs
dE9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBv
cmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hp
bGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpCiAgICAgICAg
IHJlc3VsdFZlY3Rvci5hcHBlbmQoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOwogCiAgICAg
aWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIHJldHJpZXZlIGFsbCBkYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5z
dHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byByZXRyaWV2ZSBhbGwgZGF0YWJhc2UgbmFtZXMgZm9yIG9yaWdpbiAlcyIsIG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgRGF0YWJhc2VEZXRhaWxzIERhdGFi
YXNlVHJhY2tlcjo6ZGV0YWlscwogICAgIGlmIChtX3Byb3Bvc2VkRGF0YWJhc2UgJiYgbV9wcm9w
b3NlZERhdGFiYXNlLT5maXJzdCA9PSBvcmlnaW4gJiYgbV9wcm9wb3NlZERhdGFiYXNlLT5zZWNv
bmQubmFtZSgpID09IG5hbWUpCiAgICAgICAgIHJldHVybiBtX3Byb3Bvc2VkRGF0YWJhc2UtPnNl
Y29uZDsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5zdHJpbmdJZGVu
dGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpOwogCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAgICAgaWYg
KCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgRGF0YWJhc2VU
cmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fdGhyZWFkKTsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5z
dHJpbmdJZGVudGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4t
PmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIGludDY0X3QgZ3VpZCA9IDA7CiAgICAgCiAgICAg
b3BlblRyYWNrZXJEYXRhYmFzZSh0cnVlKTsKQEAgLTU0NSwyNiArNTQ1LDI2IEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0eU8KICAgICAgICAgaWYgKCFtX3F1b3RhTWFw
LT5jb250YWlucyhvcmlnaW4pKSB7CiAgICAgICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVt
ZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBPcmlnaW5zIFZBTFVFUyAoPywgPykiKTsKICAg
ICAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0
aGUgdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICVz
IGluIHRoZSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5i
aW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICAgICAg
c3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
ICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMiwgcXVvdGEpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkKLSAgICAgICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0aGUg
dHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAl
cyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU1FM
aXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIE9yaWdpbnMgU0VUIHF1
b3RhPT8gV0hFUkUgb3JpZ2luPT8iKTsgICAgICAgIAogICAgICAgICAgICAgYm9vbCBlcnJvciA9
IHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2s7CiAgICAgICAgICAgICBpZiAoIWVy
cm9yKSB7CiAgICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBxdW90YSk7Ci0g
ICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+c3RyaW5nSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgb3JpZ2luLT5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICAgICAgICAgICAgICBlcnJvciA9ICFzdGF0ZW1l
bnQuZXhlY3V0ZUNvbW1hbmQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGVy
cm9yKQotICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBxdW90YSAlbGx1
IGluIHRyYWNrZXIgZGF0YWJhc2UgZm9yIG9yaWdpbiAlcyIsIHF1b3RhLCBvcmlnaW4tPnN0cmlu
Z0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gc2V0IHF1b3RhICVsbHUgaW4gdHJhY2tlciBkYXRhYmFzZSBmb3Igb3JpZ2lu
ICVzIiwgcXVvdGEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IElzIGl0IHJlYWxseSBPSyB0byB1cGRh
dGUgdGhlIHF1b3RhIGluIG1lbW9yeSBpZiB3ZSBmYWlsZWQgdG8gdXBkYXRlIGl0IG9uIGRpc2s/
CkBAIC01OTAsMTIgKzU5MCwxMiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2Uo
U2VjdXJpCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0
cmluZ0lkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0
YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBuYW1lKTsKICAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMywgcGF0aCk7CiAKICAgICBpZiAoIXN0YXRlbWVudC5leGVj
dXRlQ29tbWFuZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGFkZCBkYXRhYmFz
ZSAlcyB0byBvcmlnaW4gJXM6ICVzXG4iLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0
cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGFkZCBkYXRhYmFzZSAlcyB0byBvcmln
aW4gJXM6ICVzXG4iLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRp
ZmllcigpLmFzY2lpKCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTYyNSw0MCArNjI1LDQwIEBAIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXIKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGRhdGFiYXNlTmFtZXM7CiAgICAgaWYgKCFkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwg
ZGF0YWJhc2VOYW1lcykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmV0cmlldmUg
bGlzdCBvZiBkYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5zdHJpbmdJZGVu
dGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBy
ZXRyaWV2ZSBsaXN0IG9mIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPmRh
dGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBpZiAoIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIGRhdGFi
YXNlTmFtZXNbaV0pKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUg
ZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgZGF0YWJhc2VOYW1lc1tpXS5hc2Np
aSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNl
ICVzIGluIG9yaWdpbiAlcyIsIGRhdGFiYXNlTmFtZXNbaV0uYXNjaWkoKS5kYXRhKCksIG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyIpOwog
ICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3Jp
Z2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBv
ZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgICAgIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZp
ZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIAogICAgIGlmICghc3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMg
ZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRl
bGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4t
PmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgb3JpZ2luU3RhdGVtZW50KG1fZGF0YWJh
c2UsICJERUxFVEUgRlJPTSBPcmlnaW5zIFdIRVJFIG9yaWdpbj0/Iik7CiAgICAgaWYgKG9yaWdp
blN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwg
b3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIG9yaWdpbiAlcyBmcm9tIHRyYWNr
ZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9yaWdpblN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmln
aW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgb3JpZ2luU3RhdGVtZW50LmJpbmRUZXh0KDEs
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIAogICAgIGlmICghb3JpZ2luU3Rh
dGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
ZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2Vy
Iiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9y
aWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lp
KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjk2LDIxICs2OTYsMjEg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKFNlYwogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUpKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFzZSAlcyBpbiBv
cmlnaW4gJXMiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIo
KS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBm
aWxlIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBv
cmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJh
c2UsICJERUxFVEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PyIpOwog
ICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2UgJXMgZnJvbSBv
cmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJp
bmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20g
dHJhY2tlciIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAg
IHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgbmFtZSk7CiAgICAgCiAgICAgaWYgKCFzdGF0ZW1lbnQu
ZXhlY3V0ZUNvbW1hbmQoKSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRl
IGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG5h
bWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBk
YXRhYmFzZSAlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBuYW1lLmFzY2lpKCkuZGF0
YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDgtMDQt
MTcgQWRhbSBCYXJ0aCA8aGs5NTY1QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIFdlYlNlY3VyaXR5T3JpZ2luIHRvIG1h
dGNoIG5ldyBTZWN1cml0eU9yaWdpbiBBUEkuCisKKyAgICAgICAgQ29sbGluIEphY2tzb24gPGNv
bGxpbmotd2Via2l0QGNvbGxpbmphY2tzb24uY29tPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRoaXMg
cGF0Y2guCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAg
ICAoLVtXZWJTZWN1cml0eU9yaWdpbiBob3N0XSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3Jp
Z2luIGRvbWFpbl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRl
Lmg6CisKIDIwMDgtMDQtMTcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSdWJiZXItc3RhbXBlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0L21hYy9TdG9y
YWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFn
ZS9XZWJTZWN1cml0eU9yaWdpbi5tbQkocmV2aXNpb24gMzIwMDEpCisrKyBXZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDI0ICsyOSwx
OSBAQAogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogCiAjaW1wb3J0IDxX
ZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBAaW1wbGVtZW50YXRpb24gV2ViU2VjdXJpdHlPcmlnaW4KLQotLSAoaWQpaW5pdFdpdGhQ
cm90b2NvbDooTlNTdHJpbmcgKilwcm90b2NvbCBkb21haW46KE5TU3RyaW5nICopZG9tYWluCi17
Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoUHJvdG9jb2w6cHJvdG9jb2wgZG9tYWluOmRvbWFp
biBwb3J0OjBdOwotfQotCi0tIChpZClpbml0V2l0aFByb3RvY29sOihOU1N0cmluZyAqKXByb3Rv
Y29sIGRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gcG9ydDoodW5zaWduZWQgc2hvcnQpcG9ydAor
LSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHByb3RvY29s
LCBkb21haW4sIHBvcnQsIDApOworCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKICAgICBv
cmlnaW4tPnJlZigpOwogICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0
eU9yaWdpblByaXZhdGUqPihvcmlnaW4uZ2V0KCkpOwogCkBAIC01OCwxMSArNTMsMTcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJp
dHlPcmlnaW4qPihfcHJpdmF0ZSktPnByb3RvY29sKCk7CiB9CiAKLS0gKE5TU3RyaW5nKilkb21h
aW4KKy0gKE5TU3RyaW5nKilob3N0CiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2Vj
dXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmhvc3QoKTsKIH0KIAorLy8gRGVwcmVjYXRlZC4gVXNl
IGhvc3QgaW5zdGVhZC4gVGhpcyBuZWVkcyB0byBzdGF5IGhlcmUgdW50aWwgd2Ugc2hpcCBhIG5l
dyBTYWZhcmkuCistIChOU1N0cmluZyopZG9tYWluCit7CisgICAgcmV0dXJuIFtzZWxmIGhvc3Rd
OworfQorCiAtICh1bnNpZ25lZCBzaG9ydClwb3J0CiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPnBvcnQoKTsKSW5kZXg6IFdlYktpdC9t
YWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJKHJldmlzaW9uIDMyMDAx
KQorKysgV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTAgQEAKICAgICBXZWJTZWN1cml0eU9yaWdpblByaXZh
dGUgKl9wcml2YXRlOwogfQogCi0tIChpZClpbml0V2l0aFByb3RvY29sOihOU1N0cmluZyAqKXBy
b3RvY29sIGRvbWFpbjooTlNTdHJpbmcgKilkb21haW47Ci0tIChpZClpbml0V2l0aFByb3RvY29s
OihOU1N0cmluZyAqKXByb3RvY29sIGRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gcG9ydDoodW5z
aWduZWQgc2hvcnQpcG9ydDsKKy0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybDsKIAogLSAo
TlNTdHJpbmcqKXByb3RvY29sOwotLSAoTlNTdHJpbmcqKWRvbWFpbjsKKy0gKE5TU3RyaW5nKilo
b3N0OwogCiAvLyBSZXR1cm5zIHplcm8gaWYgdGhlIHBvcnQgaXMgdGhlIGRlZmF1bHQgcG9ydCBm
b3IgdGhlIHByb3RvY29sLCBub24temVybyBvdGhlcndpc2UKIC0gKHVuc2lnbmVkIHNob3J0KXBv
cnQ7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gMzIwMDEpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA4LTA0LTE3ICBBZGFtIEJhcnRoIDxoazk1
NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbmFtZWQgImRvbWFpbiIgbWV0aG9kIHRvICJob3N0IiB0byBtYXRjaCBTZWN1cml0
eU9yaWdpbi4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbDoK
KyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJTZWN1cml0eU9y
aWdpbjo6aG9zdCk6CisgICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uaDoKKwogMjAwOC0wNC0x
NiAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluLgpJbmRleDogV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMy
MDAxKQorKysgV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk5LDcgKzk5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9y
aQogICAgIHJldHVybiBTX09LOwogfQogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViU2VjdXJpdHlPcmlnaW46OmRvbWFpbiggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlNlY3VyaXR5T3JpZ2luOjpob3N0KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIq
IHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkKSW5kZXg6IFdlYktpdC93aW4vV2ViU2VjdXJp
dHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJ
KHJldmlzaW9uIDMyMDAxKQorKysgV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcHJvdG9jb2woIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIqIHJlc3VsdCk7CiAgICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkb21haW4oIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBo
b3N0KCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwogICAgICAg
ICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9ydCggCkluZGV4OiBX
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkocmV2aXNpb24g
MzIwMDEpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiBpbnRl
cmZhY2UgSVdlYlNlY3VyaXR5T3JpZ2luIDogSVVua25vd24KIHsKICAgICBIUkVTVUxUIHByb3Rv
Y29sKFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKLSAgICBIUkVTVUxUIGRvbWFpbihbb3V0
LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBob3N0KFtvdXQsIHJldHZhbF0g
QlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIHBvcnQoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBz
aG9ydCogcmVzdWx0KTsKIAogICAgIEhSRVNVTFQgdXNhZ2UoW291dCwgcmV0dmFsXSB1bnNpZ25l
ZCBsb25nIGxvbmcqIHJlc3VsdCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMjAwMSkKKysrIFdlYktp
dFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA4LTA0
LTE3ICBBZGFtIEJhcnRoIDxoazk1NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZXMgTGF5b3V0VGVzdENvbnRyb2xsZXIg
dG8gdXNlIGhvc3QgaW5zdGVhZCBvZiBkb21haW4uCisKKyAgICAgICAgQ29sbGluIEphY2tzb24g
PGNvbGxpbmotd2Via2l0QGNvbGxpbmphY2tzb24uY29tPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRo
aXMgcGF0Y2guCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGF0YWJhc2VR
dW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JT
ZWN1cml0eU9yaWdpbjpkYXRhYmFzZTpdKToKKwogMjAwOC0wNC0xNSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtaXNzaW5nIDsKSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDMyMDAxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzksNyArMTc5LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q3VzdG9tUG9saQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSkKIHsgICAgCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoUHJvdG9jb2w6QCJmaWxlIiBkb21haW46
bmlsXTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdp
biBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vLyJdXTsK
ICAgICBbb3JpZ2luIHNldFF1b3RhOnF1b3RhXTsKICAgICBbb3JpZ2luIHJlbGVhc2VdOwogfQpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJl
dmlzaW9uIDMyMDAxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBEdW1wUmVuZGVyVHJlZURy
YWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5k
ZXIgZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJp
dHlPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGRhdGFiYXNlOihOU1N0cmluZyAq
KWRhdGFiYXNlSWRlbnRpZmllcgogewogICAgIGlmICghZG9uZSAmJiBsYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiVUkgREVMRUdB
VEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3Jp
Z2luOnslcywgJXMsICVpfSBkYXRhYmFzZTolc1xuIiwgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhT
dHJpbmddLCBbW29yaWdpbiBkb21haW5dIFVURjhTdHJpbmddLCAKKyAgICAgICAgcHJpbnRmKCJV
SSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdpbiBwcm90b2Nv
bF0gVVRGOFN0cmluZ10sIFtbb3JpZ2luIGhvc3RdIFVURjhTdHJpbmddLCAKICAgICAgICAgICAg
IFtvcmlnaW4gcG9ydF0sIFtkYXRhYmFzZUlkZW50aWZpZXIgVVRGOFN0cmluZ10pOwogCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAq
IDEwMjQ7ICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzIwMDEpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAwOC0wNC0xNyAgQWRhbSBC
YXJ0aCAgPGhrOTU2NUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3RzIGZvciBuZXcgcG9zdE1lc3NhZ2Ug
QVBJLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtpdEBjb2xsaW5qYWNr
c29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9tZXNzYWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1t
ZXNzYWdlLXJlY2VpdmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRv
bWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmln
aW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9y
aWdpbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5
LWJhc2UtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFp
bi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRv
bWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWw6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVy
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS90YXJnZXQt
b3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9wb3N0TWVzc2FnZS90YXJnZXQtb3JpZ2luLmh0bWw6IEFkZGVkLgorCiAyMDA4LTA0LTE2ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBFYXJsaWVyIHZlcnNpb24g
cmV2aWV3ZWQgYnkgTWl0ei4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5n
L2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzMjAwMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDIgKzEsMiBAQAogCi1kYXRhOiBTb21ldGhpbmcgdXJpOiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXNlbmQuaHRtbCBkb21h
aW46IDEyNy4wLjAuMQorZGF0YTogU29tZXRoaW5nIG9yaWdpbjogaHR0cDovLzEyNy4wLjAuMTo4
MDAwCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jv
c3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1yZWNl
aXZlLmh0bWwJKHJldmlzaW9uIDMyMDAxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNz
YWdpbmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOSw4ICs5LDcgQEAKIGZ1bmN0aW9uIHJlY2VpdmVyKGUpIHsKICAgICB2YXIg
cmVzdWx0ID0gIiI7CiAgICAgcmVzdWx0ICs9ICJkYXRhOiAiICsgZS5kYXRhICsgIlxuIjsKLSAg
ICByZXN1bHQgKz0gInVyaTogIiArIGUudXJpICsgIlxuIjsKLSAgICByZXN1bHQgKz0gImRvbWFp
bjogIiArIGUuZG9tYWluICsgIlxuIjsKKyAgICByZXN1bHQgKz0gIm9yaWdpbjogIiArIGUub3Jp
Z2luICsgIlxuIjsKICAgICBlLnNvdXJjZS5wb3N0TWVzc2FnZShyZXN1bHQpOyAgIAogfQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1h
bmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11
cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMyMDAxKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5k
LXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwzICswLDAgQEAKLXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbAotCi1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50
IiBkb21haW49IjEyNy4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sIgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4t
YW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFm
ZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHJldmlzaW9uIDMyMDAxKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVk
LWJ5LWJhc2UtdGFnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiBy
ZWN2KGUpIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGls
ZC5kYXRhID0gZS5kYXRhOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwotCi1mdW5jdGlvbiB0
ZXN0KCkgewotICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQn
KTsKLSAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7Ci0gICAgd2luLnBvc3RNZXNz
YWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Ci19Ci08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0
dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KLTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJl
ZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0
PjwvZGl2PgotPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25sb2Fk
PSJ0ZXN0KCkiCi0gIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgotPC9pZnJhbWU+PC9kaXY+Ci08ZGl2IGlkPSJyZXN1
bHQiPndhaXRpbmcuLi48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzIwMDEpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3Vt
ZW50LWRvbWFpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMCwwIEBACi13
aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAotZG9jdW1l
bnQuZG9tYWluID0gMC4wLjEKLQotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9t
IHBhcmVudCIgZG9tYWluPSIxMjcuMC4wLjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5o
dG1sIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9k
b21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVj
dGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCShyZXZpc2lvbiAzMjAwMSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzUgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlv
biByZWN2KGUpIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RD
aGlsZC5kYXRhID0gZS5kYXRhOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwotCi1mdW5jdGlv
biB0ZXN0KCkgewotICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hp
bGQnKTsKLSAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7Ci0gICAgd2luLnBvc3RN
ZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Ci19Ci0KLWRvY3VtZW50LmRvbWFpbiA9ICIw
LjAuMSI7Ci08L3NjcmlwdD4KLTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxz
Y3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2
PgotPGRpdj5kb2N1bWVudC5kb21haW4gPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50
LmRvbWFpbik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0
ZW5lci5odG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIgotICBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7IiBvbmxvYWQ9InRlc3QoKSI+Ci08L2lmcmFtZT48L2Rp
dj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlk
LW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRo
cm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gYXNkZjouIFJlY2lw
aWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDouIFJlY2lwaWVudCBoYXMg
b3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6
IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gL3RtcC9mb28uIFJlY2lwaWVudCBoYXMgb3JpZ2lu
IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJs
ZSB0byBwb3N0IG1lc3NhZ2UgdG8gLy9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKword2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4
Y2VwdGlvbi5odG1sCisKK3dhaXRpbmcuLi4KK0VuY291bnRlcmVkIGV4Y2VwdGlvbiBFcnJvcjog
U1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiB3aGlsZSBwb3N0aW5nIG1lc3NhZ2UgdG8gJycu
CitFbmNvdW50ZXJlZCBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24g
MTIgd2hpbGUgcG9zdGluZyBtZXNzYWdlIHRvICdhc2RmJy4KK1Bvc3RlZCBtZXNzYWdlIHRvICdh
c2RmOicgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4KK1Bvc3RlZCBtZXNzYWdlIHRvICdodHRwOicg
d2l0aG91dCBhbnkgZXhjZXB0aW9ucy4KK1Bvc3RlZCBtZXNzYWdlIHRvICcvdG1wL2Zvbycgd2l0
aG91dCBhbnkgZXhjZXB0aW9ucy4KK1Bvc3RlZCBtZXNzYWdlIHRvICcvL2xvY2FsaG9zdCcgd2l0
aG91dCBhbnkgZXhjZXB0aW9ucy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52
YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJv
d3MtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+IiArIGUuZGF0YTsK
K30KKyAKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7
CisKK2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKG9yaWdpbikgeworICB0cnkgeworICAgIHdpbi5w
b3N0TWVzc2FnZSgiVHJ5aW5nIG9yaWdpbj0iICsgb3JpZ2luLCBvcmlnaW4pOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj5Qb3N0ZWQgbWVz
c2FnZSB0byAnIiArIG9yaWdpbiArICInIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuIjsKKyAgfSBj
YXRjaChleCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgKz0gIjxicj5FbmNvdW50ZXJlZCBleGNlcHRpb24gIiArIGV4ICsgIiB3aGlsZSBwb3N0aW5n
IG1lc3NhZ2UgdG8gJyIgKyBvcmlnaW4gKyAiJy4iOworICB9Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KSB7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwor
ICAgIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OworCisgICAgLy8gTm9uLVVSTHMgc2hvdWxk
IGZhaWwgd2l0aCBhIHN5bnRheCBlcnJvci4KKyAgICB0cnlQb3N0TWVzc2FnZSgiIik7CisgICAg
dHJ5UG9zdE1lc3NhZ2UoImFzZGYiKTsKKworICAgIC8vIFVSTHMgd2l0aG91dCBhbiBvcmlnaW4g
c2hvdWxkIGZhaWwgd2l0aG91dCBnZW5lcmF0aW5nIGFueSBlcnJvcnMuCisgICAgdHJ5UG9zdE1l
c3NhZ2UoImFzZGY6Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2UoImh0dHA6Iik7CisKKyAgICAvLyBX
ZWJLaXQgY29udmVydHMgVVJMcyB0aGF0IHN0YXJ0IHdpdGggLyB0byBmaWxlOi8vIFVSTHMuIFRo
ZXkgZG9uJ3QgbWF0Y2ggdGhlIHRhcmdldCBmcmFtZSwgc28gdGhleSBmYWlsIHNpbGVudGx5Lgor
ICAgIHRyeVBvc3RNZXNzYWdlKCIvdG1wL2ZvbyIpOworICAgIHRyeVBvc3RNZXNzYWdlKCIvL2xv
Y2FsaG9zdCIpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8Ym9k
eT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdp
bmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1t
ZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVzdCgpIgorICBpZD0iY2hpbGQiIHdpZHRo
PSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwv
aWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2
YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMy
MDAxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZh
c2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwzICswLDAgQEAKLXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1k
b21haW4uaHRtbAotCi1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJIZWxsbyBmcm9tIGNoaWxkIiBk
b21haW49ImxvY2FsaG9zdCIgdXJpPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2Ny
aXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMyMDAxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9t
YWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiByZWN2KGUpIHsK
LSAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBlLmRhdGEgKyAnIiBk
b21haW49IicgKyBlLmRvbWFpbiArICciIHVyaT0iJyArIGUudXJpICsgJyInOwotCi0gICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IG1zZzsKLQot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKLQotPC9zY3JpcHQ+Ci08YmFzZSBocmVmPSJodHRwOi8v
d3d3LmV4YW1wbGUuY29tLyI+Ci08Ym9keT4KLTxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8
c2NyaXB0PmRvY3VtZW50LndyaXRlKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0Pjwv
ZGl2PgotPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL3Jlc291cmNlcy9qYXZhc2NyaXB0LXBvc3QtbWVzc2FnZS1zZW5kZXIuaHRtbCIK
LSAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrOyI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGlu
Zy4uLjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmln
aW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0g
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJIZWxs
byBmcm9tIGNoaWxkIiBvcmlnaW49Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0
aWxsLXNlbmRzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdp
bi5odG1sCShyZXZpc2lvbiAzMDUxNSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0bWw6
MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ph
dmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQgbWVz
c2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIgdXJp
PSInICsgZS51cmkgKyAnIic7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
Citkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCis8
L3NjcmlwdD4KKzxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KKzxib2R5Pgor
PGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1l
bnQubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFzY3Jp
cHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhl
aWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwv
ZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2
YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0
aWxsLXNlbmRzLW9yaWdpbi5odG1sCShyZXZpc2lvbiAzMDUxNSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRz
LW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CiB9CiAKIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBt
c2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyAr
IGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNl
aXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4g
KyAnIic7CiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGls
ZC5kYXRhID0gbXNnOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29y
aWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKKworUmVjZWl2
ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9tIHBhcmVudCIgb3JpZ2luPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZl
Y3RlZC1ieS1iYXNlLXRhZy5odG1sCShyZXZpc2lvbiAzMDUxNSkJKGZyb20gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVk
LWJ5LWJhc2UtdGFnLmh0bWw6MzA1MTUpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOworCisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgcmVjdiwgZmFsc2UpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1l
LmNvbnRlbnRXaW5kb3c7CisgICAgd2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50
Jyk7Cit9Cis8L3NjcmlwdD4KKzxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4K
Kzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3Jp
dGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNy
Yz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9w
b3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIg
d2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsi
PgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1k
b2N1bWVudC1kb21haW4uaHRtbAorZG9jdW1lbnQuZG9tYWluID0gMC4wLjEKKworUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9tIHBhcmVudCIgb3JpZ2luPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVu
YWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHJldmlzaW9uIDMwNTE1KQkoZnJvbSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVj
dGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sOjMwNTE1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1k
b21haW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEg
PSBlLmRhdGE7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2RvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworICAg
IHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoJ01l
c3NhZ2UgZnJvbSBwYXJlbnQnKTsKK30KKworZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsKKzwv
c2NyaXB0PgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1
bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PmRv
Y3VtZW50LmRvbWFpbiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWluKTs8
L3NjcmlwdD48L2Rpdj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwi
IGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiCisgIHN0eWxlPSJib3JkZXI6IDFw
eCBzb2xpZCBibGFjazsiIG9ubG9hZD0idGVzdCgpIj4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBp
ZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi8vbG9jYWxob3N0Ojkw
OTAuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4KKworQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gaHR0cDovL2xvY2Fs
aG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwczovL2xv
Y2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBodHRwczov
L2xvY2FsaG9zdDo4MDAwLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxob3N0Ojgw
MDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNzYWdlIHRv
IGh0dHA6Ly93d3cuZXhhbXBsZS5jb20uIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC4KKword2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCisKK3dhaXRpbmcuLi4K
K1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4
MDAwIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRh
dGE9IlRyeWluZyBvcmlnaW49aHR0cDovL2xvY2FsaG9zdDo4MDAwLyIgb3JpZ2luPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28iIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgor
UmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0Ojgw
MDAvZm9vP2JhciIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNz
YWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2Jh
eiIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRh
PSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly91c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNi
YXoiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0
YT0iVHJ5aW5nIG9yaWdpbj1udWxsIiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1Jl
Y2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49dW5kZWZpbmVkIiBvcmlnaW49Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS90YXJnZXQtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24g
cmVjdihlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCArPSAiPGJyPiIgKyBlLmRhdGE7Cit9CisgCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjdiwgZmFsc2UpOworCitmdW5jdGlvbiB0cnlQb3N0TWVzc2FnZSh3aW4sIG9y
aWdpbikgeworICAgIHdpbi5wb3N0TWVzc2FnZSgiVHJ5aW5nIG9yaWdpbj0iICsgb3JpZ2luLCBv
cmlnaW4pOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRX
aW5kb3c7CisKKyAgICAvLyBTaG91bGQgc3VjY2VlZDoKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4s
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2ZvbyIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9mb28/YmFyIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2Zvbz9iYXIjYmF6Iik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0
cDovL3VzZXI6cGFzc0Bsb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIpOworICAgIHRyeVBvc3RN
ZXNzYWdlKHdpbiwgbnVsbCk7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCB1bmRlZmluZWQpOwor
CisgICAgLy8gU2hvdWxkIGZhaWw6CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xv
Y2FsaG9zdDo5MDkwIik7CisgICAgdHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9z
dCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0Iik7CisgICAg
dHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMCIpOworICAgIHRyeVBv
c3RNZXNzYWdlKHdpbiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKKworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPGJvZHk+Cis8ZGl2PndpbmRvdy5sb2NhdGlvbi5o
cmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3Jp
cHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxv
YWQ9InRlc3QoKSIKKyAgaWQ9ImNoaWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9
ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Cis8L2lmcmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJl
c3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdl
LWxpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwJKHJl
dmlzaW9uIDMyMDAxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTQsNyArNCw3IEBACiA8ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1
bWVudC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+CiA8c2NyaXB0
PgogZnVuY3Rpb24gcmVjdihlKSB7Ci0gICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBtZXNzYWdlOiBk
YXRhPSInICsgZS5kYXRhICsgJyIgZG9tYWluPSInICsgZS5kb21haW4gKyAnIiB1cmk9IicgKyBl
LnVyaSArICciJzsKKyAgICB2YXIgbXNnID0gJ1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IicgKyBl
LmRhdGEgKyAnIiBvcmlnaW49IicgKyBlLm9yaWdpbiArICciJzsKICAgICB0b3AucG9zdE1lc3Nh
Z2UobXNnKTsKIH0KIAo=
</data>
<flag name="review"
          id="9000"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20703</attachid>
            <date>2008-04-20 12:54:43 -0700</date>
            <delta_ts>2008-04-20 12:54:43 -0700</delta_ts>
            <desc>Updated patch to address aroben&apos;s comments</desc>
            <filename>post-message-origin-v2-2008-04-20.txt</filename>
            <type>text/plain</type>
            <size>73905</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjI4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDgtMDQtMjAgIEFkYW0gQmFydGggIDxoazk1NjVAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4KKworICAgICAgICBGaXhlcyBidWcg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMzEKKyAgICAgICAgRml4
ZXMgYnVnIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODQ4CisgICAg
ICAgIAorICAgICAgICBVcGRhdGVzIHBvc3RNZXNzYWdlIGltcGxlbWVudGF0aW9uIHRvIG1hdGNo
IEhUTUwgNSBzcGVjaWZpY2F0aW9uOgorICAgICAgICAxKSBBZGRzIG9yaWdpbiBwYXJhbWV0ZXIg
dG8gcG9zdE1lc3NhZ2UuCisgICAgICAgIDIpIFJlbW92ZXMgZG9tYWluIGFuZCB1cmkgYXR0cmli
dXRlcyBvZiBNZXNzYWdlRXZlbnQgaW4gZmF2b3Igb2YKKyAgICAgICAgICAgb3JpZ2luIGF0dHJp
YnV0ZS4KKworICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzIGNvcnJlY3RseSwgd2UgbmVlZCB0
byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGhvc3RzIGFuZCBkb21haW5zCisgICAgICAgIGluIHRoZSBT
ZWN1cml0eU9yaWdpbiBjbGFzcy4gVGhlcmUgYXJlIG5vdyB0aHJlZSB3YXlzIHRvIGNvbXBhcmUg
c2VjdXJpdHkgb3JpZ2luczoKKyAgICAgICAgMSkgaXNTYW1lU2NoZW1lSG9zdFBvcnQgY29tcGFy
ZXMgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCwgYW5kIGlzIHVzZWQgZm9yIHBvc3RNZXNzYWdlCisg
ICAgICAgIDIpIGVxdWFsIGNvbXBhcmVzIGFsbCBhc3BlY3RzIG9mIHRoZSBzZWN1cml0eSBvcmln
aW4sIGFuZCBpcyB1c2VkIGZvciBoYXNoIGtleXMKKyAgICAgICAgMykgY2FuQWNjZXNzIHVuZGVy
c3RhbmRzIHRoZSBzZW1hbnRpY3Mgb2Ygc2NoZW1lcyBzdWNoIGFzIGZpbGU6Ly8gYW5kIGRhdGE6
Ly8gVVJMcywKKyAgICAgICAgICAgYW5kIHNob3VsZCBiZSB1c2VkIGZvciBzY3JpcHRpbmcgYWNj
ZXNzIGNoZWNrcy4KKworICAgICAgICBDaGFuZ2VkIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygp
IHRvIGdlbmVyYXRlIGlkZW50aWZpZXJzIHRoYXQgYXJlIHN1aXRhYmxlIGZvciAKKyAgICAgICAg
YmVpbmcgdXNlZCBhcyBhIE1lc3NhZ2VFdmVudCdzIG9yaWdpbiBwcm9wZXJ0eS4gSW4gdGhlIGZ1
dHVyZSwgdGhleSBjb3VsZCBiZSB1c2VkIAorICAgICAgICBhcyBkYXRhYmFzZSBzdHJpbmcgaWRl
bnRpZmllcnMgYXMgd2VsbC4gUmUtdXNlZCBLVVJMIHBhcnNlciB0byBwYXJzZSBzZXJpYWxpemVk
IAorICAgICAgICBTZWN1cml0eU9yaWdpbnMuCisKKyAgICAgICAgQ29sbGluIEphY2tzb24gPGNv
bGxpbmotd2Via2l0QGNvbGxpbmphY2tzb24uY29tPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRoaXMg
cGF0Y2guCisgICAgICAgIAorICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0
TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxs
LXNlbmRzLW9yaWdpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2Uu
ZXhwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21haW4pOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50
OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlRXZlbnQ6Om9yaWdpbik6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5p
ZGw6CisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjaGVja09yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4pOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
c2V0RG9tYWluRnJvbURPTSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2Fu
QWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NlY3VyZVRyYW5z
aXRpb25Ubyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZXF1YWwpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQb3J0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46Omhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmRvbWFpbik6
CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpblRyYWl0czo6ZGVsZXRlZFZhbHVlKToKKyAgICAgICAgKiBzdG9y
YWdlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6Omhhc0VudHJ5Rm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpvcmlnaW5QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZnVs
bFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnBv
cHVsYXRlT3JpZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRhdGFi
YXNlTmFtZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpk
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnNldERhdGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZSk6CisK
IDIwMDgtMDQtMjAgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzMjI4
MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDcg
KzI4OCw4IEBAIF9fWk43V2ViQ29yZTE0RHJhZ0NvbnRyb2xsZXI5ZHJhZ0VuZGVkRXYKIF9fWk43
V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxMnJlbGVhc2VQcm94eUV2CiBfX1pON1dlYkNvcmUxNFJl
c291cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9h
ZGVyMTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42
Y3JlYXRlRVJLTlNfNlN0cmluZ0VTM190UFMwXworX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNWVxdWFs
RVBLUzBfCiBfX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJMRVJLTlNfNlN0cmluZ0VTQV9TQV9S
S05TXzE2UmVzb3VyY2VSZXNwb25zZUUKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTBy
ZW1vdmVJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxMHNldEVuYWJsZWRFYgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAJKHJldmlzaW9uIDMyMjgxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNywxNCArMjA3LDE4IEBAIEpTVmFs
dWUqIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3QKICAgICBET01XaW5kb3cqIHdpbmRv
dyA9IGltcGwoKTsKIAogICAgIERPTVdpbmRvdyogc291cmNlID0gdG9KU0RPTVdpbmRvdyhleGVj
LT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IHNv
dXJjZS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLmhvc3QoKTsKLSAgICBTdHJpbmcgdXJpID0g
c291cmNlLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICB3aW5kb3ctPnBv
c3RNZXNzYWdlKG1lc3NhZ2UsIGRvbWFpbiwgdXJpLCBzb3VyY2UpOworICAgIFN0cmluZyB0YXJn
ZXRPcmlnaW4gPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGFy
Z3NbMV0pOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3aW5kb3ctPnBv
c3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMzIyODEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3MzEsNyArMjczMSw3IEBAIFN0cmluZyBEb2N1bWVudDo6cmVm
ZXJyZXIoKSBjb25zdAogCiBTdHJpbmcgRG9jdW1lbnQ6OmRvbWFpbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4tPmhvc3QoKTsKKyAgICByZXR1cm4gbV9zZWN1cml0eU9y
aWdpbi0+ZG9tYWluKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldERvbWFpbihjb25zdCBTdHJp
bmcmIG5ld0RvbWFpbikKSW5kZXg6IFdlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMzIyODEpCisr
KyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSAr
NDEsMTAgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoKQogewogfQogCi1NZXNzYWdlRXZl
bnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBjb25zdCBTdHJpbmcmIHVyaSwgRE9NV2luZG93KiBzb3VyY2UpCitNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01X
aW5kb3cqIHNvdXJjZSkKICAgICA6IEV2ZW50KG1lc3NhZ2VFdmVudCwgdHJ1ZSwgdHJ1ZSkKICAg
ICAsIG1fZGF0YShkYXRhKQotICAgICwgbV9kb21haW4oZG9tYWluKQotICAgICwgbV91cmkodXJp
KQorICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogewogfQpA
QCAtNTQsNyArNTMsNyBAQCBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQogCi12
b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJj
ZSkKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpCiB7CiAgICAgaWYg
KGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjIsOCArNjEsNyBAQCB2b2lkIE1l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSk7CiAgICAgCiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBtX2Rv
bWFpbiA9IGRvbWFpbjsKLSAgICBtX3VyaSA9IHVyaTsKKyAgICBtX29yaWdpbiA9IG9yaWdpbjsK
ICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9u
IDMyMjgxKQorKysgV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDIyICszOSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZUV2
ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIE1lc3NhZ2VFdmVudCgp
OwotICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAgICAgICAg
TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIERP
TVdpbmRvdyogc291cmNlKTsKICAgICAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiB1cmksIERPTVdpbmRvdyogc291cmNlKTsKKyAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UpOwogICAgICAgICAKICAgICAgICAgY29u
c3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0
IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAgICAgICAgY29u
c3QgU3RyaW5nJiB1cmkoKSBjb25zdCB7IHJldHVybiBtX3VyaTsgfQorICAgICAgICBjb25zdCBT
dHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIERPTVdp
bmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAg
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VFdmVudCgpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZTogICAgCiAgICAgICAgIFN0cmluZyBtX2RhdGE7Ci0gICAgICAgIFN0cmluZyBtX2RvbWFp
bjsKLSAgICAgICAgU3RyaW5nIG1fdXJpOworICAgICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAg
ICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmlkbAkocmV2aXNpb24gMzIyODEpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAg
aW50ZXJmYWNlIFtDb25kaXRpb25hbD1DUk9TU19ET0NVTUVOVF9NRVNTQUdJTkcsR2VuZXJhdGVD
b25zdHJ1Y3Rvcl0gTWVzc2FnZUV2ZW50IDogRXZlbnQgewogCiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBkb21haW47Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBzb3VyY2U7CiAgICAgICAgIAotICAgICAgICB2b2lk
IGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnVi
YmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBkYXRhQXJnLCBp
biBET01TdHJpbmcgZG9tYWluQXJnLCBpbiBET01TdHJpbmcgdXJpQXJnLCBpbiBET01XaW5kb3cg
c291cmNlQXJnKTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGluIERPTVN0cmluZyB0
eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJn
LCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9yaWdpbkFyZywgaW4gRE9NV2lu
ZG93IHNvdXJjZUFyZyk7CiAKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMzIyODEpCisrKyBXZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEwLDcgKzkxMCw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UKIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
dXJsLnByb3RvY29sKCksIHVybC5ob3N0KCksIHVybC5wb3J0KCksIDApOworICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAg
IFNlY3VyaXR5T3JpZ2luOjpSZWFzb24gcmVhc29uOwogICAgIGlmICghbV9jYW52YXMtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhvcmlnaW4uZ2V0KCksIHJlYXNvbikp
CiAgICAgICAgIG1fY2FudmFzLT5zZXRPcmlnaW5UYWludGVkKCk7CkBAIC0xMDYxLDcgKzEwNjEs
NyBAQCBQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IENhbnZhc1JlbmRlcmluCiAgICAgYm9vbCBv
cmlnaW5DbGVhbiA9IHRydWU7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGlt
YWdlLT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIEtVUkwgdXJsKGNhY2hlZEltYWdlLT51cmwo
KSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmwucHJvdG9jb2woKSwgdXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwgMCk7Cisg
ICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh1cmwpOwogICAgICAgICBTZWN1cml0eU9yaWdpbjo6UmVhc29uIHJlYXNvbjsKICAgICAg
ICAgb3JpZ2luQ2xlYW4gPSBtX2NhbnZhcy0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuQWNjZXNzKG9yaWdpbi5nZXQoKSwgcmVhc29uKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkocmV2aXNpb24gMzIyODEpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKICNpbmNsdWRlICJDU1NTdHls
ZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01TZWxlY3Rpb24uaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgpAQCAtMzIwLDEwICszMjIsMzkgQEAgU3RvcmFnZSogRE9NV2lu
ZG93Ojpsb2NhbFN0b3JhZ2UoKSBjb25zdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1JPU1NfRE9D
VU1FTlRfTUVTU0FHSU5HKQotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01X
aW5kb3cqIHNvdXJjZSkgY29uc3QKK3ZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNv
dXJjZSwgRXhjZXB0aW9uQ29kZSYgZWNGb3JTZW5kZXIpIGNvbnN0CiB7Ci0gICBFeGNlcHRpb25D
b2RlIGVjOwotICAgZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVzc2FnZUV2ZW50KG1l
c3NhZ2UsIGRvbWFpbiwgdXJpLCBzb3VyY2UpLCBlYywgdHJ1ZSk7CisgICAgaWYgKCFtX2ZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXRhcmdldE9yaWdpbi5pc051bGwoKSkgewor
ICAgICAgICBLVVJMIGRlc2lyZWRUYXJnZXRVUkwodGFyZ2V0T3JpZ2luKTsKKyAgICAgICAgaWYg
KCFkZXNpcmVkVGFyZ2V0VVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZWNGb3JTZW5kZXIg
PSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkZXNpcmVkVGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShkZXNpcmVkVGFyZ2V0VVJMKTsKKyAgICAgICAgU2VjdXJpdHlPcmlnaW4qIGFj
dHVhbFRhcmdldE9yaWdpbiA9IGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAg
IGlmIChkZXNpcmVkVGFyZ2V0T3JpZ2luLT5pc0VtcHR5KCkgfHwgIWRlc2lyZWRUYXJnZXRPcmln
aW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGFjdHVhbFRhcmdldE9yaWdpbikpIHsKKyAgICAgICAg
ICAgIC8vIFRoZSBzZW5kZXIgaXMgbm90IGFsbG93ZWQgdG8gZmluZCBvdXQgdGhlIG9yaWdpbiBv
ZgorICAgICAgICAgICAgLy8gdGhlIHJlY2lwaWVudCwgc28gd2UgZmFpbCBzaWxlbnRseSBhbmQg
bG9nIGEgbWVzc2FnZQorICAgICAgICAgICAgLy8gdG8gdGhlIGNvbnNvbGUuCisgICAgICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmFibGUgdG8gcG9zdCBtZXNzYWdl
IHRvICVzLiBSZWNpcGllbnQgaGFzIG9yaWdpbiAlcy5cbiIsIAorICAgICAgICAgICAgICAgIHRh
cmdldE9yaWdpbi51dGY4KCkuZGF0YSgpLCBhY3R1YWxUYXJnZXRPcmlnaW4tPnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBjb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNz
YWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgU3RyaW5nKCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgRG9jdW1lbnQqIHNvdXJj
ZURvY3VtZW50ID0gc291cmNlLT5kb2N1bWVudCgpOworICAgIGlmICghc291cmNlRG9jdW1lbnQp
CisgICAgICAgIHJldHVybjsKKyAgICBTdHJpbmcgc291cmNlT3JpZ2luID0gc291cmNlRG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CisKKyAgICAvLyBTZW5kZXIgaXMgbm90
IGFsbG93ZWQgdG8gc2VlIGV4Y2VwdGlvbnMgb3RoZXIgdGhhbiBzeW50YXggZXJyb3JzCisgICAg
RXhjZXB0aW9uQ29kZSBlYzsgCisgICAgZG9jdW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChuZXcgTWVz
c2FnZUV2ZW50KG1lc3NhZ2UsIHNvdXJjZU9yaWdpbiwgc291cmNlKSwgZWMsIHRydWUpOwogfQog
I2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDMyMjgxKQorKysgV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBhcHBsaWNhdGlvbkNhY2hl
KCkgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1JPU1NfRE9DVU1FTlRfTUVTU0FHSU5HKQot
ICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgdXJpLCBET01XaW5kb3cqIHNvdXJjZSkgY29uc3Q7
CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVj
Rm9yU2VuZGVyKSBjb25zdDsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IHgs
IGludCB5KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAzMjI4MSkKKysrIFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDgg
QEAgbW9kdWxlIHdpbmRvdyB7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9DUk9TU19ET0NVTUVOVF9N
RVNTQUdJTkcpCiAgICAgICAgIC8vIGNyb3NzLWRvY3VtZW50IG1lc3NhZ2luZwotICAgICAgICBb
RG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9N
U3RyaW5nIG1lc3NhZ2UpOworICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0
b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0g
RE9NU3RyaW5nIHRhcmdldE9yaWdpbikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMzIyODEpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKKyNp
bmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC01MywxMSArNTQsMTAgQEAgc3RhdGlj
IGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVucwogICAgIHJldHVybiBkZWZhdWx0UG9y
dHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OwogfQogCi1TZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlP
cmlnaW4oY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25l
ZCBzaG9ydCBwb3J0KQotICAgIDogbV9wcm90b2NvbChwcm90b2NvbC5pc051bGwoKSA/ICIiIDog
cHJvdG9jb2wubG93ZXIoKSkKLSAgICAsIG1faG9zdChob3N0LmlzTnVsbCgpID8gIiIgOiBob3N0
Lmxvd2VyKCkpCi0gICAgLCBtX3BvcnQocG9ydCkKLSAgICAsIG1fcG9ydFNldChwb3J0KQorU2Vj
dXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKKyAgICA6IG1fcHJv
dG9jb2wodXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyAiIiA6IHVybC5wcm90b2NvbCgpLmxvd2Vy
KCkpCisgICAgLCBtX2hvc3QodXJsLmhvc3QoKS5pc051bGwoKSA/ICIiIDogdXJsLmhvc3QoKS5s
b3dlcigpKQorICAgICwgbV9wb3J0KHVybC5wb3J0KCkpCiAgICAgLCBtX25vQWNjZXNzKGZhbHNl
KQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKIHsKQEAgLTY5LDExICs2OSwyMSBA
QCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyCiAgICAgaWYgKG1fcHJv
dG9jb2wgPT0gImRhdGEiKQogICAgICAgICBtX25vQWNjZXNzID0gdHJ1ZTsKIAorICAgIC8vIGRv
Y3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9N
LgorICAgIG1fZG9tYWluID0gbV9ob3N0OwogCi0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbChtX3BvcnQsIG1fcHJvdG9jb2wpKSB7CisgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbChtX3BvcnQsIG1fcHJvdG9jb2wpKQogICAgICAgICBtX3BvcnQgPSAwOwotICAgICAgICBt
X3BvcnRTZXQgPSBmYWxzZTsKLSAgICB9ICAgCit9CisKK1NlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCisgICAgOiBtX3Byb3RvY29sKG90
aGVyLT5tX3Byb3RvY29sLmNvcHkoKSkKKyAgICAsIG1faG9zdChvdGhlci0+bV9ob3N0LmNvcHko
KSkKKyAgICAsIG1fZG9tYWluKG90aGVyLT5tX2RvbWFpbi5jb3B5KCkpCisgICAgLCBtX3BvcnQo
b3RoZXItPm1fcG9ydCkKKyAgICAsIG1fbm9BY2Nlc3Mob3RoZXItPm1fbm9BY2Nlc3MpCisgICAg
LCBtX2RvbWFpbldhc1NldEluRE9NKG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQorewogfQog
CiBib29sIFNlY3VyaXR5T3JpZ2luOjppc0VtcHR5KCkgY29uc3QKQEAgLTgxLDI0ICs5MSwxNSBA
QCBib29sIFNlY3VyaXR5T3JpZ2luOjppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gbV9wcm90
b2NvbC5pc0VtcHR5KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0
LCB1bnNpZ25lZCBzaG9ydCBwb3J0LCBTZWN1cml0eU9yaWdpbiogb3duZXJGcmFtZU9yaWdpbikK
K1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gYWRvcHRS
ZWYobmV3IFNlY3VyaXR5T3JpZ2luKHByb3RvY29sLCBob3N0LCBwb3J0KSk7Ci0KLSAgICAvLyBJ
ZiB3ZSBkbyBub3Qgb2J0YWluIGEgbWVhbmluZ2Z1bCBvcmlnaW4gZnJvbSB0aGUgVVJMLCB0aGVu
IHdlIHRyeSB0byBmaW5kIG9uZQotICAgIC8vIHZpYSB0aGUgZnJhbWUgaGllcmFyY2h5LgotICAg
IC8vIFdlIGFsaWFzIHRoZSBTZWN1cml0eU9yaWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1
ZyAxNTMxMwotICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzEzCi0gICAgaWYgKG9yaWdpbi0+aXNFbXB0eSgpICYmIG93bmVyRnJhbWVPcmlnaW4pCi0gICAg
ICAgIHJldHVybiBvd25lckZyYW1lT3JpZ2luOwotCi0gICAgcmV0dXJuIG9yaWdpbi5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbih1cmwpKTsKIH0KIAog
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gY3JlYXRl
KCIiLCAiIiwgMCwgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKIAogICAgIEZy
YW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAgICAgY29uc3QgS1VSTCYgdXJs
ID0gbG9hZGVyLT51cmwoKTsKQEAgLTExMSwxOSArMTEyLDI3IEBAIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2kKICAgICBpZiAob3duZXJGcmFtZSAmJiBvd25lckZyYW1l
LT5kb2N1bWVudCgpKQogICAgICAgICBvd25lckZyYW1lT3JpZ2luID0gb3duZXJGcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIHJldHVybiBjcmVhdGUodXJsLnByb3Rv
Y29sKCksIHVybC5ob3N0KCksIHVybC5wb3J0KCksIG93bmVyRnJhbWVPcmlnaW4pOworICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gY3JlYXRlKHVybCk7CisKKyAgICAvLyBJZiB3
ZSBkbyBub3Qgb2J0YWluIGEgbWVhbmluZ2Z1bCBvcmlnaW4gZnJvbSB0aGUgVVJMLCB0aGVuIHdl
IHRyeSB0byBmaW5kIG9uZQorICAgIC8vIHZpYSB0aGUgZnJhbWUgaGllcmFyY2h5LgorICAgIC8v
IFdlIGFsaWFzIHRoZSBTZWN1cml0eU9yaWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAx
NTMxMworICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEz
CisgICAgaWYgKG9yaWdpbi0+aXNFbXB0eSgpICYmIG93bmVyRnJhbWVPcmlnaW4pCisgICAgICAg
IHJldHVybiBvd25lckZyYW1lT3JpZ2luOworCisgICAgcmV0dXJuIG9yaWdpbi5yZWxlYXNlKCk7
CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjb3B5KCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlKG1fcHJvdG9jb2wuY29weSgpLCBtX2hvc3QuY29weSgpLCBt
X3BvcnQsIDApOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4odGhpcykp
OwogfQogCi0KIHZvaWQgU2VjdXJpdHlPcmlnaW46OnNldERvbWFpbkZyb21ET00oY29uc3QgU3Ry
aW5nJiBuZXdEb21haW4pCiB7CiAgICAgbV9kb21haW5XYXNTZXRJbkRPTSA9IHRydWU7Ci0gICAg
bV9ob3N0ID0gbmV3RG9tYWluLmxvd2VyKCk7CisgICAgbV9kb21haW4gPSBuZXdEb21haW4ubG93
ZXIoKTsKIH0KIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiBvdGhlciwgUmVhc29uJiByZWFzb24pIGNvbnN0CkBAIC0xNjYsNyArMTc1LDcgQEAg
Ym9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzKGNvbnN0IFNlYwogICAgICAgICAgICAgaWYg
KG1faG9zdCA9PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0KQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKG1fZG9tYWluV2Fz
U2V0SW5ET00gJiYgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00pIHsKLSAgICAgICAgICAgIGlm
IChtX2hvc3QgPT0gb3RoZXItPm1faG9zdCkKKyAgICAgICAgICAgIGlmIChtX2RvbWFpbiA9PSBv
dGhlci0+bV9kb21haW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLT5tX2hvc3QgJiYgbV9wb3J0
ID09IG90aGVyLT5tX3BvcnQpIHsKQEAgLTE4Niw1NSArMTk1LDEwMyBAQCBib29sIFNlY3VyaXR5
T3JpZ2luOjppc1NlY3VyZVRyYW5zaXRpb25UCiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0U2NoZW1lQXNM
b2NhbChtX3Byb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2UobV9ob3N0LCBTdHJpbmcodXJsLmhvc3QoKSkpICYmIGVxdWFsSWdub3Jp
bmdDYXNlKG1fcHJvdG9jb2wsIFN0cmluZyh1cmwucHJvdG9jb2woKSkpICYmIG1fcG9ydCA9PSB1
cmwucG9ydCgpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3RoZXIgPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHVybCk7CisgICAgUmVhc29uIHJlYXNvbjsKKyAgICByZXR1cm4gY2FuQWNj
ZXNzKG90aGVyLmdldCgpLCByZWFzb24pOwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRv
U3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm90b2NvbCArICI6IiArIG1faG9zdCAr
ICI6IiArIFN0cmluZzo6bnVtYmVyKG1fcG9ydCk7CisgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCJmaWxlOi8vIik7CisKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KG1fcHJvdG9jb2wubGVuZ3RoKCkgKyBtX2hv
c3QubGVuZ3RoKCkgKyAxMCk7CisgICAgYXBwZW5kKHJlc3VsdCwgbV9wcm90b2NvbCk7CisgICAg
YXBwZW5kKHJlc3VsdCwgIjovLyIpOworICAgIGFwcGVuZChyZXN1bHQsIG1faG9zdCk7CisKKyAg
ICBpZiAobV9wb3J0KSB7CisgICAgICAgIGFwcGVuZChyZXN1bHQsICI6Iik7CisgICAgICAgIGFw
cGVuZChyZXN1bHQsIFN0cmluZzo6bnVtYmVyKG1fcG9ydCkpOworICAgIH0KKworICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Cit9CisKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nKQoreworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwob3JpZ2luU3Ry
aW5nKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIFNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsK
IAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21J
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5nSWRlbnRpZmllcikKK1Bhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogeyAKICAgICAvLyBNYWtlIHN1cmUg
dGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgotICAgIGludCBzZXBhcmF0b3IxID0gc3RyaW5nSWRl
bnRpZmllci5maW5kKFNlcGFyYXRvckNoYXJhY3Rlcik7CisgICAgaW50IHNlcGFyYXRvcjEgPSBk
YXRhYmFzZUlkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBh
cmF0b3IxID09IC0xKQotICAgICAgICByZXR1cm4gY3JlYXRlKCIiLCAiIiwgMCwgMCk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRo
ZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCi0gICAgaW50IHNlcGFyYXRvcjIgPSBzdHJpbmdJZGVu
dGlmaWVyLmZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVyLCBzZXBhcmF0b3IxICsgMSk7CisgICAgaW50
IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIuZmluZChTZXBhcmF0b3JDaGFyYWN0ZXIs
IHNlcGFyYXRvcjEgKyAxKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSAtMSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOworICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7
CiAgICAgICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIG5vdCBhIHRoaXJkIHNlcGFyYXRv
cgotICAgIGlmIChzdHJpbmdJZGVudGlmaWVyLnJldmVyc2VGaW5kKFNlcGFyYXRvckNoYXJhY3Rl
cikgIT0gc2VwYXJhdG9yMikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZSgiIiwgIiIsIDAsIDApOwor
ICAgIGlmIChkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZpbmQoU2VwYXJhdG9yQ2hhcmFjdGVy
KSAhPSBzZXBhcmF0b3IyKQorICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CiAgICAgICAg
IAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1i
ZXIgb3IgZG9lc24ndCBleGlzdAogICAgIGJvb2wgcG9ydE9rYXk7Ci0gICAgaW50IHBvcnQgPSBz
dHJpbmdJZGVudGlmaWVyLnJpZ2h0KHN0cmluZ0lkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0
b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKLSAgICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRv
cjIgKyAxID09IHN0YXRpY19jYXN0PGludD4oc3RyaW5nSWRlbnRpZmllci5sZW5ndGgoKSkpCi0g
ICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAgICBpbnQgcG9ydCA9IGRhdGFi
YXNlSWRlbnRpZmllci5yaWdodChkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0
b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKKyAgICBpZiAoIXBvcnRPa2F5ICYmIHNlcGFyYXRv
cjIgKyAxID09IHN0YXRpY19jYXN0PGludD4oZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpKSkK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOwogICAgIAogICAgIGlmIChwb3J0IDwgMCB8
fCBwb3J0ID4gNjU1MzUpCi0gICAgICAgIHJldHVybiBjcmVhdGUoIiIsICIiLCAwLCAwKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOwogICAgICAgICAKICAgICAvLyBTcGxpdCBvdXQg
dGhlIDMgc2VjdGlvbnMgb2YgZGF0YQotICAgIFN0cmluZyBwcm90b2NvbCA9IHN0cmluZ0lkZW50
aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwotICAgIFN0cmluZyBob3N0ID0gc3RyaW5n
SWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0
b3IxIC0gMSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShwcm90b2NvbCwgaG9zdCwgcG9ydCwgMCk7Cisg
ICAgU3RyaW5nIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBh
cmF0b3IxKTsKKyAgICBTdHJpbmcgaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmco
c2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7CisgICAgcmV0dXJu
IGNyZWF0ZShLVVJMKHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1i
ZXIocG9ydCkpKTsKIH0KLSAgICAKLSAgICAKLVN0cmluZyBTZWN1cml0eU9yaWdpbjo6c3RyaW5n
SWRlbnRpZmllcigpIGNvbnN0IAorCitTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRl
bnRpZmllcigpIGNvbnN0IAogewogICAgIHN0YXRpYyBTdHJpbmcgc2VwYXJhdG9yU3RyaW5nID0g
U3RyaW5nKCZTZXBhcmF0b3JDaGFyYWN0ZXIsIDEpOwogICAgIHJldHVybiBtX3Byb3RvY29sICsg
c2VwYXJhdG9yU3RyaW5nICsgbV9ob3N0ICsgc2VwYXJhdG9yU3RyaW5nICsgU3RyaW5nOjpudW1i
ZXIobV9wb3J0KTsgCiB9CiAKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiBvdGhlcikgY29uc3QgCit7CisgICAgaWYgKCFpc1NhbWVTY2hlbWVIb3N0UG9y
dChvdGhlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2RvbWFpbldhc1Nl
dEluRE9NICE9IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBtX2RvbWFpbiAhPSBvdGhlci0+
bV9kb21haW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0
eU9yaWdpbiogb3RoZXIpIGNvbnN0IAoreworICAgIGlmIChtX2hvc3QgIT0gb3RoZXItPm1faG9z
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fcHJvdG9jb2wgIT0gb3RoZXIt
Pm1fcHJvdG9jb2wpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3BvcnQgIT0g
b3RoZXItPm1fcG9ydCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Vj
dXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3Jp
Z2luLmgJKHJldmlzaW9uIDMyMjgxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8U2Vj
dXJpdHlPcmlnaW4+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBjcmVhdGVGb3JGcmFtZShGcmFtZSopOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbUlkZW50aWZpZXIoY29uc3QgU3RyaW5n
Jik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1bnNpZ25lZCBzaG9ydCBw
b3J0LCBTZWN1cml0eU9yaWdpbiogb3duZXJGcmFtZU9yaWdpbik7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBLVVJMJik7CiAKICAgICAgICAgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gY29weSgpOwogCiAgICAgICAgIHZvaWQgc2V0RG9tYWluRnJv
bURPTShjb25zdCBTdHJpbmcmIG5ld0RvbWFpbik7Ci0gICAgICAgIFN0cmluZyBob3N0KCkgY29u
c3QgeyByZXR1cm4gbV9ob3N0OyB9CiAgICAgICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvdG9jb2w7IH0KKyAgICAgICAgU3RyaW5nIGhvc3QoKSBjb25zdCB7IHJldHVy
biBtX2hvc3Q7IH0KKyAgICAgICAgU3RyaW5nIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9t
YWluOyB9CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3Bv
cnQ7IH0KICAgICAgICAgCiAgICAgICAgIGVudW0gUmVhc29uICB7CkBAIC02MiwxOSArNjQsMzEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owog
ICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIFN0cmlu
ZyBzdHJpbmdJZGVudGlmaWVyKCkgY29uc3Q7CiAKLSAgICAgICAgLy8gZG8gbm90IHVzZSB0aGlz
IGZvciBhY2Nlc3MgY2hlY2tzLCBpdCdzIHRoZXJlIG9ubHkgZm9yIHVzaW5nIHRoaXMgYXMgYSBo
YXNodGFibGUga2V5Ci0gICAgICAgIGJvb2wgZXF1YWwoU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX3Byb3RvY29sID09IG90aGVyLT5tX3Byb3RvY29sICYmIG1faG9zdCA9
PSBvdGhlci0+bV9ob3N0ICYmIG1fcG9ydCA9PSBvdGhlci0+bV9wb3J0OyB9Ci0gICAgICAgIAor
ICAgICAgICAvLyBTZXJpYWxpemUgdGhlIHNlY3VyaXR5IG9yaWdpbiBmb3Igc3RvcmFnZSBpbiB0
aGUgZGF0YWJhc2UuIFRoaXMgZm9ybWF0IGlzCisgICAgICAgIC8vIGRlcHJlY2F0ZWQgYW5kIHNo
b3VsZCBiZSB1c2VkIG9ubHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGF0YWJhc2VzOwor
ICAgICAgICAvLyB1c2UgdG9TdHJpbmcoKSBhbmQgY3JlYXRlRnJvbVN0cmluZygpIGluc3RlYWQu
CisgICAgICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdDsKKworICAgICAgICAv
LyBUaGlzIG1ldGhvZCBjaGVja3MgZm9yIGVxdWFsaXR5IGJldHdlZW4gU2VjdXJpdHlPcmlnaW5z
LCBub3Qgd2hldGhlcgorICAgICAgICAvLyBvbmUgb3JpZ2luIGNhbiBhY2Nlc3MgYW5vdGhlci4g
IEl0IGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5cy4KKyAgICAgICAgLy8gRm9yIGFjY2VzcyBj
aGVja3MsIHVzZSBjYW5BY2Nlc3MoKS4KKyAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgbWV0aG9k
IGlzIHJlYWxseSBvbmx5IHVzZWZ1bCBmb3IgaGFzaCB0YWJsZSBrZXlzLCBpdAorICAgICAgICAv
LyBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRvIFNlY3VyaXR5T3JpZ2luSGFzaC4KKyAgICAgICAg
Ym9vbCBlcXVhbChjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OworCisgICAgICAgIC8vIFRo
aXMgbWV0aG9kIGNoZWNrcyBmb3IgZXF1YWxpdHksIGlnbm9yaW5nIHRoZSB2YWx1ZSBvZiBkb2N1
bWVudC5kb21haW4KKyAgICAgICAgLy8gKGFuZCB3aGV0aGVyIGl0IHdhcyBzZXQpIGJ1dCBjb25z
aWRlcmluZyB0aGUgaG9zdC4gSXQgaXMgdXNlZCBmb3IgcG9zdE1lc3NhZ2UuCisgICAgICAgIGJv
b2wgaXNTYW1lU2NoZW1lSG9zdFBvcnQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKKwog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgdW5zaWduZWQgc2hvcnQgcG9ydCk7CisgICAgICAgIGV4
cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgZXhwbGljaXQgU2Vj
dXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qKTsKIAogICAgICAgICBTdHJpbmcgbV9w
cm90b2NvbDsKICAgICAgICAgU3RyaW5nIG1faG9zdDsKKyAgICAgICAgU3RyaW5nIG1fZG9tYWlu
OwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7Ci0gICAgICAgIGJvb2wgbV9wb3J0U2V0
OwogICAgICAgICBib29sIG1fbm9BY2Nlc3M7CiAgICAgICAgIGJvb2wgbV9kb21haW5XYXNTZXRJ
bkRPTTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbkhhc2gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luSGFzaC5oCShy
ZXZpc2lvbiAzMjI4MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW5IYXNoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgU2VjdXJpdHlPcmlnaW5I
YXNoX2gKICNkZWZpbmUgU2VjdXJpdHlPcmlnaW5IYXNoX2gKIAorI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApA
QCAtNTksOSArNjAsOSBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNoIHsKIHN0cnVjdCBTZWN1
cml0eU9yaWdpblRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiA+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1
ZTsKICAgICBzdGF0aWMgY29uc3QgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYgZGVsZXRlZFZhbHVl
KCkgCi0gICAgeyAKLSAgICAgICAgLy8gT2theSBkZWxldGVkIHZhbHVlIGJlY2F1c2UgZmlsZTog
cHJvdG9jb2xzIHNob3VsZCBhbHdheXMgaGF2ZSBwb3J0IDAKLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5EZWxldGVkVmFsdWUgPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKCJmaWxlIiwgIiIsIDEsIDApOyAgICAKKyAgICB7CisgICAgICAg
IC8vIE9rIGRlbGV0ZWQgdmFsdWUgYXNzdW1pbmcgImludmFsaWQtcHJvdG9jb2wiIGlzIG5vdCBh
IHZhbGlkIHByb3RvY29sCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luRGVsZXRlZFZhbHVlID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShL
VVJMKCJpbnZhbGlkLXByb3RvY29sOiIpKTsKICAgICAgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2lu
RGVsZXRlZFZhbHVlOyAKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRy
YWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwCShyZXZpc2lvbiAzMjI4MSkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6Omhhc0VudHJ5Rm9yRGF0YWJhcwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRl
eHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVudC5iaW5kVGV4
dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRl
eHQoMiwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIAogICAgIHJldHVybiBzdGF0ZW1lbnQuc3RlcCgp
ID09IFNRTFJlc3VsdFJvdzsKQEAgLTE4OSw3ICsxODksNyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFj
a2VyOjpvcmlnaW5QYXRoKFNlY3VyCiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Ro
cmVhZCk7CiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAg
ICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAogU3RyaW5nIERhdGFiYXNlVHJh
Y2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOb3RFeGlzdHMpCkBAIC0xOTksNyArMTk5LDcgQEAg
U3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYgogICAgIGlmIChtX3Byb3Bv
c2VkRGF0YWJhc2UgJiYgbV9wcm9wb3NlZERhdGFiYXNlLT5maXJzdCA9PSBvcmlnaW4gJiYgbV9w
cm9wb3NlZERhdGFiYXNlLT5zZWNvbmQubmFtZSgpID09IG5hbWUpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5zdHJpbmdJ
ZGVudGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPmRhdGFi
YXNlSWRlbnRpZmllcigpOwogICAgIFN0cmluZyBvcmlnaW5QYXRoID0gdGhpcy0+b3JpZ2luUGF0
aChvcmlnaW4pOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGF0aCBmb3IgdGhpcyBTZWN1
cml0eU9yaWdpbiBleGlzdHMKQEAgLTIyNiw3ICsyMjYsNyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFj
a2VyOjpmdWxsUGF0aEZvckRhdGFiCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAg
CiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHJldHJpZXZlIGZpbGVuYW1lIGZyb20gRGF0YWJhc2UgVHJhY2tlciBmb3Igb3Jp
Z2luICVzLCBuYW1lICVzIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRh
KCksIG5hbWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBy
ZXRyaWV2ZSBmaWxlbmFtZSBmcm9tIERhdGFiYXNlIFRyYWNrZXIgZm9yIG9yaWdpbiAlcywgbmFt
ZSAlcyIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCksIG5hbWUu
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIHN0
YXRlbWVudC5maW5hbGl6ZSgpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpwb3B1bGF0ZU9yaWdpbnMoKQogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJl
c3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgewotICAgICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tSWRl
bnRpZmllcihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBtX3F1b3RhTWFw
LT5zZXQob3JpZ2luLmdldCgpLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMSkpOwogICAgIH0K
IApAQCAtMzE2LDE0ICszMTYsMTQgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlTmFt
ZXNGb3JPcgogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5z
dHJpbmdJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1
bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpCiAgICAgICAgIHJlc3VsdFZl
Y3Rvci5hcHBlbmQoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOwogCiAgICAgaWYgKHJlc3Vs
dCAhPSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJp
ZXZlIGFsbCBkYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5zdHJpbmdJZGVu
dGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBy
ZXRyaWV2ZSBhbGwgZGF0YWJhc2UgbmFtZXMgZm9yIG9yaWdpbiAlcyIsIG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlVHJhY2tl
cjo6ZGV0YWlscwogICAgIGlmIChtX3Byb3Bvc2VkRGF0YWJhc2UgJiYgbV9wcm9wb3NlZERhdGFi
YXNlLT5maXJzdCA9PSBvcmlnaW4gJiYgbV9wcm9wb3NlZERhdGFiYXNlLT5zZWNvbmQubmFtZSgp
ID09IG5hbWUpCiAgICAgICAgIHJldHVybiBtX3Byb3Bvc2VkRGF0YWJhc2UtPnNlY29uZDsKIAot
ICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCk7
CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpOwogCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpz
ZXREYXRhYmFzZURldGFpbHMKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhy
ZWFkKTsKIAotICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5zdHJpbmdJZGVu
dGlmaWVyKCk7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpOwogICAgIGludDY0X3QgZ3VpZCA9IDA7CiAgICAgCiAgICAgb3BlblRyYWNr
ZXJEYXRhYmFzZSh0cnVlKTsKQEAgLTU0NSwyNiArNTQ1LDI2IEBAIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpzZXRRdW90YShTZWN1cml0eU8KICAgICAgICAgaWYgKCFtX3F1b3RhTWFwLT5jb250YWlu
cyhvcmlnaW4pKSB7CiAgICAgICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJJTlNFUlQgSU5UTyBPcmlnaW5zIFZBTFVFUyAoPywgPykiKTsKICAgICAgICAgICAg
IGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0aGUgdHJhY2tl
ciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2ggb3JpZ2luICVzIGluIHRoZSB0
cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgx
LCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICAgICAgc3RhdGVtZW50
LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
ICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMiwgcXVvdGEpOwogCiAgICAgICAgICAgICAgICAgaWYg
KHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkKLSAgICAgICAgICAgICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0aGUgdHJhY2tlciIs
IG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0aGUg
dHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU1FMaXRlU3RhdGVt
ZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIE9yaWdpbnMgU0VUIHF1b3RhPT8gV0hF
UkUgb3JpZ2luPT8iKTsgICAgICAgIAogICAgICAgICAgICAgYm9vbCBlcnJvciA9IHN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2s7CiAgICAgICAgICAgICBpZiAoIWVycm9yKSB7CiAg
ICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBxdW90YSk7Ci0gICAgICAgICAg
ICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpKTsK
KyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgb3JpZ2luLT5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CiAKICAgICAgICAgICAgICAgICBlcnJvciA9ICFzdGF0ZW1lbnQuZXhlY3V0
ZUNvbW1hbmQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGVycm9yKQotICAg
ICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBxdW90YSAlbGx1IGluIHRyYWNr
ZXIgZGF0YWJhc2UgZm9yIG9yaWdpbiAlcyIsIHF1b3RhLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZp
ZXIoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gc2V0IHF1b3RhICVsbHUgaW4gdHJhY2tlciBkYXRhYmFzZSBmb3Igb3JpZ2luICVzIiwgcXVv
dGEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRklYTUU6IElzIGl0IHJlYWxseSBPSyB0byB1cGRhdGUgdGhlIHF1
b3RhIGluIG1lbW9yeSBpZiB3ZSBmYWlsZWQgdG8gdXBkYXRlIGl0IG9uIGRpc2s/CkBAIC01OTAs
MTIgKzU5MCwxMiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2UoU2VjdXJpCiAg
ICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50
aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBuYW1lKTsKICAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMywgcGF0aCk7CiAKICAgICBpZiAoIXN0YXRlbWVudC5leGVjdXRlQ29tbWFu
ZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGFkZCBkYXRhYmFzZSAlcyB0byBv
cmlnaW4gJXM6ICVzXG4iLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0cmluZ0lkZW50
aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGFkZCBkYXRhYmFzZSAlcyB0byBvcmlnaW4gJXM6ICVz
XG4iLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFz
Y2lpKCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKQEAgLTYyNSw0MCArNjI1LDQwIEBAIHZvaWQgRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXIKIAogICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNl
TmFtZXM7CiAgICAgaWYgKCFkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgZGF0YWJhc2VO
YW1lcykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmV0cmlldmUgbGlzdCBvZiBk
YXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luICVzIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byByZXRyaWV2ZSBs
aXN0IG9mIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPmRhdGFiYXNlSWRl
bnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAoIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIGRhdGFiYXNlTmFtZXNb
aV0pKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3Ig
ZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgZGF0YWJhc2VOYW1lc1tpXS5hc2NpaSgpLmRhdGEo
KSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9y
aWdpbiAlcyIsIGRhdGFiYXNlTmFtZXNbaV0uYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogICAgIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRh
YmFzZSwgIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyIpOwogICAgIGlmIChz
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2luICVzIGZy
b20gdHJhY2tlciIsIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBkYXRhYmFz
ZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAot
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKSk7Cisg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwog
ICAgIAogICAgIGlmICghc3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmln
aW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9m
IGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgb3JpZ2luU3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxF
VEUgRlJPTSBPcmlnaW5zIFdIRVJFIG9yaWdpbj0/Iik7CiAgICAgaWYgKG9yaWdpblN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gcHJlcGFyZSBkZWxldGlvbiBvZiBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2luLT5z
dHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmln
aW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG9yaWdpblN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPnN0cmlu
Z0lkZW50aWZpZXIoKSk7CisgICAgb3JpZ2luU3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+
ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIAogICAgIGlmICghb3JpZ2luU3RhdGVtZW50LmV4
ZWN1dGVDb21tYW5kKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBk
ZWxldGlvbiBvZiBkYXRhYmFzZXMgZnJvbSBvcmlnaW4gJXMgZnJvbSB0cmFja2VyIiwgb3JpZ2lu
LT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBm
cm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjk2LDIxICs2OTYsMjEgQEAgdm9pZCBE
YXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKFNlYwogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMi
LCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPnN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgp
LmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBk
YXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRh
dGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxF
VEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PyIpOwogICAgIGlmIChz
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2UgJXMgZnJvbSBvcmlnaW4gJXMg
ZnJvbSB0cmFja2VyIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luLT5zdHJpbmdJZGVudGlm
aWVyKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVw
YXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIs
IG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWko
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVu
dC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMiwgbmFtZSk7CiAgICAgCiAgICAgaWYgKCFzdGF0ZW1lbnQuZXhlY3V0ZUNv
bW1hbmQoKSkgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleGVjdXRlIGRlbGV0aW9u
IG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG5hbWUuYXNjaWko
KS5kYXRhKCksIG9yaWdpbi0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXhlY3V0ZSBkZWxldGlvbiBvZiBkYXRhYmFzZSAl
cyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmln
aW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMjI4MSkKKysrIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDgtMDQtMjAgQWRhbSBC
YXJ0aCA8aGs5NTY1QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVu
CisKKyAgICAgICAgVXBkYXRlZCBXZWJTZWN1cml0eU9yaWdpbiB0byBtYXRjaCBuZXcgU2VjdXJp
dHlPcmlnaW4gQVBJLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtpdEBj
b2xsaW5qYWNrc29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisgICAg
ICAgICogU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJp
dHlPcmlnaW4gaG9zdF0pOgorICAgICAgICAoLVtXZWJTZWN1cml0eU9yaWdpbiBkb21haW5dKToK
KyAgICAgICAgKiBTdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oOgorCiAyMDA4LTA0
LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBUaW0gSGF0Y2hlcgpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3Jp
Z2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdp
bi5tbQkocmV2aXNpb24gMzIyODEpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlP
cmlnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDI0ICsyOSwxOSBAQAogI2ltcG9ydCAiV2Vi
U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJh
Y2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW1wbGVtZW50YXRp
b24gV2ViU2VjdXJpdHlPcmlnaW4KLQotLSAoaWQpaW5pdFdpdGhQcm90b2NvbDooTlNTdHJpbmcg
Kilwcm90b2NvbCBkb21haW46KE5TU3RyaW5nICopZG9tYWluCi17Ci0gICAgcmV0dXJuIFtzZWxm
IGluaXRXaXRoUHJvdG9jb2w6cHJvdG9jb2wgZG9tYWluOmRvbWFpbiBwb3J0OjBdOwotfQotCi0t
IChpZClpbml0V2l0aFByb3RvY29sOihOU1N0cmluZyAqKXByb3RvY29sIGRvbWFpbjooTlNTdHJp
bmcgKilkb21haW4gcG9ydDoodW5zaWduZWQgc2hvcnQpcG9ydAorLSAoaWQpaW5pdFdpdGhVUkw6
KE5TVVJMICopdXJsCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHByb3RvY29sLCBkb21haW4sIHBvcnQsIDAp
OworCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKEtVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKICAgICBvcmlnaW4tPnJlZigpOwogICAg
IF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0eU9yaWdpblByaXZhdGUqPihv
cmlnaW4uZ2V0KCkpOwogCkBAIC01OCwxMSArNTMsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0
ZSktPnByb3RvY29sKCk7CiB9CiAKLS0gKE5TU3RyaW5nKilkb21haW4KKy0gKE5TU3RyaW5nKilo
b3N0CiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJp
dmF0ZSktPmhvc3QoKTsKIH0KIAorLy8gRGVwcmVjYXRlZC4gVXNlIGhvc3QgaW5zdGVhZC4gVGhp
cyBuZWVkcyB0byBzdGF5IGhlcmUgdW50aWwgd2Ugc2hpcCBhIG5ldyBTYWZhcmkuCistIChOU1N0
cmluZyopZG9tYWluCit7CisgICAgcmV0dXJuIFtzZWxmIGhvc3RdOworfQorCiAtICh1bnNpZ25l
ZCBzaG9ydClwb3J0CiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmln
aW4qPihfcHJpdmF0ZSktPnBvcnQoKTsKSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1
cml0eU9yaWdpblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgJKHJldmlzaW9uIDMyMjgxKQorKysgV2ViS2l0L21hYy9T
dG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwx
MSArMzIsMTAgQEAKICAgICBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUgKl9wcml2YXRlOwogfQog
Ci0tIChpZClpbml0V2l0aFByb3RvY29sOihOU1N0cmluZyAqKXByb3RvY29sIGRvbWFpbjooTlNT
dHJpbmcgKilkb21haW47Ci0tIChpZClpbml0V2l0aFByb3RvY29sOihOU1N0cmluZyAqKXByb3Rv
Y29sIGRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gcG9ydDoodW5zaWduZWQgc2hvcnQpcG9ydDsK
Ky0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybDsKIAogLSAoTlNTdHJpbmcqKXByb3RvY29s
OwotLSAoTlNTdHJpbmcqKWRvbWFpbjsKKy0gKE5TU3RyaW5nKilob3N0OwogCiAvLyBSZXR1cm5z
IHplcm8gaWYgdGhlIHBvcnQgaXMgdGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIHByb3RvY29sLCBu
b24temVybyBvdGhlcndpc2UKIC0gKHVuc2lnbmVkIHNob3J0KXBvcnQ7CkluZGV4OiBXZWJLaXQv
d2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNp
b24gMzIyODEpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDA4LTA0LTIwICBBZGFtIEJhcnRoIDxoazk1NjVAZ21haWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4KKworICAgICAgICBSZW5hbWVkICJkb21haW4i
IG1ldGhvZCB0byAiaG9zdCIgdG8gbWF0Y2ggU2VjdXJpdHlPcmlnaW4uCisKKyAgICAgICAgKiBJ
bnRlcmZhY2VzL0lXZWJTZWN1cml0eU9yaWdpbi5pZGw6CisgICAgICAgICogV2ViU2VjdXJpdHlP
cmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46Omhvc3QpOgorICAgICAgICAq
IFdlYlNlY3VyaXR5T3JpZ2luLmg6CisKIDIwMDgtMDQtMTggIEpvbiBIb25leWN1dHQgIDxqaG9u
ZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgYWZ0ZXIgcjMyMjMxLgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDMyMjgxKQorKysgV2ViS2l0L3dp
bi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaQogICAgIHJldHVybiBTX09L
OwogfQogICAgICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmln
aW46OmRvbWFpbiggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpZ2lu
Ojpob3N0KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdCkKSW5kZXg6IFdlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDMyMjgxKQor
KysgV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cHJvdG9jb2woIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAg
ICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkb21haW4oIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBob3N0KCAKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwogICAgICAgICAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9ydCggCkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVy
ZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkocmV2aXNpb24gMzIyODEpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYlNlY3VyaXR5T3JpZ2luLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiBpbnRlcmZhY2UgSVdlYlNlY3VyaXR5
T3JpZ2luIDogSVVua25vd24KIHsKICAgICBIUkVTVUxUIHByb3RvY29sKFtvdXQsIHJldHZhbF0g
QlNUUiogcmVzdWx0KTsKLSAgICBIUkVTVUxUIGRvbWFpbihbb3V0LCByZXR2YWxdIEJTVFIqIHJl
c3VsdCk7CisgICAgSFJFU1VMVCBob3N0KFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKICAg
ICBIUkVTVUxUIHBvcnQoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KTsKIAog
ICAgIEhSRVNVTFQgdXNhZ2UoW291dCwgcmV0dmFsXSB1bnNpZ25lZCBsb25nIGxvbmcqIHJlc3Vs
dCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMjI4MSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA4LTA0LTIwICBBZGFtIEJhcnRoIDxo
azk1NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4KKworICAg
ICAgICBVcGRhdGVzIExheW91dFRlc3RDb250cm9sbGVyIHRvIHVzZSBob3N0IGluc3RlYWQgb2Yg
ZG9tYWluLgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qLXdlYmtpdEBjb2xsaW5q
YWNrc29uLmNvbT4gYWxzbyBjb250cmlidXRlZCB0byB0aGlzIHBhdGNoLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERhdGFiYXNlUXVvdGEpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZp
ZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46ZGF0YWJhc2U6
XSk6CisKIDIwMDgtMDQtMTkgIE1pa2UgSG9tbWV5ICA8Z2xhbmRpdW1AZGViaWFuLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShy
ZXZpc2lvbiAzMjI4MSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGkKIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7
ICAgIAotICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2lu
IGFsbG9jXSBpbml0V2l0aFByb3RvY29sOkAiZmlsZSIgZG9tYWluOm5pbF07CisgICAgV2ViU2Vj
dXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy8iXV07CiAgICAgW29yaWdpbiBzZXRR
dW90YTpxdW90YV07CiAgICAgW29yaWdpbiByZWxlYXNlXTsKIH0KSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAzMjI4MSkKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gKmRyYWdn
aW5nSW5mbwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lIGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbiBkYXRhYmFzZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZp
ZXIKIHsKICAgICBpZiAoIWRvbmUgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBEYXRhYmFz
ZUNhbGxiYWNrcygpKQotICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExC
QUNLOiBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0g
ZGF0YWJhc2U6JXNcbiIsIFtbb3JpZ2luIHByb3RvY29sXSBVVEY4U3RyaW5nXSwgW1tvcmlnaW4g
ZG9tYWluXSBVVEY4U3RyaW5nXSwgCisgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJB
U0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnslcywg
JXMsICVpfSBkYXRhYmFzZTolc1xuIiwgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBb
W29yaWdpbiBob3N0XSBVVEY4U3RyaW5nXSwgCiAgICAgICAgICAgICBbb3JpZ2luIHBvcnRdLCBb
ZGF0YWJhc2VJZGVudGlmaWVyIFVURjhTdHJpbmddKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBsb25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OyAgICAKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDMyMjgxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDgtMDQtMjAgIEFkYW0gQmFydGggIDxoazk1NjVAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4KKworICAgICAgICBVcGRh
dGUgTGF5b3V0VGVzdHMgZm9yIG5ldyBwb3N0TWVzc2FnZSBBUEkuCisKKyAgICAgICAgQ29sbGlu
IEphY2tzb24gPGNvbGxpbmotd2Via2l0QGNvbGxpbmphY2tzb24uY29tPiBhbHNvIGNvbnRyaWJ1
dGVkIHRvIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnkt
ZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRv
bWFpbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmln
aW4tdGhyb3dzLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4tZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNl
bmRzLWRvbWFpbi1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLmh0bWw6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNj
cmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0
ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWctZXhwZWN0ZWQudHh0
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZm
ZWN0ZWQtYnktYmFzZS10YWcuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2Ut
dGFnLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmln
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1k
b21haW4uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNz
YWdlL3RhcmdldC1vcmlnaW4uaHRtbDogQWRkZWQuCisKIDIwMDgtMDQtMTkgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3Nh
Z2Utc2VuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDMyMjgxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9t
YWluLW1lc3NhZ2Utc2VuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwy
IEBACiAKLWRhdGE6IFNvbWV0aGluZyB1cmk6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9tZXNzYWdp
bmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2Utc2VuZC5odG1sIGRvbWFpbjogMTI3LjAuMC4xCitkYXRh
OiBTb21ldGhpbmcgb3JpZ2luOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL3Jlc291cmNlcy9jcm9zcy1kb21haW4tbWVzc2FnZS1y
ZWNlaXZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdp
bmcvcmVzb3VyY2VzL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLXJlY2VpdmUuaHRtbAkocmV2aXNpb24g
MzIyODEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2luZy9yZXNvdXJjZXMvY3Jv
c3MtZG9tYWluLW1lc3NhZ2UtcmVjZWl2ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzks
NyBAQAogZnVuY3Rpb24gcmVjZWl2ZXIoZSkgewogICAgIHZhciByZXN1bHQgPSAiIjsKICAgICBy
ZXN1bHQgKz0gImRhdGE6ICIgKyBlLmRhdGEgKyAiXG4iOwotICAgIHJlc3VsdCArPSAidXJpOiAi
ICsgZS51cmkgKyAiXG4iOwotICAgIHJlc3VsdCArPSAiZG9tYWluOiAiICsgZS5kb21haW4gKyAi
XG4iOworICAgIHJlc3VsdCArPSAib3JpZ2luOiAiICsgZS5vcmlnaW4gKyAiXG4iOwogICAgIGUu
c291cmNlLnBvc3RNZXNzYWdlKHJlc3VsdCk7ICAgCiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1i
eS1iYXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tYW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJh
c2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzIyODEpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnkt
YmFzZS10YWctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotd2lu
ZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sCi0KLVJlY2Vp
dmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4x
IiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4t
YW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQt
YnktYmFzZS10YWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcu
aHRtbAkocmV2aXNpb24gMzIyODEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7Ci0K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgdmFyIGlm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZhciB3aW4gPSBp
ZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJvbSBw
YXJlbnQnKTsKLX0KLTwvc2NyaXB0PgotPGJhc2UgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNv
bS8iPgotPGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVu
dC53cml0ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJh
bWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3Vy
Y2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sIiBvbmxvYWQ9InRlc3QoKSIKLSAgaWQ9ImNo
aWxkIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJs
YWNrOyI+Ci08L2lmcmFtZT48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2
PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9w
b3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAzMjI4MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLXdpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFm
ZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCi1kb2N1bWVudC5kb21haW4gPSAwLjAuMQot
Ci1SZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBkb21haW49IjEy
Ny4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
ZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwiCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5
LWRvY3VtZW50LWRvbWFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWluLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9t
YWluLmh0bWwJKHJldmlzaW9uIDMyMjgxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5maXJzdENoaWxkLmRhdGEgPSBlLmRhdGE7
Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLCByZWN2LCBmYWxzZSk7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgdmFy
IGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOwotICAgIHZhciB3aW4g
PSBpZnJhbWUuY29udGVudFdpbmRvdzsKLSAgICB3aW4ucG9zdE1lc3NhZ2UoJ01lc3NhZ2UgZnJv
bSBwYXJlbnQnKTsKLX0KLQotZG9jdW1lbnQuZG9tYWluID0gIjAuMC4xIjsKLTwvc2NyaXB0Pgot
PGJvZHk+Ci08ZGl2PndpbmRvdy5sb2NhdGlvbi5ocmVmID0gPHNjcmlwdD5kb2N1bWVudC53cml0
ZSh3aW5kb3cubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PmRvY3VtZW50LmRv
bWFpbiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZG9tYWluKTs8L3NjcmlwdD48
L2Rpdj4KLTxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9w
b3N0TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIGlkPSJjaGls
ZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAiCi0gIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBi
bGFjazsiIG9ubG9hZD0idGVzdCgpIj4KLTwvaWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0
Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNl
cHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvaW52YWxpZC1vcmlnaW4tdGhyb3dzLWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
VW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byBhc2RmOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0
cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRv
IHBvc3QgbWVzc2FnZSB0byBodHRwOi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2Fs
aG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVz
c2FnZSB0byAvdG1wL2Zvby4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4
MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0
byAvL2xvY2FsaG9zdC4gUmVjaXBpZW50IGhhcyBvcmlnaW4gaHR0cDovL2xvY2FsaG9zdDo4MDAw
LgorCit3aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKKword2Fp
dGluZy4uLgorRW5jb3VudGVyZWQgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhj
ZXB0aW9uIDEyIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnJy4KK0VuY291bnRlcmVkIGV4Y2Vw
dGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiB3aGlsZSBwb3N0aW5nIG1l
c3NhZ2UgdG8gJ2FzZGYnLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2FzZGY6JyB3aXRob3V0IGFueSBl
eGNlcHRpb25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJ2h0dHA6JyB3aXRob3V0IGFueSBleGNlcHRp
b25zLgorUG9zdGVkIG1lc3NhZ2UgdG8gJy90bXAvZm9vJyB3aXRob3V0IGFueSBleGNlcHRpb25z
LgorUG9zdGVkIG1lc3NhZ2UgdG8gJy8vbG9jYWxob3N0JyB3aXRob3V0IGFueSBleGNlcHRpb25z
LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZh
bGlkLW9yaWdpbi10aHJvd3MtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9pbnZhbGlkLW9yaWdpbi10aHJvd3Mt
ZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL2ludmFsaWQtb3JpZ2luLXRocm93cy1leGNlcHRpb24uaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9z
dE1lc3NhZ2Uob3JpZ2luKSB7CisgIHRyeSB7CisgICAgd2luLnBvc3RNZXNzYWdlKCJUcnlpbmcg
b3JpZ2luPSIgKyBvcmlnaW4sIG9yaWdpbik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPlBvc3RlZCBtZXNzYWdlIHRvICciICsgb3JpZ2lu
ICsgIicgd2l0aG91dCBhbnkgZXhjZXB0aW9ucy4iOworICB9IGNhdGNoKGV4KSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSAiPGJyPkVuY291bnRl
cmVkIGV4Y2VwdGlvbiAiICsgZXggKyAiIHdoaWxlIHBvc3RpbmcgbWVzc2FnZSB0byAnIiArIG9y
aWdpbiArICInLiI7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgaWZyYW1l
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgd2luID0gaWZyYW1lLmNv
bnRlbnRXaW5kb3c7CisKKyAgICAvLyBOb24tVVJMcyBzaG91bGQgZmFpbCB3aXRoIGEgc3ludGF4
IGVycm9yLgorICAgIHRyeVBvc3RNZXNzYWdlKCIiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSgiYXNk
ZiIpOworCisgICAgLy8gVVJMcyB3aXRob3V0IGFuIG9yaWdpbiBzaG91bGQgZmFpbCB3aXRob3V0
IGdlbmVyYXRpbmcgYW55IGVycm9ycy4KKyAgICB0cnlQb3N0TWVzc2FnZSgiYXNkZjoiKTsKKyAg
ICB0cnlQb3N0TWVzc2FnZSgiaHR0cDoiKTsKKworICAgIC8vIFdlYktpdCBjb252ZXJ0cyBVUkxz
IHRoYXQgc3RhcnQgd2l0aCAvIHRvIGZpbGU6Ly8gVVJMcy4gVGhleSBkb24ndCBtYXRjaCB0aGUg
dGFyZ2V0IGZyYW1lLCBzbyB0aGV5IGZhaWwgc2lsZW50bHkuCisgICAgdHJ5UG9zdE1lc3NhZ2Uo
Ii90bXAvZm9vIik7CisgICAgdHJ5UG9zdE1lc3NhZ2UoIi8vbG9jYWxob3N0Iik7CisKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9j
YXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYp
Ozwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UtbGlzdGVuZXIuaHRt
bCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIzMDAi
IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+PC9kaXY+Cis8ZGl2
IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzIyODEpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1z
ZW5kcy1kb21haW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAot
d2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9z
dE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5odG1sCi0KLVJlY2Vp
dmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRvbWFpbj0ibG9jYWxob3N0IiB1
cmk9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMv
amF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5k
cy1kb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAko
cmV2aXNpb24gMzIyODEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwzMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAnUmVj
ZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWlu
ICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7Ci0KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOwotCi0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFs
c2UpOwotCi08L3NjcmlwdD4KLTxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4K
LTxib2R5PgotPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3Jp
dGUoZG9jdW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Ci08ZGl2PjxpZnJhbWUg
c3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2Vz
L2phdmFzY3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgotICBpZD0iY2hpbGQiIHdpZHRo
PSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KLTwv
aWZyYW1lPjwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Ci08L2JvZHk+
Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9q
YXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MzIyODEpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi1leHBlY3RlZC50eHQ6MzIyODEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQt
cGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMyBAQAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLWRvbWFpbi5o
dG1sCisKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRvbWFpbj0i
bG9jYWxob3N0IiB1cmk9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS9yZXNvdXJjZXMvamF2YXNjcmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2phdmFzY3JpcHQtcGFn
ZS1zdGlsbC1zZW5kcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxs
LXNlbmRzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMyMjgxKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwt
c2VuZHMtb3JpZ2luLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAK
LXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1kb21haW4uaHRtbAord2luZG93
LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCiAKLVJlY2VpdmVkIG1l
c3NhZ2U6IGRhdGE9IkhlbGxvIGZyb20gY2hpbGQiIGRvbWFpbj0ibG9jYWxob3N0IiB1cmk9Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9yZXNvdXJjZXMvamF2YXNj
cmlwdC1wb3N0LW1lc3NhZ2Utc2VuZGVyLmh0bWwiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJI
ZWxsbyBmcm9tIGNoaWxkIiBvcmlnaW49Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9y
aWdpbi5odG1sCShyZXZpc2lvbiAzMjI4MSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9wb3N0TWVzc2FnZS9qYXZhc2NyaXB0LXBhZ2Utc3RpbGwtc2VuZHMtZG9tYWluLmh0
bWw6MzIyODEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L2phdmFzY3JpcHQtcGFnZS1zdGlsbC1zZW5kcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIHZhciBtc2cgPSAnUmVjZWl2ZWQg
bWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9tYWluICsgJyIg
dXJpPSInICsgZS51cmkgKyAnIic7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuZmlyc3RDaGlsZC5kYXRhID0gbXNnOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwor
Cis8L3NjcmlwdD4KKzxiYXNlIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj4KKzxib2R5
PgorPGRpdj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoZG9j
dW1lbnQubG9jYXRpb24uaHJlZik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL2phdmFz
Y3JpcHQtcG9zdC1tZXNzYWdlLXNlbmRlci5odG1sIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAi
IGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1l
PjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uv
amF2YXNjcmlwdC1wYWdlLXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdl
LXN0aWxsLXNlbmRzLW9yaWdpbi5odG1sCShyZXZpc2lvbiAzMjI4MSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvamF2YXNjcmlwdC1wYWdlLXN0aWxsLXNl
bmRzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiB9CiAKIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZh
ciBtc2cgPSAnUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0i
JyArIGUuZG9tYWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdS
ZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmln
aW4gKyAnIic7CiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RD
aGlsZC5kYXRhID0gbXNnOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdl
L29yaWdpbi11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzIy
ODEpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9t
YWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQ6MzIyODEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWJhc2UtdGFnLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMgQEAKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRt
bAorCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJNZXNzYWdlIGZyb20gcGFyZW50IiBkb21haW49
IjEyNy4wLjAuMSIgdXJpPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcG9zdE1lc3Nh
Z2UvZG9tYWluLWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sIgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3Rl
ZC1ieS1iYXNlLXRhZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRh
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMyMjgxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACi13aW5kb3cubG9jYXRpb24u
aHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4t
YW5kLXVyaS11bmFmZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKK3dpbmRvdy5sb2NhdGlvbi5ocmVm
ID0gaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFm
ZmVjdGVkLWJ5LWJhc2UtdGFnLmh0bWwKIAotUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2Fn
ZSBmcm9tIHBhcmVudCIgZG9tYWluPSIxMjcuMC4wLjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi1hbmQtdXJpLXVuYWZmZWN0ZWQtYnktYmFz
ZS10YWcuaHRtbCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQi
IG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1l
c3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktYmFzZS10YWcuaHRtbAkocmV2aXNpb24gMzIyODEp
CShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvZG9tYWlu
LWFuZC11cmktdW5hZmZlY3RlZC1ieS1iYXNlLXRhZy5odG1sOjMyMjgxKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1i
YXNlLXRhZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVjdihl
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0
YSA9IGUuZGF0YTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7Cisg
ICAgdmFyIHdpbiA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbi5wb3N0TWVzc2FnZSgn
TWVzc2FnZSBmcm9tIHBhcmVudCcpOworfQorPC9zY3JpcHQ+Cis8YmFzZSBocmVmPSJodHRwOi8v
d3d3LmV4YW1wbGUuY29tLyI+Cis8Ym9keT4KKzxkaXY+d2luZG93LmxvY2F0aW9uLmhyZWYgPSA8
c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTs8L3NjcmlwdD48L2Rp
dj4KKzxkaXY+PGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9wb3N0
TWVzc2FnZS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLWxpc3RlbmVyLmh0bWwiIG9ubG9hZD0idGVz
dCgpIgorICBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7Ij4KKzwvaWZyYW1lPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij53
YWl0aW5nLi4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1l
bnQtZG9tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRv
bWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDMyMjgxKQkoZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50
LWRvbWFpbi1leHBlY3RlZC50eHQ6MzIyODEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACit3aW5kb3cubG9jYXRp
b24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21h
aW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbAorZG9jdW1lbnQuZG9tYWluID0g
MC4wLjEKKworUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iTWVzc2FnZSBmcm9tIHBhcmVudCIgZG9t
YWluPSIxMjcuMC4wLjEiIHVyaT0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RN
ZXNzYWdlL2RvbWFpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sIgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZl
Y3RlZC1ieS1kb2N1bWVudC1kb21haW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQt
YnktZG9jdW1lbnQtZG9tYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzIyODEpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVk
LWJ5LWRvY3VtZW50LWRvbWFpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw0IEBACi13aW5kb3cubG9jYXRpb24uaHJlZiA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRt
bAord2luZG93LmxvY2F0aW9uLmhyZWYgPSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZmZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwKIGRv
Y3VtZW50LmRvbWFpbiA9IDAuMC4xCiAKLVJlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2Ug
ZnJvbSBwYXJlbnQiIGRvbWFpbj0iMTI3LjAuMC4xIiB1cmk9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9wb3N0TWVzc2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21h
aW4uaHRtbCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9Ik1lc3NhZ2UgZnJvbSBwYXJlbnQiIG9y
aWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9wb3N0TWVzc2FnZS9vcmlnaW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21h
aW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bv
c3RNZXNzYWdlL29yaWdpbi11bmFmZmVjdGVkLWJ5LWRvY3VtZW50LWRvbWFpbi5odG1sCShyZXZp
c2lvbiAzMjI4MSkJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS9kb21haW4tdW5hZmZlY3RlZC1ieS1kb2N1bWVudC1kb21haW4uaHRtbDozMjI4MSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2Uvb3JpZ2luLXVuYWZm
ZWN0ZWQtYnktZG9jdW1lbnQtZG9tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiByZWN2KGUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuZmlyc3RDaGlsZC5kYXRhID0gZS5kYXRhOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdiwgZmFsc2UpOwor
CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY2hpbGQnKTsKKyAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAg
d2luLnBvc3RNZXNzYWdlKCdNZXNzYWdlIGZyb20gcGFyZW50Jyk7Cit9CisKK2RvY3VtZW50LmRv
bWFpbiA9ICIwLjAuMSI7Cis8L3NjcmlwdD4KKzxib2R5PgorPGRpdj53aW5kb3cubG9jYXRpb24u
aHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2Ny
aXB0PjwvZGl2PgorPGRpdj5kb2N1bWVudC5kb21haW4gPSA8c2NyaXB0PmRvY3VtZW50LndyaXRl
KGRvY3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+PC9kaXY+Cis8ZGl2PjxpZnJhbWUgc3JjPSJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVz
c2FnZS1saXN0ZW5lci5odG1sIiBpZD0iY2hpbGQiIHdpZHRoPSI4MDAiIGhlaWdodD0iMzAwIgor
ICBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IiBvbmxvYWQ9InRlc3QoKSI+Cis8L2lm
cmFtZT48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+d2FpdGluZy4uLjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVzc2Fn
ZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9wb3N0TWVz
c2FnZS90YXJnZXQtb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8g
aHR0cDovL2xvY2FsaG9zdDo5MDkwLiBSZWNpcGllbnQgaGFzIG9yaWdpbiBodHRwOi8vbG9jYWxo
b3N0OjgwMDAuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBVbmFibGUgdG8gcG9zdCBtZXNz
YWdlIHRvIGh0dHA6Ly9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0IG1l
c3NhZ2UgdG8gaHR0cHM6Ly9sb2NhbGhvc3QuIFJlY2lwaWVudCBoYXMgb3JpZ2luIGh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuYWJsZSB0byBwb3N0
IG1lc3NhZ2UgdG8gaHR0cHM6Ly9sb2NhbGhvc3Q6ODAwMC4gUmVjaXBpZW50IGhhcyBvcmlnaW4g
aHR0cDovL2xvY2FsaG9zdDo4MDAwLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogVW5hYmxl
IHRvIHBvc3QgbWVzc2FnZSB0byBodHRwOi8vd3d3LmV4YW1wbGUuY29tLiBSZWNpcGllbnQgaGFz
IG9yaWdpbiBodHRwOi8vbG9jYWxob3N0OjgwMDAuCisKK3dpbmRvdy5sb2NhdGlvbi5ocmVmID0g
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4u
aHRtbAorCit3YWl0aW5nLi4uCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2lu
PWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCitS
ZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPWh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC8iIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0
YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vIiBvcmlnaW49Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIKK1JlY2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49
aHR0cDovL2xvY2FsaG9zdDo4MDAwL2Zvbz9iYXIiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwIgorUmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vbG9jYWxo
b3N0OjgwMDAvZm9vP2JhciNiYXoiIG9yaWdpbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwIgorUmVj
ZWl2ZWQgbWVzc2FnZTogZGF0YT0iVHJ5aW5nIG9yaWdpbj1odHRwOi8vdXNlcjpwYXNzQGxvY2Fs
aG9zdDo4MDAwL2Zvbz9iYXIjYmF6IiBvcmlnaW49Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIKK1Jl
Y2VpdmVkIG1lc3NhZ2U6IGRhdGE9IlRyeWluZyBvcmlnaW49bnVsbCIgb3JpZ2luPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiCitSZWNlaXZlZCBtZXNzYWdlOiBkYXRhPSJUcnlpbmcgb3JpZ2luPXVu
ZGVmaW5lZCIgb3JpZ2luPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAiCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3RhcmdldC1vcmlnaW4uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Rh
cmdldC1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcG9zdE1lc3NhZ2UvdGFyZ2V0LW9yaWdpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIHJlY3YoZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj4iICsgZS5kYXRhOworfQorIAorZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3YsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5
UG9zdE1lc3NhZ2Uod2luLCBvcmlnaW4pIHsKKyAgICB3aW4ucG9zdE1lc3NhZ2UoIlRyeWluZyBv
cmlnaW49IiArIG9yaWdpbiwgb3JpZ2luKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2
YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisgICAgdmFyIHdp
biA9IGlmcmFtZS5jb250ZW50V2luZG93OworCisgICAgLy8gU2hvdWxkIHN1Y2NlZWQ6CisgICAg
dHJ5UG9zdE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIik7CisgICAgdHJ5UG9z
dE1lc3NhZ2Uod2luLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyIpOworICAgIHRyeVBvc3RNZXNz
YWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28iKTsKKyAgICB0cnlQb3N0TWVzc2Fn
ZSh3aW4sICJodHRwOi8vbG9jYWxob3N0OjgwMDAvZm9vP2JhciIpOworICAgIHRyeVBvc3RNZXNz
YWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9mb28/YmFyI2JheiIpOworICAgIHRyeVBv
c3RNZXNzYWdlKHdpbiwgImh0dHA6Ly91c2VyOnBhc3NAbG9jYWxob3N0OjgwMDAvZm9vP2JhciNi
YXoiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sIG51bGwpOworICAgIHRyeVBvc3RNZXNzYWdl
KHdpbiwgdW5kZWZpbmVkKTsKKworICAgIC8vIFNob3VsZCBmYWlsOgorICAgIHRyeVBvc3RNZXNz
YWdlKHdpbiwgImh0dHA6Ly9sb2NhbGhvc3Q6OTA5MCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdp
biwgImh0dHA6Ly9sb2NhbGhvc3QiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwczov
L2xvY2FsaG9zdCIpOworICAgIHRyeVBvc3RNZXNzYWdlKHdpbiwgImh0dHBzOi8vbG9jYWxob3N0
OjgwMDAiKTsKKyAgICB0cnlQb3N0TWVzc2FnZSh3aW4sICJodHRwOi8vd3d3LmV4YW1wbGUuY29t
Iik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5PgorPGRp
dj53aW5kb3cubG9jYXRpb24uaHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93Lmxv
Y2F0aW9uLmhyZWYpOzwvc2NyaXB0PjwvZGl2PgorPGRpdj48aWZyYW1lIHNyYz0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Bvc3RNZXNzYWdlL3Jlc291cmNlcy9wb3N0LW1lc3NhZ2Ut
bGlzdGVuZXIuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiCisgIGlkPSJjaGlsZCIgd2lkdGg9IjgwMCIg
aGVpZ2h0PSIzMDAiIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorPC9pZnJhbWU+
PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPndhaXRpbmcuLi48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVz
b3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2Fn
ZS1saXN0ZW5lci5odG1sCShyZXZpc2lvbiAzMjI4MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcG9zdE1lc3NhZ2UvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS1saXN0ZW5lci5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogPGRpdj53aW5kb3cubG9jYXRpb24u
aHJlZiA9IDxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhyZWYpOzwvc2Ny
aXB0PjwvZGl2PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHJlY3YoZSkgewotICAgIHZhciBtc2cgPSAn
UmVjZWl2ZWQgbWVzc2FnZTogZGF0YT0iJyArIGUuZGF0YSArICciIGRvbWFpbj0iJyArIGUuZG9t
YWluICsgJyIgdXJpPSInICsgZS51cmkgKyAnIic7CisgICAgdmFyIG1zZyA9ICdSZWNlaXZlZCBt
ZXNzYWdlOiBkYXRhPSInICsgZS5kYXRhICsgJyIgb3JpZ2luPSInICsgZS5vcmlnaW4gKyAnIic7
CiAgICAgdG9wLnBvc3RNZXNzYWdlKG1zZyk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>